UNPKG

foop

Version:

interfaces that describe their intentions.

154 lines (145 loc) 12.1 kB
/** @ignore 🚧 wip */ // https://github.com/qfox/Zeon/blob/master/Ast.js#L23 // https://github.com/qfox/Zeon/blob/master/fuzzing/fuzzRuderManEdited.js#L1414 var binaryOps = [ // Long-standing JavaScript operators, roughly in order from http://www.codehouse.com/javascript/precedence/ ' * ', ' / ', ' % ', ' + ', ' - ', ' << ', ' >> ', ' >>> ', ' < ', ' > ', ' <= ', ' >= ', ' instanceof ', ' in ', ' == ', ' != ', ' === ', ' !== ', ' & ', ' | ', ' ^ ', ' && ', ' || ', ' = ', ' *= ', ' /= ', ' %= ', ' += ', ' -= ', ' <<= ', ' >>= ', ' >>>=', ' &= ', ' ^= ', ' |= ', ' , ', // , // . is special, so test it as a group of right-unary ops, a special exprMaker for property access, and a special exprMaker for the xml filtering predicate operator // " . ", // Added by E4X // " :: ", " .. ", " @ ", // Frequent combinations of E4X things (and "*" namespace, which isn't produced by this fuzzer otherwise) // " .@ ", " .@*:: ", " .@x:: ", ] // http://heatfiler.qfox.nl/#run,code,here // function _has(obj, path) { // if (!Array.isArray(path)) { // return obj != null && hasOwnProperty.call(obj, path) // } // var length = path.length // for (var i = 0; i < length; i++) { // var key = path[i] // if (obj == null || !hasOwnProperty.call(obj, key)) { // return false // } // obj = obj[key] // } // return !!length // } // // _has({eh: true}, 'oh') // _has({eh: true}, 'eh') // _has({eh: true}, 'eh') // _has({}, 'eh') // _has({}, 'eh') // _has({}, 'eh') // * https://github.com/qfox/heatfiler/blob/master/lib/tok.js#L660 // * https://github.com/qfox/heatfiler/blob/master/lib/par.js#L1130 // https://github.com/the-grid/finitedomain/blob/master/src/trie.js#L481 // function bytes(b) { // if (b < 1024) return b + ' b' // b /= 1024 // if (b < 1024) return ~~(b * 100) / 100 + ' kb' // b /= 1024 // if (b < 1024) return ~~(b * 100) / 100 + ' mb' // b /= 1024 // return ~~(b * 100) / 100 + ' gb' // } // // diff but same name // // // // https://github.com/processing-js/processing-js/blob/master/src/P5Functions/JavaProxyFunctions.js // // https://github.com/processing-js/processing-js/blob/master/src/Objects/webcolors.js // // https://github.com/processing-js/processing-js/blob/master/src/Helpers/virtHashCode.js // // https://github.com/processing-js/processing-js/blob/master/src/Objects/HashMap.js // // /** Used to stand-in for `undefined` hash values. */ // const HASH_UNDEFINED = '__lodash_hash_undefined__' // // class Hash { // /** // * Creates a hash object. // * // * @private // * @constructor // * @param {Array} [entries] The key-value pairs to cache. // */ // constructor(entries) { // let index = -1 // const length = entries == null ? 0 : entries.length // // this.clear() // while (++index < length) { // const entry = entries[index] // this.set(entry[0], entry[1]) // } // } // // /** // * Removes all key-value entries from the hash. // * // * @memberOf Hash // */ // clear() { // this.__data__ = Object.create(null) // this.size = 0 // } // // /** // * Removes `key` and its value from the hash. // * // * @memberOf Hash // * @param {Object} hash The hash to modify. // * @param {string} key The key of the value to remove. // * @returns {boolean} Returns `true` if the entry was removed, else `false`. // */ // delete(key) { // const result = this.has(key) && delete this.__data__[key] // this.size -= result ? 1 : 0 // return result // } // // /** // * Gets the hash value for `key`. // * // * @memberOf Hash // * @param {string} key The key of the value to get. // * @returns {*} Returns the entry value. // */ // get(key) { // const data = this.__data__ // const result = data[key] // return result === HASH_UNDEFINED ? undefined : result // } // // /** // * Checks if a hash value for `key` exists. // * // * @memberOf Hash // * @param {string} key The key of the entry to check. // * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. // */ // has(key) { // const data = this.__data__ // return data[key] !== undefined // } // // /** // * Sets the hash `key` to `value`. // * // * @memberOf Hash // * @param {string} key The key of the value to set. // * @param {*} value The value to set. // * @returns {Object} Returns the hash instance. // */ // set(key, value) { // const data = this.__data__ // this.size += this.has(key) ? 0 : 1 // data[key] = value === undefined ? HASH_UNDEFINED : value // return this // } // } // // export default Hash //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSGFzaC5qcyIsInNvdXJjZXMiOlsiSGFzaC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQGlnbm9yZSDwn5qnIHdpcCAqL1xuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vcWZveC9aZW9uL2Jsb2IvbWFzdGVyL0FzdC5qcyNMMjNcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9xZm94L1plb24vYmxvYi9tYXN0ZXIvZnV6emluZy9mdXp6UnVkZXJNYW5FZGl0ZWQuanMjTDE0MTRcbnZhciBiaW5hcnlPcHMgPSBbXG4gIC8vIExvbmctc3RhbmRpbmcgSmF2YVNjcmlwdCBvcGVyYXRvcnMsIHJvdWdobHkgaW4gb3JkZXIgZnJvbSBodHRwOi8vd3d3LmNvZGVob3VzZS5jb20vamF2YXNjcmlwdC9wcmVjZWRlbmNlL1xuICAnICogJywgJyAvICcsICcgJSAnLCAnICsgJywgJyAtICcsICcgPDwgJywgJyA+PiAnLCAnID4+PiAnLCAnIDwgJywgJyA+ICcsICcgPD0gJywgJyA+PSAnLCAnIGluc3RhbmNlb2YgJywgJyBpbiAnLCAnID09ICcsICcgIT0gJywgJyA9PT0gJywgJyAhPT0gJyxcbiAgJyAmICcsICcgfCAnLCAnIF4gJywgJyAmJiAnLCAnIHx8ICcsICcgPSAnLCAnICo9ICcsICcgLz0gJywgJyAlPSAnLCAnICs9ICcsICcgLT0gJywgJyA8PD0gJywgJyA+Pj0gJywgJyA+Pj49JywgJyAmPSAnLCAnIF49ICcsICcgfD0gJywgJyAsICcsXG4vLyAgLFxuXG4gIC8vIC4gaXMgc3BlY2lhbCwgc28gdGVzdCBpdCBhcyBhIGdyb3VwIG9mIHJpZ2h0LXVuYXJ5IG9wcywgYSBzcGVjaWFsIGV4cHJNYWtlciBmb3IgcHJvcGVydHkgYWNjZXNzLCBhbmQgYSBzcGVjaWFsIGV4cHJNYWtlciBmb3IgdGhlIHhtbCBmaWx0ZXJpbmcgcHJlZGljYXRlIG9wZXJhdG9yXG4gIC8vIFwiIC4gXCIsXG5cbiAgLy8gQWRkZWQgYnkgRTRYXG4vLyAgXCIgOjogXCIsIFwiIC4uIFwiLCBcIiBAIFwiLFxuICAvLyBGcmVxdWVudCBjb21iaW5hdGlvbnMgb2YgRTRYIHRoaW5ncyAoYW5kIFwiKlwiIG5hbWVzcGFjZSwgd2hpY2ggaXNuJ3QgcHJvZHVjZWQgYnkgdGhpcyBmdXp6ZXIgb3RoZXJ3aXNlKVxuLy8gIFwiIC5AIFwiLCBcIiAuQCo6OiBcIiwgXCIgLkB4OjogXCIsXG5dXG5cbi8vIGh0dHA6Ly9oZWF0ZmlsZXIucWZveC5ubC8jcnVuLGNvZGUsaGVyZVxuLy8gZnVuY3Rpb24gX2hhcyhvYmosIHBhdGgpIHtcbi8vICAgaWYgKCFBcnJheS5pc0FycmF5KHBhdGgpKSB7XG4vLyAgICAgcmV0dXJuIG9iaiAhPSBudWxsICYmIGhhc093blByb3BlcnR5LmNhbGwob2JqLCBwYXRoKVxuLy8gICB9XG4vLyAgIHZhciBsZW5ndGggPSBwYXRoLmxlbmd0aFxuLy8gICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4vLyAgICAgdmFyIGtleSA9IHBhdGhbaV1cbi8vICAgICBpZiAob2JqID09IG51bGwgfHwgIWhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7XG4vLyAgICAgICByZXR1cm4gZmFsc2Vcbi8vICAgICB9XG4vLyAgICAgb2JqID0gb2JqW2tleV1cbi8vICAgfVxuLy8gICByZXR1cm4gISFsZW5ndGhcbi8vIH1cbi8vXG4vLyBfaGFzKHtlaDogdHJ1ZX0sICdvaCcpXG4vLyBfaGFzKHtlaDogdHJ1ZX0sICdlaCcpXG4vLyBfaGFzKHtlaDogdHJ1ZX0sICdlaCcpXG4vLyBfaGFzKHt9LCAnZWgnKVxuLy8gX2hhcyh7fSwgJ2VoJylcbi8vIF9oYXMoe30sICdlaCcpXG5cblxuLy8gKiBodHRwczovL2dpdGh1Yi5jb20vcWZveC9oZWF0ZmlsZXIvYmxvYi9tYXN0ZXIvbGliL3Rvay5qcyNMNjYwXG4vLyAqIGh0dHBzOi8vZ2l0aHViLmNvbS9xZm94L2hlYXRmaWxlci9ibG9iL21hc3Rlci9saWIvcGFyLmpzI0wxMTMwXG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGhlLWdyaWQvZmluaXRlZG9tYWluL2Jsb2IvbWFzdGVyL3NyYy90cmllLmpzI0w0ODFcbi8vIGZ1bmN0aW9uIGJ5dGVzKGIpIHtcbi8vICAgaWYgKGIgPCAxMDI0KSByZXR1cm4gYiArICcgYidcbi8vICAgYiAvPSAxMDI0XG4vLyAgIGlmIChiIDwgMTAyNCkgcmV0dXJuIH5+KGIgKiAxMDApIC8gMTAwICsgJyBrYidcbi8vICAgYiAvPSAxMDI0XG4vLyAgIGlmIChiIDwgMTAyNCkgcmV0dXJuIH5+KGIgKiAxMDApIC8gMTAwICsgJyBtYidcbi8vICAgYiAvPSAxMDI0XG4vLyAgIHJldHVybiB+fihiICogMTAwKSAvIDEwMCArICcgZ2InXG4vLyB9XG5cblxuLy8gLy8gZGlmZiBidXQgc2FtZSBuYW1lXG4vLyAvL1xuLy8gLy8gaHR0cHM6Ly9naXRodWIuY29tL3Byb2Nlc3NpbmctanMvcHJvY2Vzc2luZy1qcy9ibG9iL21hc3Rlci9zcmMvUDVGdW5jdGlvbnMvSmF2YVByb3h5RnVuY3Rpb25zLmpzXG4vLyAvLyBodHRwczovL2dpdGh1Yi5jb20vcHJvY2Vzc2luZy1qcy9wcm9jZXNzaW5nLWpzL2Jsb2IvbWFzdGVyL3NyYy9PYmplY3RzL3dlYmNvbG9ycy5qc1xuLy8gLy8gaHR0cHM6Ly9naXRodWIuY29tL3Byb2Nlc3NpbmctanMvcHJvY2Vzc2luZy1qcy9ibG9iL21hc3Rlci9zcmMvSGVscGVycy92aXJ0SGFzaENvZGUuanNcbi8vIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9wcm9jZXNzaW5nLWpzL3Byb2Nlc3NpbmctanMvYmxvYi9tYXN0ZXIvc3JjL09iamVjdHMvSGFzaE1hcC5qc1xuLy9cbi8vIC8qKiBVc2VkIHRvIHN0YW5kLWluIGZvciBgdW5kZWZpbmVkYCBoYXNoIHZhbHVlcy4gKi9cbi8vIGNvbnN0IEhBU0hfVU5ERUZJTkVEID0gJ19fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18nXG4vL1xuLy8gY2xhc3MgSGFzaCB7XG4vLyAgIC8qKlxuLy8gICAgKiBDcmVhdGVzIGEgaGFzaCBvYmplY3QuXG4vLyAgICAqXG4vLyAgICAqIEBwcml2YXRlXG4vLyAgICAqIEBjb25zdHJ1Y3RvclxuLy8gICAgKiBAcGFyYW0ge0FycmF5fSBbZW50cmllc10gVGhlIGtleS12YWx1ZSBwYWlycyB0byBjYWNoZS5cbi8vICAgICovXG4vLyAgIGNvbnN0cnVjdG9yKGVudHJpZXMpIHtcbi8vICAgICBsZXQgaW5kZXggPSAtMVxuLy8gICAgIGNvbnN0IGxlbmd0aCA9IGVudHJpZXMgPT0gbnVsbCA/IDAgOiBlbnRyaWVzLmxlbmd0aFxuLy9cbi8vICAgICB0aGlzLmNsZWFyKClcbi8vICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuLy8gICAgICAgY29uc3QgZW50cnkgPSBlbnRyaWVzW2luZGV4XVxuLy8gICAgICAgdGhpcy5zZXQoZW50cnlbMF0sIGVudHJ5WzFdKVxuLy8gICAgIH1cbi8vICAgfVxuLy9cbi8vICAgLyoqXG4vLyAgICAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIGhhc2guXG4vLyAgICAqXG4vLyAgICAqIEBtZW1iZXJPZiBIYXNoXG4vLyAgICAqL1xuLy8gICBjbGVhcigpIHtcbi8vICAgICB0aGlzLl9fZGF0YV9fID0gT2JqZWN0LmNyZWF0ZShudWxsKVxuLy8gICAgIHRoaXMuc2l6ZSA9IDBcbi8vICAgfVxuLy9cbi8vICAgLyoqXG4vLyAgICAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBoYXNoLlxuLy8gICAgKlxuLy8gICAgKiBAbWVtYmVyT2YgSGFzaFxuLy8gICAgKiBAcGFyYW0ge09iamVjdH0gaGFzaCBUaGUgaGFzaCB0byBtb2RpZnkuXG4vLyAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuLy8gICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4vLyAgICAqL1xuLy8gICBkZWxldGUoa2V5KSB7XG4vLyAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5oYXMoa2V5KSAmJiBkZWxldGUgdGhpcy5fX2RhdGFfX1trZXldXG4vLyAgICAgdGhpcy5zaXplIC09IHJlc3VsdCA/IDEgOiAwXG4vLyAgICAgcmV0dXJuIHJlc3VsdFxuLy8gICB9XG4vL1xuLy8gICAvKipcbi8vICAgICogR2V0cyB0aGUgaGFzaCB2YWx1ZSBmb3IgYGtleWAuXG4vLyAgICAqXG4vLyAgICAqIEBtZW1iZXJPZiBIYXNoXG4vLyAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuLy8gICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4vLyAgICAqL1xuLy8gICBnZXQoa2V5KSB7XG4vLyAgICAgY29uc3QgZGF0YSA9IHRoaXMuX19kYXRhX19cbi8vICAgICBjb25zdCByZXN1bHQgPSBkYXRhW2tleV1cbi8vICAgICByZXR1cm4gcmVzdWx0ID09PSBIQVNIX1VOREVGSU5FRCA/IHVuZGVmaW5lZCA6IHJlc3VsdFxuLy8gICB9XG4vL1xuLy8gICAvKipcbi8vICAgICogQ2hlY2tzIGlmIGEgaGFzaCB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuLy8gICAgKlxuLy8gICAgKiBAbWVtYmVyT2YgSGFzaFxuLy8gICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuLy8gICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuLy8gICAgKi9cbi8vICAgaGFzKGtleSkge1xuLy8gICAgIGNvbnN0IGRhdGEgPSB0aGlzLl9fZGF0YV9fXG4vLyAgICAgcmV0dXJuIGRhdGFba2V5XSAhPT0gdW5kZWZpbmVkXG4vLyAgIH1cbi8vXG4vLyAgIC8qKlxuLy8gICAgKiBTZXRzIHRoZSBoYXNoIGBrZXlgIHRvIGB2YWx1ZWAuXG4vLyAgICAqXG4vLyAgICAqIEBtZW1iZXJPZiBIYXNoXG4vLyAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuLy8gICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4vLyAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGhhc2ggaW5zdGFuY2UuXG4vLyAgICAqL1xuLy8gICBzZXQoa2V5LCB2YWx1ZSkge1xuLy8gICAgIGNvbnN0IGRhdGEgPSB0aGlzLl9fZGF0YV9fXG4vLyAgICAgdGhpcy5zaXplICs9IHRoaXMuaGFzKGtleSkgPyAwIDogMVxuLy8gICAgIGRhdGFba2V5XSA9IHZhbHVlID09PSB1bmRlZmluZWQgPyBIQVNIX1VOREVGSU5FRCA6IHZhbHVlXG4vLyAgICAgcmV0dXJuIHRoaXNcbi8vICAgfVxuLy8gfVxuLy9cbi8vIGV4cG9ydCBkZWZhdWx0IEhhc2hcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztBQUlBLElBQUksU0FBUyxHQUFHOztFQUVkLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTztFQUNsSixLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUs7Ozs7Ozs7Ozs7Q0FVN0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsifQ==