amis-formula 1.0.5 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1 +1,2935 @@
1
- (()=>{"use strict";var t={453:(t,e,r)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.Evaluator=void 0;var n=r(752),i=(0,n.__importDefault)(r(245)),o=r(589),a=function(){function t(t){void 0===t&&(t={defaultFilter:"html"}),this.options=t,this.functions={},this.filters=(0,n.__assign)((0,n.__assign)((0,n.__assign)({},this.filters),(0,o.getFilters)()),null==t?void 0:t.filters),this.functions=(0,n.__assign)((0,n.__assign)({},this.functions),null==t?void 0:t.functions)}return t.prototype.evalute=function(t,e){if(void 0===e&&(e={}),this.data=e,t&&t.type){var r=t.type.replace(/(?:_|\-)(\w)/g,(function(t,e){return e.toUpperCase()})),n=this.functions[r]||this[r];if(!n)throw new Error("".concat(t.type," unkown."));return n.call(this,t,e)}return t},t.prototype.document=function(t,e){var r=this;if(t.body.length){var n=t.body.length>1,i=t.body.map((function(t){var i=r.evalute(t,e);return n&&null==i?"":i}));return 1===i.length?i[0]:i.join("")}},t.prototype.filter=function(t,e){for(var r=this,n=this.evalute(t.input,e),i=t.filters.concat(),o={data:e,restFilters:i};i.length;){var a=i.shift(),u=this.filters[a.name];if(!u)throw new Error("filter `".concat(a.name,"` not exits"));n=u.apply(o,[n].concat(a.args.map((function(t){return"mixed"===(null==t?void 0:t.type)?t.body.map((function(t){return"string"==typeof t?t:r.evalute(t,e)})).join(""):t.type?r.evalute(t,e):t}))))}return n},t.prototype.raw=function(t){return t.value},t.prototype.script=function(t,e){var r,n=this.options.defaultFilter;return n&&"filter"!==(null===(r=t.body)||void 0===r?void 0:r.type)&&(t.body={type:"filter",input:t.body,filters:[{name:n.replace(/^\|\s/,""),args:[]}]}),this.evalute(t.body,e)},t.prototype.expressionList=function(t,e){var r=this;return t.body.reduce((function(t,n){return r.evalute(n,e)}))},t.prototype.template=function(t,e){var r=this;return t.args.map((function(t){return r.evalute(t,e)})).join("")},t.prototype.templateRaw=function(t){return t.value},t.prototype.get=function(t,e){var r=this.evalute(t.host,e),n=this.evalute(t.key,e);return null==r?void 0:r[n]},t.prototype.unary=function(t,e){var r=this.evalute(t.value,e);switch(t.op){case"+":return+r;case"-":return-r;case"~":return~r;case"!":return!r}},t.prototype.formatNumber=function(t,e){void 0===e&&(e=!1);var r=typeof t;return"string"===r?(e?parseInt(t,10):parseFloat(t))||0:"number"===r&&e?Math.round(t):null!=t?t:0},t.prototype.power=function(t,e){var r=this.evalute(t.left,e),n=this.evalute(t.right,e);return Math.pow(this.formatNumber(r),this.formatNumber(n))},t.prototype.multiply=function(t,e){var r=this.evalute(t.left,e),n=this.evalute(t.right,e);return this.formatNumber(r)*this.formatNumber(n)},t.prototype.divide=function(t,e){var r=this.evalute(t.left,e),n=this.evalute(t.right,e);return this.formatNumber(r)/this.formatNumber(n)},t.prototype.remainder=function(t,e){var r=this.evalute(t.left,e),n=this.evalute(t.right,e);return this.formatNumber(r)%this.formatNumber(n)},t.prototype.add=function(t,e){var r=this.evalute(t.left,e),n=this.evalute(t.right,e);return this.formatNumber(r)+this.formatNumber(n)},t.prototype.minus=function(t,e){var r=this.evalute(t.left,e),n=this.evalute(t.right,e);return this.formatNumber(r)-this.formatNumber(n)},t.prototype.shift=function(t,e){var r=this.evalute(t.left,e),n=this.formatNumber(this.evalute(t.right,e),!0);return"<<"===t.op?r<<n:">>"==t.op?r>>n:r>>>n},t.prototype.lt=function(t,e){return this.evalute(t.left,e)<this.evalute(t.right,e)},t.prototype.gt=function(t,e){return this.evalute(t.left,e)>this.evalute(t.right,e)},t.prototype.le=function(t,e){return this.evalute(t.left,e)<=this.evalute(t.right,e)},t.prototype.ge=function(t,e){return this.evalute(t.left,e)>=this.evalute(t.right,e)},t.prototype.eq=function(t,e){return this.evalute(t.left,e)==this.evalute(t.right,e)},t.prototype.ne=function(t,e){return this.evalute(t.left,e)!=this.evalute(t.right,e)},t.prototype.streq=function(t,e){return this.evalute(t.left,e)===this.evalute(t.right,e)},t.prototype.strneq=function(t,e){return this.evalute(t.left,e)!==this.evalute(t.right,e)},t.prototype.binary=function(t,e){var r=this.evalute(t.left,e),n=this.evalute(t.right,e);return"&"===t.op?r&n:"^"===t.op?r^n:r|n},t.prototype.and=function(t,e){return this.evalute(t.left,e)&&this.evalute(t.right,e)},t.prototype.or=function(t,e){return this.evalute(t.left,e)||this.evalute(t.right,e)},t.prototype.number=function(t,e){return t.value},t.prototype.variable=function(t,e){return"&"===t.name?e:e[t.name]},t.prototype.array=function(t,e){var r=this;return t.members.map((function(t){return r.evalute(t,e)}))},t.prototype.literal=function(t){return t.value},t.prototype.string=function(t){return t.value},t.prototype.object=function(t,e){var r=this,n={};return t.memebers.forEach((function(t){var i=t.key,o=t.value;n[i]=r.evalute(o,e)})),n},t.prototype.conditional=function(t,e){return this.evalute(t.test,e)?this.evalute(t.consequent,e):this.evalute(t.alternate,e)},t.prototype.funcCall=function(t,e){var r=this,n="fn".concat(t.identifier),i=this.functions[n]||this[n]||this.filters[t.identifier];if(!i)throw new Error("".concat(t.identifier,"函数没有定义"));var o=t.args;return o=~["IF","AND","OR","XOR","IFS"].indexOf(t.identifier)?o.map((function(t){return function(){return r.evalute(t,e)}})):o.map((function(t){return r.evalute(t,e)})),i.apply(this,o)},t.prototype.fnIF=function(t,e,r){return t()?e():r()},t.prototype.fnAND=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return t.every((function(t){return t()}))},t.prototype.fnOR=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return t.some((function(t){return t()}))},t.prototype.fnXOR=function(t,e){return!!t()==!!e()},t.prototype.fnIFS=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];for(t.length%2&&t.splice(t.length-1,0,(function(){return!0}));t.length;){var r=t.shift(),n=t.shift();if(r())return n()}},t.prototype.fnABS=function(t){return Math.abs(t)},t.prototype.fnMax=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return Math.max.apply(Math,t)},t.prototype.fnMin=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return Math.min.apply(Math,t)},t.prototype.fnSUM=function(){for(var t=this,e=[],r=0;r<arguments.length;r++)e[r]=arguments[r];return e.reduce((function(e,r){return e+t.formatNumber(r)||0}),0)},t.prototype.fnINT=function(t){return Math.floor(t)},t.prototype.fnMOD=function(t,e){return t%e},t.prototype.fnPI=function(){return Math.PI},t.prototype.fnROUND=function(t,e){var r=Math.round(e);if(r){var n=Math.pow(10,r);return Math.round(t*n)/n}return Math.round(t)},t.prototype.fnSQRT=function(t){return Math.sqrt(t)},t.prototype.fnAVG=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return this.fnSUM.apply(this,t)/t.length},t.prototype.fnUPPERMONEY=function(){return"todo"},t.prototype.fnRAND=function(){return Math.random()},t.prototype.normalizeText=function(t){return t instanceof Date?(0,i.default)(t).format():"".concat(t)},t.prototype.fnLEFT=function(t,e){return(t=this.normalizeText(t)).substring(0,e)},t.prototype.fnRIGHT=function(t,e){return(t=this.normalizeText(t)).substring(t.length-e,t.length)},t.prototype.fnLEN=function(t){return null==(t=this.normalizeText(t))?void 0:t.length},t.prototype.fnISEMPTY=function(t){return!t||!String(t).trim()},t.prototype.fnCONCATENATE=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return t.join("")},t.prototype.fnCHAR=function(t){return String.fromCharCode(t)},t.prototype.fnLOWER=function(t){return(t=this.normalizeText(t)).toLowerCase()},t.prototype.fnUPPER=function(t){return(t=this.normalizeText(t)).toUpperCase()},t.prototype.fnSPLIT=function(t,e){return(t=this.normalizeText(t)).split(e)},t.prototype.fnTRIM=function(t){return(t=this.normalizeText(t)).trim()},t.prototype.fnSTARTSWITH=function(t,e){return!!e&&0===(t=this.normalizeText(t)).indexOf(e)},t.prototype.fnCONTAINS=function(t,e){return!!e&&!!~(t=this.normalizeText(t)).indexOf(e)},t.prototype.fnREPLACE=function(t,e,r){for(var n=t=this.normalizeText(t);;){var i=n.indexOf(e);if(!~i)break;n=n.substring(0,i)+r+n.substring(i+e.length)}return n},t.prototype.fnSEARCH=function(t,e,r){var n=t=this.normalizeText(t);(r=r||0)&&(n=n.substring(r));var i=n.indexOf(e);return~i?i+e:-1},t.prototype.fnMID=function(t,e,r){return(t=this.normalizeText(t)).substring(e,e+r)},t.prototype.fnDATE=function(t,e,r,n,i,o){return void 0===e?new Date(t):new Date(t,e,r,n,i,o)},t.prototype.fnTIMESTAMP=function(t,e){return parseInt((0,i.default)(t).format("x"===e?"x":"X"),10)},t.prototype.fnTODAY=function(){return new Date},t.prototype.fnNOW=function(){return new Date},t.prototype.fnSTARTOF=function(t,e){return(0,i.default)(t).startOf(e||"day").toDate()},t.prototype.fnENDOF=function(t,e){return(0,i.default)(t).endOf(e||"day").toDate()},t.prototype.normalizeDate=function(t){if("string"==typeof t)for(var e=["","YYYY-MM-DD HH:mm:ss"];e.length;){var r=e.shift(),n=(0,i.default)(t,r);if(n.isValid())return n.toDate()}else if("number"==typeof t)return new Date(t);return t},t.prototype.fnYEAR=function(t){return(t=this.normalizeDate(t)).getFullYear()},t.prototype.fnMONTH=function(t){return(t=this.normalizeDate(t)).getMonth()+1},t.prototype.fnDAY=function(t){return(t=this.normalizeDate(t)).getDate()},t.prototype.fnHOUR=function(t){return(t=this.normalizeDate(t)).getHours()},t.prototype.fnHMINUTE=function(t){return(t=this.normalizeDate(t)).getMinutes()},t.prototype.fnSECOND=function(t){return(t=this.normalizeDate(t)).getSeconds()},t.prototype.fnYEARS=function(t,e){return t=this.normalizeDate(t),e=this.normalizeDate(e),(0,i.default)(t).diff((0,i.default)(e),"year")},t.prototype.fnMINUTES=function(t,e){return t=this.normalizeDate(t),e=this.normalizeDate(e),(0,i.default)(t).diff((0,i.default)(e),"minutes")},t.prototype.fnDAYS=function(t,e){return t=this.normalizeDate(t),e=this.normalizeDate(e),(0,i.default)(t).diff((0,i.default)(e),"days")},t.prototype.fnHOURS=function(t,e){return t=this.normalizeDate(t),e=this.normalizeDate(e),(0,i.default)(t).diff((0,i.default)(e),"hour")},t.prototype.fnDATEMODIFY=function(t,e,r){return t=this.normalizeDate(t),(0,i.default)(t).add(e,r).toDate()},t.prototype.fnSTRTODATE=function(t,e){return void 0===e&&(e=""),(0,i.default)(t,e).toDate()},t.prototype.fnISBEFORE=function(t,e,r){return void 0===r&&(r="day"),t=this.normalizeDate(t),e=this.normalizeDate(e),(0,i.default)(t).isBefore((0,i.default)(e),r)},t.prototype.fnISAFTER=function(t,e,r){return void 0===r&&(r="day"),t=this.normalizeDate(t),e=this.normalizeDate(e),(0,i.default)(t).isAfter((0,i.default)(e),r)},t.prototype.fnISSAMEORBEFORE=function(t,e,r){return void 0===r&&(r="day"),t=this.normalizeDate(t),e=this.normalizeDate(e),(0,i.default)(t).isSameOrBefore((0,i.default)(e),r)},t.prototype.fnISSAMEORAFTER=function(t,e,r){return void 0===r&&(r="day"),t=this.normalizeDate(t),e=this.normalizeDate(e),(0,i.default)(t).isSameOrAfter((0,i.default)(e),r)},t.prototype.fnCOUNT=function(t){return Array.isArray(t)?t.length:t?1:0},t}();e.Evaluator=a},589:function(t,e,r){var n=this;Object.defineProperty(e,"__esModule",{value:!0}),e.getFilters=e.registerFilter=e.filters=void 0;var i=r(752),o=(0,i.__importDefault)(r(245)),a=(0,i.__importDefault)(r(341)),u=(0,i.__importDefault)(r(492)),f=(0,i.__importDefault)(r(309)),l=(0,i.__importDefault)(r(459)),s=r(378);function c(t,e,r,n,i,o){return e&&function(t){for(var e;~["isTrue","isFalse","isMatch","isEquals","notMatch","notEquals"].indexOf(null===(e=t[0])||void 0===e?void 0:e.name);)t.shift()}(r.restFilters),n||e?p(n?i:o,r.data):t}function p(t,e){var r;return"string"==typeof t&&/,/.test(t)?t.split(/\s*,\s*/).filter((function(t){return t})):"string"==typeof t&&null!==(r=(0,s.resolveVariable)(t,e))&&void 0!==r?r:t}function v(t){return t&&"string"==typeof t?/^\[.*\]$/.test(t)?t.substring(1,t.length-1).split(/\s*,\s*/).filter((function(t){return t})):t.split(/\s*,\s*/).filter((function(t){return t})):t}e.filters={map:function(t,r){for(var o=[],a=2;a<arguments.length;a++)o[a-2]=arguments[a];return Array.isArray(t)&&e.filters[r]?t.map((function(t){var a;return(a=e.filters[r]).call.apply(a,(0,i.__spreadArray)([n,t],o,!1))})):t},html:function(t){return null==t?t:(0,s.escapeHtml)(t)},json:function(t,e){return void 0===e&&(e=2),e?JSON.stringify(t,null,parseInt(e,10)):JSON.stringify(t)},toJson:function(t){var e;try{e=JSON.parse(t)}catch(t){e=null}return e},toInt:function(t){return"string"==typeof t?parseInt(t,10):t},toFloat:function(t){return"string"==typeof t?parseFloat(t):t},raw:function(t){return t},now:function(){return new Date},toDate:function(t,e){void 0===e&&(e="");var r=(0,o.default)(t,e);return r.add(),r.isValid()?r.toDate():void 0},fromNow:function(t,e){return void 0===e&&(e=""),(0,o.default)(t,e).fromNow()},dateModify:function(t,e,r,n){return void 0===e&&(e="add"),void 0===r&&(r=0),void 0===n&&(n="days"),t instanceof Date||(t=new Date),"endOf"===e||"startOf"===e?(0,o.default)(t)["endOf"===e?"endOf":"startOf"](r||"day").toDate():(0,o.default)(t)["add"===e?"add":"subtract"](parseInt(r,10)||0,n).toDate()},date:function(t,e,r){return void 0===e&&(e="LLL"),void 0===r&&(r="X"),(0,o.default)(t,r).format(e)},number:function(t){var e=String(t).split(".");return e[0]=e[0].replace(/\B(?=(\d{3})+(?!\d))/g,","),e.join(".")},trim:function(t){return"string"==typeof t?t.trim():t},percent:function(t,e){void 0===e&&(e=0),t=parseFloat(t)||0,e=parseInt(e,10)||0;var r=100*t,n=Math.pow(10,e);return(Math.round(r*n)/n).toFixed(e)+"%"},duration:function(t){return t?(0,s.formatDuration)(t):t},bytes:function(t){return t?(0,s.prettyBytes)(parseFloat(t)):t},round:function(t,e){var r;if(void 0===e&&(e=2),isNaN(t))return 0;e=null!==(r=parseInt(e,10))&&void 0!==r?r:2;var n=Math.pow(10,e);return(Math.round(t*n)/n).toFixed(e)},truncate:function(t,e,r){return"string"!=typeof t?t:(r=r||"...",null==e?t:(e=parseInt(e,10)||200,t.substring(0,e)+(t.length>e?r:"")))},url_encode:function(t){return encodeURIComponent(t)},url_decode:function(t){return decodeURIComponent(t)},default:function(t,e,r){var n;return void 0===r&&(r=!1),null!==(n=r?t:t||void 0)&&void 0!==n?n:function(){try{if("undefined"===e)return;return JSON.parse(e)}catch(t){return e}}()},join:function(t,e){return t&&t.join?t.join(e):t},split:function(t,e){return void 0===e&&(e=","),"string"==typeof t?t.split(e):t},sortBy:function(t,e,r,n){return void 0===r&&(r="alpha"),Array.isArray(t)?t.sort(function(t,e,r){return function(n,i){if(!n||!i)return 0;var o=(0,s.resolveVariable)(t,n),a=(0,s.resolveVariable)(t,i);return("numerical"===e?(parseFloat(o)||0)-(parseFloat(a)||0):String(o).localeCompare(String(a)))*("desc"===r?-1:1)}}(e,r,n)):t},objectToArray:function(t,e,r){return void 0===e&&(e="label"),void 0===r&&(r="value"),(0,a.default)(t,(function(t,n,i){var o;(t||(t=[])).push(((o={})[e]=n,o[r]=i,o))}),[])},unique:function(t,e){return Array.isArray(t)?e?(0,f.default)(t,e):(0,l.default)(t):t},topAndOther:function(t,e,r,n){if(void 0===e&&(e=10),void 0===r&&(r="name"),void 0===n&&(n="其他"),Array.isArray(t)&&e){var i=(0,u.default)(t,(function(r){var n=t.indexOf(r)+1;return n>=e?e:n}));return Object.keys(i).map((function(t,o){var a=i[t].reduce((function(t,e){return Object.keys(e).forEach((function(r){t.hasOwnProperty(r)&&"labelField"!==r?"number"==typeof e[r]&&"number"==typeof t[r]?t[r]+=e[r]:"string"==typeof e[r]&&/^(?:\-|\.)\d/.test(e[r])&&"number"==typeof t[r]?t[r]+=parseFloat(e[r])||0:"string"==typeof e[r]&&"string"==typeof t[r]?t[r]+=", ".concat(e[r]):t[r]=e[r]:t[r]=e[r]})),t}),{});return o===e-1&&(a[r]=n||"其他"),a}))}return t},first:function(t){return t&&t[0]},nth:function(t,e){return void 0===e&&(e=0),t&&t[e]},last:function(t){return t&&(t.length?t[t.length-1]:null)},minus:function(t,e){return void 0===e&&(e=1),(0,s.stripNumber)((Number(t)||0)-Number(p(e,this.data)))},plus:function(t,e){return void 0===e&&(e=1),(0,s.stripNumber)((Number(t)||0)+Number(p(e,this.data)))},times:function(t,e){return void 0===e&&(e=1),(0,s.stripNumber)((Number(t)||0)*Number(p(e,this.data)))},division:function(t,e){return void 0===e&&(e=1),(0,s.stripNumber)((Number(t)||0)/Number(p(e,this.data)))},count:function(t){return Array.isArray(t)||"string"==typeof t?t.length:0},sum:function(t,e){if(!Array.isArray(t))return t;var r=t.reduce((function(t,r){return t+(parseFloat(e?(0,s.pickValues)(e,r):r)||0)}),0);return(0,s.stripNumber)(r)},abs:function(t){return"number"==typeof t?Math.abs(t):t},pick:function(t,e){return void 0===e&&(e="&"),Array.isArray(t)&&!/^\d+$/.test(e)?t.map((function(t,r){return(0,s.pickValues)(e,(0,s.createObject)({index:r},t))})):(0,s.pickValues)(e,t)},pick_if_exist:function(t,e){return void 0===e&&(e="&"),Array.isArray(t)?t.map((function(t){return(0,s.resolveVariable)(e,t)||t})):(0,s.resolveVariable)(e,t)||t},str2date:function(t,e,r){return void 0===e&&(e="X"),void 0===r&&(r="X"),t?(0,s.filterDate)(t,this.data,e).format(r):""},asArray:function(t){return Array.isArray(t)?t:t?[t]:t},concat:function(t){for(var e=this,r=[],n=1;n<arguments.length;n++)r[n-1]=arguments[n];return Array.isArray(t)?t.concat.apply(t,r.map((function(t){return p(t,e.data)}))):t},filter:function(t,e,r,n){if(!Array.isArray(t)||!e||!r)return t;var i=r,o=function(){return!0};if("isTrue"===i)o=function(t){return!!t};else if("isFalse"===i)o=function(t){return!t};else if("isExists"===i)o=function(t){return void 0!==t};else if("equals"===i||"equal"===i)n=n?p(n,this.data):"",o=function(t){return n==t};else if("isIn"===i){var a=n?p(n,this.data):[];a=v(a),a=Array.isArray(a)?a:a?[a]:[],o=function(t){return!a.length||!!~a.indexOf(t)}}else if("notIn"===i){var u=n?p(n,this.data):[];u=v(u),u=Array.isArray(u)?u:u?[u]:[],o=function(t){return!~u.indexOf(t)}}else{if("match"!==i&&(i="match",n=r),!(n=n?p(n,this.data):""))return t;var f=(0,s.string2regExp)("".concat(n),!1);o=function(t){return f.test(String(t))}}var l=/\s*\*\s*/.test(e);return e=e.split(/\s*,\s*/),t.filter((function(t){return(l?Object.keys(t):e).some((function(e){return o((0,s.resolveVariable)(e,t),e,t)}))}))},base64Encode:function(t){return btoa(encodeURIComponent(t).replace(/%([0-9A-F]{2})/g,(function(t,e){return String.fromCharCode("0x"+e)})))},base64Decode:function(t){return decodeURIComponent(atob(t).split("").map((function(t){return"%"+("00"+t.charCodeAt(0).toString(16)).slice(-2)})).join(""))},lowerCase:function(t){return t&&"string"==typeof t?t.toLowerCase():t},upperCase:function(t){return t&&"string"==typeof t?t.toUpperCase():t},isTrue:function(t,e,r){var n=arguments.length>2;return c(t,n,this,!!t,e,r)},isFalse:function(t,e,r){var n=arguments.length>2;return c(t,n,this,!t,e,r)},isMatch:function(t,e,r,n){var i=arguments.length>3;return c(t,i,this,(e=p(e,this.data))&&(0,s.string2regExp)("".concat(e),!1).test(String(t)),r,n)},notMatch:function(t,e,r,n){var i=arguments.length>3;return c(t,i,this,(e=p(e,this.data))&&!(0,s.string2regExp)("".concat(e),!1).test(String(t)),r,n)},isEquals:function(t,e,r,n){e=/^\d+$/.test(e)?parseInt(e,10):p(e,this.data);var i=arguments.length>3;return c(t,i,this,t===e,r,n)},notEquals:function(t,e,r,n){e=/^\d+$/.test(e)?parseInt(e,10):p(e,this.data);var i=arguments.length>3;return c(t,i,this,t!==e,r,n)}},e.registerFilter=function(t,r){e.filters[t]=r},e.getFilters=function(){return e.filters}},303:(t,e,r)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.evaluate=e.registerFilter=e.getFilters=e.filters=e.Evaluator=e.lexer=e.parse=void 0;var n=r(752),i=r(453);Object.defineProperty(e,"Evaluator",{enumerable:!0,get:function(){return i.Evaluator}});var o=r(833);Object.defineProperty(e,"parse",{enumerable:!0,get:function(){return o.parse}});var a=r(682);Object.defineProperty(e,"lexer",{enumerable:!0,get:function(){return a.lexer}});var u=r(589);Object.defineProperty(e,"registerFilter",{enumerable:!0,get:function(){return u.registerFilter}}),Object.defineProperty(e,"filters",{enumerable:!0,get:function(){return u.filters}}),Object.defineProperty(e,"getFilters",{enumerable:!0,get:function(){return u.getFilters}}),(0,n.__exportStar)(r(378),e),e.evaluate=function(t,e,r){return"string"==typeof t&&(t=(0,o.parse)(t,r)),new i.Evaluator(r).evalute(t,e)}},682:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.lexer=e.TokenName=void 0,e.TokenName={},e.TokenName[1]="Boolean",e.TokenName[2]="Raw",e.TokenName[3]="Variable",e.TokenName[4]="OpenScript",e.TokenName[5]="CloseScript",e.TokenName[6]="EOF",e.TokenName[7]="Identifier",e.TokenName[8]="Literal",e.TokenName[9]="Numeric",e.TokenName[10]="Punctuator",e.TokenName[11]="String",e.TokenName[12]="RegularExpression",e.TokenName[13]="TemplateRaw",e.TokenName[14]="TemplateLeftBrace",e.TokenName[15]="TemplateRightBrace",e.TokenName[16]="OpenFilter",e.TokenName[17]="Char";var r=["===","!==","==","!=","<>","<",">","<=",">=","||","&&","++","--","<<",">>",">>>","+=","*=","/=","=","*","/","-","+","^","!","%","&","|","(",")","[","]","{","}","?",":",";",",",".","$"],n={'"':0,"\\":1,"/":2,b:3,f:4,n:5,r:6,t:7,u:8};function i(t){return t>="1"&&t<="9"}function o(t){return t>="0"&&t<="9"}function a(t){return"e"===t||"E"===t}function u(t,e){return void 0===e&&(e=[]),t.replace(/\\(.)/g,(function(t,r){return"b"===r?"\b":"f"===r?"\f":"n"===r?"\n":"r"===r?"\r":"t"===r?"\t":"v"===r?"\v":~e.indexOf(r)?r:t}))}function f(t){return Number(t)}e.lexer=function(t,l){var s=1,c=1,p=0,v=0,d=[v],h=[],y=!1!==(null==l?void 0:l.allowFilter);function m(t){d.push(v=t)}function g(){d.pop(),v=d[d.length-1]}function b(t){if(t&&"string"==typeof t){var e=t.split(/[\r\n]+/);return{index:p+t.length,line:s+e.length-1,column:c+e[e.length-1].length}}return{index:p,line:s,column:c}}function k(){return h.length?h.shift():(1!==v&&2!==v&&3!==v||function(){for(;p<t.length;){var e=t[p];if("\r"===e)p++,s++,c=1,"\n"===t.charAt(p)&&p++;else if("\n"===e)p++,s++,c=1;else{if("\t"!==e&&" "!==e)break;p++,c++}}}(),function(){if(p>=t.length)return{type:e.TokenName[6],value:void 0,start:b(),end:b()}}()||function(){if(0!==v)return null;for(var r="",i=0,o=p;o<t.length;){var a=t[o];if(1===i){if(!n.hasOwnProperty(a)&&"$"!==a){var f=b(r+a);throw new SyntaxError("Unexpected token ".concat(a," in ").concat(f.line,":").concat(f.column))}r+=a,o++,i=0}else{if("\\"===a){r+=a,o++,i=1;continue}if("$"===a){var l=t[o+1];if("{"===l)break;if("$"===l){h.push({type:e.TokenName[3],value:"&",raw:"$$",start:b(t.substring(p,o)),end:b(t.substring(p,o+2))});break}for(var s=o+2;/^[a-zA-Z0-9_.][a-zA-Z0-9_.\[\]]*$/.test(t.substring(o+1,s))&&s<=t.length;)s++;if(s-o>2){h.push({type:e.TokenName[3],value:t.substring(o+1,s),raw:t.substring(o,s),start:b(t.substring(p,o)),end:b(t.substring(p,s))});break}}o++,r+=a}}return o>p?{type:e.TokenName[2],value:u(r,["`","$"]),raw:r,start:b(),end:b(r)}:h.length?h.shift():null}()||function(){if("$"===t[p]&&"{"===t[p+1]){m(1);var r=t.substring(p,p+2);return{type:e.TokenName[4],value:r,start:b(),end:b(r)}}return null}()||function(){if(1!==v&&2!==v&&3!==v&&5!==v)return null;var l,s,c,d,h=(s=t.substring(p,p+4).toLowerCase(),c=s,d=!1,"true"===s||"null"===s?(d=!0,c="true"===s||null):"false"===(s=t.substring(p,p+5).toLowerCase())?(d=!0,c=!1):"undefined"===(s=t.substring(p,p+9).toLowerCase())&&(d=!0,c=void 0),(d?{type:!0===c||!1===c?e.TokenName[1]:e.TokenName[8],value:c,raw:s,start:b(),end:b(s)}:null)||function(){for(var r=p,n="";r<t.length;){var i=t[r];if(!/^[\u4e00-\u9fa5A-Za-z_$@][\u4e00-\u9fa5A-Za-z0-9_]*$/.test(n+i))break;n+=i,r++}if(r>p){var o=t.substring(p,r);return{type:e.TokenName[7],value:o,start:b(),end:b(o)}}return null}()||function(){var r=p,n=r,u=0;t:for(;r<t.length;){var l=t.charAt(r);switch(u){case 0:if("-"===l)u=1;else if("0"===l)n=r+1,u=2;else{if(!i(l))return null;n=r+1,u=3}break;case 1:if("0"===l)n=r+1,u=2;else{if(!i(l))return null;n=r+1,u=3}break;case 2:if("."===l)u=4;else{if(!a(l))break t;u=6}break;case 3:if(o(l))n=r+1;else if("."===l)u=4;else{if(!a(l))break t;u=6}break;case 4:if(!o(l))break t;n=r+1,u=5;break;case 5:if(o(l))n=r+1;else{if(!a(l))break t;u=6}break;case 6:if("+"===l||"-"===l)u=7;else{if(!o(l))break t;n=r+1,u=7}break;case 7:if(!o(l))break t;n=r+1}r++}if(n>0){var s=t.slice(p,n);return{type:e.TokenName[9],value:f(s),raw:s,start:b(),end:b(s)}}return null}()||function(){for(var r='"',i=0,o=p;o<t.length;){var a=t[o];if(0===i){if('"'!==a&&"'"!==a)break;r=a,o++,i=1}else if(2===i){if(!n.hasOwnProperty(a)&&a!==r){var f=b(t.substring(p,o+1));throw new SyntaxError("Unexpected token ".concat(a," in ").concat(f.line,":").concat(f.column))}o++,i=1}else if("\\"===a)o++,i=2;else{if(a===r){o++;break}o++}}if(o>p){var l=t.substring(p,o);return{type:e.TokenName[11],value:u(l.substring(1,l.length-1),[r]),raw:l,start:b(),end:b(l)}}return null}()||((l=r.find((function(e){return t.substring(p,p+e.length)===e})))?{type:e.TokenName[10],value:l,start:b(),end:b(l)}:null)||function(){if(5!==v)return null;var i=p,o=t[i];if("\\"===o){var a=t[i+1];if("$"!==a&&!~r.indexOf(a)&&!n.hasOwnProperty(a)){var u=b(t.substring(p,p+1));throw new SyntaxError("Unexpected token ".concat(o," in ").concat(u.line,":").concat(u.column))}i++,o="b"===a?"\b":"f"===a?"\f":"n"===a?"\n":"r"===a?"\r":"t"===a?"\t":"v"===a?"\v":a}return{type:e.TokenName[17],value:o,start:b(),end:b(t.substring(p,i+1))}}());if("{"===(null==h?void 0:h.value))m(3);else if("}"===(null==h?void 0:h.value)){5===v&&g();var k=v;if(g(),1===k||2===k)return{type:e.TokenName[2===k?15:5],value:h.value,start:b(),end:b(h.value)}}return 1===v&&"|"===(null==h?void 0:h.value)&&y?(m(5),{type:e.TokenName[16],value:"|",start:b(),end:b("|")}):5===v&&"|"===(null==h?void 0:h.value)?{type:e.TokenName[16],value:"|",start:b(),end:b("|")}:h||"`"!==t[p]?h:(m(4),{type:e.TokenName[10],value:"`",start:b(),end:b("`")})}()||function(){if(4!==v)return null;for(var r=0,i=p;i<t.length;){var o=t[i];if(2===r){if(!n.hasOwnProperty(o)&&"`"!==o&&"$"!==o){var a=b(t.substring(p,i+1));throw new SyntaxError("Unexpected token ".concat(o," in ").concat(a.line,":").concat(a.column))}i++,r=1}else if("\\"===o)i++,r=2;else{if("`"===o){g(),h.push({type:e.TokenName[10],value:"`",start:b(t.substring(p,i)),end:b(t.substring(p,i+1))});break}if("$"===o){if("{"===t[i+1]){m(2),h.push({type:e.TokenName[14],value:"${",start:b(t.substring(p,i)),end:b(t.substring(p,i+2))});break}i++}else i++}}if(i>p){var f=t.substring(p,i);return{type:e.TokenName[13],value:u(f,["`","$"]),raw:f,start:b(),end:b(f)}}return h.length?h.shift():null}())}return(null==l?void 0:l.evalMode)&&m(2),{next:function(){var e=k();if(e)return p=e.end.index,s=e.end.line,c=e.end.column,e;var r=b();throw new SyntaxError('unexpected character "'.concat(t[p],'" at ').concat(r.line,":").concat(r.column))}}}},833:(t,e,r)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.parse=void 0;var n=r(682);e.parse=function(t,e){var r,i,o=(0,n.lexer)(t,e),a=[],u=[];function f(){if(!(i=u.length?u.shift():o.next()))throw new TypeError("next token is undefined");a.push(i)}function l(t){return i.type===n.TokenName[10]&&(Array.isArray(t)?~t.indexOf(i.value):i.value===t)}function s(){throw TypeError("Unexpected token <".concat(i.type,">").concat(i.value," in ").concat(i.start.line,":").concat(i.start.column))}function c(t){return t||s(),t}function p(){return z()}function v(){for(;i.type===n.TokenName[17]&&/^\s+$/m.test(i.value);)f()}function d(){for(var t=[];!l(":")&&i.type!==n.TokenName[16]&&i.type!==n.TokenName[5];){var e=M()||E()||F()||I()||j();e?t.push(e):(c(~[n.TokenName[7],n.TokenName[10],n.TokenName[17]].indexOf(i.type)),t.length&&"string"==typeof t[t.length-1]?t[t.length-1]+=i.raw||i.value:t.push(i.raw||i.value),f())}return t.length&&"string"==typeof t[t.length-1]&&(t[t.length-1]=t[t.length-1].replace(/\s+$/,""),t[t.length-1]||t.pop()),t}function h(t,e,r,n,i,o){var a;void 0===n&&(n=r),void 0===i&&(i="left"),void 0===o&&(o="right");var u=r();if(!u)return null;if(l(e))for(;l(e);){f();var s=c(n());(a={type:t,op:e})[i]=u,a[o]=s,u=a}return u}function y(){return h("and","&&",m)}function m(){return h("binary","|",g)}function g(){return h("binary","^",b)}function b(){return h("binary","&",k)}function k(){return h("eq","==",(function(){return h("ne","!=",(function(){return h("streq","===",(function(){return h("strneq","!==",T)}))}))}))}function T(){return h("lt","<",(function(){return h("gt",">",(function(){return h("le","<=",(function(){return h("ge",">=",N)}))}))}))}function N(){return h("shift","<<",(function(){return h("shift",">>",(function(){return h("shift",">>>",w)}))}))}function w(){return h("add","+",(function(){return h("minus","-",O)}))}function O(){return h("multiply","*",(function(){return h("divide","/",(function(){return h("remainder","%",x)}))}))}function x(){return h("power","**",D)}function D(){for(var t=["+","-","~","!"],e=[];l(t);)e.push(i),f();var r=function(){var t=function(){if(i.type===n.TokenName[7]){var t=i;if(f(),l("(")){var e=S();return{type:"func_call",identifier:t.value,args:null==e?void 0:e.body}}u.unshift(a.pop()),i=a[a.length-1]}return null}()||_()||M()||E()||F()||j()||function(){var t=S();return 1===(null==t?void 0:t.body.length)?t.body[0]:t}()||I();if(!t)return null;for(;l("[")||l(".");){var e=l(".");f();var r=c(e?_()||I():A());e||(l("]")?f():s()),t={type:"get",host:t,key:r}}return t}();for(c(!e.length||r);e.length;)r={type:"unary",op:e.pop().value,value:r};return r}function A(){if(i.type===n.TokenName[7]){var t=i;return f(),t.value}return function(){if(i.type===n.TokenName[11]){var t=i;return f(),{type:"string",value:t.value}}return null}()||E()}function E(){if(l("`")){f();for(var t=0,e={type:"template",body:[]};;)if(1===t){var r=c(p());e.body.push(r),c(i.type===n.TokenName[15]),t=0,f()}else{if(l("`")){f();break}i.type===n.TokenName[14]?(f(),t=1):i.type===n.TokenName[13]&&(e.body.push({type:"template_raw",value:i.value}),f())}return e}return null}function _(){if(i.type===n.TokenName[7]){var t=i;return f(),{type:"variable",name:t.value}}return null}function M(){if(i.type===n.TokenName[8]||i.type===n.TokenName[1]||i.type===n.TokenName[9]||i.type===n.TokenName[11]){var t=i.value;return f(),{type:"literal",value:t}}return null}function F(){if(l("[")){var t=S("[","]");return{type:"array",members:null==t?void 0:t.body}}return null}function S(t,e){if(void 0===t&&(t="("),void 0===e&&(e=")"),l(t)){f();for(var r=[],n=0;;)if(1!==n&&l(e)){if(l(e)){f();break}}else{var i=c(p());r.push(i),n=0,l(",")&&(f(),n=1)}return{type:"expression-list",body:r}}return null}function j(){if(l("{")){f();for(var t={type:"object",members:[]},e=0,r=void 0,n=void 0;;)if(1===e)c(l(":")),f(),e=2;else if(2===e)n=c(p()),t.members.push({key:r,value:n}),e=3;else if(3===e){if(l(","))f(),e=4;else if(l("}")){f();break}}else{if(4!=e&&l("}")){f();break}r=c(A()),e=1}return t}return null}function z(){return function(){var t=h("or","||",y);if(!t)return null;if(l("?")){f();var e=z();c(e),c(l(":")),f();var r=z();return c(r),{type:"conditional",test:t,consequent:e,alternate:r}}return t}()}function P(){if(i.type!==n.TokenName[2])return null;var t=i;return f(),{type:"raw",value:t.value}}function I(){if(i.type!==n.TokenName[4])return null;f();var t=function(){for(var t=p(),e=[];i.type===n.TokenName[16];){f(),v();var r=c(_()).name,o=[];for(v();l(":");){f(),v();var a=d();1===a.length?a=a[0]:a.length||(a=""),o.push(Array.isArray(a)?{type:"mixed",body:a}:a)}e.push({name:r,args:o})}return e.length&&(t={type:"filter",input:t,filters:e}),t}();if(!t)throw TypeError("Unexpected token ".concat(i.value," in ").concat(i.start.line,":").concat(i.start.column));if(i.type!==n.TokenName[5])throw TypeError("expect ".concat(n.TokenName[5]," got ").concat(i.type));return f(),{type:"script",body:t}}function R(){if(i.type!==n.TokenName[3])return null;var t=i;return f(),{type:"script",body:{type:"variable",name:t.value}}}f();var $=(null==e?void 0:e.evalMode)?p():function(){for(var t={type:"document",body:[]};i.type!==n.TokenName[6];){var e=P()||I()||R();if(!e)break;t.body.push(e)}return t}();return c((null===(r=i)||void 0===r?void 0:r.type)===n.TokenName[6]),$}},378:(t,e,r)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.resolveVariableAndFilter=e.isPureVariable=e.resolveVariable=e.pickValues=e.stripNumber=e.parseDuration=e.filterDate=e.relativeValueRe=e.formatDuration=e.escapeHtml=e.prettyBytes=e.tokenize=e.keyToPath=e.deleteVariable=e.setVariable=e.getVariable=e.string2regExp=e.isObject=e.cloneObject=e.createObject=void 0;var n=r(752),i=(0,n.__importDefault)(r(452)),o=r(453),a=r(833),u=(0,n.__importDefault)(r(245));function f(t,e){void 0===e&&(e=!0);var r=t&&t.__super?Object.create(t.__super,{__super:{value:t.__super,writable:!1,enumerable:!1}}):Object.create(Object.prototype);return e&&t&&Object.keys(t).forEach((function(e){return r[e]=t[e]})),r}function l(t){var e=typeof t;return t&&"string"!==e&&"number"!==e&&"boolean"!==e&&"function"!==e&&!Array.isArray(t)}function s(t,r,o,a){if(r in(t=t||{}))t[r]=o;else{for(var u=!1!==a?(0,e.keyToPath)(r):[r],f=u.pop();u.length;){var l=u.shift();(0,i.default)(t[l])?t=t[l]=(0,n.__assign)({},t[l]):Array.isArray(t[l])?(t[l]=t[l].concat(),t=t[l]):(t[l],t[l]={},t=t[l])}t[f]=o}}e.createObject=function(t,e,r){t&&Object.isFrozen(t)&&(t=f(t));var i=t?Object.create(t,(0,n.__assign)((0,n.__assign)({},r),{__super:{value:t,writable:!1,enumerable:!1}})):Object.create(Object.prototype,r);return e&&l(e)&&Object.keys(e).forEach((function(t){return i[t]=e[t]})),i},e.cloneObject=f,e.isObject=l,e.string2regExp=function(t,e){if(void 0===e&&(e=!1),"string"!=typeof t)throw new TypeError("Expected a string");return new RegExp(t.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d"),e?"":"i")},e.getVariable=function(t,r,n){if(void 0===n&&(n=!0),t&&r)return(n?r in t:t.hasOwnProperty(r))?t[r]:(0,e.keyToPath)(r).reduce((function(t,e){return t&&"object"==typeof t&&(n?e in t:t.hasOwnProperty(e))?t[e]:void 0}),t)},e.setVariable=s,e.deleteVariable=function(t,r){if(t)if(t.hasOwnProperty(r))delete t[r];else{for(var o=(0,e.keyToPath)(r),a=o.pop();o.length;){var u=o.shift();if(!(0,i.default)(t[u])){if(t[u])throw new Error("目标路径不是纯对象,不能修改");break}t=t[u]=(0,n.__assign)({},t[u])}t&&t.hasOwnProperty&&t.hasOwnProperty(a)&&delete t[a]}},e.keyToPath=function(t){var e=[];return t.charCodeAt(0)===".".charCodeAt(0)&&e.push(""),t.replace(new RegExp("[^.[\\]]+|\\[(?:([^\"'][^[]*)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))","g"),(function(t,r,n,i){var o=t;return n?o=i.replace(/\\(\\)?/g,"$1"):r&&(o=r.trim()),e.push(o),""})),e},e.tokenize=function(t,e,r){if(void 0===r&&(r="| html"),!t||"string"!=typeof t)return t;var n=(0,a.parse)(t,{evalMode:!1,allowFilter:!0}),i=new o.Evaluator({defaultFilter:r}).evalute(n,e);return"".concat(null==i?"":i)};var c=["B","KB","MB","GB","TB","PB","EB","ZB","YB"];e.prettyBytes=function(t){if(!Number.isFinite(t))throw new TypeError("Expected a finite number, got ".concat(typeof t,": ").concat(t));var e=t<0;if(e&&(t=-t),t<1)return(e?"-":"")+t+" B";var r=Math.min(Math.floor(Math.log(t)/Math.log(1e3)),c.length-1);return(e?"-":"")+Number((t/Math.pow(1e3,r)).toPrecision(3))+" "+c[r]};var p={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#x2F;"};e.escapeHtml=function(t){return String(t).replace(/[&<>"'\/]/g,(function(t){return p[t]}))},e.formatDuration=function(t){for(var e=["秒","分","时","天","月","季","年"],r=[1,60,3600,86400,2592e3,7776e3,31104e3],n=r.length,i=[];n--;)r[n]&&t>=r[n]?(i.push(Math.floor(t/r[n])+e[n]),t%=r[n]):0===n&&t&&i.push((t.toFixed?t.toFixed(2):"0")+e[0]);return i.join("")};var v={year:"Y",month:"M",week:"w",weekday:"W",day:"d",hour:"h",minute:"m",min:"m",second:"s",millisecond:"ms"};function d(t,r){return void 0!==t[r]?t[r]:(0,e.keyToPath)(r.replace(/^{|}$/g,"")).reduce((function(t,e){if((l(t)||Array.isArray(t))&&e in t)return t[e]}),t)}function h(t,r){if(void 0===r&&(r={}),t&&r&&"string"==typeof t){var n=t.split(":"),i=n[0],o=n[1];if(!o&&i&&(o=i,i=""),"window"===i)r=window;else{if("ls"===i||"ss"===i){var a=(0,e.keyToPath)(o.replace(/^{|}$/g,"")),u=a.shift(),f="ss"===i?sessionStorage.getItem(u):localStorage.getItem(u);if("string"==typeof f){var s=function(t,e){try{return JSON.parse(t)}catch(t){return e}}(f,f);return l(s)&&a.length?d(s,a.join(".")):s}return}if("cookie"===i)return function(t){var e="; ".concat(document.cookie).split("; ".concat(t,"="));if(2===e.length)return e.pop().split(";").shift()}(u=o.replace(/^{|}$/g,"").trim())}if("$$"===o)return r;if("$"===o[0])o=t.substring(1);else if("&"===o)return r;return d(r,o)}}e.relativeValueRe=/^(.+)?(\+|-)(\d+)(minute|min|hour|day|week|month|year|weekday|second|millisecond)s?$/i,e.filterDate=function(t,r,n,i){void 0===r&&(r={}),void 0===n&&(n="X"),void 0===i&&(i=!1);var o,a=i?u.default.utc:u.default;if("string"==typeof t&&(t=t.trim()),(t=(0,e.tokenize)(t,r))&&"string"==typeof t&&(o=e.relativeValueRe.exec(t))){var f=new Date,l=parseInt(o[3],10),s=o[1]?(0,e.filterDate)(o[1],r,n,i):a(/(minute|min|hour|second)s?/.test(o[4])?[f.getFullYear(),f.getMonth(),f.getDate(),f.getHours(),f.getMinutes(),f.getSeconds()]:[f.getFullYear(),f.getMonth(),f.getDate()]);return"-"===o[2]?s.subtract(l,v[o[4]]):s.add(l,v[o[4]])}return"now"===t?a():"today"===t?a([(f=new Date).getFullYear(),f.getMonth(),f.getDate()]):a(t,n)},e.parseDuration=function(t){var e=/^((?:\-|\+)?(?:\d*\.)?\d+)(minute|min|hour|day|week|month|quarter|year|weekday|second|millisecond)s?$/.exec(t);if(e){var r=u.default.duration(parseFloat(e[1]),e[2]);if(u.default.isDuration(r))return r}},e.stripNumber=function(t){return"number"==typeof t?parseFloat(t.toPrecision(12)):t},e.pickValues=function(t,e){var r,n;if(!t||(n=t.split(","))&&n.length<2){var i=t.indexOf("~");if(~i){var o=t.substring(0,i),a=t.substring(i+1);return(r={})[o]=h(a,e),r}return h(t,e)}var u={};return n.forEach((function(t){var r=t.indexOf("~"),n=t;~r&&(n=t.substring(r+1),t=t.substring(0,r)),s(u,t,h(n,e))})),u},e.resolveVariable=h,e.isPureVariable=function(t){return"string"==typeof t&&/^\$(?:((?:\w+\:)?[a-z0-9_.][a-z0-9_.\[\]]*)|{[^}{]+})$/i.test(t)},e.resolveVariableAndFilter=function(t,e,r,n){if(void 0===e&&(e={}),void 0===r&&(r="| html"),void 0===n&&(n=function(t){return t}),t&&"string"==typeof t){var i=(0,a.parse)(t,{evalMode:!1,allowFilter:!0}),u=new o.Evaluator({defaultFilter:r}).evalute(i,e);return null==u?n(u):u}}},492:t=>{t.exports=require("lodash/groupBy")},452:t=>{t.exports=require("lodash/isPlainObject")},341:t=>{t.exports=require("lodash/transform")},459:t=>{t.exports=require("lodash/uniq")},309:t=>{t.exports=require("lodash/uniqBy")},245:t=>{t.exports=require("moment")},752:t=>{t.exports=require("tslib")}},e={},r=function r(n){var i=e[n];if(void 0!==i)return i.exports;var o=e[n]={exports:{}};return t[n].call(o.exports,o,o.exports,r),o.exports}(303),n=exports;for(var i in r)n[i]=r[i];r.__esModule&&Object.defineProperty(n,"__esModule",{value:!0})})();
1
+ /******/ (() => { // webpackBootstrap
2
+ /******/ "use strict";
3
+ /******/ var __webpack_modules__ = ({
4
+
5
+ /***/ 453:
6
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
7
+
8
+
9
+ /**
10
+ * @file 公式内置函数
11
+ */
12
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
13
+ exports.Evaluator = void 0;
14
+ var tslib_1 = __webpack_require__(752);
15
+ var moment_1 = (0, tslib_1.__importDefault)(__webpack_require__(245));
16
+ var filter_1 = __webpack_require__(589);
17
+ var Evaluator = /** @class */ (function () {
18
+ function Evaluator(options) {
19
+ if (options === void 0) { options = {
20
+ defaultFilter: 'html'
21
+ }; }
22
+ this.options = options;
23
+ this.functions = {};
24
+ this.filters = (0, tslib_1.__assign)((0, tslib_1.__assign)((0, tslib_1.__assign)({}, this.filters), (0, filter_1.getFilters)()), options === null || options === void 0 ? void 0 : options.filters);
25
+ this.functions = (0, tslib_1.__assign)((0, tslib_1.__assign)({}, this.functions), options === null || options === void 0 ? void 0 : options.functions);
26
+ }
27
+ // 主入口
28
+ Evaluator.prototype.evalute = function (ast, data) {
29
+ if (data === void 0) { data = {}; }
30
+ this.data = data;
31
+ if (ast && ast.type) {
32
+ var name_1 = ast.type.replace(/(?:_|\-)(\w)/g, function (_, l) {
33
+ return l.toUpperCase();
34
+ });
35
+ var fn = this.functions[name_1] || this[name_1];
36
+ if (!fn) {
37
+ throw new Error("".concat(ast.type, " unkown."));
38
+ }
39
+ return fn.call(this, ast, data);
40
+ }
41
+ else {
42
+ return ast;
43
+ }
44
+ };
45
+ Evaluator.prototype.document = function (ast, data) {
46
+ var _this = this;
47
+ if (!ast.body.length) {
48
+ return undefined;
49
+ }
50
+ var isString = ast.body.length > 1;
51
+ var content = ast.body.map(function (item) {
52
+ var result = _this.evalute(item, data);
53
+ if (isString && result == null) {
54
+ // 不要出现 undefined, null 之类的文案
55
+ return '';
56
+ }
57
+ return result;
58
+ });
59
+ return content.length === 1 ? content[0] : content.join('');
60
+ };
61
+ Evaluator.prototype.filter = function (ast, data) {
62
+ var _this = this;
63
+ var input = this.evalute(ast.input, data);
64
+ var filters = ast.filters.concat();
65
+ var context = {
66
+ data: data,
67
+ restFilters: filters
68
+ };
69
+ while (filters.length) {
70
+ var filter = filters.shift();
71
+ var fn = this.filters[filter.name];
72
+ if (!fn) {
73
+ throw new Error("filter `".concat(filter.name, "` not exits"));
74
+ }
75
+ input = fn.apply(context, [input].concat(filter.args.map(function (item) {
76
+ if ((item === null || item === void 0 ? void 0 : item.type) === 'mixed') {
77
+ return item.body
78
+ .map(function (item) {
79
+ return typeof item === 'string' ? item : _this.evalute(item, data);
80
+ })
81
+ .join('');
82
+ }
83
+ else if (item.type) {
84
+ return _this.evalute(item, data);
85
+ }
86
+ return item;
87
+ })));
88
+ }
89
+ return input;
90
+ };
91
+ Evaluator.prototype.raw = function (ast) {
92
+ return ast.value;
93
+ };
94
+ Evaluator.prototype.script = function (ast, data) {
95
+ var _a;
96
+ var defaultFilter = this.options.defaultFilter;
97
+ if (defaultFilter && ((_a = ast.body) === null || _a === void 0 ? void 0 : _a.type) !== 'filter') {
98
+ ast.body = {
99
+ type: 'filter',
100
+ input: ast.body,
101
+ filters: [
102
+ {
103
+ name: defaultFilter.replace(/^\|\s/, ''),
104
+ args: []
105
+ }
106
+ ]
107
+ };
108
+ }
109
+ return this.evalute(ast.body, data);
110
+ };
111
+ Evaluator.prototype.expressionList = function (ast, data) {
112
+ var _this = this;
113
+ return ast.body.reduce(function (prev, current) { return _this.evalute(current, data); });
114
+ };
115
+ Evaluator.prototype.template = function (ast, data) {
116
+ var _this = this;
117
+ return ast.args.map(function (arg) { return _this.evalute(arg, data); }).join('');
118
+ };
119
+ Evaluator.prototype.templateRaw = function (ast) {
120
+ return ast.value;
121
+ };
122
+ // 下标获取
123
+ Evaluator.prototype.get = function (ast, data) {
124
+ var host = this.evalute(ast.host, data);
125
+ var key = this.evalute(ast.key, data);
126
+ return host === null || host === void 0 ? void 0 : host[key];
127
+ };
128
+ // 位操作如 +2 ~3 !
129
+ Evaluator.prototype.unary = function (ast, data) {
130
+ var value = this.evalute(ast.value, data);
131
+ switch (ast.op) {
132
+ case '+':
133
+ return +value;
134
+ case '-':
135
+ return -value;
136
+ case '~':
137
+ return ~value;
138
+ case '!':
139
+ return !value;
140
+ }
141
+ };
142
+ Evaluator.prototype.formatNumber = function (value, int) {
143
+ if (int === void 0) { int = false; }
144
+ var typeName = typeof value;
145
+ if (typeName === 'string') {
146
+ return (int ? parseInt(value, 10) : parseFloat(value)) || 0;
147
+ }
148
+ else if (typeName === 'number' && int) {
149
+ return Math.round(value);
150
+ }
151
+ return value !== null && value !== void 0 ? value : 0;
152
+ };
153
+ Evaluator.prototype.power = function (ast, data) {
154
+ var left = this.evalute(ast.left, data);
155
+ var right = this.evalute(ast.right, data);
156
+ return Math.pow(this.formatNumber(left), this.formatNumber(right));
157
+ };
158
+ Evaluator.prototype.multiply = function (ast, data) {
159
+ var left = this.evalute(ast.left, data);
160
+ var right = this.evalute(ast.right, data);
161
+ return this.formatNumber(left) * this.formatNumber(right);
162
+ };
163
+ Evaluator.prototype.divide = function (ast, data) {
164
+ var left = this.evalute(ast.left, data);
165
+ var right = this.evalute(ast.right, data);
166
+ return this.formatNumber(left) / this.formatNumber(right);
167
+ };
168
+ Evaluator.prototype.remainder = function (ast, data) {
169
+ var left = this.evalute(ast.left, data);
170
+ var right = this.evalute(ast.right, data);
171
+ return this.formatNumber(left) % this.formatNumber(right);
172
+ };
173
+ Evaluator.prototype.add = function (ast, data) {
174
+ var left = this.evalute(ast.left, data);
175
+ var right = this.evalute(ast.right, data);
176
+ return this.formatNumber(left) + this.formatNumber(right);
177
+ };
178
+ Evaluator.prototype.minus = function (ast, data) {
179
+ var left = this.evalute(ast.left, data);
180
+ var right = this.evalute(ast.right, data);
181
+ return this.formatNumber(left) - this.formatNumber(right);
182
+ };
183
+ Evaluator.prototype.shift = function (ast, data) {
184
+ var left = this.evalute(ast.left, data);
185
+ var right = this.formatNumber(this.evalute(ast.right, data), true);
186
+ if (ast.op === '<<') {
187
+ return left << right;
188
+ }
189
+ else if (ast.op == '>>') {
190
+ return left >> right;
191
+ }
192
+ else {
193
+ return left >>> right;
194
+ }
195
+ };
196
+ Evaluator.prototype.lt = function (ast, data) {
197
+ var left = this.evalute(ast.left, data);
198
+ var right = this.evalute(ast.right, data);
199
+ // todo 如果是日期的对比,这个地方可以优化一下。
200
+ return left < right;
201
+ };
202
+ Evaluator.prototype.gt = function (ast, data) {
203
+ var left = this.evalute(ast.left, data);
204
+ var right = this.evalute(ast.right, data);
205
+ // todo 如果是日期的对比,这个地方可以优化一下。
206
+ return left > right;
207
+ };
208
+ Evaluator.prototype.le = function (ast, data) {
209
+ var left = this.evalute(ast.left, data);
210
+ var right = this.evalute(ast.right, data);
211
+ // todo 如果是日期的对比,这个地方可以优化一下。
212
+ return left <= right;
213
+ };
214
+ Evaluator.prototype.ge = function (ast, data) {
215
+ var left = this.evalute(ast.left, data);
216
+ var right = this.evalute(ast.right, data);
217
+ // todo 如果是日期的对比,这个地方可以优化一下。
218
+ return left >= right;
219
+ };
220
+ Evaluator.prototype.eq = function (ast, data) {
221
+ var left = this.evalute(ast.left, data);
222
+ var right = this.evalute(ast.right, data);
223
+ // todo 如果是日期的对比,这个地方可以优化一下。
224
+ return left == right;
225
+ };
226
+ Evaluator.prototype.ne = function (ast, data) {
227
+ var left = this.evalute(ast.left, data);
228
+ var right = this.evalute(ast.right, data);
229
+ // todo 如果是日期的对比,这个地方可以优化一下。
230
+ return left != right;
231
+ };
232
+ Evaluator.prototype.streq = function (ast, data) {
233
+ var left = this.evalute(ast.left, data);
234
+ var right = this.evalute(ast.right, data);
235
+ // todo 如果是日期的对比,这个地方可以优化一下。
236
+ return left === right;
237
+ };
238
+ Evaluator.prototype.strneq = function (ast, data) {
239
+ var left = this.evalute(ast.left, data);
240
+ var right = this.evalute(ast.right, data);
241
+ // todo 如果是日期的对比,这个地方可以优化一下。
242
+ return left !== right;
243
+ };
244
+ Evaluator.prototype.binary = function (ast, data) {
245
+ var left = this.evalute(ast.left, data);
246
+ var right = this.evalute(ast.right, data);
247
+ if (ast.op === '&') {
248
+ return left & right;
249
+ }
250
+ else if (ast.op === '^') {
251
+ return left ^ right;
252
+ }
253
+ else {
254
+ return left | right;
255
+ }
256
+ };
257
+ Evaluator.prototype.and = function (ast, data) {
258
+ var left = this.evalute(ast.left, data);
259
+ return left && this.evalute(ast.right, data);
260
+ };
261
+ Evaluator.prototype.or = function (ast, data) {
262
+ var left = this.evalute(ast.left, data);
263
+ return left || this.evalute(ast.right, data);
264
+ };
265
+ Evaluator.prototype.number = function (ast, data) {
266
+ // todo 以后可以在这支持大数字。
267
+ return ast.value;
268
+ };
269
+ Evaluator.prototype.variable = function (ast, data) {
270
+ return ast.name === '&' ? data : data[ast.name];
271
+ };
272
+ Evaluator.prototype.array = function (ast, data) {
273
+ var _this = this;
274
+ return ast.members.map(function (member) { return _this.evalute(member, data); });
275
+ };
276
+ Evaluator.prototype.literal = function (ast) {
277
+ return ast.value;
278
+ };
279
+ Evaluator.prototype.string = function (ast) {
280
+ return ast.value;
281
+ };
282
+ Evaluator.prototype.object = function (ast, data) {
283
+ var _this = this;
284
+ var object = {};
285
+ ast.memebers.forEach(function (_a) {
286
+ var key = _a.key, value = _a.value;
287
+ object[key] = _this.evalute(value, data);
288
+ });
289
+ return object;
290
+ };
291
+ Evaluator.prototype.conditional = function (ast, data) {
292
+ return this.evalute(ast.test, data)
293
+ ? this.evalute(ast.consequent, data)
294
+ : this.evalute(ast.alternate, data);
295
+ };
296
+ Evaluator.prototype.funcCall = function (ast, data) {
297
+ var _this = this;
298
+ var fnName = "fn".concat(ast.identifier);
299
+ var fn = this.functions[fnName] || this[fnName] || this.filters[ast.identifier];
300
+ if (!fn) {
301
+ throw new Error("".concat(ast.identifier, "\u51FD\u6570\u6CA1\u6709\u5B9A\u4E49"));
302
+ }
303
+ var args = ast.args;
304
+ // 逻辑函数特殊处理,因为有时候有些运算是可以跳过的。
305
+ if (~['IF', 'AND', 'OR', 'XOR', 'IFS'].indexOf(ast.identifier)) {
306
+ args = args.map(function (a) { return function () { return _this.evalute(a, data); }; });
307
+ }
308
+ else {
309
+ args = args.map(function (a) { return _this.evalute(a, data); });
310
+ }
311
+ return fn.apply(this, args);
312
+ };
313
+ // 逻辑函数
314
+ Evaluator.prototype.fnIF = function (condition, trueValue, falseValue) {
315
+ return condition() ? trueValue() : falseValue();
316
+ };
317
+ Evaluator.prototype.fnAND = function () {
318
+ var condtions = [];
319
+ for (var _i = 0; _i < arguments.length; _i++) {
320
+ condtions[_i] = arguments[_i];
321
+ }
322
+ return condtions.every(function (c) { return c(); });
323
+ };
324
+ Evaluator.prototype.fnOR = function () {
325
+ var condtions = [];
326
+ for (var _i = 0; _i < arguments.length; _i++) {
327
+ condtions[_i] = arguments[_i];
328
+ }
329
+ return condtions.some(function (c) { return c(); });
330
+ };
331
+ Evaluator.prototype.fnXOR = function (c1, c2) {
332
+ return !!c1() === !!c2();
333
+ };
334
+ Evaluator.prototype.fnIFS = function () {
335
+ var args = [];
336
+ for (var _i = 0; _i < arguments.length; _i++) {
337
+ args[_i] = arguments[_i];
338
+ }
339
+ if (args.length % 2) {
340
+ args.splice(args.length - 1, 0, function () { return true; });
341
+ }
342
+ while (args.length) {
343
+ var c = args.shift();
344
+ var v = args.shift();
345
+ if (c()) {
346
+ return v();
347
+ }
348
+ }
349
+ return;
350
+ };
351
+ // 数学函数
352
+ Evaluator.prototype.fnABS = function (a) {
353
+ return Math.abs(a);
354
+ };
355
+ Evaluator.prototype.fnMax = function () {
356
+ var args = [];
357
+ for (var _i = 0; _i < arguments.length; _i++) {
358
+ args[_i] = arguments[_i];
359
+ }
360
+ return Math.max.apply(Math, args);
361
+ };
362
+ Evaluator.prototype.fnMin = function () {
363
+ var args = [];
364
+ for (var _i = 0; _i < arguments.length; _i++) {
365
+ args[_i] = arguments[_i];
366
+ }
367
+ return Math.min.apply(Math, args);
368
+ };
369
+ Evaluator.prototype.fnSUM = function () {
370
+ var _this = this;
371
+ var args = [];
372
+ for (var _i = 0; _i < arguments.length; _i++) {
373
+ args[_i] = arguments[_i];
374
+ }
375
+ return args.reduce(function (sum, a) { return sum + _this.formatNumber(a) || 0; }, 0);
376
+ };
377
+ Evaluator.prototype.fnINT = function (n) {
378
+ return Math.floor(n);
379
+ };
380
+ Evaluator.prototype.fnMOD = function (a, b) {
381
+ return a % b;
382
+ };
383
+ Evaluator.prototype.fnPI = function () {
384
+ return Math.PI;
385
+ };
386
+ Evaluator.prototype.fnROUND = function (a, b) {
387
+ var bResult = Math.round(b);
388
+ if (bResult) {
389
+ var c = Math.pow(10, bResult);
390
+ return Math.round(a * c) / c;
391
+ }
392
+ return Math.round(a);
393
+ };
394
+ Evaluator.prototype.fnSQRT = function (n) {
395
+ return Math.sqrt(n);
396
+ };
397
+ Evaluator.prototype.fnAVG = function () {
398
+ var args = [];
399
+ for (var _i = 0; _i < arguments.length; _i++) {
400
+ args[_i] = arguments[_i];
401
+ }
402
+ return this.fnSUM.apply(this, args) / args.length;
403
+ };
404
+ Evaluator.prototype.fnUPPERMONEY = function () {
405
+ return 'todo';
406
+ };
407
+ Evaluator.prototype.fnRAND = function () {
408
+ return Math.random();
409
+ };
410
+ // 文本函数
411
+ Evaluator.prototype.normalizeText = function (raw) {
412
+ if (raw instanceof Date) {
413
+ return (0, moment_1.default)(raw).format();
414
+ }
415
+ return "".concat(raw);
416
+ };
417
+ Evaluator.prototype.fnLEFT = function (text, len) {
418
+ text = this.normalizeText(text);
419
+ return text.substring(0, len);
420
+ };
421
+ Evaluator.prototype.fnRIGHT = function (text, len) {
422
+ text = this.normalizeText(text);
423
+ return text.substring(text.length - len, text.length);
424
+ };
425
+ Evaluator.prototype.fnLEN = function (text) {
426
+ text = this.normalizeText(text);
427
+ return text === null || text === void 0 ? void 0 : text.length;
428
+ };
429
+ Evaluator.prototype.fnISEMPTY = function (text) {
430
+ return !text || !String(text).trim();
431
+ };
432
+ Evaluator.prototype.fnCONCATENATE = function () {
433
+ var args = [];
434
+ for (var _i = 0; _i < arguments.length; _i++) {
435
+ args[_i] = arguments[_i];
436
+ }
437
+ return args.join('');
438
+ };
439
+ Evaluator.prototype.fnCHAR = function (code) {
440
+ return String.fromCharCode(code);
441
+ };
442
+ Evaluator.prototype.fnLOWER = function (text) {
443
+ text = this.normalizeText(text);
444
+ return text.toLowerCase();
445
+ };
446
+ Evaluator.prototype.fnUPPER = function (text) {
447
+ text = this.normalizeText(text);
448
+ return text.toUpperCase();
449
+ };
450
+ Evaluator.prototype.fnSPLIT = function (text, sep) {
451
+ text = this.normalizeText(text);
452
+ return text.split(sep);
453
+ };
454
+ Evaluator.prototype.fnTRIM = function (text) {
455
+ text = this.normalizeText(text);
456
+ return text.trim();
457
+ };
458
+ Evaluator.prototype.fnSTARTSWITH = function (text, search) {
459
+ if (!search) {
460
+ return false;
461
+ }
462
+ text = this.normalizeText(text);
463
+ return text.indexOf(search) === 0;
464
+ };
465
+ Evaluator.prototype.fnCONTAINS = function (text, search) {
466
+ if (!search) {
467
+ return false;
468
+ }
469
+ text = this.normalizeText(text);
470
+ return !!~text.indexOf(search);
471
+ };
472
+ Evaluator.prototype.fnREPLACE = function (text, search, replace) {
473
+ text = this.normalizeText(text);
474
+ var result = text;
475
+ while (true) {
476
+ var idx = result.indexOf(search);
477
+ if (!~idx) {
478
+ break;
479
+ }
480
+ result =
481
+ result.substring(0, idx) +
482
+ replace +
483
+ result.substring(idx + search.length);
484
+ }
485
+ return result;
486
+ };
487
+ Evaluator.prototype.fnSEARCH = function (text, search, start) {
488
+ text = this.normalizeText(text);
489
+ start = start || 0;
490
+ var str = text;
491
+ if (start) {
492
+ str = str.substring(start);
493
+ }
494
+ var idx = str.indexOf(search);
495
+ if (~idx) {
496
+ return idx + search;
497
+ }
498
+ return -1;
499
+ };
500
+ Evaluator.prototype.fnMID = function (text, from, len) {
501
+ text = this.normalizeText(text);
502
+ return text.substring(from, from + len);
503
+ };
504
+ // 日期函数
505
+ Evaluator.prototype.fnDATE = function (year, month, day, hour, minute, second) {
506
+ if (month === undefined) {
507
+ return new Date(year);
508
+ }
509
+ return new Date(year, month, day, hour, minute, second);
510
+ };
511
+ Evaluator.prototype.fnTIMESTAMP = function (date, format) {
512
+ return parseInt((0, moment_1.default)(date).format(format === 'x' ? 'x' : 'X'), 10);
513
+ };
514
+ Evaluator.prototype.fnTODAY = function () {
515
+ return new Date();
516
+ };
517
+ Evaluator.prototype.fnNOW = function () {
518
+ return new Date();
519
+ };
520
+ Evaluator.prototype.fnSTARTOF = function (date, unit) {
521
+ return (0, moment_1.default)(date)
522
+ .startOf(unit || 'day')
523
+ .toDate();
524
+ };
525
+ Evaluator.prototype.fnENDOF = function (date, unit) {
526
+ return (0, moment_1.default)(date)
527
+ .endOf(unit || 'day')
528
+ .toDate();
529
+ };
530
+ Evaluator.prototype.normalizeDate = function (raw) {
531
+ if (typeof raw === 'string') {
532
+ var formats = ['', 'YYYY-MM-DD HH:mm:ss'];
533
+ while (formats.length) {
534
+ var format = formats.shift();
535
+ var date = (0, moment_1.default)(raw, format);
536
+ if (date.isValid()) {
537
+ return date.toDate();
538
+ }
539
+ }
540
+ }
541
+ else if (typeof raw === 'number') {
542
+ return new Date(raw);
543
+ }
544
+ return raw;
545
+ };
546
+ Evaluator.prototype.fnYEAR = function (date) {
547
+ date = this.normalizeDate(date);
548
+ return date.getFullYear();
549
+ };
550
+ Evaluator.prototype.fnMONTH = function (date) {
551
+ date = this.normalizeDate(date);
552
+ return date.getMonth() + 1;
553
+ };
554
+ Evaluator.prototype.fnDAY = function (date) {
555
+ date = this.normalizeDate(date);
556
+ return date.getDate();
557
+ };
558
+ Evaluator.prototype.fnHOUR = function (date) {
559
+ date = this.normalizeDate(date);
560
+ return date.getHours();
561
+ };
562
+ Evaluator.prototype.fnHMINUTE = function (date) {
563
+ date = this.normalizeDate(date);
564
+ return date.getMinutes();
565
+ };
566
+ Evaluator.prototype.fnSECOND = function (date) {
567
+ date = this.normalizeDate(date);
568
+ return date.getSeconds();
569
+ };
570
+ Evaluator.prototype.fnYEARS = function (endDate, startDate) {
571
+ endDate = this.normalizeDate(endDate);
572
+ startDate = this.normalizeDate(startDate);
573
+ return (0, moment_1.default)(endDate).diff((0, moment_1.default)(startDate), 'year');
574
+ };
575
+ Evaluator.prototype.fnMINUTES = function (endDate, startDate) {
576
+ endDate = this.normalizeDate(endDate);
577
+ startDate = this.normalizeDate(startDate);
578
+ return (0, moment_1.default)(endDate).diff((0, moment_1.default)(startDate), 'minutes');
579
+ };
580
+ Evaluator.prototype.fnDAYS = function (endDate, startDate) {
581
+ endDate = this.normalizeDate(endDate);
582
+ startDate = this.normalizeDate(startDate);
583
+ return (0, moment_1.default)(endDate).diff((0, moment_1.default)(startDate), 'days');
584
+ };
585
+ Evaluator.prototype.fnHOURS = function (endDate, startDate) {
586
+ endDate = this.normalizeDate(endDate);
587
+ startDate = this.normalizeDate(startDate);
588
+ return (0, moment_1.default)(endDate).diff((0, moment_1.default)(startDate), 'hour');
589
+ };
590
+ Evaluator.prototype.fnDATEMODIFY = function (date, num, format) {
591
+ date = this.normalizeDate(date);
592
+ return (0, moment_1.default)(date).add(num, format).toDate();
593
+ };
594
+ Evaluator.prototype.fnSTRTODATE = function (value, format) {
595
+ if (format === void 0) { format = ''; }
596
+ return (0, moment_1.default)(value, format).toDate();
597
+ };
598
+ Evaluator.prototype.fnISBEFORE = function (a, b, unit) {
599
+ if (unit === void 0) { unit = 'day'; }
600
+ a = this.normalizeDate(a);
601
+ b = this.normalizeDate(b);
602
+ return (0, moment_1.default)(a).isBefore((0, moment_1.default)(b), unit);
603
+ };
604
+ Evaluator.prototype.fnISAFTER = function (a, b, unit) {
605
+ if (unit === void 0) { unit = 'day'; }
606
+ a = this.normalizeDate(a);
607
+ b = this.normalizeDate(b);
608
+ return (0, moment_1.default)(a).isAfter((0, moment_1.default)(b), unit);
609
+ };
610
+ Evaluator.prototype.fnISSAMEORBEFORE = function (a, b, unit) {
611
+ if (unit === void 0) { unit = 'day'; }
612
+ a = this.normalizeDate(a);
613
+ b = this.normalizeDate(b);
614
+ return (0, moment_1.default)(a).isSameOrBefore((0, moment_1.default)(b), unit);
615
+ };
616
+ Evaluator.prototype.fnISSAMEORAFTER = function (a, b, unit) {
617
+ if (unit === void 0) { unit = 'day'; }
618
+ a = this.normalizeDate(a);
619
+ b = this.normalizeDate(b);
620
+ return (0, moment_1.default)(a).isSameOrAfter((0, moment_1.default)(b), unit);
621
+ };
622
+ Evaluator.prototype.fnCOUNT = function (value) {
623
+ return Array.isArray(value) ? value.length : value ? 1 : 0;
624
+ };
625
+ return Evaluator;
626
+ }());
627
+ exports.Evaluator = Evaluator;
628
+
629
+
630
+ /***/ }),
631
+
632
+ /***/ 589:
633
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
634
+
635
+
636
+ var _this = this;
637
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
638
+ exports.getFilters = exports.registerFilter = exports.filters = void 0;
639
+ var tslib_1 = __webpack_require__(752);
640
+ var moment_1 = (0, tslib_1.__importDefault)(__webpack_require__(245));
641
+ var transform_1 = (0, tslib_1.__importDefault)(__webpack_require__(341));
642
+ var groupBy_1 = (0, tslib_1.__importDefault)(__webpack_require__(492));
643
+ var uniqBy_1 = (0, tslib_1.__importDefault)(__webpack_require__(309));
644
+ var uniq_1 = (0, tslib_1.__importDefault)(__webpack_require__(459));
645
+ var util_1 = __webpack_require__(378);
646
+ function makeSorter(key, method, order) {
647
+ return function (a, b) {
648
+ if (!a || !b) {
649
+ return 0;
650
+ }
651
+ var va = (0, util_1.resolveVariable)(key, a);
652
+ var vb = (0, util_1.resolveVariable)(key, b);
653
+ var result = 0;
654
+ if (method === 'numerical') {
655
+ result = (parseFloat(va) || 0) - (parseFloat(vb) || 0);
656
+ }
657
+ else {
658
+ result = String(va).localeCompare(String(vb));
659
+ }
660
+ return result * (order === 'desc' ? -1 : 1);
661
+ };
662
+ }
663
+ exports.filters = {
664
+ map: function (input, fn) {
665
+ var arg = [];
666
+ for (var _i = 2; _i < arguments.length; _i++) {
667
+ arg[_i - 2] = arguments[_i];
668
+ }
669
+ return Array.isArray(input) && exports.filters[fn]
670
+ ? input.map(function (item) {
671
+ var _a;
672
+ return (_a = exports.filters[fn]).call.apply(_a, (0, tslib_1.__spreadArray)([_this, item], arg, false));
673
+ })
674
+ : input;
675
+ },
676
+ html: function (input) {
677
+ if (input == null) {
678
+ return input;
679
+ }
680
+ return (0, util_1.escapeHtml)(input);
681
+ },
682
+ json: function (input, tabSize) {
683
+ if (tabSize === void 0) { tabSize = 2; }
684
+ return tabSize
685
+ ? JSON.stringify(input, null, parseInt(tabSize, 10))
686
+ : JSON.stringify(input);
687
+ },
688
+ toJson: function (input) {
689
+ var ret;
690
+ try {
691
+ ret = JSON.parse(input);
692
+ }
693
+ catch (e) {
694
+ ret = null;
695
+ }
696
+ return ret;
697
+ },
698
+ toInt: function (input) { return (typeof input === 'string' ? parseInt(input, 10) : input); },
699
+ toFloat: function (input) { return (typeof input === 'string' ? parseFloat(input) : input); },
700
+ raw: function (input) { return input; },
701
+ now: function () { return new Date(); },
702
+ toDate: function (input, inputFormat) {
703
+ if (inputFormat === void 0) { inputFormat = ''; }
704
+ var data = (0, moment_1.default)(input, inputFormat);
705
+ data.add();
706
+ return data.isValid() ? data.toDate() : undefined;
707
+ },
708
+ fromNow: function (input, inputFormat) {
709
+ if (inputFormat === void 0) { inputFormat = ''; }
710
+ return (0, moment_1.default)(input, inputFormat).fromNow();
711
+ },
712
+ dateModify: function (input, modifier, amount, unit) {
713
+ if (modifier === void 0) { modifier = 'add'; }
714
+ if (amount === void 0) { amount = 0; }
715
+ if (unit === void 0) { unit = 'days'; }
716
+ if (!(input instanceof Date)) {
717
+ input = new Date();
718
+ }
719
+ if (modifier === 'endOf' || modifier === 'startOf') {
720
+ return (0, moment_1.default)(input)[modifier === 'endOf' ? 'endOf' : 'startOf'](amount || 'day')
721
+ .toDate();
722
+ }
723
+ return (0, moment_1.default)(input)[modifier === 'add' ? 'add' : 'subtract'](parseInt(amount, 10) || 0, unit)
724
+ .toDate();
725
+ },
726
+ date: function (input, format, inputFormat) {
727
+ if (format === void 0) { format = 'LLL'; }
728
+ if (inputFormat === void 0) { inputFormat = 'X'; }
729
+ return (0, moment_1.default)(input, inputFormat).format(format);
730
+ },
731
+ number: function (input) {
732
+ var parts = String(input).split('.');
733
+ parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ',');
734
+ return parts.join('.');
735
+ },
736
+ trim: function (input) { return (typeof input === 'string' ? input.trim() : input); },
737
+ percent: function (input, decimals) {
738
+ if (decimals === void 0) { decimals = 0; }
739
+ input = parseFloat(input) || 0;
740
+ decimals = parseInt(decimals, 10) || 0;
741
+ var whole = input * 100;
742
+ var multiplier = Math.pow(10, decimals);
743
+ return ((Math.round(whole * multiplier) / multiplier).toFixed(decimals) + '%');
744
+ },
745
+ duration: function (input) { return (input ? (0, util_1.formatDuration)(input) : input); },
746
+ bytes: function (input) { return (input ? (0, util_1.prettyBytes)(parseFloat(input)) : input); },
747
+ round: function (input, decimals) {
748
+ var _a;
749
+ if (decimals === void 0) { decimals = 2; }
750
+ if (isNaN(input)) {
751
+ return 0;
752
+ }
753
+ decimals = (_a = parseInt(decimals, 10)) !== null && _a !== void 0 ? _a : 2;
754
+ var multiplier = Math.pow(10, decimals);
755
+ return (Math.round(input * multiplier) / multiplier).toFixed(decimals);
756
+ },
757
+ truncate: function (input, length, end) {
758
+ if (typeof input !== 'string') {
759
+ return input;
760
+ }
761
+ end = end || '...';
762
+ if (length == null) {
763
+ return input;
764
+ }
765
+ length = parseInt(length, 10) || 200;
766
+ return input.substring(0, length) + (input.length > length ? end : '');
767
+ },
768
+ url_encode: function (input) { return encodeURIComponent(input); },
769
+ url_decode: function (input) { return decodeURIComponent(input); },
770
+ default: function (input, defaultValue, strict) {
771
+ var _a;
772
+ if (strict === void 0) { strict = false; }
773
+ return (_a = (strict ? input : input ? input : undefined)) !== null && _a !== void 0 ? _a : (function () {
774
+ try {
775
+ if (defaultValue === 'undefined') {
776
+ return undefined;
777
+ }
778
+ return JSON.parse(defaultValue);
779
+ }
780
+ catch (e) {
781
+ return defaultValue;
782
+ }
783
+ })();
784
+ },
785
+ join: function (input, glue) { return (input && input.join ? input.join(glue) : input); },
786
+ split: function (input, delimiter) {
787
+ if (delimiter === void 0) { delimiter = ','; }
788
+ return typeof input === 'string' ? input.split(delimiter) : input;
789
+ },
790
+ sortBy: function (input, key, method, order) {
791
+ if (method === void 0) { method = 'alpha'; }
792
+ return Array.isArray(input) ? input.sort(makeSorter(key, method, order)) : input;
793
+ },
794
+ objectToArray: function (input, label, value) {
795
+ if (label === void 0) { label = 'label'; }
796
+ if (value === void 0) { value = 'value'; }
797
+ return (0, transform_1.default)(input, function (result, v, k) {
798
+ var _a;
799
+ (result || (result = [])).push((_a = {},
800
+ _a[label] = v,
801
+ _a[value] = k,
802
+ _a));
803
+ }, []);
804
+ },
805
+ unique: function (input, key) {
806
+ return Array.isArray(input) ? (key ? (0, uniqBy_1.default)(input, key) : (0, uniq_1.default)(input)) : input;
807
+ },
808
+ topAndOther: function (input, len, labelField, restLabel) {
809
+ if (len === void 0) { len = 10; }
810
+ if (labelField === void 0) { labelField = 'name'; }
811
+ if (restLabel === void 0) { restLabel = '其他'; }
812
+ if (Array.isArray(input) && len) {
813
+ var grouped_1 = (0, groupBy_1.default)(input, function (item) {
814
+ var index = input.indexOf(item) + 1;
815
+ return index >= len ? len : index;
816
+ });
817
+ return Object.keys(grouped_1).map(function (key, index) {
818
+ var group = grouped_1[key];
819
+ var obj = group.reduce(function (obj, item) {
820
+ Object.keys(item).forEach(function (key) {
821
+ if (!obj.hasOwnProperty(key) || key === 'labelField') {
822
+ obj[key] = item[key];
823
+ }
824
+ else if (typeof item[key] === 'number' &&
825
+ typeof obj[key] === 'number') {
826
+ obj[key] += item[key];
827
+ }
828
+ else if (typeof item[key] === 'string' &&
829
+ /^(?:\-|\.)\d/.test(item[key]) &&
830
+ typeof obj[key] === 'number') {
831
+ obj[key] += parseFloat(item[key]) || 0;
832
+ }
833
+ else if (typeof item[key] === 'string' &&
834
+ typeof obj[key] === 'string') {
835
+ obj[key] += ", ".concat(item[key]);
836
+ }
837
+ else {
838
+ obj[key] = item[key];
839
+ }
840
+ });
841
+ return obj;
842
+ }, {});
843
+ if (index === len - 1) {
844
+ obj[labelField] = restLabel || '其他';
845
+ }
846
+ return obj;
847
+ });
848
+ }
849
+ return input;
850
+ },
851
+ first: function (input) { return input && input[0]; },
852
+ nth: function (input, nth) {
853
+ if (nth === void 0) { nth = 0; }
854
+ return input && input[nth];
855
+ },
856
+ last: function (input) { return input && (input.length ? input[input.length - 1] : null); },
857
+ minus: function (input, step) {
858
+ if (step === void 0) { step = 1; }
859
+ return (0, util_1.stripNumber)((Number(input) || 0) - Number(getStrOrVariable(step, this.data)));
860
+ },
861
+ plus: function (input, step) {
862
+ if (step === void 0) { step = 1; }
863
+ return (0, util_1.stripNumber)((Number(input) || 0) + Number(getStrOrVariable(step, this.data)));
864
+ },
865
+ times: function (input, step) {
866
+ if (step === void 0) { step = 1; }
867
+ return (0, util_1.stripNumber)((Number(input) || 0) * Number(getStrOrVariable(step, this.data)));
868
+ },
869
+ division: function (input, step) {
870
+ if (step === void 0) { step = 1; }
871
+ return (0, util_1.stripNumber)((Number(input) || 0) / Number(getStrOrVariable(step, this.data)));
872
+ },
873
+ count: function (input) {
874
+ return Array.isArray(input) || typeof input === 'string' ? input.length : 0;
875
+ },
876
+ sum: function (input, field) {
877
+ if (!Array.isArray(input)) {
878
+ return input;
879
+ }
880
+ var restult = input.reduce(function (sum, item) {
881
+ return sum + (parseFloat(field ? (0, util_1.pickValues)(field, item) : item) || 0);
882
+ }, 0);
883
+ return (0, util_1.stripNumber)(restult);
884
+ },
885
+ abs: function (input) { return (typeof input === 'number' ? Math.abs(input) : input); },
886
+ pick: function (input, path) {
887
+ if (path === void 0) { path = '&'; }
888
+ return Array.isArray(input) && !/^\d+$/.test(path)
889
+ ? input.map(function (item, index) {
890
+ return (0, util_1.pickValues)(path, (0, util_1.createObject)({ index: index }, item));
891
+ })
892
+ : (0, util_1.pickValues)(path, input);
893
+ },
894
+ pick_if_exist: function (input, path) {
895
+ if (path === void 0) { path = '&'; }
896
+ return Array.isArray(input)
897
+ ? input.map(function (item) { return (0, util_1.resolveVariable)(path, item) || item; })
898
+ : (0, util_1.resolveVariable)(path, input) || input;
899
+ },
900
+ str2date: function (input, inputFormat, outputFormat) {
901
+ if (inputFormat === void 0) { inputFormat = 'X'; }
902
+ if (outputFormat === void 0) { outputFormat = 'X'; }
903
+ return input
904
+ ? (0, util_1.filterDate)(input, this.data, inputFormat).format(outputFormat)
905
+ : '';
906
+ },
907
+ asArray: function (input) { return (Array.isArray(input) ? input : input ? [input] : input); },
908
+ concat: function (input) {
909
+ var _this = this;
910
+ var args = [];
911
+ for (var _i = 1; _i < arguments.length; _i++) {
912
+ args[_i - 1] = arguments[_i];
913
+ }
914
+ return Array.isArray(input)
915
+ ? input.concat.apply(input, args.map(function (arg) { return getStrOrVariable(arg, _this.data); })) : input;
916
+ },
917
+ filter: function (input, keys, expOrDirective, arg1) {
918
+ if (!Array.isArray(input) || !keys || !expOrDirective) {
919
+ return input;
920
+ }
921
+ var directive = expOrDirective;
922
+ var fn = function () { return true; };
923
+ if (directive === 'isTrue') {
924
+ fn = function (value) { return !!value; };
925
+ }
926
+ else if (directive === 'isFalse') {
927
+ fn = function (value) { return !value; };
928
+ }
929
+ else if (directive === 'isExists') {
930
+ fn = function (value) { return typeof value !== 'undefined'; };
931
+ }
932
+ else if (directive === 'equals' || directive === 'equal') {
933
+ arg1 = arg1 ? getStrOrVariable(arg1, this.data) : '';
934
+ fn = function (value) { return arg1 == value; };
935
+ }
936
+ else if (directive === 'isIn') {
937
+ var list_1 = arg1 ? getStrOrVariable(arg1, this.data) : [];
938
+ list_1 = str2array(list_1);
939
+ list_1 = Array.isArray(list_1) ? list_1 : list_1 ? [list_1] : [];
940
+ fn = function (value) { return (list_1.length ? !!~list_1.indexOf(value) : true); };
941
+ }
942
+ else if (directive === 'notIn') {
943
+ var list_2 = arg1 ? getStrOrVariable(arg1, this.data) : [];
944
+ list_2 = str2array(list_2);
945
+ list_2 = Array.isArray(list_2) ? list_2 : list_2 ? [list_2] : [];
946
+ fn = function (value) { return !~list_2.indexOf(value); };
947
+ }
948
+ else {
949
+ if (directive !== 'match') {
950
+ directive = 'match';
951
+ arg1 = expOrDirective;
952
+ }
953
+ arg1 = arg1 ? getStrOrVariable(arg1, this.data) : '';
954
+ // 比对的值是空时直接返回。
955
+ if (!arg1) {
956
+ return input;
957
+ }
958
+ var reg_1 = (0, util_1.string2regExp)("".concat(arg1), false);
959
+ fn = function (value) { return reg_1.test(String(value)); };
960
+ }
961
+ // 判断keys是否为*
962
+ var isAsterisk = /\s*\*\s*/.test(keys);
963
+ keys = keys.split(/\s*,\s*/);
964
+ return input.filter(function (item) {
965
+ // 当keys为*时从item中获取key
966
+ return (isAsterisk ? Object.keys(item) : keys).some(function (key) {
967
+ return fn((0, util_1.resolveVariable)(key, item), key, item);
968
+ });
969
+ });
970
+ },
971
+ base64Encode: function (str) {
972
+ return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, function toSolidBytes(match, p1) {
973
+ return String.fromCharCode(('0x' + p1));
974
+ }));
975
+ },
976
+ base64Decode: function (str) {
977
+ return decodeURIComponent(atob(str)
978
+ .split('')
979
+ .map(function (c) {
980
+ return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
981
+ })
982
+ .join(''));
983
+ },
984
+ lowerCase: function (input) {
985
+ return input && typeof input === 'string' ? input.toLowerCase() : input;
986
+ },
987
+ upperCase: function (input) {
988
+ return input && typeof input === 'string' ? input.toUpperCase() : input;
989
+ },
990
+ isTrue: function (input, trueValue, falseValue) {
991
+ var hasAlternate = arguments.length > 2;
992
+ return conditionalFilter(input, hasAlternate, this, !!input, trueValue, falseValue);
993
+ },
994
+ isFalse: function (input, trueValue, falseValue) {
995
+ var hasAlternate = arguments.length > 2;
996
+ return conditionalFilter(input, hasAlternate, this, !input, trueValue, falseValue);
997
+ },
998
+ isMatch: function (input, matchArg, trueValue, falseValue) {
999
+ var hasAlternate = arguments.length > 3;
1000
+ matchArg = getStrOrVariable(matchArg, this.data);
1001
+ return conditionalFilter(input, hasAlternate, this, matchArg && (0, util_1.string2regExp)("".concat(matchArg), false).test(String(input)), trueValue, falseValue);
1002
+ },
1003
+ notMatch: function (input, matchArg, trueValue, falseValue) {
1004
+ var hasAlternate = arguments.length > 3;
1005
+ matchArg = getStrOrVariable(matchArg, this.data);
1006
+ return conditionalFilter(input, hasAlternate, this, matchArg && !(0, util_1.string2regExp)("".concat(matchArg), false).test(String(input)), trueValue, falseValue);
1007
+ },
1008
+ isEquals: function (input, equalsValue, trueValue, falseValue) {
1009
+ equalsValue = /^\d+$/.test(equalsValue)
1010
+ ? parseInt(equalsValue, 10)
1011
+ : getStrOrVariable(equalsValue, this.data);
1012
+ var hasAlternate = arguments.length > 3;
1013
+ return conditionalFilter(input, hasAlternate, this, input === equalsValue, trueValue, falseValue);
1014
+ },
1015
+ notEquals: function (input, equalsValue, trueValue, falseValue) {
1016
+ equalsValue = /^\d+$/.test(equalsValue)
1017
+ ? parseInt(equalsValue, 10)
1018
+ : getStrOrVariable(equalsValue, this.data);
1019
+ var hasAlternate = arguments.length > 3;
1020
+ return conditionalFilter(input, hasAlternate, this, input !== equalsValue, trueValue, falseValue);
1021
+ }
1022
+ };
1023
+ function conditionalFilter(input, hasAlternate, filterContext, test, trueValue, falseValue) {
1024
+ hasAlternate && skipRestTest(filterContext.restFilters);
1025
+ return test || hasAlternate
1026
+ ? getStrOrVariable(test ? trueValue : falseValue, filterContext.data)
1027
+ : input;
1028
+ }
1029
+ /**
1030
+ * 如果当前传入字符为:'xxx'或者"xxx",则返回字符xxx
1031
+ * 否则去数据域中,获取变量xxx
1032
+ *
1033
+ * @param value 传入字符
1034
+ * @param data 数据域
1035
+ */
1036
+ function getStrOrVariable(value, data) {
1037
+ var _a;
1038
+ return typeof value === 'string' && /,/.test(value)
1039
+ ? value.split(/\s*,\s*/).filter(function (item) { return item; })
1040
+ : typeof value === 'string'
1041
+ ? (_a = (0, util_1.resolveVariable)(value, data)) !== null && _a !== void 0 ? _a : value
1042
+ : value;
1043
+ }
1044
+ function str2array(list) {
1045
+ if (list && typeof list === 'string') {
1046
+ if (/^\[.*\]$/.test(list)) {
1047
+ return list
1048
+ .substring(1, list.length - 1)
1049
+ .split(/\s*,\s*/)
1050
+ .filter(function (item) { return item; });
1051
+ }
1052
+ else {
1053
+ return list.split(/\s*,\s*/).filter(function (item) { return item; });
1054
+ }
1055
+ }
1056
+ return list;
1057
+ }
1058
+ function skipRestTest(restFilters) {
1059
+ var _a;
1060
+ while (~[
1061
+ 'isTrue',
1062
+ 'isFalse',
1063
+ 'isMatch',
1064
+ 'isEquals',
1065
+ 'notMatch',
1066
+ 'notEquals'
1067
+ ].indexOf((_a = restFilters[0]) === null || _a === void 0 ? void 0 : _a.name)) {
1068
+ restFilters.shift();
1069
+ }
1070
+ }
1071
+ function registerFilter(name, fn) {
1072
+ exports.filters[name] = fn;
1073
+ }
1074
+ exports.registerFilter = registerFilter;
1075
+ function getFilters() {
1076
+ return exports.filters;
1077
+ }
1078
+ exports.getFilters = getFilters;
1079
+
1080
+
1081
+ /***/ }),
1082
+
1083
+ /***/ 303:
1084
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1085
+
1086
+
1087
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
1088
+ exports.evaluate = exports.registerFilter = exports.getFilters = exports.filters = exports.Evaluator = exports.lexer = exports.parse = void 0;
1089
+ var tslib_1 = __webpack_require__(752);
1090
+ var evalutor_1 = __webpack_require__(453);
1091
+ Object.defineProperty(exports, "Evaluator", ({ enumerable: true, get: function () { return evalutor_1.Evaluator; } }));
1092
+ var parser_1 = __webpack_require__(833);
1093
+ Object.defineProperty(exports, "parse", ({ enumerable: true, get: function () { return parser_1.parse; } }));
1094
+ var lexer_1 = __webpack_require__(682);
1095
+ Object.defineProperty(exports, "lexer", ({ enumerable: true, get: function () { return lexer_1.lexer; } }));
1096
+ var filter_1 = __webpack_require__(589);
1097
+ Object.defineProperty(exports, "registerFilter", ({ enumerable: true, get: function () { return filter_1.registerFilter; } }));
1098
+ Object.defineProperty(exports, "filters", ({ enumerable: true, get: function () { return filter_1.filters; } }));
1099
+ Object.defineProperty(exports, "getFilters", ({ enumerable: true, get: function () { return filter_1.getFilters; } }));
1100
+ (0, tslib_1.__exportStar)(__webpack_require__(378), exports);
1101
+ function evaluate(astOrString, data, options) {
1102
+ if (typeof astOrString === 'string') {
1103
+ astOrString = (0, parser_1.parse)(astOrString, options);
1104
+ }
1105
+ return new evalutor_1.Evaluator(options).evalute(astOrString, data);
1106
+ }
1107
+ exports.evaluate = evaluate;
1108
+
1109
+
1110
+ /***/ }),
1111
+
1112
+ /***/ 682:
1113
+ /***/ ((__unused_webpack_module, exports) => {
1114
+
1115
+
1116
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
1117
+ exports.lexer = exports.TokenName = void 0;
1118
+ exports.TokenName = {};
1119
+ exports.TokenName[1] = 'Boolean';
1120
+ exports.TokenName[2] = 'Raw';
1121
+ exports.TokenName[3] = 'Variable';
1122
+ exports.TokenName[4] = 'OpenScript';
1123
+ exports.TokenName[5] = 'CloseScript';
1124
+ exports.TokenName[6] = 'EOF';
1125
+ exports.TokenName[7] = 'Identifier';
1126
+ exports.TokenName[8] = 'Literal';
1127
+ exports.TokenName[9] = 'Numeric';
1128
+ exports.TokenName[10] = 'Punctuator';
1129
+ exports.TokenName[11] = 'String';
1130
+ exports.TokenName[12] = 'RegularExpression';
1131
+ exports.TokenName[13] = 'TemplateRaw';
1132
+ exports.TokenName[14] = 'TemplateLeftBrace';
1133
+ exports.TokenName[15] = 'TemplateRightBrace';
1134
+ exports.TokenName[16] = 'OpenFilter';
1135
+ exports.TokenName[17] = 'Char';
1136
+ var mainStates = {
1137
+ START: 0,
1138
+ SCRIPT: 1,
1139
+ EXPRESSION: 2,
1140
+ BLOCK: 3,
1141
+ Template: 4,
1142
+ Filter: 5
1143
+ };
1144
+ var rawStates = {
1145
+ START: 0,
1146
+ ESCAPE: 1
1147
+ };
1148
+ var numberStates = {
1149
+ START: 0,
1150
+ MINUS: 1,
1151
+ ZERO: 2,
1152
+ DIGIT: 3,
1153
+ POINT: 4,
1154
+ DIGIT_FRACTION: 5,
1155
+ EXP: 6,
1156
+ EXP_DIGIT_OR_SIGN: 7
1157
+ };
1158
+ var stringStates = {
1159
+ START: 0,
1160
+ START_QUOTE_OR_CHAR: 1,
1161
+ ESCAPE: 2
1162
+ };
1163
+ var filterStates = {
1164
+ START: 0,
1165
+ Func: 1,
1166
+ SEP: 2,
1167
+ ESCAPE: 3
1168
+ };
1169
+ var punctuatorList = [
1170
+ '===',
1171
+ '!==',
1172
+ '==',
1173
+ '!=',
1174
+ '<>',
1175
+ '<',
1176
+ '>',
1177
+ '<=',
1178
+ '>=',
1179
+ '||',
1180
+ '&&',
1181
+ '++',
1182
+ '--',
1183
+ '<<',
1184
+ '>>',
1185
+ '>>>',
1186
+ '+=',
1187
+ '*=',
1188
+ '/=',
1189
+ '=',
1190
+ '*',
1191
+ '/',
1192
+ '-',
1193
+ '+',
1194
+ '^',
1195
+ '!',
1196
+ '%',
1197
+ '&',
1198
+ '|',
1199
+ '(',
1200
+ ')',
1201
+ '[',
1202
+ ']',
1203
+ '{',
1204
+ '}',
1205
+ '?',
1206
+ ':',
1207
+ ';',
1208
+ ',',
1209
+ '.',
1210
+ '$'
1211
+ ];
1212
+ var escapes = {
1213
+ '"': 0,
1214
+ '\\': 1,
1215
+ '/': 2,
1216
+ 'b': 3,
1217
+ 'f': 4,
1218
+ 'n': 5,
1219
+ 'r': 6,
1220
+ 't': 7,
1221
+ 'u': 8 // 4 hexadecimal digits
1222
+ };
1223
+ function isDigit1to9(char) {
1224
+ return char >= '1' && char <= '9';
1225
+ }
1226
+ function isDigit(char) {
1227
+ return char >= '0' && char <= '9';
1228
+ }
1229
+ function isHex(char) {
1230
+ return (isDigit(char) ||
1231
+ (char >= 'a' && char <= 'f') ||
1232
+ (char >= 'A' && char <= 'F'));
1233
+ }
1234
+ function isExp(char) {
1235
+ return char === 'e' || char === 'E';
1236
+ }
1237
+ function escapeString(text, allowedLetter) {
1238
+ if (allowedLetter === void 0) { allowedLetter = []; }
1239
+ return text.replace(/\\(.)/g, function (_, text) {
1240
+ return text === 'b'
1241
+ ? '\b'
1242
+ : text === 'f'
1243
+ ? '\f'
1244
+ : text === 'n'
1245
+ ? '\n'
1246
+ : text === 'r'
1247
+ ? '\r'
1248
+ : text === 't'
1249
+ ? '\t'
1250
+ : text === 'v'
1251
+ ? '\v'
1252
+ : ~allowedLetter.indexOf(text)
1253
+ ? text
1254
+ : _;
1255
+ });
1256
+ }
1257
+ function formatNumber(value) {
1258
+ return Number(value);
1259
+ }
1260
+ function lexer(input, options) {
1261
+ var line = 1;
1262
+ var column = 1;
1263
+ var index = 0;
1264
+ var mainState = mainStates.START;
1265
+ var states = [mainState];
1266
+ var tokenCache = [];
1267
+ var allowFilter = (options === null || options === void 0 ? void 0 : options.allowFilter) !== false;
1268
+ if (options === null || options === void 0 ? void 0 : options.evalMode) {
1269
+ pushState(mainStates.EXPRESSION);
1270
+ }
1271
+ function pushState(state) {
1272
+ states.push((mainState = state));
1273
+ }
1274
+ function popState() {
1275
+ states.pop();
1276
+ mainState = states[states.length - 1];
1277
+ }
1278
+ function position(value) {
1279
+ if (value && typeof value === 'string') {
1280
+ var lines = value.split(/[\r\n]+/);
1281
+ return {
1282
+ index: index + value.length,
1283
+ line: line + lines.length - 1,
1284
+ column: column + lines[lines.length - 1].length
1285
+ };
1286
+ }
1287
+ return { index: index, line: line, column: column };
1288
+ }
1289
+ function eof() {
1290
+ if (index >= input.length) {
1291
+ return {
1292
+ type: exports.TokenName[6 /* EOF */],
1293
+ value: undefined,
1294
+ start: position(),
1295
+ end: position()
1296
+ };
1297
+ }
1298
+ }
1299
+ function raw() {
1300
+ if (mainState !== mainStates.START) {
1301
+ return null;
1302
+ }
1303
+ var buffer = '';
1304
+ var state = rawStates.START;
1305
+ var i = index;
1306
+ while (i < input.length) {
1307
+ var ch = input[i];
1308
+ if (state === rawStates.ESCAPE) {
1309
+ if (escapes.hasOwnProperty(ch) || ch === '$') {
1310
+ buffer += ch;
1311
+ i++;
1312
+ state = rawStates.START;
1313
+ }
1314
+ else {
1315
+ var pos = position(buffer + ch);
1316
+ throw new SyntaxError("Unexpected token ".concat(ch, " in ").concat(pos.line, ":").concat(pos.column));
1317
+ }
1318
+ }
1319
+ else {
1320
+ if (ch === '\\') {
1321
+ buffer += ch;
1322
+ i++;
1323
+ state = rawStates.ESCAPE;
1324
+ continue;
1325
+ }
1326
+ else if (ch === '$') {
1327
+ var nextCh = input[i + 1];
1328
+ if (nextCh === '{') {
1329
+ break;
1330
+ }
1331
+ else if (nextCh === '$') {
1332
+ // $$ 用法兼容
1333
+ tokenCache.push({
1334
+ type: exports.TokenName[3 /* Variable */],
1335
+ value: '&',
1336
+ raw: '$$',
1337
+ start: position(input.substring(index, i)),
1338
+ end: position(input.substring(index, i + 2))
1339
+ });
1340
+ break;
1341
+ }
1342
+ else {
1343
+ // 支持旧的 $varName 的取值方法
1344
+ var j = i + 2;
1345
+ while (/^[a-zA-Z0-9_.][a-zA-Z0-9_.\[\]]*$/.test(input.substring(i + 1, j)) &&
1346
+ j <= input.length) {
1347
+ j++;
1348
+ }
1349
+ if (j - i > 2) {
1350
+ tokenCache.push({
1351
+ type: exports.TokenName[3 /* Variable */],
1352
+ value: input.substring(i + 1, j),
1353
+ raw: input.substring(i, j),
1354
+ start: position(input.substring(index, i)),
1355
+ end: position(input.substring(index, j))
1356
+ });
1357
+ break;
1358
+ }
1359
+ }
1360
+ }
1361
+ i++;
1362
+ buffer += ch;
1363
+ }
1364
+ }
1365
+ if (i > index) {
1366
+ return {
1367
+ type: exports.TokenName[2 /* RAW */],
1368
+ value: escapeString(buffer, ['`', '$']),
1369
+ raw: buffer,
1370
+ start: position(),
1371
+ end: position(buffer)
1372
+ };
1373
+ }
1374
+ return tokenCache.length ? tokenCache.shift() : null;
1375
+ }
1376
+ function openScript() {
1377
+ var ch = input[index];
1378
+ if (ch === '$') {
1379
+ var nextCh = input[index + 1];
1380
+ if (nextCh === '{') {
1381
+ pushState(mainStates.SCRIPT);
1382
+ var value = input.substring(index, index + 2);
1383
+ return {
1384
+ type: exports.TokenName[4 /* OpenScript */],
1385
+ value: value,
1386
+ start: position(),
1387
+ end: position(value)
1388
+ };
1389
+ }
1390
+ }
1391
+ return null;
1392
+ }
1393
+ function expression() {
1394
+ if (mainState !== mainStates.SCRIPT &&
1395
+ mainState !== mainStates.EXPRESSION &&
1396
+ mainState !== mainStates.BLOCK &&
1397
+ mainState !== mainStates.Filter) {
1398
+ return null;
1399
+ }
1400
+ var token = literal() ||
1401
+ identifier() ||
1402
+ numberLiteral() ||
1403
+ stringLiteral() ||
1404
+ punctuator() ||
1405
+ char();
1406
+ if ((token === null || token === void 0 ? void 0 : token.value) === '{') {
1407
+ pushState(mainStates.BLOCK);
1408
+ }
1409
+ else if ((token === null || token === void 0 ? void 0 : token.value) === '}') {
1410
+ if (mainState === mainStates.Filter) {
1411
+ popState();
1412
+ }
1413
+ var prevState = mainState;
1414
+ popState();
1415
+ if (prevState === mainStates.SCRIPT ||
1416
+ prevState === mainStates.EXPRESSION) {
1417
+ return {
1418
+ type: exports.TokenName[prevState === mainStates.EXPRESSION
1419
+ ? 15 /* TemplateRightBrace */
1420
+ : 5 /* CloseScript */],
1421
+ value: token.value,
1422
+ start: position(),
1423
+ end: position(token.value)
1424
+ };
1425
+ }
1426
+ }
1427
+ // filter 过滤器部分需要特殊处理
1428
+ if (mainState === mainStates.SCRIPT &&
1429
+ (token === null || token === void 0 ? void 0 : token.value) === '|' &&
1430
+ allowFilter) {
1431
+ pushState(mainStates.Filter);
1432
+ return {
1433
+ type: exports.TokenName[16 /* OpenFilter */],
1434
+ value: '|',
1435
+ start: position(),
1436
+ end: position('|')
1437
+ };
1438
+ }
1439
+ else if (mainState === mainStates.Filter && (token === null || token === void 0 ? void 0 : token.value) === '|') {
1440
+ return {
1441
+ type: exports.TokenName[16 /* OpenFilter */],
1442
+ value: '|',
1443
+ start: position(),
1444
+ end: position('|')
1445
+ };
1446
+ }
1447
+ if (!token && input[index] === '`') {
1448
+ pushState(mainStates.Template);
1449
+ return {
1450
+ type: exports.TokenName[10 /* Punctuator */],
1451
+ value: '`',
1452
+ start: position(),
1453
+ end: position('`')
1454
+ };
1455
+ }
1456
+ return token;
1457
+ }
1458
+ function char() {
1459
+ if (mainState !== mainStates.Filter) {
1460
+ return null;
1461
+ }
1462
+ var i = index;
1463
+ var ch = input[i];
1464
+ if (ch === '\\') {
1465
+ var nextCh = input[i + 1];
1466
+ if (nextCh === '$' ||
1467
+ ~punctuatorList.indexOf(nextCh) ||
1468
+ escapes.hasOwnProperty(nextCh)) {
1469
+ i++;
1470
+ ch =
1471
+ nextCh === 'b'
1472
+ ? '\b'
1473
+ : nextCh === 'f'
1474
+ ? '\f'
1475
+ : nextCh === 'n'
1476
+ ? '\n'
1477
+ : nextCh === 'r'
1478
+ ? '\r'
1479
+ : nextCh === 't'
1480
+ ? '\t'
1481
+ : nextCh === 'v'
1482
+ ? '\v'
1483
+ : nextCh;
1484
+ }
1485
+ else {
1486
+ var pos = position(input.substring(index, index + 1));
1487
+ throw new SyntaxError("Unexpected token ".concat(ch, " in ").concat(pos.line, ":").concat(pos.column));
1488
+ }
1489
+ }
1490
+ var token = {
1491
+ type: exports.TokenName[17 /* Char */],
1492
+ value: ch,
1493
+ start: position(),
1494
+ end: position(input.substring(index, i + 1))
1495
+ };
1496
+ return token;
1497
+ }
1498
+ function template() {
1499
+ if (mainState !== mainStates.Template) {
1500
+ return null;
1501
+ }
1502
+ var state = stringStates.START;
1503
+ var i = index;
1504
+ while (i < input.length) {
1505
+ var ch = input[i];
1506
+ if (state === stringStates.ESCAPE) {
1507
+ if (escapes.hasOwnProperty(ch) || ch === '`' || ch === '$') {
1508
+ i++;
1509
+ state = stringStates.START_QUOTE_OR_CHAR;
1510
+ }
1511
+ else {
1512
+ var pos = position(input.substring(index, i + 1));
1513
+ throw new SyntaxError("Unexpected token ".concat(ch, " in ").concat(pos.line, ":").concat(pos.column));
1514
+ }
1515
+ }
1516
+ else if (ch === '\\') {
1517
+ i++;
1518
+ state = stringStates.ESCAPE;
1519
+ }
1520
+ else if (ch === '`') {
1521
+ popState();
1522
+ tokenCache.push({
1523
+ type: exports.TokenName[10 /* Punctuator */],
1524
+ value: '`',
1525
+ start: position(input.substring(index, i)),
1526
+ end: position(input.substring(index, i + 1))
1527
+ });
1528
+ break;
1529
+ }
1530
+ else if (ch === '$') {
1531
+ var nextCh = input[i + 1];
1532
+ if (nextCh === '{') {
1533
+ pushState(mainStates.EXPRESSION);
1534
+ tokenCache.push({
1535
+ type: exports.TokenName[14 /* TemplateLeftBrace */],
1536
+ value: '${',
1537
+ start: position(input.substring(index, i)),
1538
+ end: position(input.substring(index, i + 2))
1539
+ });
1540
+ break;
1541
+ }
1542
+ i++;
1543
+ }
1544
+ else {
1545
+ i++;
1546
+ }
1547
+ }
1548
+ if (i > index) {
1549
+ var value = input.substring(index, i);
1550
+ return {
1551
+ type: exports.TokenName[13 /* TemplateRaw */],
1552
+ value: escapeString(value, ['`', '$']),
1553
+ raw: value,
1554
+ start: position(),
1555
+ end: position(value)
1556
+ };
1557
+ }
1558
+ return tokenCache.length ? tokenCache.shift() : null;
1559
+ }
1560
+ function skipWhiteSpace() {
1561
+ while (index < input.length) {
1562
+ var ch = input[index];
1563
+ if (ch === '\r') {
1564
+ // CR (Unix)
1565
+ index++;
1566
+ line++;
1567
+ column = 1;
1568
+ if (input.charAt(index) === '\n') {
1569
+ // CRLF (Windows)
1570
+ index++;
1571
+ }
1572
+ }
1573
+ else if (ch === '\n') {
1574
+ // LF (MacOS)
1575
+ index++;
1576
+ line++;
1577
+ column = 1;
1578
+ }
1579
+ else if (ch === '\t' || ch === ' ') {
1580
+ index++;
1581
+ column++;
1582
+ }
1583
+ else {
1584
+ break;
1585
+ }
1586
+ }
1587
+ }
1588
+ function punctuator() {
1589
+ var find = punctuatorList.find(function (punctuator) {
1590
+ return input.substring(index, index + punctuator.length) === punctuator;
1591
+ });
1592
+ if (find) {
1593
+ return {
1594
+ type: exports.TokenName[10 /* Punctuator */],
1595
+ value: find,
1596
+ start: position(),
1597
+ end: position(find)
1598
+ };
1599
+ }
1600
+ return null;
1601
+ }
1602
+ function literal() {
1603
+ var keyword = input.substring(index, index + 4).toLowerCase();
1604
+ var value = keyword;
1605
+ var isLiteral = false;
1606
+ if (keyword === 'true' || keyword === 'null') {
1607
+ isLiteral = true;
1608
+ value = keyword === 'true' ? true : null;
1609
+ }
1610
+ else if ((keyword = input.substring(index, index + 5).toLowerCase()) === 'false') {
1611
+ isLiteral = true;
1612
+ value = false;
1613
+ }
1614
+ else if ((keyword = input.substring(index, index + 9).toLowerCase()) ===
1615
+ 'undefined') {
1616
+ isLiteral = true;
1617
+ value = undefined;
1618
+ }
1619
+ if (isLiteral) {
1620
+ return {
1621
+ type: value === true || value === false
1622
+ ? exports.TokenName[1 /* BooleanLiteral */]
1623
+ : exports.TokenName[8 /* Literal */],
1624
+ value: value,
1625
+ raw: keyword,
1626
+ start: position(),
1627
+ end: position(keyword)
1628
+ };
1629
+ }
1630
+ return null;
1631
+ }
1632
+ function numberLiteral() {
1633
+ var i = index;
1634
+ var passedValueIndex = i;
1635
+ var state = numberStates.START;
1636
+ iterator: while (i < input.length) {
1637
+ var char_1 = input.charAt(i);
1638
+ switch (state) {
1639
+ case numberStates.START: {
1640
+ if (char_1 === '-') {
1641
+ state = numberStates.MINUS;
1642
+ }
1643
+ else if (char_1 === '0') {
1644
+ passedValueIndex = i + 1;
1645
+ state = numberStates.ZERO;
1646
+ }
1647
+ else if (isDigit1to9(char_1)) {
1648
+ passedValueIndex = i + 1;
1649
+ state = numberStates.DIGIT;
1650
+ }
1651
+ else {
1652
+ return null;
1653
+ }
1654
+ break;
1655
+ }
1656
+ case numberStates.MINUS: {
1657
+ if (char_1 === '0') {
1658
+ passedValueIndex = i + 1;
1659
+ state = numberStates.ZERO;
1660
+ }
1661
+ else if (isDigit1to9(char_1)) {
1662
+ passedValueIndex = i + 1;
1663
+ state = numberStates.DIGIT;
1664
+ }
1665
+ else {
1666
+ return null;
1667
+ }
1668
+ break;
1669
+ }
1670
+ case numberStates.ZERO: {
1671
+ if (char_1 === '.') {
1672
+ state = numberStates.POINT;
1673
+ }
1674
+ else if (isExp(char_1)) {
1675
+ state = numberStates.EXP;
1676
+ }
1677
+ else {
1678
+ break iterator;
1679
+ }
1680
+ break;
1681
+ }
1682
+ case numberStates.DIGIT: {
1683
+ if (isDigit(char_1)) {
1684
+ passedValueIndex = i + 1;
1685
+ }
1686
+ else if (char_1 === '.') {
1687
+ state = numberStates.POINT;
1688
+ }
1689
+ else if (isExp(char_1)) {
1690
+ state = numberStates.EXP;
1691
+ }
1692
+ else {
1693
+ break iterator;
1694
+ }
1695
+ break;
1696
+ }
1697
+ case numberStates.POINT: {
1698
+ if (isDigit(char_1)) {
1699
+ passedValueIndex = i + 1;
1700
+ state = numberStates.DIGIT_FRACTION;
1701
+ }
1702
+ else {
1703
+ break iterator;
1704
+ }
1705
+ break;
1706
+ }
1707
+ case numberStates.DIGIT_FRACTION: {
1708
+ if (isDigit(char_1)) {
1709
+ passedValueIndex = i + 1;
1710
+ }
1711
+ else if (isExp(char_1)) {
1712
+ state = numberStates.EXP;
1713
+ }
1714
+ else {
1715
+ break iterator;
1716
+ }
1717
+ break;
1718
+ }
1719
+ case numberStates.EXP: {
1720
+ if (char_1 === '+' || char_1 === '-') {
1721
+ state = numberStates.EXP_DIGIT_OR_SIGN;
1722
+ }
1723
+ else if (isDigit(char_1)) {
1724
+ passedValueIndex = i + 1;
1725
+ state = numberStates.EXP_DIGIT_OR_SIGN;
1726
+ }
1727
+ else {
1728
+ break iterator;
1729
+ }
1730
+ break;
1731
+ }
1732
+ case numberStates.EXP_DIGIT_OR_SIGN: {
1733
+ if (isDigit(char_1)) {
1734
+ passedValueIndex = i + 1;
1735
+ }
1736
+ else {
1737
+ break iterator;
1738
+ }
1739
+ break;
1740
+ }
1741
+ }
1742
+ i++;
1743
+ }
1744
+ if (passedValueIndex > 0) {
1745
+ var value = input.slice(index, passedValueIndex);
1746
+ return {
1747
+ type: exports.TokenName[9 /* NumericLiteral */],
1748
+ value: formatNumber(value),
1749
+ raw: value,
1750
+ start: position(),
1751
+ end: position(value)
1752
+ };
1753
+ }
1754
+ return null;
1755
+ }
1756
+ function stringLiteral() {
1757
+ var startQuote = '"';
1758
+ var state = stringStates.START;
1759
+ var i = index;
1760
+ while (i < input.length) {
1761
+ var ch = input[i];
1762
+ if (state === stringStates.START) {
1763
+ if (ch === '"' || ch === "'") {
1764
+ startQuote = ch;
1765
+ i++;
1766
+ state = stringStates.START_QUOTE_OR_CHAR;
1767
+ }
1768
+ else {
1769
+ break;
1770
+ }
1771
+ }
1772
+ else if (state === stringStates.ESCAPE) {
1773
+ if (escapes.hasOwnProperty(ch) || ch === startQuote) {
1774
+ i++;
1775
+ state = stringStates.START_QUOTE_OR_CHAR;
1776
+ }
1777
+ else {
1778
+ var pos = position(input.substring(index, i + 1));
1779
+ throw new SyntaxError("Unexpected token ".concat(ch, " in ").concat(pos.line, ":").concat(pos.column));
1780
+ }
1781
+ }
1782
+ else if (ch === '\\') {
1783
+ i++;
1784
+ state = stringStates.ESCAPE;
1785
+ }
1786
+ else if (ch === startQuote) {
1787
+ i++;
1788
+ break;
1789
+ }
1790
+ else {
1791
+ i++;
1792
+ }
1793
+ }
1794
+ if (i > index) {
1795
+ var value = input.substring(index, i);
1796
+ return {
1797
+ type: exports.TokenName[11 /* StringLiteral */],
1798
+ value: escapeString(value.substring(1, value.length - 1), [startQuote]),
1799
+ raw: value,
1800
+ start: position(),
1801
+ end: position(value)
1802
+ };
1803
+ }
1804
+ return null;
1805
+ }
1806
+ function identifier() {
1807
+ var i = index;
1808
+ var chunk = '';
1809
+ while (i < input.length) {
1810
+ var ch = input[i];
1811
+ if (/^[\u4e00-\u9fa5A-Za-z_$@][\u4e00-\u9fa5A-Za-z0-9_]*$/.test(chunk + ch)) {
1812
+ chunk += ch;
1813
+ i++;
1814
+ }
1815
+ else {
1816
+ break;
1817
+ }
1818
+ }
1819
+ if (i > index) {
1820
+ var value = input.substring(index, i);
1821
+ return {
1822
+ type: exports.TokenName[7 /* Identifier */],
1823
+ value: value,
1824
+ start: position(),
1825
+ end: position(value)
1826
+ };
1827
+ }
1828
+ return null;
1829
+ }
1830
+ function getNextToken() {
1831
+ if (tokenCache.length) {
1832
+ return tokenCache.shift();
1833
+ }
1834
+ if (mainState === mainStates.SCRIPT ||
1835
+ mainState === mainStates.EXPRESSION ||
1836
+ mainState === mainStates.BLOCK) {
1837
+ skipWhiteSpace();
1838
+ }
1839
+ return eof() || raw() || openScript() || expression() || template();
1840
+ }
1841
+ return {
1842
+ next: function () {
1843
+ var token = getNextToken();
1844
+ if (token) {
1845
+ index = token.end.index;
1846
+ line = token.end.line;
1847
+ column = token.end.column;
1848
+ return token;
1849
+ }
1850
+ var pos = position();
1851
+ throw new SyntaxError("unexpected character \"".concat(input[index], "\" at ").concat(pos.line, ":").concat(pos.column));
1852
+ }
1853
+ };
1854
+ }
1855
+ exports.lexer = lexer;
1856
+
1857
+
1858
+ /***/ }),
1859
+
1860
+ /***/ 833:
1861
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1862
+
1863
+
1864
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
1865
+ exports.parse = void 0;
1866
+ var lexer_1 = __webpack_require__(682);
1867
+ var argListStates = {
1868
+ START: 0,
1869
+ COMMA: 1
1870
+ };
1871
+ var tempalteStates = {
1872
+ START: 0,
1873
+ SCRIPTING: 1
1874
+ };
1875
+ var objectStates = {
1876
+ START: 0,
1877
+ KEY: 1,
1878
+ COLON: 2,
1879
+ VALUE: 3,
1880
+ COMMA: 4
1881
+ };
1882
+ function parse(input, options) {
1883
+ var _a;
1884
+ var token;
1885
+ var lexer = (0, lexer_1.lexer)(input, options);
1886
+ var tokens = [];
1887
+ var tokenChunk = [];
1888
+ function next() {
1889
+ token = tokenChunk.length ? tokenChunk.shift() : lexer.next();
1890
+ if (!token) {
1891
+ throw new TypeError('next token is undefined');
1892
+ }
1893
+ tokens.push(token);
1894
+ }
1895
+ function back() {
1896
+ tokenChunk.unshift(tokens.pop());
1897
+ token = tokens[tokens.length - 1];
1898
+ }
1899
+ function matchPunctuator(operator) {
1900
+ return (token.type === lexer_1.TokenName[10 /* Punctuator */] &&
1901
+ (Array.isArray(operator)
1902
+ ? ~operator.indexOf(token.value)
1903
+ : token.value === operator));
1904
+ }
1905
+ function fatal() {
1906
+ throw TypeError("Unexpected token <".concat(token.type, ">").concat(token.value, " in ").concat(token.start.line, ":").concat(token.start.column));
1907
+ }
1908
+ function assert(result) {
1909
+ if (!result) {
1910
+ fatal();
1911
+ }
1912
+ return result;
1913
+ }
1914
+ function expression() {
1915
+ return assignmentExpression();
1916
+ }
1917
+ function skipWhiteSpaceChar() {
1918
+ while (token.type === lexer_1.TokenName[17 /* Char */] &&
1919
+ /^\s+$/m.test(token.value)) {
1920
+ next();
1921
+ }
1922
+ }
1923
+ function collectFilterArg() {
1924
+ var arg = [];
1925
+ while (!matchPunctuator(':') &&
1926
+ token.type !== lexer_1.TokenName[16 /* OpenFilter */] &&
1927
+ token.type !== lexer_1.TokenName[5 /* CloseScript */]) {
1928
+ var item = literal() ||
1929
+ template() ||
1930
+ arrayLiteral() ||
1931
+ rawScript() ||
1932
+ objectLiteral();
1933
+ if (item) {
1934
+ arg.push(item);
1935
+ }
1936
+ else {
1937
+ assert(~[
1938
+ lexer_1.TokenName[7 /* Identifier */],
1939
+ lexer_1.TokenName[10 /* Punctuator */],
1940
+ lexer_1.TokenName[17 /* Char */]
1941
+ ].indexOf(token.type));
1942
+ // 其他的都当字符处理
1943
+ if (arg.length && typeof arg[arg.length - 1] === 'string') {
1944
+ arg[arg.length - 1] += token.raw || token.value;
1945
+ }
1946
+ else {
1947
+ arg.push(token.raw || token.value);
1948
+ }
1949
+ next();
1950
+ }
1951
+ }
1952
+ if (arg.length && typeof arg[arg.length - 1] === 'string') {
1953
+ arg[arg.length - 1] = arg[arg.length - 1].replace(/\s+$/, '');
1954
+ if (!arg[arg.length - 1]) {
1955
+ arg.pop();
1956
+ }
1957
+ }
1958
+ return arg;
1959
+ }
1960
+ function complexExpression() {
1961
+ var ast = expression();
1962
+ var filters = [];
1963
+ while (token.type === lexer_1.TokenName[16 /* OpenFilter */]) {
1964
+ next();
1965
+ skipWhiteSpaceChar();
1966
+ var name_1 = assert(identifier());
1967
+ var fnName = name_1.name;
1968
+ var args = [];
1969
+ skipWhiteSpaceChar();
1970
+ while (matchPunctuator(':')) {
1971
+ next();
1972
+ skipWhiteSpaceChar();
1973
+ var argContents = collectFilterArg();
1974
+ if (argContents.length === 1) {
1975
+ argContents = argContents[0];
1976
+ }
1977
+ else if (!argContents.length) {
1978
+ argContents = '';
1979
+ }
1980
+ args.push(Array.isArray(argContents)
1981
+ ? {
1982
+ type: 'mixed',
1983
+ body: argContents
1984
+ }
1985
+ : argContents);
1986
+ }
1987
+ filters.push({
1988
+ name: fnName,
1989
+ args: args
1990
+ });
1991
+ }
1992
+ if (filters.length) {
1993
+ ast = {
1994
+ type: 'filter',
1995
+ input: ast,
1996
+ filters: filters
1997
+ };
1998
+ }
1999
+ return ast;
2000
+ }
2001
+ function conditionalExpression() {
2002
+ var ast = logicalOrExpression();
2003
+ if (!ast) {
2004
+ return null;
2005
+ }
2006
+ if (matchPunctuator('?')) {
2007
+ next();
2008
+ var consequent = assignmentExpression();
2009
+ assert(consequent);
2010
+ assert(matchPunctuator(':'));
2011
+ next();
2012
+ var alternate = assignmentExpression();
2013
+ assert(alternate);
2014
+ return {
2015
+ type: 'conditional',
2016
+ test: ast,
2017
+ consequent: consequent,
2018
+ alternate: alternate
2019
+ };
2020
+ }
2021
+ return ast;
2022
+ }
2023
+ function binaryExpressionParser(type, operator, parseFunction, rightParseFunction, leftKey, rightKey) {
2024
+ var _a;
2025
+ if (rightParseFunction === void 0) { rightParseFunction = parseFunction; }
2026
+ if (leftKey === void 0) { leftKey = 'left'; }
2027
+ if (rightKey === void 0) { rightKey = 'right'; }
2028
+ var ast = parseFunction();
2029
+ if (!ast) {
2030
+ return null;
2031
+ }
2032
+ if (matchPunctuator(operator)) {
2033
+ while (matchPunctuator(operator)) {
2034
+ next();
2035
+ var right = assert(rightParseFunction());
2036
+ ast = (_a = {
2037
+ type: type,
2038
+ op: operator
2039
+ },
2040
+ _a[leftKey] = ast,
2041
+ _a[rightKey] = right,
2042
+ _a);
2043
+ }
2044
+ }
2045
+ return ast;
2046
+ }
2047
+ function logicalOrExpression() {
2048
+ return binaryExpressionParser('or', '||', logicalAndExpression);
2049
+ }
2050
+ function logicalAndExpression() {
2051
+ return binaryExpressionParser('and', '&&', bitwiseOrExpression);
2052
+ }
2053
+ function bitwiseOrExpression() {
2054
+ return binaryExpressionParser('binary', '|', bitwiseXOrExpression);
2055
+ }
2056
+ function bitwiseXOrExpression() {
2057
+ return binaryExpressionParser('binary', '^', bitwiseAndExpression);
2058
+ }
2059
+ function bitwiseAndExpression() {
2060
+ return binaryExpressionParser('binary', '&', equalityExpression);
2061
+ }
2062
+ function equalityExpression() {
2063
+ return binaryExpressionParser('eq', '==', function () {
2064
+ return binaryExpressionParser('ne', '!=', function () {
2065
+ return binaryExpressionParser('streq', '===', function () {
2066
+ return binaryExpressionParser('strneq', '!==', relationalExpression);
2067
+ });
2068
+ });
2069
+ });
2070
+ }
2071
+ function relationalExpression() {
2072
+ return binaryExpressionParser('lt', '<', function () {
2073
+ return binaryExpressionParser('gt', '>', function () {
2074
+ return binaryExpressionParser('le', '<=', function () {
2075
+ return binaryExpressionParser('ge', '>=', shiftExpression);
2076
+ });
2077
+ });
2078
+ });
2079
+ }
2080
+ function shiftExpression() {
2081
+ return binaryExpressionParser('shift', '<<', function () {
2082
+ return binaryExpressionParser('shift', '>>', function () {
2083
+ return binaryExpressionParser('shift', '>>>', additiveExpression);
2084
+ });
2085
+ });
2086
+ }
2087
+ function additiveExpression() {
2088
+ return binaryExpressionParser('add', '+', function () {
2089
+ return binaryExpressionParser('minus', '-', multiplicativeExpression);
2090
+ });
2091
+ }
2092
+ function multiplicativeExpression() {
2093
+ return binaryExpressionParser('multiply', '*', function () {
2094
+ return binaryExpressionParser('divide', '/', function () {
2095
+ return binaryExpressionParser('remainder', '%', powerExpression);
2096
+ });
2097
+ });
2098
+ }
2099
+ function powerExpression() {
2100
+ return binaryExpressionParser('power', '**', unaryExpression);
2101
+ }
2102
+ function unaryExpression() {
2103
+ var unaryOperators = ['+', '-', '~', '!'];
2104
+ var stack = [];
2105
+ while (matchPunctuator(unaryOperators)) {
2106
+ stack.push(token);
2107
+ next();
2108
+ }
2109
+ var ast = postfixExpression();
2110
+ assert(!stack.length || ast);
2111
+ while (stack.length) {
2112
+ var op = stack.pop();
2113
+ ast = {
2114
+ type: 'unary',
2115
+ op: op.value,
2116
+ value: ast
2117
+ };
2118
+ }
2119
+ return ast;
2120
+ }
2121
+ function postfixExpression() {
2122
+ var ast = leftHandSideExpression();
2123
+ if (!ast) {
2124
+ return null;
2125
+ }
2126
+ while (matchPunctuator('[') || matchPunctuator('.')) {
2127
+ var isDot = matchPunctuator('.');
2128
+ next();
2129
+ var right = assert(isDot
2130
+ ? identifier() /* 为了兼容久的语法,理论上来说只需要 identifier, 下面的 rawScript 是不应该有的 */ ||
2131
+ rawScript()
2132
+ : varibleKey());
2133
+ if (!isDot) {
2134
+ if (matchPunctuator(']')) {
2135
+ next();
2136
+ }
2137
+ else {
2138
+ fatal();
2139
+ }
2140
+ }
2141
+ ast = {
2142
+ type: 'get',
2143
+ host: ast,
2144
+ key: right
2145
+ };
2146
+ }
2147
+ return ast;
2148
+ }
2149
+ function leftHandSideExpression() {
2150
+ return functionCall() || primaryExpression();
2151
+ }
2152
+ function varibleKey() {
2153
+ if (token.type === lexer_1.TokenName[7 /* Identifier */]) {
2154
+ var cToken = token;
2155
+ next();
2156
+ return cToken.value;
2157
+ }
2158
+ return stringLiteral() || template();
2159
+ }
2160
+ function stringLiteral() {
2161
+ if (token.type === lexer_1.TokenName[11 /* StringLiteral */]) {
2162
+ var cToken = token;
2163
+ next();
2164
+ return {
2165
+ type: 'string',
2166
+ value: cToken.value
2167
+ };
2168
+ }
2169
+ return null;
2170
+ }
2171
+ function template() {
2172
+ if (matchPunctuator('`')) {
2173
+ next();
2174
+ var state = tempalteStates.START;
2175
+ var ast_1 = {
2176
+ type: 'template',
2177
+ body: []
2178
+ };
2179
+ while (true) {
2180
+ if (state === tempalteStates.SCRIPTING) {
2181
+ var exp = assert(expression());
2182
+ ast_1.body.push(exp);
2183
+ assert(token.type === lexer_1.TokenName[15 /* TemplateRightBrace */]);
2184
+ state = tempalteStates.START;
2185
+ next();
2186
+ }
2187
+ else {
2188
+ if (matchPunctuator('`')) {
2189
+ next();
2190
+ break;
2191
+ }
2192
+ else if (token.type === lexer_1.TokenName[14 /* TemplateLeftBrace */]) {
2193
+ next();
2194
+ state = tempalteStates.SCRIPTING;
2195
+ }
2196
+ else if (token.type === lexer_1.TokenName[13 /* TemplateRaw */]) {
2197
+ ast_1.body.push({
2198
+ type: 'template_raw',
2199
+ value: token.value
2200
+ });
2201
+ next();
2202
+ }
2203
+ }
2204
+ }
2205
+ return ast_1;
2206
+ }
2207
+ return null;
2208
+ }
2209
+ function identifier() {
2210
+ if (token.type === lexer_1.TokenName[7 /* Identifier */]) {
2211
+ var cToken = token;
2212
+ next();
2213
+ return {
2214
+ type: 'variable',
2215
+ name: cToken.value
2216
+ };
2217
+ }
2218
+ return null;
2219
+ }
2220
+ function primaryExpression() {
2221
+ return (identifier() ||
2222
+ literal() ||
2223
+ template() ||
2224
+ arrayLiteral() ||
2225
+ objectLiteral() ||
2226
+ (function () {
2227
+ var ast = expressionList();
2228
+ if ((ast === null || ast === void 0 ? void 0 : ast.body.length) === 1) {
2229
+ return ast.body[0];
2230
+ }
2231
+ return ast;
2232
+ })() ||
2233
+ rawScript());
2234
+ }
2235
+ function literal() {
2236
+ if (token.type === lexer_1.TokenName[8 /* Literal */] ||
2237
+ token.type === lexer_1.TokenName[1 /* BooleanLiteral */] ||
2238
+ token.type === lexer_1.TokenName[9 /* NumericLiteral */] ||
2239
+ token.type === lexer_1.TokenName[11 /* StringLiteral */]) {
2240
+ var value = token.value;
2241
+ next();
2242
+ return {
2243
+ type: 'literal',
2244
+ value: value
2245
+ };
2246
+ }
2247
+ return null;
2248
+ }
2249
+ function functionCall() {
2250
+ if (token.type === lexer_1.TokenName[7 /* Identifier */]) {
2251
+ var id = token;
2252
+ next();
2253
+ if (matchPunctuator('(')) {
2254
+ var argList = expressionList();
2255
+ return {
2256
+ type: 'func_call',
2257
+ identifier: id.value,
2258
+ args: argList === null || argList === void 0 ? void 0 : argList.body
2259
+ };
2260
+ }
2261
+ else {
2262
+ back();
2263
+ }
2264
+ }
2265
+ return null;
2266
+ }
2267
+ function arrayLiteral() {
2268
+ if (matchPunctuator('[')) {
2269
+ var argList = expressionList('[', ']');
2270
+ return {
2271
+ type: 'array',
2272
+ members: argList === null || argList === void 0 ? void 0 : argList.body
2273
+ };
2274
+ }
2275
+ return null;
2276
+ }
2277
+ function expressionList(startOP, endOp) {
2278
+ if (startOP === void 0) { startOP = '('; }
2279
+ if (endOp === void 0) { endOp = ')'; }
2280
+ if (matchPunctuator(startOP)) {
2281
+ next();
2282
+ var args = [];
2283
+ var state = argListStates.START;
2284
+ while (true) {
2285
+ if (state === argListStates.COMMA || !matchPunctuator(endOp)) {
2286
+ var arg = assert(expression());
2287
+ args.push(arg);
2288
+ state = argListStates.START;
2289
+ if (matchPunctuator(',')) {
2290
+ next();
2291
+ state = argListStates.COMMA;
2292
+ }
2293
+ }
2294
+ else if (matchPunctuator(endOp)) {
2295
+ next();
2296
+ break;
2297
+ }
2298
+ }
2299
+ return {
2300
+ type: 'expression-list',
2301
+ body: args
2302
+ };
2303
+ }
2304
+ return null;
2305
+ }
2306
+ function objectLiteral() {
2307
+ if (matchPunctuator('{')) {
2308
+ next();
2309
+ var ast_2 = {
2310
+ type: 'object',
2311
+ members: []
2312
+ };
2313
+ var state = objectStates.START;
2314
+ var key = void 0, value = void 0;
2315
+ while (true) {
2316
+ if (state === objectStates.KEY) {
2317
+ assert(matchPunctuator(':'));
2318
+ next();
2319
+ state = objectStates.COLON;
2320
+ }
2321
+ else if (state === objectStates.COLON) {
2322
+ value = assert(expression());
2323
+ ast_2.members.push({
2324
+ key: key,
2325
+ value: value
2326
+ });
2327
+ state = objectStates.VALUE;
2328
+ }
2329
+ else if (state === objectStates.VALUE) {
2330
+ if (matchPunctuator(',')) {
2331
+ next();
2332
+ state = objectStates.COMMA;
2333
+ }
2334
+ else if (matchPunctuator('}')) {
2335
+ next();
2336
+ break;
2337
+ }
2338
+ }
2339
+ else {
2340
+ if (state != objectStates.COMMA && matchPunctuator('}')) {
2341
+ next();
2342
+ break;
2343
+ }
2344
+ key = assert(varibleKey());
2345
+ state = objectStates.KEY;
2346
+ }
2347
+ }
2348
+ return ast_2;
2349
+ }
2350
+ return null;
2351
+ }
2352
+ function assignmentExpression() {
2353
+ return conditionalExpression();
2354
+ }
2355
+ function contents() {
2356
+ var node = {
2357
+ type: 'document',
2358
+ body: []
2359
+ };
2360
+ while (token.type !== lexer_1.TokenName[6 /* EOF */]) {
2361
+ var ast_3 = raw() || rawScript() || oldVariable();
2362
+ if (!ast_3) {
2363
+ break;
2364
+ }
2365
+ node.body.push(ast_3);
2366
+ }
2367
+ return node;
2368
+ }
2369
+ function raw() {
2370
+ if (token.type !== lexer_1.TokenName[2 /* RAW */]) {
2371
+ return null;
2372
+ }
2373
+ var cToken = token;
2374
+ next();
2375
+ return {
2376
+ type: 'raw',
2377
+ value: cToken.value
2378
+ };
2379
+ }
2380
+ function rawScript() {
2381
+ if (token.type !== lexer_1.TokenName[4 /* OpenScript */]) {
2382
+ return null;
2383
+ }
2384
+ next();
2385
+ var exp = complexExpression();
2386
+ if (!exp) {
2387
+ throw TypeError("Unexpected token ".concat(token.value, " in ").concat(token.start.line, ":").concat(token.start.column));
2388
+ }
2389
+ if (token.type !== lexer_1.TokenName[5 /* CloseScript */]) {
2390
+ throw TypeError("expect ".concat(lexer_1.TokenName[5 /* CloseScript */], " got ").concat(token.type));
2391
+ }
2392
+ next();
2393
+ return {
2394
+ type: 'script',
2395
+ body: exp
2396
+ };
2397
+ }
2398
+ function oldVariable() {
2399
+ if (token.type !== lexer_1.TokenName[3 /* Variable */]) {
2400
+ return null;
2401
+ }
2402
+ var prevToken = token;
2403
+ next();
2404
+ return {
2405
+ type: 'script',
2406
+ body: {
2407
+ type: 'variable',
2408
+ name: prevToken.value
2409
+ }
2410
+ };
2411
+ }
2412
+ next();
2413
+ var ast = (options === null || options === void 0 ? void 0 : options.evalMode) ? expression() : contents();
2414
+ assert(((_a = token) === null || _a === void 0 ? void 0 : _a.type) === lexer_1.TokenName[6 /* EOF */]);
2415
+ return ast;
2416
+ }
2417
+ exports.parse = parse;
2418
+
2419
+
2420
+ /***/ }),
2421
+
2422
+ /***/ 378:
2423
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2424
+
2425
+
2426
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
2427
+ exports.resolveVariableAndFilter = exports.isPureVariable = exports.resolveVariable = exports.pickValues = exports.stripNumber = exports.parseDuration = exports.filterDate = exports.relativeValueRe = exports.formatDuration = exports.escapeHtml = exports.prettyBytes = exports.tokenize = exports.keyToPath = exports.deleteVariable = exports.setVariable = exports.getVariable = exports.string2regExp = exports.isObject = exports.cloneObject = exports.createObject = void 0;
2428
+ var tslib_1 = __webpack_require__(752);
2429
+ var isPlainObject_1 = (0, tslib_1.__importDefault)(__webpack_require__(452));
2430
+ var evalutor_1 = __webpack_require__(453);
2431
+ var parser_1 = __webpack_require__(833);
2432
+ var moment_1 = (0, tslib_1.__importDefault)(__webpack_require__(245));
2433
+ // 方便取值的时候能够把上层的取到,但是获取的时候不会全部把所有的数据获取到。
2434
+ function createObject(superProps, props, properties) {
2435
+ if (superProps && Object.isFrozen(superProps)) {
2436
+ superProps = cloneObject(superProps);
2437
+ }
2438
+ var obj = superProps
2439
+ ? Object.create(superProps, (0, tslib_1.__assign)((0, tslib_1.__assign)({}, properties), { __super: {
2440
+ value: superProps,
2441
+ writable: false,
2442
+ enumerable: false
2443
+ } }))
2444
+ : Object.create(Object.prototype, properties);
2445
+ props &&
2446
+ isObject(props) &&
2447
+ Object.keys(props).forEach(function (key) { return (obj[key] = props[key]); });
2448
+ return obj;
2449
+ }
2450
+ exports.createObject = createObject;
2451
+ function cloneObject(target, persistOwnProps) {
2452
+ if (persistOwnProps === void 0) { persistOwnProps = true; }
2453
+ var obj = target && target.__super
2454
+ ? Object.create(target.__super, {
2455
+ __super: {
2456
+ value: target.__super,
2457
+ writable: false,
2458
+ enumerable: false
2459
+ }
2460
+ })
2461
+ : Object.create(Object.prototype);
2462
+ persistOwnProps &&
2463
+ target &&
2464
+ Object.keys(target).forEach(function (key) { return (obj[key] = target[key]); });
2465
+ return obj;
2466
+ }
2467
+ exports.cloneObject = cloneObject;
2468
+ function isObject(obj) {
2469
+ var typename = typeof obj;
2470
+ return (obj &&
2471
+ typename !== 'string' &&
2472
+ typename !== 'number' &&
2473
+ typename !== 'boolean' &&
2474
+ typename !== 'function' &&
2475
+ !Array.isArray(obj));
2476
+ }
2477
+ exports.isObject = isObject;
2478
+ function string2regExp(value, caseSensitive) {
2479
+ if (caseSensitive === void 0) { caseSensitive = false; }
2480
+ if (typeof value !== 'string') {
2481
+ throw new TypeError('Expected a string');
2482
+ }
2483
+ return new RegExp(value.replace(/[|\\{}()[\]^$+*?.]/g, '\\$&').replace(/-/g, '\\x2d'), !caseSensitive ? 'i' : '');
2484
+ }
2485
+ exports.string2regExp = string2regExp;
2486
+ function getVariable(data, key, canAccessSuper) {
2487
+ if (canAccessSuper === void 0) { canAccessSuper = true; }
2488
+ if (!data || !key) {
2489
+ return undefined;
2490
+ }
2491
+ else if (canAccessSuper ? key in data : data.hasOwnProperty(key)) {
2492
+ return data[key];
2493
+ }
2494
+ return (0, exports.keyToPath)(key).reduce(function (obj, key) {
2495
+ return obj &&
2496
+ typeof obj === 'object' &&
2497
+ (canAccessSuper ? key in obj : obj.hasOwnProperty(key))
2498
+ ? obj[key]
2499
+ : undefined;
2500
+ }, data);
2501
+ }
2502
+ exports.getVariable = getVariable;
2503
+ function setVariable(data, key, value, convertKeyToPath) {
2504
+ data = data || {};
2505
+ if (key in data) {
2506
+ data[key] = value;
2507
+ return;
2508
+ }
2509
+ var parts = convertKeyToPath !== false ? (0, exports.keyToPath)(key) : [key];
2510
+ var last = parts.pop();
2511
+ while (parts.length) {
2512
+ var key_1 = parts.shift();
2513
+ if ((0, isPlainObject_1.default)(data[key_1])) {
2514
+ data = data[key_1] = (0, tslib_1.__assign)({}, data[key_1]);
2515
+ }
2516
+ else if (Array.isArray(data[key_1])) {
2517
+ data[key_1] = data[key_1].concat();
2518
+ data = data[key_1];
2519
+ }
2520
+ else if (data[key_1]) {
2521
+ // throw new Error(`目标路径不是纯对象,不能覆盖`);
2522
+ // 强行转成对象
2523
+ data[key_1] = {};
2524
+ data = data[key_1];
2525
+ }
2526
+ else {
2527
+ data[key_1] = {};
2528
+ data = data[key_1];
2529
+ }
2530
+ }
2531
+ data[last] = value;
2532
+ }
2533
+ exports.setVariable = setVariable;
2534
+ function deleteVariable(data, key) {
2535
+ if (!data) {
2536
+ return;
2537
+ }
2538
+ else if (data.hasOwnProperty(key)) {
2539
+ delete data[key];
2540
+ return;
2541
+ }
2542
+ var parts = (0, exports.keyToPath)(key);
2543
+ var last = parts.pop();
2544
+ while (parts.length) {
2545
+ var key_2 = parts.shift();
2546
+ if ((0, isPlainObject_1.default)(data[key_2])) {
2547
+ data = data[key_2] = (0, tslib_1.__assign)({}, data[key_2]);
2548
+ }
2549
+ else if (data[key_2]) {
2550
+ throw new Error("\u76EE\u6807\u8DEF\u5F84\u4E0D\u662F\u7EAF\u5BF9\u8C61\uFF0C\u4E0D\u80FD\u4FEE\u6539");
2551
+ }
2552
+ else {
2553
+ break;
2554
+ }
2555
+ }
2556
+ if (data && data.hasOwnProperty && data.hasOwnProperty(last)) {
2557
+ delete data[last];
2558
+ }
2559
+ }
2560
+ exports.deleteVariable = deleteVariable;
2561
+ /**
2562
+ * 将例如像 a.b.c 或 a[1].b 的字符串转换为路径数组
2563
+ *
2564
+ * @param string 要转换的字符串
2565
+ */
2566
+ var keyToPath = function (string) {
2567
+ var result = [];
2568
+ if (string.charCodeAt(0) === '.'.charCodeAt(0)) {
2569
+ result.push('');
2570
+ }
2571
+ string.replace(new RegExp('[^.[\\]]+|\\[(?:([^"\'][^[]*)|(["\'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))', 'g'), function (match, expression, quote, subString) {
2572
+ var key = match;
2573
+ if (quote) {
2574
+ key = subString.replace(/\\(\\)?/g, '$1');
2575
+ }
2576
+ else if (expression) {
2577
+ key = expression.trim();
2578
+ }
2579
+ result.push(key);
2580
+ return '';
2581
+ });
2582
+ return result;
2583
+ };
2584
+ exports.keyToPath = keyToPath;
2585
+ var tokenize = function (str, data, defaultFilter) {
2586
+ if (defaultFilter === void 0) { defaultFilter = '| html'; }
2587
+ if (!str || typeof str !== 'string') {
2588
+ return str;
2589
+ }
2590
+ var ast = (0, parser_1.parse)(str, {
2591
+ evalMode: false,
2592
+ allowFilter: true
2593
+ });
2594
+ var result = new evalutor_1.Evaluator({
2595
+ defaultFilter: defaultFilter
2596
+ }).evalute(ast, data);
2597
+ return "".concat(result == null ? '' : result);
2598
+ };
2599
+ exports.tokenize = tokenize;
2600
+ var UNITS = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
2601
+ var prettyBytes = function (num) {
2602
+ if (!Number.isFinite(num)) {
2603
+ throw new TypeError("Expected a finite number, got ".concat(typeof num, ": ").concat(num));
2604
+ }
2605
+ var neg = num < 0;
2606
+ if (neg) {
2607
+ num = -num;
2608
+ }
2609
+ if (num < 1) {
2610
+ return (neg ? '-' : '') + num + ' B';
2611
+ }
2612
+ var exponent = Math.min(Math.floor(Math.log(num) / Math.log(1000)), UNITS.length - 1);
2613
+ var numStr = Number((num / Math.pow(1000, exponent)).toPrecision(3));
2614
+ var unit = UNITS[exponent];
2615
+ return (neg ? '-' : '') + numStr + ' ' + unit;
2616
+ };
2617
+ exports.prettyBytes = prettyBytes;
2618
+ var entityMap = {
2619
+ '&': '&amp;',
2620
+ '<': '&lt;',
2621
+ '>': '&gt;',
2622
+ '"': '&quot;',
2623
+ "'": '&#39;',
2624
+ '/': '&#x2F;'
2625
+ };
2626
+ var escapeHtml = function (str) {
2627
+ return String(str).replace(/[&<>"'\/]/g, function (s) {
2628
+ return entityMap[s];
2629
+ });
2630
+ };
2631
+ exports.escapeHtml = escapeHtml;
2632
+ function formatDuration(value) {
2633
+ var unit = ['秒', '分', '时', '天', '月', '季', '年'];
2634
+ var steps = [1, 60, 3600, 86400, 2592000, 7776000, 31104000];
2635
+ var len = steps.length;
2636
+ var parts = [];
2637
+ while (len--) {
2638
+ if (steps[len] && value >= steps[len]) {
2639
+ parts.push(Math.floor(value / steps[len]) + unit[len]);
2640
+ value %= steps[len];
2641
+ }
2642
+ else if (len === 0 && value) {
2643
+ parts.push((value.toFixed ? value.toFixed(2) : '0') + unit[0]);
2644
+ }
2645
+ }
2646
+ return parts.join('');
2647
+ }
2648
+ exports.formatDuration = formatDuration;
2649
+ var timeUnitMap = {
2650
+ year: 'Y',
2651
+ month: 'M',
2652
+ week: 'w',
2653
+ weekday: 'W',
2654
+ day: 'd',
2655
+ hour: 'h',
2656
+ minute: 'm',
2657
+ min: 'm',
2658
+ second: 's',
2659
+ millisecond: 'ms'
2660
+ };
2661
+ exports.relativeValueRe = /^(.+)?(\+|-)(\d+)(minute|min|hour|day|week|month|year|weekday|second|millisecond)s?$/i;
2662
+ var filterDate = function (value, data, format, utc) {
2663
+ if (data === void 0) { data = {}; }
2664
+ if (format === void 0) { format = 'X'; }
2665
+ if (utc === void 0) { utc = false; }
2666
+ var m, mm = utc ? moment_1.default.utc : moment_1.default;
2667
+ if (typeof value === 'string') {
2668
+ value = value.trim();
2669
+ }
2670
+ // todo
2671
+ value = (0, exports.tokenize)(value, data);
2672
+ if (value && typeof value === 'string' && (m = exports.relativeValueRe.exec(value))) {
2673
+ var date = new Date();
2674
+ var step = parseInt(m[3], 10);
2675
+ var from = m[1]
2676
+ ? (0, exports.filterDate)(m[1], data, format, utc)
2677
+ : mm(/(minute|min|hour|second)s?/.test(m[4])
2678
+ ? [
2679
+ date.getFullYear(),
2680
+ date.getMonth(),
2681
+ date.getDate(),
2682
+ date.getHours(),
2683
+ date.getMinutes(),
2684
+ date.getSeconds()
2685
+ ]
2686
+ : [date.getFullYear(), date.getMonth(), date.getDate()]);
2687
+ return m[2] === '-'
2688
+ ? from.subtract(step, timeUnitMap[m[4]])
2689
+ : from.add(step, timeUnitMap[m[4]]);
2690
+ // return from[m[2] === '-' ? 'subtract' : 'add'](step, mapping[m[4]] || m[4]);
2691
+ }
2692
+ else if (value === 'now') {
2693
+ return mm();
2694
+ }
2695
+ else if (value === 'today') {
2696
+ var date = new Date();
2697
+ return mm([date.getFullYear(), date.getMonth(), date.getDate()]);
2698
+ }
2699
+ else {
2700
+ return mm(value, format);
2701
+ }
2702
+ };
2703
+ exports.filterDate = filterDate;
2704
+ function parseDuration(str) {
2705
+ var matches = /^((?:\-|\+)?(?:\d*\.)?\d+)(minute|min|hour|day|week|month|quarter|year|weekday|second|millisecond)s?$/.exec(str);
2706
+ if (matches) {
2707
+ var duration = moment_1.default.duration(parseFloat(matches[1]), matches[2]);
2708
+ if (moment_1.default.isDuration(duration)) {
2709
+ return duration;
2710
+ }
2711
+ }
2712
+ return;
2713
+ }
2714
+ exports.parseDuration = parseDuration;
2715
+ // 主要用于解决 0.1+0.2 结果的精度问题导致太长
2716
+ function stripNumber(number) {
2717
+ if (typeof number === 'number') {
2718
+ return parseFloat(number.toPrecision(12));
2719
+ }
2720
+ else {
2721
+ return number;
2722
+ }
2723
+ }
2724
+ exports.stripNumber = stripNumber;
2725
+ function pickValues(names, data) {
2726
+ var _a;
2727
+ var arr;
2728
+ if (!names || ((arr = names.split(',')) && arr.length < 2)) {
2729
+ var idx = names.indexOf('~');
2730
+ if (~idx) {
2731
+ var key = names.substring(0, idx);
2732
+ var target = names.substring(idx + 1);
2733
+ return _a = {},
2734
+ _a[key] = resolveVariable(target, data),
2735
+ _a;
2736
+ }
2737
+ return resolveVariable(names, data);
2738
+ }
2739
+ var ret = {};
2740
+ arr.forEach(function (name) {
2741
+ var idx = name.indexOf('~');
2742
+ var target = name;
2743
+ if (~idx) {
2744
+ target = name.substring(idx + 1);
2745
+ name = name.substring(0, idx);
2746
+ }
2747
+ setVariable(ret, name, resolveVariable(target, data));
2748
+ });
2749
+ return ret;
2750
+ }
2751
+ exports.pickValues = pickValues;
2752
+ function objectGet(data, path) {
2753
+ if (typeof data[path] !== 'undefined') {
2754
+ return data[path];
2755
+ }
2756
+ var parts = (0, exports.keyToPath)(path.replace(/^{|}$/g, ''));
2757
+ return parts.reduce(function (data, path) {
2758
+ if ((isObject(data) || Array.isArray(data)) && path in data) {
2759
+ return data[path];
2760
+ }
2761
+ return undefined;
2762
+ }, data);
2763
+ }
2764
+ function parseJson(str, defaultValue) {
2765
+ try {
2766
+ return JSON.parse(str);
2767
+ }
2768
+ catch (e) {
2769
+ return defaultValue;
2770
+ }
2771
+ }
2772
+ function getCookie(name) {
2773
+ var value = "; ".concat(document.cookie);
2774
+ var parts = value.split("; ".concat(name, "="));
2775
+ if (parts.length === 2) {
2776
+ return parts.pop().split(';').shift();
2777
+ }
2778
+ return undefined;
2779
+ }
2780
+ function resolveVariable(path, data) {
2781
+ if (data === void 0) { data = {}; }
2782
+ if (!path || !data || typeof path !== 'string') {
2783
+ return undefined;
2784
+ }
2785
+ var _a = path.split(':'), ns = _a[0], varname = _a[1];
2786
+ if (!varname && ns) {
2787
+ varname = ns;
2788
+ ns = '';
2789
+ }
2790
+ if (ns === 'window') {
2791
+ data = window;
2792
+ }
2793
+ else if (ns === 'ls' || ns === 'ss') {
2794
+ var parts = (0, exports.keyToPath)(varname.replace(/^{|}$/g, ''));
2795
+ var key = parts.shift();
2796
+ var raw = ns === 'ss' ? sessionStorage.getItem(key) : localStorage.getItem(key);
2797
+ if (typeof raw === 'string') {
2798
+ var data_1 = parseJson(raw, raw);
2799
+ if (isObject(data_1) && parts.length) {
2800
+ return objectGet(data_1, parts.join('.'));
2801
+ }
2802
+ return data_1;
2803
+ }
2804
+ return undefined;
2805
+ }
2806
+ else if (ns === 'cookie') {
2807
+ var key = varname.replace(/^{|}$/g, '').trim();
2808
+ return getCookie(key);
2809
+ }
2810
+ if (varname === '$$') {
2811
+ return data;
2812
+ }
2813
+ else if (varname[0] === '$') {
2814
+ varname = path.substring(1);
2815
+ }
2816
+ else if (varname === '&') {
2817
+ return data;
2818
+ }
2819
+ return objectGet(data, varname);
2820
+ }
2821
+ exports.resolveVariable = resolveVariable;
2822
+ function isPureVariable(path) {
2823
+ return typeof path === 'string'
2824
+ ? /^\$(?:((?:\w+\:)?[a-z0-9_.][a-z0-9_.\[\]]*)|{[^}{]+})$/i.test(path)
2825
+ : false;
2826
+ }
2827
+ exports.isPureVariable = isPureVariable;
2828
+ var resolveVariableAndFilter = function (path, data, defaultFilter, fallbackValue) {
2829
+ if (data === void 0) { data = {}; }
2830
+ if (defaultFilter === void 0) { defaultFilter = '| html'; }
2831
+ if (fallbackValue === void 0) { fallbackValue = function (value) { return value; }; }
2832
+ if (!path || typeof path !== 'string') {
2833
+ return undefined;
2834
+ }
2835
+ var ast = (0, parser_1.parse)(path, {
2836
+ evalMode: false,
2837
+ allowFilter: true
2838
+ });
2839
+ var ret = new evalutor_1.Evaluator({
2840
+ defaultFilter: defaultFilter
2841
+ }).evalute(ast, data);
2842
+ return ret == null ? fallbackValue(ret) : ret;
2843
+ };
2844
+ exports.resolveVariableAndFilter = resolveVariableAndFilter;
2845
+
2846
+
2847
+ /***/ }),
2848
+
2849
+ /***/ 492:
2850
+ /***/ ((module) => {
2851
+
2852
+ module.exports = require("lodash/groupBy");
2853
+
2854
+ /***/ }),
2855
+
2856
+ /***/ 452:
2857
+ /***/ ((module) => {
2858
+
2859
+ module.exports = require("lodash/isPlainObject");
2860
+
2861
+ /***/ }),
2862
+
2863
+ /***/ 341:
2864
+ /***/ ((module) => {
2865
+
2866
+ module.exports = require("lodash/transform");
2867
+
2868
+ /***/ }),
2869
+
2870
+ /***/ 459:
2871
+ /***/ ((module) => {
2872
+
2873
+ module.exports = require("lodash/uniq");
2874
+
2875
+ /***/ }),
2876
+
2877
+ /***/ 309:
2878
+ /***/ ((module) => {
2879
+
2880
+ module.exports = require("lodash/uniqBy");
2881
+
2882
+ /***/ }),
2883
+
2884
+ /***/ 245:
2885
+ /***/ ((module) => {
2886
+
2887
+ module.exports = require("moment");
2888
+
2889
+ /***/ }),
2890
+
2891
+ /***/ 752:
2892
+ /***/ ((module) => {
2893
+
2894
+ module.exports = require("tslib");
2895
+
2896
+ /***/ })
2897
+
2898
+ /******/ });
2899
+ /************************************************************************/
2900
+ /******/ // The module cache
2901
+ /******/ var __webpack_module_cache__ = {};
2902
+ /******/
2903
+ /******/ // The require function
2904
+ /******/ function __webpack_require__(moduleId) {
2905
+ /******/ // Check if module is in cache
2906
+ /******/ var cachedModule = __webpack_module_cache__[moduleId];
2907
+ /******/ if (cachedModule !== undefined) {
2908
+ /******/ return cachedModule.exports;
2909
+ /******/ }
2910
+ /******/ // Create a new module (and put it into the cache)
2911
+ /******/ var module = __webpack_module_cache__[moduleId] = {
2912
+ /******/ // no module.id needed
2913
+ /******/ // no module.loaded needed
2914
+ /******/ exports: {}
2915
+ /******/ };
2916
+ /******/
2917
+ /******/ // Execute the module function
2918
+ /******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);
2919
+ /******/
2920
+ /******/ // Return the exports of the module
2921
+ /******/ return module.exports;
2922
+ /******/ }
2923
+ /******/
2924
+ /************************************************************************/
2925
+ /******/
2926
+ /******/ // startup
2927
+ /******/ // Load entry module and return exports
2928
+ /******/ // This entry module is referenced by other modules so it can't be inlined
2929
+ /******/ var __webpack_exports__ = __webpack_require__(303);
2930
+ /******/ var __webpack_export_target__ = exports;
2931
+ /******/ for(var i in __webpack_exports__) __webpack_export_target__[i] = __webpack_exports__[i];
2932
+ /******/ if(__webpack_exports__.__esModule) Object.defineProperty(__webpack_export_target__, "__esModule", { value: true });
2933
+ /******/
2934
+ /******/ })()
2935
+ ;