UNPKG

extraction

Version:

Tree Extraction for JavaScript Object Graphs

49 lines (47 loc) 45.6 kB
/* ** Extraction -- Tree Extraction for JavaScript Object Graphs ** Copyright (c) 2015-2023 Dr. Ralf S. Engelschall <rse@engelschall.com> ** ** Permission is hereby granted, free of charge, to any person obtaining ** a copy of this software and associated documentation files (the ** "Software"), to deal in the Software without restriction, including ** without limitation the rights to use, copy, modify, merge, publish, ** distribute, sublicense, and/or sell copies of the Software, and to ** permit persons to whom the Software is furnished to do so, subject to ** the following conditions: ** ** The above copyright notice and this permission notice shall be included ** in all copies or substantial portions of the Software. ** ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, ** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. ** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY ** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, ** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE ** SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Extraction = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(_dereq_,module,exports){ (function (global){(function (){ !function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).ASTY=e()}}(function(){return function(){return function e(t,n,r){function i(u,a){if(!n[u]){if(!t[u]){var f="function"==typeof _dereq_&&_dereq_;if(!a&&f)return f(u,!0);if(o)return o(u,!0);var l=new Error("Cannot find module '"+u+"'");throw l.code="MODULE_NOT_FOUND",l}var c=n[u]={exports:{}};t[u][0].call(c.exports,function(e){return i(t[u][1][e]||e)},c,c.exports,e,t,n,r)}return n[u].exports}for(var o="function"==typeof _dereq_&&_dereq_,u=0;u<r.length;u++)i(r[u]);return i}}()({1:[function(e,t,n){"use strict";function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function i(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,o(r.key),r)}}function o(e){var t=function(e,t){if("object"!==r(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t||"default");if("object"!==r(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===r(t)?t:String(t)}Object.defineProperty(n,"__esModule",{value:!0}),n.default=void 0;var u=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return function(e,t,n){t&&i(e.prototype,t),n&&i(e,n),Object.defineProperty(e,"prototype",{writable:!1})}(e,[{key:"init",value:function(e,t,n,i){if(arguments.length<2)throw new Error("init: invalid number of arguments");if(this.ctx=e,this.ASTy=!0,this.T=t,this.L={L:0,C:0,O:0},this.A={},this.C=[],this.P=null,"object"===r(n))for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&this.set(o,n[o]);return"object"===r(i)&&i instanceof Array&&this.add(i),this}},{key:"create",value:function(e,t,n){return this.ctx.create(e,t,n)}},{key:"type",value:function(e){if(0===arguments.length)return this.T;if(1===arguments.length)return this.T=e,this;throw new Error("type: invalid number of arguments")}},{key:"pos",value:function(e,t,n){if(0===arguments.length)return{line:this.L.L,column:this.L.C,offset:this.L.O};if(arguments.length<=3)return this.L.L=e||0,this.L.C=t||0,this.L.O=n||0,this;throw new Error("pos: invalid number of arguments")}},{key:"set",value:function(){for(var e=this,t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];if(1===n.length&&"object"===r(n[0]))Object.keys(n[0]).forEach(function(t){void 0!==n[0][t]?e.A[t]=n[0][t]:delete e.A[t]});else{if(2!==n.length)throw new Error("set: invalid number of arguments");void 0!==n[1]?this.A[n[0]]=n[1]:delete this.A[n[0]]}return this}},{key:"unset",value:function(){for(var e=this,t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];if(1===n.length&&"object"===r(n[0])&&n[0]instanceof Array)n[0].forEach(function(t){delete e.A[t]});else{if(1!==n.length)throw new Error("unset: invalid number of arguments");delete this.A[n[0]]}return this}},{key:"get",value:function(){for(var e=this,t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];if(1!==n.length)throw new Error("get: invalid number of arguments");if("object"===r(n[0])&&n[0]instanceof Array)return n[0].map(function(t){if("string"!=typeof t)throw new Error("get: invalid key argument");return e.A[t]});var o=n[0];if("string"!=typeof o)throw new Error("get: invalid key argument");return this.A[o]}},{key:"attrs",value:function(){return Object.keys(this.A)}},{key:"nth",value:function(){if(null===this.P)return 1;var e=this.P.C.indexOf(this);if(e<0)throw new Error("nth: internal error -- node not in childs of its parent");return e}},{key:"ins",value:function(e){for(var t=this,n=arguments.length,i=new Array(n>1?n-1:0),o=1;o<n;o++)i[o-1]=arguments[o];if(0===i.length)throw new Error("ins: invalid number of arguments");if(e<0&&(e=this.C.length+1-e),!(e>=0&&e<=this.C.length))throw new Error("ins: invalid position");var u=function(n){if(!t.ctx.isA(n))throw new Error("ins: invalid AST node argument");t.C.splice(e++,0,n),n.P=t};return i.forEach(function(e){"object"===r(e)&&e instanceof Array?e.forEach(function(e){u(e)}):null!==e&&u(e)}),this}},{key:"add",value:function(){for(var e=this,t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];if(0===n.length)throw new Error("add: invalid number of arguments");var o=function(t){if(!e.ctx.isA(t))throw new Error("add: invalid AST node argument");e.C.push(t),t.P=e};return n.forEach(function(e){"object"===r(e)&&e instanceof Array?e.forEach(function(e){o(e)}):null!==e&&o(e)}),this}},{key:"del",value:function(){for(var e=this,t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];if(0===n.length)throw new Error("del: invalid number of arguments");return n.forEach(function(t){if(!e.ctx.isA(t))throw new Error("del: invalid AST node argument");for(var n=!1,r=0;r<e.C.length;r++)if(e.C[r]===t){e.C.splice(r,1),t.P=null,n=!0;break}if(!n)throw new Error("del: AST node not found in childs")}),this}},{key:"childs",value:function(){if(arguments.length>2)throw new Error("childs: invalid number of arguments");if(2===arguments.length&&"number"==typeof(arguments.length<=0?void 0:arguments[0])&&"number"==typeof(arguments.length<=1?void 0:arguments[1]))return this.C.slice(arguments.length<=0?void 0:arguments[0],arguments.length<=1?void 0:arguments[1]);if(1===arguments.length&&"number"==typeof(arguments.length<=0?void 0:arguments[0]))return this.C.slice(arguments.length<=0?void 0:arguments[0]);if(0===arguments.length)return this.C;throw new Error("childs: invalid type of arguments")}},{key:"child",value:function(e){if("number"!=typeof e)throw new Error("child: invalid argument");return e<this.C.length?this.C[e]:null}},{key:"parent",value:function(){return this.P}},{key:"serialize",value:function(){return this.ctx.__serialize(this)}}]),e}();n.default=u},{}],2:[function(e,t,n){"use strict";function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function i(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,o(r.key),r)}}function o(e){var t=function(e,t){if("object"!==r(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t||"default");if("object"!==r(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===r(t)?t:String(t)}Object.defineProperty(n,"__esModule",{value:!0}),n.default=void 0;var u={mid:{unicode:String.fromCharCode(9500),ascii:"+"},last:{unicode:String.fromCharCode(9492),ascii:"+"},down:{unicode:String.fromCharCode(9474),ascii:"|"},left:{unicode:String.fromCharCode(9472),ascii:"-"}},a=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return function(e,t,n){t&&i(e.prototype,t),n&&i(e,n),Object.defineProperty(e,"prototype",{writable:!1})}(e,[{key:"dump",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1/0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(e,t){return t},n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],i="",o=this;return this.walk(function(a,f){if(!(f>e)){if(f>0){var l=function(e){var t=0,n=0;return null!==e.P&&(t=e.P.C.indexOf(e),n=e.P.C.length-1),{nth:t,max:n}},c=l(a),s=c.nth,y=c.max,h=" ";h=n?"".concat(u.left.unicode).concat(u.left.unicode).concat(h):"".concat(u.left.ascii).concat(u.left.ascii).concat(h),h=s<y?"".concat(n?u.mid.unicode:u.mid.ascii).concat(h):"".concat(n?u.last.unicode:u.last.ascii).concat(h);for(var d=a.P;null!==d&&d!==o;d=d.P)if(null!==d.P){var v=l(d);h=v.nth<v.max?"".concat(n?u.down.unicode:u.down.ascii," ").concat(h):" ".concat(h)}i+=t("tree",h)}i+=t("type",a.T)+" ";var p=Object.keys(a.A).filter(function(e){return!e.match(/^__/)});if(p.length>0){i+=t("parenthesis","(");var b=!0;p.forEach(function(e){b?b=!1:i+=t("comma",",")+" ",i+=t("key",e)+t("colon",":")+" ";var n=a.A[e];switch(r(n)){case"boolean":case"number":i+=t("value",n.toString());break;case"string":var o=function(e){return e.charCodeAt(0).toString(16).toUpperCase()};i+=t("value",'"'+n.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\x08/g,"\\b").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\f/g,"\\f").replace(/\r/g,"\\r").replace(/[\x00-\x07\x0B\x0E\x0F]/g,function(e){return"\\x0"+o(e)}).replace(/[\x10-\x1F\x80-\xFF]/g,function(e){return"\\x"+o(e)}).replace(/[\u0100-\u0FFF]/g,function(e){return"\\u0"+o(e)}).replace(/[\u1000-\uFFFF]/g,function(e){return"\\u"+o(e)})+'"');break;case"object":n instanceof RegExp?i+=t("value","/"+n.source+"/"):i+=t("value",JSON.stringify(n));break;default:i+=t("value",JSON.stringify(n))}}),i+=t("parenthesis",")")+" "}i+=t("position",t("bracket","[")+t("line",a.L.L)+t("slash",",")+t("column",a.L.C)+t("bracket","]")),i+="\n"}},"downward"),i}}]),e}();n.default=a},{}],3:[function(e,t,n){"use strict";function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function i(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,o(r.key),r)}}function o(e){var t=function(e,t){if("object"!==r(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t||"default");if("object"!==r(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===r(t)?t:String(t)}Object.defineProperty(n,"__esModule",{value:!0}),n.default=void 0;var u=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return function(e,t,n){t&&i(e.prototype,t),n&&i(e,n),Object.defineProperty(e,"prototype",{writable:!1})}(e,[{key:"merge",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(null===e)return this;if(!this.ctx.isA(e))throw new Error("merge: invalid AST node argument");if(n){var i=e.pos();this.pos(i.line,i.column,i.offset)}e.attrs().forEach(function(n){var i=void 0!==r[n]?r[n]:n;null!==i&&t.set(i,e.get(n))}),e.childs().forEach(function(n){e.del(n),t.add(n)});var o=e.parent();return null!==o&&o.del(e),this}}]),e}();n.default=u},{}],4:[function(e,t,n){"use strict";function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function i(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,o(r.key),r)}}function o(e){var t=function(e,t){if("object"!==r(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t||"default");if("object"!==r(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===r(t)?t:String(t)}Object.defineProperty(n,"__esModule",{value:!0}),n.default=void 0;var u=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return function(e,t,n){t&&i(e.prototype,t),n&&i(e,n),Object.defineProperty(e,"prototype",{writable:!1})}(e,null,[{key:"serialize",value:function(e,t){if(!e.isA(t))throw new Error("serialize: not an ASTy node");return JSON.stringify({ASTy:function e(t){var n={T:t.T,L:{L:t.L.L,C:t.L.C,O:t.L.O}},i=Object.keys(t.A);return i.length>0&&(n.A={},i.forEach(function(e){var i=t.A[e];switch(r(i)){case"boolean":case"number":case"string":n.A[e]=i;break;default:n.A[e]=JSON.parse(JSON.stringify(i))}})),t.C.length>0&&(n.C=t.C.map(function(t){return e(t)})),n}(t)})}},{key:"unserialize",value:function(e,t){var n=JSON.parse(t);if("object"!==r(n)||"object"!==r(n.ASTy))throw new Error("unserialize: not an ASTy JSON export");return function t(n){var i=e.create(n.T);return i.pos(n.L.L,n.L.C,n.L.O),"object"===r(n.A)&&Object.keys(n.A).forEach(function(e){var t=n.A[e];switch(r(t)){case"boolean":case"number":case"string":i.set(e,t);break;default:i.set(e,JSON.parse(JSON.stringify(t)))}}),"object"===r(n.C)&&n.C instanceof Array&&i.add(n.C.map(function(e){return t(e)})),i}(n.ASTy)}}]),e}();n.default=u},{}],5:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=void 0;var r={major:1,minor:8,micro:19,date:20230827};n.default=r},{}],6:[function(e,t,n){"use strict";function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function i(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,o(r.key),r)}}function o(e){var t=function(e,t){if("object"!==r(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t||"default");if("object"!==r(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===r(t)?t:String(t)}Object.defineProperty(n,"__esModule",{value:!0}),n.default=void 0;var u=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return function(e,t,n){t&&i(e.prototype,t),n&&i(e,n),Object.defineProperty(e,"prototype",{writable:!1})}(e,[{key:"walk",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"downward";return function n(r,i,o){"downward"!==t&&"both"!==t||e(r,i,o,"downward"),r.C.forEach(function(e){n(e,i+1,r)}),"upward"!==t&&"both"!==t||e(r,i,o,"upward")}(this,0,null),this}}]),e}();n.default=u},{}],7:[function(e,t,n){"use strict";var r=l(e("./asty-base.js")),i=l(e("./asty-merge.js")),o=l(e("./asty-walk.js")),u=l(e("./asty-dump.js")),a=l(e("./asty-serialize.js")),f=l(e("./asty-version.js"));function l(e){return e&&e.__esModule?e:{default:e}}function c(e){return(c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function y(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,d(r.key),r)}}function h(e,t,n){return t&&y(e.prototype,t),n&&y(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function d(e){var t=function(e,t){if("object"!==c(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!==c(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===c(t)?t:String(t)}var v=function(){function e(){var t=this;return s(this,e),this.ASTYNode=h(function e(){s(this,e)}),[[r.default,"init","create","type","pos","set","unset","get","attrs","nth","ins","add","del","childs","child","parent","serialize"],[i.default,"merge"],[o.default,"walk"],[u.default,"dump"]].forEach(function(e){var n=e[0].prototype;e.slice(1).forEach(function(e){t.ASTYNode.prototype[e]=n[e]})}),this}return h(e,[{key:"version",value:function(){return f.default}},{key:"extend",value:function(e){for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&(this.ASTYNode.prototype[t]=e[t]);return this}},{key:"create",value:function(e,t,n){return(new this.ASTYNode).init(this,e,t,n)}},{key:"isA",value:function(e){return"object"===c(e)&&e instanceof this.ASTYNode&&"boolean"==typeof e.ASTy&&!0===e.ASTy}},{key:"__serialize",value:function(t){return e.serialize(t)}}],[{key:"serialize",value:function(e){return a.default.serialize(e.ctx,e)}},{key:"unserialize",value:function(e){return a.default.unserialize(new this,e)}}]),e}();t.exports=v},{"./asty-base.js":1,"./asty-dump.js":2,"./asty-merge.js":3,"./asty-serialize.js":4,"./asty-version.js":5,"./asty-walk.js":6}]},{},[1,2,3,4,5,6,7])(7)}); }).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) },{}],2:[function(_dereq_,module,exports){ (function (global){(function (){ !function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).CacheLRU=e()}}(function(){return function(){return function e(t,i,n){function r(u,s){if(!i[u]){if(!t[u]){var l="function"==typeof _dereq_&&_dereq_;if(!s&&l)return l(u,!0);if(o)return o(u,!0);var h=new Error("Cannot find module '"+u+"'");throw h.code="MODULE_NOT_FOUND",h}var a=i[u]={exports:{}};t[u][0].call(a.exports,function(e){return r(t[u][1][e]||e)},a,a.exports,e,t,i,n)}return i[u].exports}for(var o="function"==typeof _dereq_&&_dereq_,u=0;u<n.length;u++)r(n[u]);return r}}()({1:[function(e,t,i){"use strict";function n(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}var r=function(){function e(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this._index={},this._LRU={newer:null},this._MRU={older:null},this._LRU.newer=this._MRU,this._MRU.older=this._LRU,this._cur=0,this._max=1/0,this._dispose=function(){},this}return function(e,t,i){t&&n(e.prototype,t),i&&n(e,i)}(e,[{key:"limit",value:function(e){var t=this._max;return arguments.length>0&&(this._max=e,this._purge()),t}},{key:"dispose",value:function(e){return this._dispose=e,this}},{key:"length",value:function(){return this._cur}},{key:"keys",value:function(){return this.each(function(e,t){this.push(t)},[])}},{key:"values",value:function(){return this.each(function(e){this.push(e)},[])}},{key:"each",value:function(e,t){arguments<2&&(t=this);for(var i=0,n=this._MRU.older;n!==this._LRU;)e.call(t,n.val,n.key,i++),n=n.older;return t}},{key:"has",value:function(e){var t=this._index[e];return void 0!==t&&t.expires>=Date.now()}},{key:"peek",value:function(e){var t=this._index[e];if(void 0!==t){if(!(t.expires<Date.now()))return t.val;this.del(t.key)}}},{key:"touch",value:function(e){var t=this._index[e];if(void 0===t)throw new Error("touch: no such item");return this._promote(t),this}},{key:"get",value:function(e){var t=this._index[e];if(void 0!==t){if(!(t.expires<Date.now()))return this._promote(t),t.val;this.del(t.key)}}},{key:"set",value:function(e,t,i){arguments.length<3&&(i=1/0),i+=Date.now();var n=this._index[e];if(void 0===n)n={older:null,newer:null,key:e,val:t,expires:i},this._index[e]=n,this._attach(n),this._cur++,this._purge();else{var r=n.val;n.val=t,this._promote(n),this._dispose.call(void 0,n.key,r,"set")}return this}},{key:"del",value:function(e){var t=this._index[e];if(void 0===t)throw new Error("del: no such item");return delete this._index[e],this._detach(t),this._cur--,this._dispose.call(void 0,e,t.val,"del"),this}},{key:"clear",value:function(){for(;this._cur>0;)this.del(this._LRU.newer.key);return this}},{key:"_purge",value:function(){for(;this._cur>this._max;)this.del(this._LRU.newer.key)}},{key:"_promote",value:function(e){this._detach(e),this._attach(e)}},{key:"_detach",value:function(e){e.older.newer=e.newer,e.newer.older=e.older,e.older=null,e.newer=null}},{key:"_attach",value:function(e){e.older=this._MRU.older,e.newer=this._MRU,e.newer.older=e,e.older.newer=e}}]),e}();t.exports=r},{}]},{},[1])(1)}); }).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) },{}],3:[function(_dereq_,module,exports){ (function (global){(function (){ !function(e,n,r){"object"==typeof module&&"object"==typeof module.exports?module.exports=r():"function"==typeof define&&void 0!==define.amd?define("PEGUtil",function(){return r()}):e.PEGUtil=r()}("undefined"!=typeof global?global:"undefined"!=typeof window?window:this,0,function(){var e={makeAST:function(e,n){return function(){return n.util.__makeAST.call(null,e().start.line,e().start.column,e().start.offset,arguments)}},makeUnroll:function(e,n){return function(r,t,o){if("object"!=typeof t||!(t instanceof Array))throw new n.util.__SyntaxError("unroll: invalid list argument for unrolling",typeof t,"Array",e());if(void 0!==o){"number"==typeof o&&(o=[o]);var l=[];null!==r&&l.push(r);for(var a=0;a<t.length;a++)for(var i=0;i<o.length;i++)l.push(t[a][o[i]]);return l}return null!==r&&t.unshift(r),t}}},n=function(e,n){var r=e.length,t=n-20;t<0&&(t=0);var o=n+20;o>r&&(o=r);var l=function(e){return e.charCodeAt(0).toString(16).toUpperCase()},a=function(e,n,r){return e.substr(n,r).replace(/\\/g,"\\\\").replace(/\x08/g,"\\b").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\f/g,"\\f").replace(/\r/g,"\\r").replace(/[\x00-\x07\x0B\x0E\x0F]/g,function(e){return"\\x0"+l(e)}).replace(/[\x10-\x1F\x80-\xFF]/g,function(e){return"\\x"+l(e)}).replace(/[\u0100-\u0FFF]/g,function(e){return"\\u0"+l(e)}).replace(/[\u1000-\uFFFF]/g,function(e){return"\\u"+l(e)})};return{prolog:a(e,t,n-t),token:a(e,n,1),epilog:a(e,n+1,o-(n+1))}};return e.parse=function(r,t,o){if("object"!=typeof r)throw new Error("invalid parser object (not an object)");if("function"!=typeof r.parse)throw new Error('invalid parser object (no "parse" function)');if("string"!=typeof t)throw new Error("invalid input text (not a string)");if(void 0!==o&&"object"!=typeof o)throw new Error("invalid options (not an object)");void 0===o&&(o={});var l={ast:null,error:null};try{var a;a="function"==typeof o.makeAST?o.makeAST:function(e,n){return{line:e().start.line,column:e().start.column,offset:e().start.offset,args:n}},o.util={makeUnroll:e.makeUnroll,makeAST:e.makeAST,__makeAST:a,__SyntaxError:r.SyntaxError},l.ast=r.parse(t,o),l.error=null}catch(e){if(l.ast=null,e instanceof r.SyntaxError){var i=function(e,n){return void 0!==e?e:n};l.error={line:i(e.location.start.line,0),column:i(e.location.start.column,0),message:e.message,found:i(e.found,""),expected:i(e.expected,""),location:n(t,i(e.location.start.offset,0))}}else l.error={line:0,column:0,message:e.message,found:"",expected:"",location:n("",0)}}return l},e.errorMessage=function(e,n){for(var r=e.location,t="line "+e.line+" (column "+e.column+"): ",o="",l=0;l<t.length+r.prolog.length;l++)o+="-";return t+r.prolog+r.token+r.epilog+"\n"+o+"^\n"+e.message+(n?"":"\n")},e}); }).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) },{}],4:[function(_dereq_,module,exports){ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=dsl2ast;var _asty=_interopRequireDefault(_dereq_("asty")),_pegjsUtil=_interopRequireDefault(_dereq_("pegjs-util")),_cacheLru=_interopRequireDefault(_dereq_("cache-lru"));function _interopRequireDefault(r){return r&&r.__esModule?r:{default:r}}function _toConsumableArray(r){return _arrayWithoutHoles(r)||_iterableToArray(r)||_unsupportedIterableToArray(r)||_nonIterableSpread()}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(r,t){if(r){if("string"==typeof r)return _arrayLikeToArray(r,t);var e=Object.prototype.toString.call(r).slice(8,-1);return"Object"===e&&r.constructor&&(e=r.constructor.name),"Map"===e||"Set"===e?Array.from(r):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?_arrayLikeToArray(r,t):void 0}}function _iterableToArray(r){if("undefined"!=typeof Symbol&&null!=r[Symbol.iterator]||null!=r["@@iterator"])return Array.from(r)}function _arrayWithoutHoles(r){if(Array.isArray(r))return _arrayLikeToArray(r)}function _arrayLikeToArray(r,t){(null==t||t>r.length)&&(t=r.length);for(var e=0,n=new Array(t);e<t;e++)n[e]=r[e];return n}var PEGparser=function(){function r(t,e,n,o){this.message=t,this.expected=e,this.found=n,this.location=o,this.name="SyntaxError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,r)}return function(r,t){function e(){this.constructor=r}e.prototype=t.prototype,r.prototype=new e}(r,Error),r.buildMessage=function(r,t){var e={literal:function(r){return'"'+o(r.text)+'"'},class:function(r){var t,e="";for(t=0;t<r.parts.length;t++)e+=r.parts[t]instanceof Array?a(r.parts[t][0])+"-"+a(r.parts[t][1]):a(r.parts[t]);return"["+(r.inverted?"^":"")+e+"]"},any:function(r){return"any character"},end:function(r){return"end of input"},other:function(r){return r.description}};function n(r){return r.charCodeAt(0).toString(16).toUpperCase()}function o(r){return r.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(r){return"\\x0"+n(r)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(r){return"\\x"+n(r)})}function a(r){return r.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(r){return"\\x0"+n(r)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(r){return"\\x"+n(r)})}return"Expected "+function(r){var t,n,o,a=new Array(r.length);for(t=0;t<r.length;t++)a[t]=(o=r[t],e[o.type](o));if(a.sort(),a.length>0){for(t=1,n=1;t<a.length;t++)a[t-1]!==a[t]&&(a[n]=a[t],n++);a.length=n}switch(a.length){case 1:return a[0];case 2:return a[0]+" or "+a[1];default:return a.slice(0,-1).join(", ")+", or "+a[a.length-1]}}(r)+" but "+function(r){return r?'"'+o(r)+'"':"end of input"}(t)+" found."},{SyntaxError:r,parse:function(t,e){e=void 0!==e?e:{};var n,o={},a={spec:Er},u=Er,c="{",i=mr("{",!1),l="}",s=mr("}",!1),f=function(r){return Gr("Object").add(r)},p="[",h=mr("[",!1),d="]",A=mr("]",!1),g=function(r){return Gr("Array").add(r)},y="->",b=mr("->",!1),m=function(r){return Gr("Depth").set({depth:r})},v=",",x=mr(",",!1),_=function(r,t){return Fr(r,t,3)},S=":",T=mr(":",!1),C=function(r,t){return r.add(t)},E="!",w=mr("!",!1),D=function(r,t){return null!==r&&t.set({not:!0}),t},j=function(r){return Gr("Property").set({id:r})},U="*",R=mr("*",!1),k=function(){return Gr("Property").set({any:!0})},L="..",F=mr("..",!1),G=function(r,t){return Gr("Property").set({from:r,to:t})},I=function(r){return Gr("Property").set({from:r,to:r})},q="-",O=mr("-",!1),P=/^[0-9]/,B=vr([["0","9"]],!1,!1),M=function(r){return parseInt(r,10)},$="-oo",z=mr("-oo",!1),Z=function(r){return-1/0},H="oo",W=mr("oo",!1),J=function(r){return 1/0},K=/^[$a-zA-Z_]/,N=vr(["$",["a","z"],["A","Z"],"_"],!1,!1),Q=/^[$a-zA-Z0-9_]/,V=vr(["$",["a","z"],["A","Z"],["0","9"],"_"],!1,!1),X=xr("blank"),Y=xr("comment"),rr="//",tr=mr("//",!1),er=/^[\r\n]/,nr=vr(["\r","\n"],!1,!1),or={type:"any"},ar="/*",ur=mr("/*",!1),cr="*/",ir=mr("*/",!1),lr=xr("whitespaces"),sr=/^[ \t\r\n]/,fr=vr([" ","\t","\r","\n"],!1,!1),pr=0,hr=0,dr=[{line:1,column:1}],Ar=0,gr=[],yr=0;if("startRule"in e){if(!(e.startRule in a))throw new Error("Can't start parsing from rule \""+e.startRule+'".');u=a[e.startRule]}function br(){return Sr(hr,pr)}function mr(r,t){return{type:"literal",text:r,ignoreCase:t}}function vr(r,t,e){return{type:"class",parts:r,inverted:t,ignoreCase:e}}function xr(r){return{type:"other",description:r}}function _r(r){var e,n=dr[r];if(n)return n;for(e=r-1;!dr[e];)e--;for(n={line:(n=dr[e]).line,column:n.column};e<r;)10===t.charCodeAt(e)?(n.line++,n.column=1):n.column++,e++;return dr[r]=n,n}function Sr(r,t){var e=_r(r),n=_r(t);return{start:{offset:r,line:e.line,column:e.column},end:{offset:t,line:n.line,column:n.column}}}function Tr(r){pr<Ar||(pr>Ar&&(Ar=pr,gr=[]),gr.push(r))}function Cr(t,e,n){return new r(r.buildMessage(t,e),t,e,n)}function Er(){var r;return(r=function(){var r,e,n,a,u;return r=pr,(e=Rr())!==o?(123===t.charCodeAt(pr)?(n=c,pr++):(n=o,0===yr&&Tr(i)),n!==o&&Rr()!==o?((a=wr())===o&&(a=null),a!==o&&Rr()!==o?(125===t.charCodeAt(pr)?(u=l,pr++):(u=o,0===yr&&Tr(s)),u!==o&&Rr()!==o?(hr=r,e=f(a),r=e):(pr=r,r=o)):(pr=r,r=o)):(pr=r,r=o)):(pr=r,r=o),r}())===o&&(r=function(){var r,e,n,a,u;return r=pr,(e=Rr())!==o?(91===t.charCodeAt(pr)?(n=p,pr++):(n=o,0===yr&&Tr(h)),n!==o&&Rr()!==o?((a=wr())===o&&(a=null),a!==o&&Rr()!==o?(93===t.charCodeAt(pr)?(u=d,pr++):(u=o,0===yr&&Tr(A)),u!==o&&Rr()!==o?(hr=r,e=g(a),r=e):(pr=r,r=o)):(pr=r,r=o)):(pr=r,r=o)):(pr=r,r=o),r}()),r}function wr(){var r,e,n,a,u,c,i,l;if(r=pr,t.substr(pr,2)===y?(e=y,pr+=2):(e=o,0===yr&&Tr(b)),e!==o&&(n=Rr())!==o&&(a=Ur())!==o?(hr=r,r=e=m(a)):(pr=r,r=o),r===o)if(r=pr,(e=Dr())!==o){for(n=[],a=pr,(u=Rr())!==o?(44===t.charCodeAt(pr)?(c=v,pr++):(c=o,0===yr&&Tr(x)),c!==o&&(i=Rr())!==o&&(l=Dr())!==o?a=u=[u,c,i,l]:(pr=a,a=o)):(pr=a,a=o);a!==o;)n.push(a),a=pr,(u=Rr())!==o?(44===t.charCodeAt(pr)?(c=v,pr++):(c=o,0===yr&&Tr(x)),c!==o&&(i=Rr())!==o&&(l=Dr())!==o?a=u=[u,c,i,l]:(pr=a,a=o)):(pr=a,a=o);n!==o?(hr=r,r=e=_(e,n)):(pr=r,r=o)}else pr=r,r=o;return r}function Dr(){var r,e,n,a;return r=pr,(e=jr())!==o&&Rr()!==o?(58===t.charCodeAt(pr)?(n=S,pr++):(n=o,0===yr&&Tr(T)),n!==o&&Rr()!==o&&(a=Er())!==o?(hr=r,r=e=C(e,a)):(pr=r,r=o)):(pr=r,r=o),r===o&&(r=pr,33===t.charCodeAt(pr)?(e=E,pr++):(e=o,0===yr&&Tr(w)),e===o&&(e=null),e!==o&&Rr()!==o&&(n=jr())!==o?(hr=r,r=e=D(e,n)):(pr=r,r=o)),r}function jr(){var r,e,n,a,u;return r=pr,e=pr,n=function(){var r,e,n,a;if(r=pr,K.test(t.charAt(pr))?(e=t.charAt(pr),pr++):(e=o,0===yr&&Tr(N)),e!==o){for(n=[],Q.test(t.charAt(pr))?(a=t.charAt(pr),pr++):(a=o,0===yr&&Tr(V));a!==o;)n.push(a),Q.test(t.charAt(pr))?(a=t.charAt(pr),pr++):(a=o,0===yr&&Tr(V));n!==o?r=e=[e,n]:(pr=r,r=o)}else pr=r,r=o;return r}(),(e=n!==o?t.substring(e,pr):n)!==o&&(hr=r,e=j(e)),(r=e)===o&&(r=pr,42===t.charCodeAt(pr)?(e=U,pr++):(e=o,0===yr&&Tr(R)),e!==o&&(hr=r,e=k()),(r=e)===o&&(r=pr,(e=Ur())!==o&&(n=Rr())!==o?(t.substr(pr,2)===L?(a=L,pr+=2):(a=o,0===yr&&Tr(F)),a!==o&&Rr()!==o&&(u=Ur())!==o?(hr=r,r=e=G(e,u)):(pr=r,r=o)):(pr=r,r=o),r===o&&(r=pr,(e=Ur())!==o&&(hr=r,e=I(e)),r=e))),r}function Ur(){var r,e,n,a,u,c;if(r=pr,e=pr,n=pr,45===t.charCodeAt(pr)?(a=q,pr++):(a=o,0===yr&&Tr(O)),a===o&&(a=null),a!==o){if(u=[],P.test(t.charAt(pr))?(c=t.charAt(pr),pr++):(c=o,0===yr&&Tr(B)),c!==o)for(;c!==o;)u.push(c),P.test(t.charAt(pr))?(c=t.charAt(pr),pr++):(c=o,0===yr&&Tr(B));else u=o;u!==o?n=a=[a,u]:(pr=n,n=o)}else pr=n,n=o;return(e=n!==o?t.substring(e,pr):n)!==o&&(hr=r,e=M(e)),(r=e)===o&&(r=pr,t.substr(pr,3)===$?(e=$,pr+=3):(e=o,0===yr&&Tr(z)),e!==o&&(hr=r,e=Z(e)),(r=e)===o&&(r=pr,t.substr(pr,2)===H?(e=H,pr+=2):(e=o,0===yr&&Tr(W)),e!==o&&(hr=r,e=J(e)),r=e)),r}function Rr(){var r,t;for(yr++,r=[],(t=kr())===o&&(t=Lr());t!==o;)r.push(t),(t=kr())===o&&(t=Lr());return yr--,r===o&&(t=o,0===yr&&Tr(X)),r}function kr(){var r,e,n,a,u,c;if(yr++,r=pr,t.substr(pr,2)===rr?(e=rr,pr+=2):(e=o,0===yr&&Tr(tr)),e!==o){for(n=[],a=pr,u=pr,yr++,er.test(t.charAt(pr))?(c=t.charAt(pr),pr++):(c=o,0===yr&&Tr(nr)),yr--,c===o?u=void 0:(pr=u,u=o),u!==o?(t.length>pr?(c=t.charAt(pr),pr++):(c=o,0===yr&&Tr(or)),c!==o?a=u=[u,c]:(pr=a,a=o)):(pr=a,a=o);a!==o;)n.push(a),a=pr,u=pr,yr++,er.test(t.charAt(pr))?(c=t.charAt(pr),pr++):(c=o,0===yr&&Tr(nr)),yr--,c===o?u=void 0:(pr=u,u=o),u!==o?(t.length>pr?(c=t.charAt(pr),pr++):(c=o,0===yr&&Tr(or)),c!==o?a=u=[u,c]:(pr=a,a=o)):(pr=a,a=o);n!==o?r=e=[e,n]:(pr=r,r=o)}else pr=r,r=o;if(r===o)if(r=pr,t.substr(pr,2)===ar?(e=ar,pr+=2):(e=o,0===yr&&Tr(ur)),e!==o){for(n=[],a=pr,u=pr,yr++,t.substr(pr,2)===cr?(c=cr,pr+=2):(c=o,0===yr&&Tr(ir)),yr--,c===o?u=void 0:(pr=u,u=o),u!==o?(t.length>pr?(c=t.charAt(pr),pr++):(c=o,0===yr&&Tr(or)),c!==o?a=u=[u,c]:(pr=a,a=o)):(pr=a,a=o);a!==o;)n.push(a),a=pr,u=pr,yr++,t.substr(pr,2)===cr?(c=cr,pr+=2):(c=o,0===yr&&Tr(ir)),yr--,c===o?u=void 0:(pr=u,u=o),u!==o?(t.length>pr?(c=t.charAt(pr),pr++):(c=o,0===yr&&Tr(or)),c!==o?a=u=[u,c]:(pr=a,a=o)):(pr=a,a=o);n!==o?(t.substr(pr,2)===cr?(a=cr,pr+=2):(a=o,0===yr&&Tr(ir)),a!==o?r=e=[e,n,a]:(pr=r,r=o)):(pr=r,r=o)}else pr=r,r=o;return yr--,r===o&&(e=o,0===yr&&Tr(Y)),r}function Lr(){var r,e;if(yr++,r=[],sr.test(t.charAt(pr))?(e=t.charAt(pr),pr++):(e=o,0===yr&&Tr(fr)),e!==o)for(;e!==o;)r.push(e),sr.test(t.charAt(pr))?(e=t.charAt(pr),pr++):(e=o,0===yr&&Tr(fr));else r=o;return yr--,r===o&&(e=o,0===yr&&Tr(lr)),r}var Fr=e.util.makeUnroll(br,e),Gr=e.util.makeAST(br,e);if((n=u())!==o&&pr===t.length)return n;throw n!==o&&pr<t.length&&Tr({type:"end"}),Cr(gr,Ar<t.length?t.charAt(Ar):null,Ar<t.length?Sr(Ar,Ar+1):Sr(Ar,Ar))}}}(),ASTcache=new _cacheLru.default;function dsl2ast(r,t){t.debug&&console.log("extraction: DEBUG: extraction tree DSL:\nextraction: DEBUG: | "+r);var e=ASTcache.get(r);if(void 0!==e)t.debug&&console.log("extraction: DEBUG: extraction tree AST: reusing from cache");else{t.debug&&console.log("extraction: DEBUG: extraction tree AST: generating from scratch");var n=new _asty.default,o=_pegjsUtil.default.parse(PEGparser,r,{makeAST:function(r,t,e,o){return n.create.apply(n,_toConsumableArray(o)).pos(r,t,e)}});if(null!==o.error)throw new Error("failed to parse extraction tree DSL:\n"+_pegjsUtil.default.errorMessage(o.error,!0).replace(/^/gm,"ERROR: "));e=o.ast,ASTcache.set(r,e)}if("Object"!==e.type()&&"Array"!==e.type())throw new Error("extraction tree DSL has to be an Object or Array at outmost scope");return t.debug&&console.log("extraction: DEBUG: extraction tree AST:\n"+e.dump().replace(/\r?\n$/,"").replace(/^/gm,"extraction: DEBUG: | ")),e}ASTcache.limit(64); },{"asty":1,"cache-lru":2,"pegjs-util":3}],5:[function(_dereq_,module,exports){ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _extractionSeen=_interopRequireDefault(_dereq_("./extraction-seen.js")),_extractionDsl=_interopRequireDefault(_dereq_("./extraction-dsl.js"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _slicedToArray(e,t){return _arrayWithHoles(e)||_iterableToArrayLimit(e,t)||_unsupportedIterableToArray(e,t)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(e,t){if(e){if("string"==typeof e)return _arrayLikeToArray(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?_arrayLikeToArray(e,t):void 0}}function _arrayLikeToArray(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,o=new Array(t);r<t;r++)o[r]=e[r];return o}function _iterableToArrayLimit(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var o,n,a,c,l=[],i=!0,u=!1;try{if(a=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;i=!1}else for(;!(i=(o=a.call(r)).done)&&(l.push(o.value),l.length!==t);i=!0);}catch(e){u=!0,n=e}finally{try{if(!i&&null!=r.return&&(c=r.return(),Object(c)!==c))return}finally{if(u)throw n}}return l}}function _arrayWithHoles(e){if(Array.isArray(e))return e}function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var extractValue=function(e,t,r,o,n,a,c){return r.procValueBefore&&(e=r.procValueBefore(e,n)),r.debug&&console.log("extraction: DEBUG: match VALUE: path: ".concat(n,", depth: ").concat(o,", ")+"mode: ".concat(void 0!==c?"DEPTH":"MATCH",", ")+"graph: ".concat(_typeof(e),", AST: ").concat(null!==t?t.type():"null")),r.procValueAfter&&(e=r.procValueAfter(e,n)),e},extractObjectOrArray=function e(t,r,o,n,a,c,l){if(o.procValueBefore&&(t=o.procValueBefore(t,a)),"object"===_typeof(t)&&t instanceof Date)t=new Date(t.getTime());else if("object"===_typeof(t)&&t instanceof RegExp){var i="";t.global&&(i+="g"),t.ignoreCase&&(i+="i"),t.multiline&&(i+="m");var u=new RegExp(t.source,i);t.lastIndex&&(u.lastIndex=t.lastIndex),t=u}else{o.debug&&console.log("extraction: DEBUG: match OBJECT: path: ".concat(a,", depth: ").concat(n,", ")+"mode: ".concat(void 0!==l?"DEPTH":"MATCH",", ")+"graph: ".concat(_typeof(t),", AST: ").concat(null!==r?r.type():"null"));var f=c.get(t);if(f){if(null!==r&&r.childs().length>0)throw new Error('"'.concat(a,'": cannot extract parts of object already ')+'extracted at "'.concat(f,'"'));t=o.makeRefValue?o.makeRefValue(t,a,f):f}else{var y;c.set(t,a),void 0===l&&1===(y=r.childs()).length&&"Depth"===y[0].type()&&(l=n+y[0].get("depth"),y=void 0);var p=function(e,t,r){var o=!1,n=null;if(void 0!==t)o=!0;else for(var a=0;a<e.length;a++){var c=!1;if(e[a].get("id")===r)c=!0;else if(!0===e[a].get("any"))c=!0;else{var l=e[a].get("from"),i=e[a].get("to");void 0!==l&&void 0!==i&&l<=Number(r)&&Number(r)<=i&&(c=!0)}c&&(!0===e[a].get("not")?o=!1:(o=!0,1===(n=e[a]).childs().length&&(n=n.childs()[0])))}return[o,n]};if(t instanceof Array){var s=!1;if(null!==r&&"Property"===r.type())s=!0;else if(null!==r&&"Array"!==r.type()){if(!o.ignoreMatchErrors)throw new Error('extraction failed at "'.concat(a,'": ')+'found "Array", expected "'.concat(r.type(),'"'));s=!0}var d=[];if(!s&&(void 0===l||void 0!==l&&n<l))for(var v=0,b=0;v<t.length;v++){var g=_slicedToArray(p(y,l,v),2),h=g[0],_=g[1];h&&("object"===_typeof(t[v])&&null!==t[v]?d[b++]=e(t[v],_,o,n+1,"".concat(a,".").concat(v),c,l):d[b++]=extractValue(t[v],_,o,n+1,"".concat(a,".").concat(v),c,l))}t=d}else{var m=!1;if(null!==r&&"Property"===r.type())m=!0;else if(null!==r&&"Object"!==r.type()){if(!o.ignoreMatchErrors)throw new Error('extraction failed at "'.concat(a,'": ')+'found "Object", expected "'.concat(r.type(),'"'));m=!0}var x={};if(!m&&(void 0===l||void 0!==l&&n<l)){var A;A=o.getKeysOfObject?o.getKeysOfObject(t,a):Object.keys(t);for(var j=0;j<A.length;j++){var w=A[j],T=_slicedToArray(p(y,l,w),2),E=T[0],O=T[1];E&&("object"===_typeof(t[w])&&null!==t[w]?x[w]=e(t[w],O,o,n+1,"".concat(a,".").concat(w),c,l):x[w]=extractValue(t[w],O,o,n+1,"".concat(a,".").concat(w),c,l))}}t=x}}}return o.procValueAfter&&(t=o.procValueAfter(t,a)),t},extract=function(e,t,r){if("object"!==_typeof(e))throw new Error("invalid graph argument (expected object type)");if(null===e)throw new Error("invalid graph argument (expected not-null value)");if("string"!=typeof t)throw new Error("invalid tree argument (expected string type)");if(void 0===r&&(r={}),"object"!==_typeof(r))throw new Error("invalid options argument (expected object type)");var o=(0,_extractionDsl.default)(t,r),n=new _extractionSeen.default;return extractObjectOrArray(e,o,r,0,"@self",n,void 0)},_default=extract;exports.default=_default; },{"./extraction-dsl.js":4,"./extraction-seen.js":7}],6:[function(_dereq_,module,exports){ "use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var reifyInternal=function e(t,o,r,n){o.procValueBefore&&(t=o.procValueBefore(t,r)),o.debug&&console.log("reify: DEBUG: path: ".concat(r,", graph: ").concat(_typeof(t)));if(o.isReference?o.isReference(t,r):"string"==typeof t&&t.match(/^@self(?:\..+|)$/)){var c;if(void 0===(c=o.getObject?o.getObject(t,r):n[t]))throw new Error('invalid object reference "'.concat(t,'" at path "').concat(r,'"'));t=c}else if(null!==t&&"object"===_typeof(t))if(o.setObject?o.setObject(t,r):n[r]=t,t instanceof Array)for(var f=0;f<t.length;f++)t[f]=e(t[f],o,"".concat(r,".").concat(f),n);else for(var a in t)Object.hasOwnProperty.call(t,a)&&(t[a]=e(t[a],o,"".concat(r,".").concat(a),n));return o.procValueAfter&&(t=o.procValueAfter(t,r)),t},reify=function(e,t){if("object"!==_typeof(e))throw new Error("invalid graph argument (expected object type)");if(null===e)throw new Error("invalid graph argument (expected not-null value)");if(void 0===t&&(t={}),"object"!==_typeof(t))throw new Error("invalid options argument (expected object type)");return reifyInternal(e,t,"@self",{"@self":e})},_default=reify;exports.default=_default; },{}],7:[function(_dereq_,module,exports){ "use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _defineProperties(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,_toPropertyKey(r.key),r)}}function _createClass(e,t,n){return t&&_defineProperties(e.prototype,t),n&&_defineProperties(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function _toPropertyKey(e){var t=_toPrimitive(e,"string");return"symbol"===_typeof(t)?t:String(t)}function _toPrimitive(e,t){if("object"!==_typeof(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!==_typeof(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var Seen="function"==typeof WeakMap?function(){function e(){_classCallCheck(this,e),this.seenMap=new WeakMap}return _createClass(e,[{key:"set",value:function(e,t){this.seenMap.set(e,t)}},{key:"get",value:function(e){return this.seenMap.get(e)}}]),e}():function(){function e(){_classCallCheck(this,e),this.seenSeq=[],this.seenMap={}}return _createClass(e,[{key:"set",value:function(e,t){this.seenMap[this.seenSeq.length]=t,this.seenSeq.push(e)}},{key:"get",value:function(e){var t=this.seenSeq.indexOf(e);return t>=0?this.seenMap[t]:void 0}}]),e}(),_default=Seen;exports.default=_default; },{}],8:[function(_dereq_,module,exports){ "use strict";var _extractionExtract=_interopRequireDefault(_dereq_("./extraction-extract.js")),_extractionReify=_interopRequireDefault(_dereq_("./extraction-reify.js"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}module.exports={extract:_extractionExtract.default,reify:_extractionReify.default}; },{"./extraction-extract.js":5,"./extraction-reify.js":6}]},{},[8])(8) });