New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

fig-tree-evaluator

Package Overview
Dependencies
Maintainers
0
Versions
90
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

fig-tree-evaluator - npm Package Compare versions

Comparing version 2.17.1 to 2.18.1

2

build/index.cjs.js

@@ -1,1 +0,1 @@

"use strict";var e=require("object-property-extractor"),t=require("dequal/lite");function r(e,t,r,a){return new(r||(r=Promise))((function(i,s){function n(e){try{l(a.next(e))}catch(e){s(e)}}function o(e){try{l(a.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(n,o)}l((a=a.apply(e,t||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;const a=e=>e instanceof Object&&"operator"in e,i=e=>e instanceof Object&&"fragment"in e,s=e=>{const t=f(e);return t||e},n=(e,t)=>t[s(e)],o=(e,t,r)=>{const a=Object.assign({},e);return t.forEach((e=>{r[s(e)]||console.warn(`Invalid operator exclusion: ${e}`),delete a[r[s(e)]]})),a},l=(e,t=200)=>e.length<t?e:`${e.slice(0,t-2).trim()}...`,u=(e,t)=>{const r=Object.entries(e).map((([e,r])=>[t(e),r]));return Object.fromEntries(r)},d=e=>/^\$.+/.test(e),c=(e,{resolvedAliasNodes:t})=>{var r;return"string"==typeof e&&d(e)&&null!==(r=null==t?void 0:t[e])&&void 0!==r?r:e},p=(e,t)=>r(void 0,void 0,void 0,(function*(){var r,a;if(!(e.operator in(null!==(a=null===(r=t.options)||void 0===r?void 0:r.functions)&&void 0!==a?a:{})))return e;const{operator:i,fallback:s,outputType:n,type:o,useCache:l,input:u,args:d}=e,c=function(e,t){var r={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)<0&&(r[a]=e[a]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(a=Object.getOwnPropertySymbols(e);i<a.length;i++)t.indexOf(a[i])<0&&Object.prototype.propertyIsEnumerable.call(e,a[i])&&(r[a[i]]=e[a[i]])}return r}(e,["operator","fallback","outputType","type","useCache","input","args"]),p={operator:"CUSTOM_FUNCTIONS",function:i};return void 0!==s&&(p.fallback=s),void 0!==n&&(p.outputType=n),void 0!==o&&(p.type=o),void 0!==l&&(p.useCache=l),void 0!==d&&(p.args=d),void 0!==u?p.input=u:Object.keys(c).length>0&&(p.input=c),p})),h=(e,t,r)=>{const a=Object.assign(Object.assign({},e),t);return r?((e.data||t.data)&&(a.data=Object.assign(Object.assign({},e.data),t.data)),(e.functions||t.functions)&&(a.functions=Object.assign(Object.assign({},e.functions),t.functions)),(e.fragments||t.fragments)&&(a.fragments=Object.assign(Object.assign({},e.fragments),t.fragments)),(e.headers||t.headers)&&(a.headers=Object.assign(Object.assign({},e.headers),t.headers)),a):a},v={number:e=>y(e),string:e=>String(e),array:e=>Array.isArray(e)?e:[e],boolean:e=>Boolean(e),bool:e=>Boolean(e)},y=e=>{if("string"!=typeof e)return Number.isNaN(Number(e))?e:Number(e);const t=new RegExp(/-?\d*\.?\d+/gm),r=e.match(t);return r?Number(r[0]):0},f=e=>e.replace(/[^A-Za-z\d _-]/g,"").split(/[-_ ]/).map((e=>{var t;return null!==(t=e.match(/[a-z]+|[A-Z]+[a-z]*/g))&&void 0!==t?t:e})).flat().filter((e=>""!==e)).map(((e,t)=>0===t?e.toLowerCase():e.charAt(0).toUpperCase()+e.slice(1).toLowerCase())).join(""),m=e=>"object"==typeof e&&null!==e&&!Array.isArray(e),g={and:"AND","&":"AND","&&":"AND",or:"OR","|":"OR","||":"OR","=":"EQUAL",eq:"EQUAL",equal:"EQUAL",equals:"EQUAL","!=":"NOT_EQUAL","!":"NOT_EQUAL",ne:"NOT_EQUAL",notEqual:"NOT_EQUAL","+":"PLUS",plus:"PLUS",add:"PLUS",concat:"PLUS",join:"PLUS",merge:"PLUS","-":"SUBTRACT",subtract:"SUBTRACT",minus:"SUBTRACT",takeaway:"SUBTRACT","*":"MULTIPLY",x:"MULTIPLY",multiply:"MULTIPLY",times:"MULTIPLY","/":"DIVIDE",divide:"DIVIDE","÷":"DIVIDE",">":"GREATER_THAN",greaterThan:"GREATER_THAN",higher:"GREATER_THAN",larger:"GREATER_THAN","<":"LESS_THAN",lessThan:"LESS_THAN",lower:"LESS_THAN",smaller:"LESS_THAN","?":"CONDITIONAL",conditional:"CONDITIONAL",ifThen:"CONDITIONAL",regex:"REGEX",patternMatch:"REGEX",regexp:"REGEX",matchPattern:"REGEX",dataProperties:"OBJECT_PROPERTIES",data:"OBJECT_PROPERTIES",getData:"OBJECT_PROPERTIES",objectProperties:"OBJECT_PROPERTIES",objProps:"OBJECT_PROPERTIES",getProperty:"OBJECT_PROPERTIES",getObjProp:"OBJECT_PROPERTIES",stringSubstitution:"STRING_SUBSTITUTION",substitute:"STRING_SUBSTITUTION",stringSub:"STRING_SUBSTITUTION",replace:"STRING_SUBSTITUTION",split:"SPLIT",arraySplit:"SPLIT",count:"COUNT",length:"COUNT",get:"GET",api:"GET",post:"POST",sql:"SQL",pgSql:"SQL",postgres:"SQL",pg:"SQL",sqLite:"SQL",sqlite:"SQL",mySql:"SQL",graphQl:"GRAPHQL",graphql:"GRAPHQL",gql:"GRAPHQL",buildObject:"BUILD_OBJECT",build:"BUILD_OBJECT",object:"BUILD_OBJECT",match:"MATCH",switch:"MATCH",customFunctions:"CUSTOM_FUNCTIONS",customFunction:"CUSTOM_FUNCTIONS",objectFunctions:"CUSTOM_FUNCTIONS",function:"CUSTOM_FUNCTIONS",functions:"CUSTOM_FUNCTIONS",runFunction:"CUSTOM_FUNCTIONS",_:"PASSTHRU",passThru:"PASSTHRU",passthru:"PASSTHRU",pass:"PASSTHRU",ignore:"PASSTHRU",coerce:"PASSTHRU",convert:"PASSTHRU"},b=g,T=/(\$[^()]+)\((.*)\)/,O=(e,t={},r,a=!0)=>a?"string"==typeof e?C(e,t,r):m(e)?S(e,t,r):e:e,C=(e,t,r)=>{const a=T.exec(e);if(!a)return e;const i=a[1].trim(),s=a[2].split(",").map((e=>O(e.trim(),t,r)));return j(i,s,t,r)},S=(e,t,r)=>{if(a(e)||i(e))return e;const s=Object.entries(e),n=s.filter((([e])=>d(e))),o=s.filter((([e])=>!d(e))),l=n.reduce(((e,[a,i])=>e=Object.assign(Object.assign({},e),j(a,i,t,r))),{});return Object.assign(Object.assign({},l),Object.fromEntries(o))},j=(e,t,r,a)=>{const i=e.slice(1),s=n(i,b);return s?Array.isArray(t)?{operator:s,children:t}:m(t)&&!Object.keys(t).some((e=>d(e)))?Object.assign({operator:s},t):{operator:s,children:[t]}:i in r?{fragment:i,parameters:Object.assign({},t)}:a.includes(i)?Array.isArray(t)?{operator:i,args:t}:m(t)?"input"in t||"args"in t?Object.assign({operator:i},t):{operator:i,input:t}:{operator:i,args:[t]}:{[e]:t}};class E extends Error{constructor(e,t,r,a){super(e.message),Object.assign(this,e),this.operator=t,this.expression=a,this.errorData=e.errorData,r&&(this.name=r),"Error"===this.name&&(this.name="FigTreeError");const i=(t?"Operator: "+t:"")+("FigTreeError"===this.name?"":` - ${this.name}`),s=this.errorData?"\n"+JSON.stringify(this.errorData,null,2):"";this.prettyPrint=`${""!==i?i+"\n":""}${this.message}${"\n{}"===s?"":s}`}}const q=({fallback:e,operator:t,name:r,error:a,expression:i,returnErrorAsString:s=!1})=>{if(void 0!==e)return e;if(a instanceof E){if(!s)throw a;return a.prettyPrint}const n=new E("string"==typeof a?new Error(a):a,t,r,i);if(s)return n.prettyPrint;throw n},A=e=>m(e)&&"literal"in e,x=({value:e,name:t,expectedType:r})=>{if(A(r)){const{literal:a}=r;return!!a.includes(e)||P(t,e,`Literal(${a.map((e=>void 0===e?"undefined":`"${e}"`)).join(", ")})`)}if(Array.isArray(r))return!!r.some((r=>!0===x({value:e,name:t,expectedType:r})))||P(t,e,r.join("|"));return!!(0,N[r])(e)||P(t,e,r)},w=(...e)=>{const t=[];return e.forEach((e=>{const r=x(e);!0!==r&&t.push(r)})),!(t.length>0)||t.join("\n")},N={any:e=>void 0!==e,string:e=>"string"==typeof e,number:e=>"number"==typeof e,boolean:e=>"boolean"==typeof e,array:e=>Array.isArray(e),null:e=>null===e,object:e=>m(e),undefined:e=>void 0===e},P=(e,t,r)=>void 0===t&&e?`- Missing required property "${e}" (type: ${r})`:void 0!==e?`- Property "${e}" (value: ${L(t)}) is not of type: ${r}`:`- ${L(t)} is not of type: ${r}`,L=e=>{const t=void 0===e||Number.isNaN(e)?String(e):JSON.stringify(e);return l(t,50)},I=e=>{const t={};return e.forEach((e=>{e.aliases.forEach((r=>t[r]=e.name))})),t},k=(e,t)=>e.map((({name:e,required:r,type:a})=>{if(A(a)){const i=[...a.literal];return r||i.push(void 0),{name:e,value:t[e],expectedType:{literal:i}}}const i=Array.isArray(a)?a:[a];r||i.push("undefined");const s=1===i.length?i[0]:i;return{name:e,value:t[e],expectedType:s}})),U=(e,t)=>{const r=e.map(((e,r)=>[e,t[r]]));return Object.fromEntries(r)},R=e=>{if(e.length%2!=0)throw new Error("Even number of children required to make key/value pairs");const t=e.filter(((e,t)=>t%2==0)),r=w(...t.map((e=>({value:e,expectedType:["string","number","boolean"]}))));if(!0!==r)throw new Error(r);const a=e.filter(((e,t)=>t%2==1)),i={};return t.forEach(((e,t)=>{i[e]=a[t]})),i},D=e=>m(e)&&1===Object.keys(e).length?Object.values(e)[0]:e,_=(t,r,a=void 0)=>{const i=r?e(t,r,a):t;return Array.isArray(i)?i.map((e=>D(e))):r?null===i?null:D(i):i},Q=e=>/^https?:\/\/.+/.test(e),F=(...e)=>e.reduce(((e,t,r)=>{const a="/"===t[0]?1:0,i="/"===t.slice(-1)?-1:void 0,s=t.slice(a,i);return""===s?e:e+(0===r?"":"/")+s}),""),H=(e,t)=>r(void 0,void 0,void 0,(function*(){const{url:r,params:a={},data:i={},headers:s={},method:n="get"}=t;if(!r||""===r)throw new Error("Invalid url");try{return yield e[n]({url:r,headers:Object.assign({"Content-Type":"application/json",Accept:"application/json"},s),params:a,data:i})}catch(t){e.throwError(t)}})),M=(e,t)=>r(void 0,void 0,void 0,(function*(){var r,s,o,l,d,h;const{options:y,operators:f,operatorAliases:g}=t;let b=(null==y?void 0:y.allowJSONStringInput)?(e=>{if("string"!=typeof e)return e;try{const t=JSON.parse(e);return a(t)?t:e}catch(t){return e}})(e):e;const T=Object.keys(null!==(s=null===(r=t.options)||void 0===r?void 0:r.functions)&&void 0!==s?s:{});b=O(b,null===(o=t.options)||void 0===o?void 0:o.fragments,T,!y.noShorthand),Array.isArray(b)&&(b=yield $(b,t));const C=a(b),S=i(b);if(C&&(b=yield p(b,t)),y.evaluateFullObject&&!C&&!S)return c(yield G(b,t),t);if(!C&&!S)return y.supportDeprecatedValueNodes&&m(b)&&"value"in b?b.value:c(b,t);const{fallback:j}=b,E=null!==(l=null==y?void 0:y.returnErrorAsString)&&void 0!==l&&l;if(S){const e=b,[r,i]=yield $([e.fragment,e.parameters],t),s=O(null===(d=null==y?void 0:y.fragments)||void 0===d?void 0:d[r],y.fragments,T,!y.noShorthand);if(void 0===s)return q({fallback:yield M(j,t),error:`Fragment not defined: ${r}`,expression:b,returnErrorAsString:E});if(!a(s))return c(s,t);b=Object.assign(Object.assign(Object.assign({},e),s),i),delete b.fragment}const A=b,x=n(A.operator,g);if(!x)return q({fallback:yield M(j,t),error:`Invalid operator: ${A.operator}`,expression:b,returnErrorAsString:E});if(!t.operators[x])return q({fallback:yield M(j,t),error:`Excluded operator: ${A.operator}`,expression:b,returnErrorAsString:E});const{propertyAliases:w,evaluate:N,parseChildren:P}=f[x];let L=((e,t)=>u(t,(t=>t in e?e[t]:t)))(w,A);const I=yield B(L,t);S||Object.entries(I).forEach((([e,r])=>t.resolvedAliasNodes[e]=r));const k=S?Object.assign(Object.assign({},t),{resolvedAliasNodes:Object.assign(Object.assign({},t.resolvedAliasNodes),I)}):t;if("children"in L){if(Array.isArray(L.children)||(L.children=yield M(L.children,k)),!Array.isArray(L.children))return q({fallback:yield M(j,t),operator:x,name:"Type Error",error:'- Property "children" is not of type: array',expression:b,returnErrorAsString:E});L=yield P(L,k),delete L.children}let U;try{U=yield N(L,k)}catch(e){return q({fallback:yield M(L.fallback,t),operator:x,error:e,expression:L,returnErrorAsString:E})}const R=null!==(h=null==L?void 0:L.outputType)&&void 0!==h?h:null==L?void 0:L.type;if(!R)return U;const D=yield M(R,t);return D in v?v[D](U):q({fallback:yield M(j,t),operator:x,error:`- Invalid output type: ${D}`,expression:L,returnErrorAsString:E})})),$=(e,t)=>r(void 0,void 0,void 0,(function*(){return Array.isArray(e)?yield Promise.all(e.map((e=>M(e,t)))):yield M(e,t)})),B=(e,t)=>r(void 0,void 0,void 0,(function*(){var r;const a=Object.keys(e).filter(d);if(0===a.length)return{};const i=[];a.forEach((r=>i.push(M(e[r],t))));const s=yield Promise.all(i),n=U(a,yield Promise.all(i));for(const[e,t]of s.entries())"string"==typeof t&&d(t)&&(n[a[e]]=null!==(r=null==n?void 0:n[t])&&void 0!==r?r:t);return n})),G=(e,t)=>r(void 0,void 0,void 0,(function*(){if(!m(e))return e;const r=[],a=[];Object.entries(e).forEach((([r,i])=>{d(r)&&(a.push(r,M(i,t)),delete e[r])}));const i=yield Promise.all(a);t.resolvedAliasNodes=Object.assign(Object.assign({},t.resolvedAliasNodes),R(i)),Object.entries(e).forEach((([e,a])=>{r.push(e,M(a,t))}));const s=yield Promise.all(r);return c(R(s),t)})),z=[{name:"values",description:"Returns true if all values are true",aliases:[],required:!0,type:"array",default:[!0,!0]}],W=I(z),J={description:"Logical AND",aliases:["and","&","&&"],parameters:z},V=e=>{const t=e.children;return Object.assign(Object.assign({},e),{values:t})},Y={propertyAliases:W,operatorData:J,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){const r=yield $(e.values,t);return t.typeChecker(k(J.parameters,{values:r})),r.reduce(((e,t)=>e&&!!t),!0)})),parseChildren:V},X=[{name:"values",description:"Returns true if any values are true",aliases:[],required:!0,type:"array",default:[!0,!1]}],Z=I(X),K={description:"Logical OR",aliases:["or","|","||"],parameters:X},ee={propertyAliases:Z,operatorData:K,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){const r=yield $(e.values,t);return t.typeChecker(k(K.parameters,{values:r})),r.reduce(((e,t)=>e||!!t),!1)})),parseChildren:V},te=[{name:"values",description:"Array of values to check for equality",aliases:[],required:!0,type:"array",default:["These are equal","These are equal"]},{name:"caseInsensitive",description:"If the values are strings, ignore the case (default: false)",aliases:[],required:!1,type:"boolean",default:!1},{name:"nullEqualsUndefined",description:"Whether a null value should be considered equal to an undefined value (default: false)",aliases:[],required:!1,type:"boolean",default:!1}],re=I(te),ae={description:"Test multiple values are equal",aliases:["=","eq","equal","equals"],parameters:te},ie={propertyAliases:re,operatorData:ae,evaluate:(e,a)=>r(void 0,void 0,void 0,(function*(){var r,i,s;const[n,o,l]=yield $([e.values,e.caseInsensitive,e.nullEqualsUndefined],a);a.typeChecker(k(ae.parameters,{values:n,caseInsensitive:o,nullEqualsUndefined:l}));const u=(void 0!==o?o:null!==(i=null===(r=a.options)||void 0===r?void 0:r.caseInsensitive)&&void 0!==i&&i)&&n.every((e=>"string"==typeof e))?n.map((e=>e.toLowerCase())):n;return!(void 0!==l?l:void 0!==(null===(s=a.options)||void 0===s?void 0:s.nullEqualsUndefined)&&a.options.nullEqualsUndefined)||null!==u[0]&&void 0!==u[0]?u.every((e=>t.dequal(e,u[0]))):u.every((e=>null==e))})),parseChildren:V},se=[{name:"values",description:"Array of values to check for inequality",aliases:[],required:!0,type:"array",default:["These items","don't match"]},{name:"caseInsensitive",description:"If the values are strings, ignore the case (default: false)",aliases:[],required:!1,type:"boolean",default:!1},{name:"nullEqualsUndefined",description:"Whether a null value should be considered equal to an undefined value (default: false)",aliases:[],required:!1,type:"boolean",default:!1}],ne=I(se),oe={description:"Test if any values are different",aliases:["!=","!","ne","notEqual"],parameters:se},le={propertyAliases:ne,operatorData:oe,evaluate:(e,a)=>r(void 0,void 0,void 0,(function*(){var r,i,s;const[n,o,l]=yield $([e.values,e.caseInsensitive,e.nullEqualsUndefined],a);a.typeChecker(k(oe.parameters,{values:n,caseInsensitive:o,nullEqualsUndefined:l}));const u=(void 0!==o?o:null!==(i=null===(r=a.options)||void 0===r?void 0:r.caseInsensitive)&&void 0!==i&&i)&&n.every((e=>"string"==typeof e))?n.map((e=>e.toLowerCase())):n;return!(void 0!==l?l:void 0!==(null===(s=a.options)||void 0===s?void 0:s.nullEqualsUndefined)&&a.options.nullEqualsUndefined)||null!==u[0]&&void 0!==u[0]?u.some((e=>!t.dequal(e,u[0]))):u.some((e=>null===e&&void 0===e))})),parseChildren:V},ue=[{name:"values",description:"Array of values to check to add together",aliases:[],required:!0,type:"array",default:[1,2,3]},{name:"type",description:"Data type to coerce input values to before addition",aliases:[],required:!1,type:{literal:["string","array","number","boolean","bool"]},default:"string"}],de=I(ue),ce={description:"Add, concatenate or merge multiple values",aliases:["+","plus","add","concat","join","merge"],parameters:ue},pe={propertyAliases:de,operatorData:ce,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){const r=yield $(e.values,t);return t.typeChecker(k(ce.parameters,{values:r,type:e.type})),0===r.length?r:"string"===(null==e?void 0:e.type)?r.reduce(((e,t)=>e.concat(t)),""):"array"===(null==e?void 0:e.type)?r.reduce(((e,t)=>e.concat(t)),[]):r.every((e=>"string"==typeof e||Array.isArray(e)))?r.reduce(((e,t)=>e.concat(t))):r.every((e=>m(e)))?r.reduce(((e,t)=>Object.assign(Object.assign({},e),t)),{}):r.reduce(((e,t)=>e+t))})),parseChildren:V},he=[{name:"values",description:"Array of values - 2nd element will be subtracted from the first",aliases:[],required:!1,type:"array",default:[10,5]},{name:"from",description:"Numerical value that will be subtracted from",aliases:["subtractFrom"],required:!1,type:"number",default:100},{name:"subtract",description:"Numerical value to subtract",aliases:[],required:!1,type:"number",default:50}],ve=I(he),ye={description:"Subtract one numerical value from another",aliases:["-","subtract","minus","takeaway"],parameters:he},fe={propertyAliases:ve,operatorData:ye,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){const[r,a,i]=yield $([e.values,e.from,e.subtract],t);t.typeChecker(k(ye.parameters,{values:r,from:a,subtract:i}));const s=null!=r?r:[a,i].filter((e=>void 0!==e));if(s.length<2)throw new Error("- Not enough values provided");if(s.some((e=>"number"!=typeof e)))throw new Error("- Not all values are numbers");return s[0]-s[1]})),parseChildren:V},me=[{name:"values",description:"Array of values whose product will be calculated",aliases:[],required:!0,type:"array",default:[5,5]}],ge=I(me),be={description:"Multiply several numerical values together",aliases:["*","x","multiply","times"],parameters:me},Te={propertyAliases:ge,operatorData:be,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){const r=yield $(e.values,t);if(t.typeChecker(k(be.parameters,{values:r})),0===r.length)return 0;if(r.some((e=>"number"!=typeof e)))throw new Error("- Not all values are numbers");return r.reduce(((e,t)=>e*t))})),parseChildren:V},Oe=[{name:"values",description:"Array of values - 1st element will be divided by the first",aliases:[],required:!1,type:"array",default:[100,10]},{name:"dividend",description:"The number that will be divided",aliases:["divide"],required:!1,type:"number",default:99},{name:"divisor",description:"The number that dividend will be divided by",aliases:["by","divideBy"],required:!1,type:"number",default:3},{name:"output",description:"Whether to output a quotient, remainder or decimal",aliases:[],required:!1,type:{literal:["quotient","remainder"]},default:"quotient"}],Ce=I(Oe),Se={description:"Divide one numerical value by another",aliases:["/","divide","÷"],parameters:Oe},je={propertyAliases:Ce,operatorData:Se,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){const[r,a,i,s]=yield $([e.values,e.dividend,e.divisor,e.output],t);t.typeChecker(k(Se.parameters,{values:r,dividend:a,divisor:i,output:s}));const n=null!=r?r:[a,i].filter((e=>void 0!==e));if(n.length<2)throw new Error("- Not enough values provided");if(n.some((e=>"number"!=typeof e)))throw new Error("- Not all values are numbers");if(0===n[1])throw new Error("Division by zero!");switch(s){case"quotient":return Math.floor(n[0]/n[1]);case"remainder":return n[0]%n[1];default:return n[0]/n[1]}})),parseChildren:V},Ee=[{name:"values",description:"Array of values - 1st element will be compared to the second",aliases:[],required:!0,type:"array",default:[10,9]},{name:"strict",description:"Whether value must be strictly greater than (i.e. not equal) (default: false)",aliases:[],required:!1,type:"boolean",default:!1}],qe=I(Ee),Ae={description:"Test if a value is greater than (or equal to) another value",aliases:[">","greaterThan","higher","larger"],parameters:Ee},xe={propertyAliases:qe,operatorData:Ae,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){const[r,a=!0]=yield $([e.values,e.strict],t);if(t.typeChecker(k(Ae.parameters,{values:r,strict:a})),r.length<2)throw new Error("- Not enough values provided");const[i,s]=r;return i===s&&!a||i>s})),parseChildren:V},we=[{name:"values",description:"Array of values - 1st element will be compared to the second",aliases:[],required:!0,type:"array",default:[9,10]},{name:"strict",description:"Whether value must be strictly smaller than (i.e. not equal) (default: false)",aliases:[],required:!1,type:"boolean",default:!1}],Ne=I(we),Pe={description:"Test if a value is smaller than (or equal to) another value",aliases:["<","lessThan","lower","smaller"],parameters:we},Le={propertyAliases:Ne,operatorData:Pe,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){const[r,a=!0]=yield $([e.values,e.strict],t);if(t.typeChecker(k(Pe.parameters,{values:r,strict:a})),r.length<2)throw new Error("- Not enough values provided");const[i,s]=r;return i===s&&!a||i<s})),parseChildren:V},Ie=[{name:"condition",description:"The expression to check for truthiness",aliases:[],required:!0,type:"any",default:!0},{name:"valueIfTrue",description:"Value to return if condition is true",aliases:["ifTrue"],required:!0,type:"any",default:"The condition is true"},{name:"valueIfFalse",description:"Value to return if condition is false",aliases:["ifFalse","ifNot"],required:!0,type:"any",default:"The condition is false"}],ke=I(Ie),Ue={description:"Return a value based on a condition",aliases:["?","conditional","ifThen"],parameters:Ie},Re={propertyAliases:ke,operatorData:Ue,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){t.typeChecker(k(Ue.parameters,{condition:e.condition,valueIfTrue:e.valueIfTrue,valueIfFalse:e.valueIfFalse}));return(yield M(e.condition,t))?yield M(e.valueIfTrue,t):yield M(e.valueIfFalse,t)})),parseChildren:e=>{const[t,r,a]=e.children;return Object.assign(Object.assign({},e),{condition:t,valueIfTrue:r,valueIfFalse:a})}},De=[{name:"testString",description:"The string to test",aliases:["string","value"],required:!0,type:"string",default:"test-this"},{name:"pattern",description:"The regular expression pattern",aliases:["regex","regexp","regExp","re"],required:!0,type:"string",default:"^[a-z]{4}-[a-z]{4}$"}],_e=I(De),Qe={description:"Compare a string against a regex pattern",aliases:["regex","patternMatch","regexp","matchPattern"],parameters:De},Fe={propertyAliases:_e,operatorData:Qe,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){const[r,a]=yield $([e.testString,e.pattern],t);t.typeChecker(k(Qe.parameters,{testString:r,pattern:a}));return new RegExp(a).test(r)})),parseChildren:e=>{const[t,r]=e.children;return Object.assign(Object.assign({},e),{testString:t,pattern:r})}},He=[{name:"property",description:'The path to the required property (e.g. "user.firstName")',aliases:["path","propertyName"],required:!0,type:"string",default:"path.to[0].my.data"},{name:"additionalData",description:"Additional data objects to be considered",aliases:["additional","objects","data","additionalObjects"],required:!1,type:"object",default:{}}],Me=I(He),$e={description:"Extract values from data objects",aliases:["dataProperties","data","getData","objectProperties","objProps","getProperty","getObjProp"],parameters:He},Be={propertyAliases:Me,operatorData:$e,evaluate:(t,a)=>r(void 0,void 0,void 0,(function*(){var r,i;const[s,n={}]=yield $([t.property,t.additionalData],a);a.typeChecker(k($e.parameters,{property:s,additionalData:n}));const o=Object.assign(Object.assign({},null!==(i=null===(r=a.options)||void 0===r?void 0:r.data)&&void 0!==i?i:{}),n);return e(o,s)})),parseChildren:e=>{const[t,r]=e.children,a=Object.assign(Object.assign({},e),{property:t});return void 0!==r&&(a.fallback=r),a}},Ge=[{name:"string",description:"A parameterised (%1, %2) string where the parameters are to be replaced",aliases:[],required:!0,type:"string",default:"Hello, %1"},{name:"substitutions",description:"An array of substitution values for the parameterised string",aliases:["replacements","values"],required:!1,type:["array","object"],default:{}},{name:"trimWhiteSpace",description:"Whether or not to trim white space from either end of the substituted strings (default: true)",aliases:["trim","trimWhitespace"],required:!1,type:"boolean",default:!0},{name:"substitutionCharacter",description:'Which character to search for in original string for replacement -- can be "%" or "$" (default: "%")',aliases:["subCharacter","subChar"],required:!1,type:"string",default:"$"},{name:"numberMapping",description:"Rules for mapping number values to text strings, such as pluralisation.",aliases:["numMap","numberMap","pluralisation","pluralization","plurals"],required:!1,type:"object",default:{}}],ze=I(Ge),We={description:"Replace values in a string using simple parameter substitution",aliases:["stringSubstitution","substitute","stringSub","replace"],parameters:Ge},Je={propertyAliases:ze,operatorData:We,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){const[r,a={},i=!0,s="%",n={}]=yield $([e.string,e.substitutions,e.trimWhiteSpace,e.substitutionCharacter,e.numberMapping],t);if(t.typeChecker(k(We.parameters,{string:r,substitutions:a,trimWhiteSpace:i,substitutionCharacter:s,numberMapping:n})),Array.isArray(a)){const e="$"===s?"$":"%",t=new RegExp(`(?<!\\\\)(${"%"===e?"%":"\\$"}[\\d]+)`,"g"),n=(r.match(t)||[]).sort(((e,t)=>Number(e.slice(1))-Number(t.slice(1)))),o=new Set(n),l=U(Array.from(o),a.map((e=>i?String(e).trim():e)));return r.split(t).map((e=>e in l?l[e]:e)).join("").replace(`\\${e}`,e)}const o=/(?<!\\)({{(?:[A-Za-z0-9_.]|\[[0-9]+\])+}})/g,l=[];for(const e of r.split(o)){if(!/(?<!\\){{(.+)}}/.exec(e)){l.push(e.replace("\\{{","{{"));continue}const r=yield Ve(e,a,n,t);l.push(i?String(r).trim():r)}return l.join("")})),parseChildren:e=>{const[t,...r]=e.children;return Object.assign(Object.assign({},e),{string:t,substitutions:r})}},Ve=(t,a,i,s)=>r(void 0,void 0,void 0,(function*(){var r,n;const o=null!==(n=null===(r=s.options)||void 0===r?void 0:r.data)&&void 0!==n?n:{},l=t.replace(/{{(.+)}}/,"$1"),u=yield M(e(a,l,e(o,l,"")),s);if("number"!=typeof u)return u;if(!(l in i))return u;const d=i[l];if(u in d)return d[u].replace("{}",String(u));const c=Object.keys(i[l]),p=c.find((e=>e.startsWith(">")));if(p){if(u>Number(p.slice(1)))return null==d?void 0:d[p]}const h=c.find((e=>e.startsWith("<")));if(h){if(u<Number(h.slice(1)))return null==d?void 0:d[h]}return d.other?d.other.replace("{}",String(u)):u})),Ye=[{name:"values",description:"An array to count",aliases:[],required:!0,type:"array",default:[1,2,3,4,5]}],Xe=I(Ye),Ze={description:"Count elements in an array",aliases:["count","length"],parameters:Ye},Ke={propertyAliases:Xe,operatorData:Ze,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){const r=yield $(e.values,t);return t.typeChecker(k(Ze.parameters,{values:r})),r.length})),parseChildren:e=>{const[t]=e.children;return Object.assign(Object.assign({},e),{values:t})}},et=[{name:"value",description:"The string to be split",aliases:["string"],required:!0,type:"string",default:"Alpha, Bravo, Charlie"},{name:"delimiter",description:"The value to split the string on (default is white space)",aliases:["separator"],required:!1,type:"string",default:","},{name:"trimWhiteSpace",description:"Whether to trim white space from around the resulting elements (default: true)",aliases:["trim","trimWhitespace"],required:!1,type:"boolean",default:!0},{name:"excludeTrailing",description:"If the input string ends in a delimiter, there will be an additional blank element if this value is false (default: true)",aliases:["removeTrailing","excludeTrailingDelimiter"],required:!1,type:"boolean",default:!0}],tt=I(et),rt={description:"Split a string into an array",aliases:["split","arraySplit"],parameters:et},at=" ",it={propertyAliases:tt,operatorData:rt,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){var r,a,i;const[s,n,o,l]=yield $([e.value,null!==(r=e.delimiter)&&void 0!==r?r:at,null===(a=e.trimWhiteSpace)||void 0===a||a,null===(i=e.excludeTrailing)||void 0===i||i],t);t.typeChecker(k(rt.parameters,{value:s,delimiter:n,trimWhiteSpace:o,excludeTrailing:l}));let u=s.split(n);return o&&(u=u.map((e=>e.trim()))),l&&""===u[u.length-1]&&u.pop(),u})),parseChildren:e=>{const[t,r=at]=e.children;return Object.assign(Object.assign({},e),{value:t,delimiter:r})}},st=[{name:"query",description:"SQL query string, with parameterised replacements (e.g. $1, $2, etc)",aliases:["text"],required:!0,type:"string"},{name:"values",description:"An array/object of values to replace the SQL string parameters, as per SQL connection specifications ",aliases:["replacements"],required:!1,type:["array","object"]},{name:"single",description:"Specify if returning a single record",aliases:["singleRecord"],required:!1,type:"boolean"},{name:"flatten",description:"Specify whether to flatten resulting record objects to arrays of values",aliases:["flat","array"],required:!1,type:"boolean"},{name:"useCache",description:"Whether or not the FigTree cache is used",aliases:[],required:!1,type:"boolean"}],nt=I(st),ot={description:"Query an SQL database",aliases:["sql","pgSql","postgres","pg","sqLite","sqlite","mySql"],parameters:st},lt={propertyAliases:nt,operatorData:ot,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){var a,i,s;const n=null===(a=t.options)||void 0===a?void 0:a.sqlConnection;if(!n)throw new Error("No SQL database connection provided");const[o,l,u,d,c,p]=yield $([e.query,e.values||[],e.single,e.flatten,e.useCache,e.type],t);t.typeChecker(k(ot.parameters,{query:o,single:u,flatten:d,values:l,useCache:c}));const h=null===(s=null!==(i=e.useCache)&&void 0!==i?i:t.options.useCache)||void 0===s||s;{const e=t.cache.useCache(h,((e,t,a,i,s)=>r(void 0,void 0,void 0,(function*(){const r=(yield n.query({query:e,values:t}))||[];["array","string","number"].includes(null!=s?s:"")&&(i=!0);const o=i?r.map((e=>{const t=Object.values(e);return t.length<=1?t[0]:t})):r;return a?o[0]:o}))),o,l,u,d,p);return e}})),parseChildren:e=>{const[t,...r]=e.children;return Object.assign(Object.assign({},e),{query:t,values:r})}},ut=[{name:"query",description:"GraphQL query string",aliases:[],required:!0,type:"string",default:'query getCountries {\n countries(filter: {continent: {eq: "OC"}}) {\n name\n }\n }'},{name:"url",description:"Endpoint for the GraphQL request (if not already provided in options)",aliases:["endpoint"],required:!1,type:["string","null"],default:"https://countries.trevorblades.com/"},{name:"headers",description:"HTTP Headers (if not already provided in options)",aliases:[],required:!1,type:"object",default:{}},{name:"variables",description:"Values for the variables used in query (key-value pairs)",aliases:[],required:!1,type:"object",default:{}},{name:"returnNode",description:"Property path to extract from the query response",aliases:["outputNode","returnProperty"],required:!1,type:"string",default:"data.countries[1].name"},{name:"useCache",description:"Whether or not the FigTree cache is used",aliases:[],required:!1,type:"boolean",default:!0}],dt=I(ut),ct={description:"GraphQL request",aliases:["graphQl","graphql","gql"],parameters:ut},pt={propertyAliases:dt,operatorData:ct,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){var a,i,s,n,o,l,u;const d=null!==(a=t.graphQLClient)&&void 0!==a?a:t.httpClient;if(!d)throw new Error("No HTTP client provided for GraphQL connection");const[c,p,h,v,y,f]=yield $([e.query,e.url,yield G(e.variables,t),e.returnNode,e.headers,e.useCache],t),{url:m,headers:g}=p instanceof Object?p:{url:p,headers:null};t.typeChecker([...k(ct.parameters,{url:m,query:c,variables:h,returnNode:v,headers:y,useCache:f}),{name:"headers",value:g,expectedType:["object","null"]}]);const b=m&&"graphqlendpoint"!==m.toLowerCase()?m:"",T=null!==(n=null!==(s=null===(i=t.options.graphQLConnection)||void 0===i?void 0:i.endpoint)&&void 0!==s?s:t.options.baseEndpoint)&&void 0!==n?n:"",O=Q(b)?b:F(T,b),C={query:c,variables:h},S=null===(o=null!=f?f:t.options.useCache)||void 0===o||o,j=yield t.cache.useCache(S,((e,t,a,i)=>r(void 0,void 0,void 0,(function*(){const r=yield H(d,{url:e,method:"post",data:t,headers:a});return _(null==r?void 0:r.data,i)}))),O,C,Object.assign(Object.assign(Object.assign(Object.assign({},null===(l=t.options.graphQLConnection)||void 0===l?void 0:l.headers),null===(u=t.options)||void 0===u?void 0:u.headers),g),y),v);return j})),parseChildren:(e,t)=>r(void 0,void 0,void 0,(function*(){const[r,a="",i,...s]=yield $(e.children,t),n=Array.isArray(i)?i:[i],o=s.slice(0,n.length),l=U(n,o),u=Object.assign(Object.assign({},e),{query:r,url:a,variables:l});return s.length>n.length&&(u.returnNode=s.pop()),u}))},ht=[{name:"url",description:"Endpoint URL",aliases:["endpoint"],required:!0,type:"string",default:"https://restcountries.com/v3.1/name/zealand"},{name:"returnProperty",description:"Property from request result",aliases:["outputProperty"],required:!1,type:"string",default:"result.path"},{name:"headers",description:"HTTP Headers",aliases:[],required:!1,type:"object",default:{}},{name:"parameters",description:"Query parameters (key-value)",aliases:["queryParams","queryParameters","urlQueries"],required:!1,type:"object",default:{}},{name:"useCache",description:"Whether or not the FigTree cache is used",aliases:[],required:!1,type:"boolean",default:!0}],vt=I(ht),yt={description:"HTTP GET Request",aliases:["get","api"],parameters:ht},ft=(e,t)=>r(void 0,void 0,void 0,(function*(){const[r="",a,...i]=yield $(e.children,t),s=Array.isArray(a)?a:[a],n=i.slice(0,s.length),o=U(s,n),l=Object.assign(Object.assign({},e),{url:r,parameters:o});return i.length>s.length&&(l.returnProperty=i.pop()),l})),mt=ft,gt={propertyAliases:vt,operatorData:yt,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){var a,i,s;const n=t.httpClient;if(!n)throw new Error("No HTTP client provided");const[o,l,u,d,c]=yield $([e.url,yield G(e.parameters,t),e.returnProperty,yield G(e.headers,t),e.useCache],t),{url:p,headers:h}=o instanceof Object?o:{url:o,headers:null};t.typeChecker([...k(yt.parameters,{url:p,returnProperty:u,headers:d,parameters:l,useCache:c}),{name:"headers",value:h,expectedType:["object","null"]}]);const v=null!==(a=t.options.baseEndpoint)&&void 0!==a?a:"",y=Object.assign(Object.assign(Object.assign({},null===(i=t.options)||void 0===i?void 0:i.headers),h),d),f=null===(s=null!=c?c:t.options.useCache)||void 0===s||s,m=yield t.cache.useCache(f,((e,t,a,i)=>r(void 0,void 0,void 0,(function*(){const r=yield H(n,{url:e,params:t,headers:a});return _(r,i)}))),Q(p)?p:F(v,p),l,y,u);return m})),parseChildren:ft},bt=[{name:"url",description:"Endpoint URL",aliases:["endpoint"],required:!0,type:"string",default:"https://jsonplaceholder.typicode.com/posts"},{name:"returnProperty",description:"Property path from request result",aliases:["outputProperty"],required:!1,type:"string",default:"result.path"},{name:"headers",description:"HTTP Headers",aliases:[],required:!1,type:"object",default:{}},{name:"parameters",description:"JSON Body parameters (key-value)",aliases:["bodyJson","data"],required:!1,type:"object",default:{}},{name:"useCache",description:"Whether or not the FigTree cache is used",aliases:[],required:!1,type:"boolean",default:!0}],Tt=I(bt),Ot={description:"HTTP POST Request",aliases:["post"],parameters:bt},Ct={propertyAliases:Tt,operatorData:Ot,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){var a,i,s;const n=t.httpClient;if(!n)throw new Error("No HTTP client provided");const[o,l,u,d,c]=yield $([e.url,yield G(e.parameters,t),e.returnProperty,yield G(e.headers,t),e.useCache],t),{url:p,headers:h}=o instanceof Object?o:{url:o,headers:null};t.typeChecker([...k(Ot.parameters,{url:p,headers:d,data:l,returnProperty:u,useCache:c}),{name:"headers",value:h,expectedType:["object","null"]}]);const v=null!==(a=t.options.baseEndpoint)&&void 0!==a?a:"",y=Object.assign(Object.assign(Object.assign({},null===(i=t.options)||void 0===i?void 0:i.headers),h),d),f=null!==(s=null!=c?c:t.options.useCache)&&void 0!==s&&s,m=yield t.cache.useCache(f,((e,t,a,i)=>r(void 0,void 0,void 0,(function*(){const r=yield H(n,{url:e,data:t,headers:a,method:"post"});return _(r,i)}))),Q(p)?p:F(v,p),l,y,u);return m})),parseChildren:mt},St=[{name:"properties",description:'An array of objects, each with a "key" property and a "value" property',aliases:["values","keyValPairs","keyValuePairs"],required:!0,type:"array",default:["firstKey","firstValue","secondKey","secondValue"]}],jt=I(St),Et={description:"Construct an object using objects defining keys and values",aliases:["buildObject","build","object"],parameters:St},qt={propertyAliases:jt,operatorData:Et,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){t.typeChecker(k(Et.parameters,{properties:e.properties}));const a=e.properties.filter((e=>e instanceof Object&&"key"in e&&"value"in e)).map((({key:e,value:a})=>{return i=[e,a],r(void 0,void 0,void 0,(function*(){const[e,r]=yield $(i,t);return t.typeChecker({name:"key",value:e,expectedType:["string","number","boolean"]}),[e,r]}));var i}));return Object.fromEntries(yield Promise.all(a))})),parseChildren:e=>{const t=e.children;if(t.length%2!=0)throw new Error("Even number of children required to make key/value pairs");const r=t.filter(((e,t)=>t%2==0)),a=t.filter(((e,t)=>t%2==1)),i=r.map(((e,t)=>({key:e,value:a[t]})));return Object.assign(Object.assign({},e),{properties:i})}},At=[{name:"matchExpression",description:"Expression to match against",aliases:["match"],required:!0,type:["string","number","boolean"],default:"matchMe"},{name:"branches",description:"Object whose keys are compared against the match expression. The value of the matching key is returned",aliases:["arms","cases"],required:!1,type:["object","array"],default:{matchMe:"YES",nonMatch:"NO"}},{name:"[...branches]",description:"Branch properties can optionally be placed at the operator root",aliases:[],required:!1,type:["object","array"]}],xt={propertyAliases:I(At),operatorData:{description:"Return different values depending on a matching expression",aliases:["match","switch"],parameters:At},evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){var r;const i=yield M(e.matchExpression,t);t.typeChecker({name:"matchExpression",value:i,expectedType:["string","number","boolean"]});const s=Array.isArray(e.branches)?R(e.branches):null!==(r=e.branches)&&void 0!==r?r:{},n=a(s)?yield M(s,t):s;if(!m(n))throw new Error("Branches don't evaluate to an object");if(i in n)return yield M(n[i],t);if("fallback"in n)return yield M(n.fallback,t);if(i in e)return yield M(e[i],t);throw new Error(`No match found for ${i}`)})),parseChildren:(e,t)=>r(void 0,void 0,void 0,(function*(){const[r,...a]=e.children,i=R(yield $(a,t));return Object.assign(Object.assign({},e),{matchExpression:r,branches:i})}))},wt=[{name:"functionName",description:"Path (in options.functions) to the required function",aliases:["functionPath","funcName","function","path","name"],required:!0,type:"string",default:null},{name:"args",description:"Arguments for the function",aliases:["arguments","variables"],required:!1,type:["array","any"],default:[]},{name:"input",description:"Argument for the function if a single input parameter",aliases:["arg"],required:!1,type:"any",default:"input"},{name:"useCache",description:"Whether or not the FigTree cache is used",aliases:[],required:!1,type:"boolean",default:!1}],Nt=I(wt),Pt={description:"Call a custom function (defined in options)",aliases:["customFunctions","customFunction","objectFunctions","function","functions","runFunction"],parameters:wt},Lt={propertyAliases:Nt,operatorData:Pt,evaluate:(t,a)=>r(void 0,void 0,void 0,(function*(){var i,s,n,o;const[l,u=[],d,c]=yield $([t.functionName,t.args,t.input,t.useCache],a);a.typeChecker(k(Pt.parameters,{functionName:l,args:u}));const{data:p,functions:h}=a.options;if(!h)throw new Error("- No functions defined");const v=null!==(n=null!==(s=null!==(i=e(h,`${l}.function`,null))&&void 0!==i?i:e(h,l,null))&&void 0!==s?s:e(p,l,null))&&void 0!==n?n:e(a.options,l,null);if(!v||"function"!=typeof v)throw new Error(`- No function found: "${l}"`);const y=null!==(o=null!=c?c:a.options.useCache)&&void 0!==o&&o,f=[...void 0===d?[]:[yield G(d,a)],...Array.isArray(u)?u:[u]];return yield a.cache.useCache(y,((e,...t)=>r(void 0,void 0,void 0,(function*(){return yield v(...t)}))),l,...f)})),parseChildren:e=>{const[t,...r]=e.children;return Object.assign(Object.assign({},e),{functionName:t,args:r})}},It=[{name:"value",description:"Value to pass through",aliases:["_","data"],required:!0,type:"any",default:null}],kt=I(It),Ut={description:"Pass through a value unchanged (or change its type)",aliases:["_","passThru","passthru","pass","ignore","coerce","convert"],parameters:It},Rt={propertyAliases:kt,operatorData:Ut,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){return t.typeChecker(k(Ut.parameters,{value:e.value})),yield M(e.value,t)})),parseChildren:e=>{const[...t]=e.children,r=1===(null==t?void 0:t.length)?t[0]:t;return Object.assign(Object.assign({},e),{value:r})}};var Dt=Object.freeze({__proto__:null,AND:Y,BUILD_OBJECT:qt,CONDITIONAL:Re,COUNT:Ke,CUSTOM_FUNCTIONS:Lt,DIVIDE:je,EQUAL:ie,GET:gt,GRAPHQL:pt,GREATER_THAN:xe,LESS_THAN:Le,MATCH:xt,MULTIPLY:Te,NOT_EQUAL:le,OBJECT_PROPERTIES:Be,OR:ee,PASSTHRU:Rt,PLUS:pe,POST:Ct,REGEX:Fe,SPLIT:it,SQL:lt,STRING_SUBSTITUTION:Je,SUBTRACT:fe});class _t{constructor(e){var t,a;this.useCache=(e,t,...a)=>r(this,void 0,void 0,(function*(){if(!e)return yield t(...a);const r=Qt(a),i=r in this.store,s=Date.now(),n=i&&s-this.store[r].timestamp>1e3*this.maxTime;if(i)return this.queue=this.queue.filter((e=>e!==r)),this.queue.unshift(r),this.store[r].timestamp=s,n&&(this.store[r].result=yield t(...a)),this.store[r].result;const o=yield t(...a);return this.store[r]={result:o,timestamp:s},this.queue.unshift(r),this.resizeCache(),o})),this.getMax=()=>this.maxSize,this.setMax=e=>{this.maxSize=e,this.resizeCache()},this.getMaxTime=()=>this.maxTime,this.setMaxTime=e=>{this.maxTime=e},this.getCache=()=>this.store,this.setCache=e=>this.store=e,this.resizeCache=()=>{if(this.queue.length>this.maxSize){this.queue.slice(this.maxSize).forEach((e=>delete this.store[e])),this.queue=this.queue.slice(0,this.maxSize)}},this.store={},this.queue=[],this.maxSize=null!==(t=null==e?void 0:e.maxSize)&&void 0!==t?t:50,this.maxTime=null!==(a=null==e?void 0:e.maxTime)&&void 0!==a?a:1800}}const Qt=e=>e.map((e=>"object"==typeof e?JSON.stringify(e):e)).join("_"),Ft=e=>e?"name"in e&&"fetch"===e.name?Mt(e):"Axios"in e&&"Axios"===e.Axios.name?Ht(e):e:"undefined"!=typeof window&&"document"in window&&"fetch"in window?Mt(window.fetch):void 0,Ht=e=>({get:t=>r(void 0,void 0,void 0,(function*(){return(yield e(Object.assign(Object.assign({},t),{method:"get"}))).data})),post:t=>r(void 0,void 0,void 0,(function*(){return(yield e(Object.assign(Object.assign({},t),{method:"post"}))).data})),throwError:t=>{var r,a,i,s;if(e.isAxiosError(t)&&t.response)throw t.errorData={status:null===(r=t.response)||void 0===r?void 0:r.status,error:null===(a=t.response)||void 0===a?void 0:a.statusText,url:null===(i=t.config)||void 0===i?void 0:i.url,response:null===(s=t.response)||void 0===s?void 0:s.data},t;throw new Error("Network error: "+(null==t?void 0:t.message))}}),Mt=e=>({get:t=>r(void 0,void 0,void 0,(function*(){const{url:r,headers:a,params:i={}}=t,s=Object.keys(i).length>0?`?${new URLSearchParams(i).toString()}`:"",n=yield e(r+s,{headers:a,method:"GET"}),o=yield n.json();if(!n.ok){const e=new Error("Problem with GET request");throw e.name="FetchError",e.errorData={status:n.status,error:n.statusText,url:n.url,response:o},console.log(e.errorData),e}return o})),post:t=>r(void 0,void 0,void 0,(function*(){const{url:r,headers:a,params:i,data:s}=t,n=new URLSearchParams(i),o=n.size>0?`?${n.toString()}`:"",l=yield e(r+o,{headers:a,body:JSON.stringify(s),method:"POST"}),u=yield l.json();if(!l.ok){const e=new Error("Problem with POST request");throw e.name="FetchError",e.errorData={status:l.status,error:l.statusText,url:l.url,response:u},console.log(e.errorData),e}return u})),throwError:e=>{throw e}});class $t{constructor(e={}){var t,r,a;this.typeChecker=(...e)=>{const t=1===e.length&&Array.isArray(e[0])?e[0]:e,r=w(...t);if(!0===r)return;const a=new Error(r);throw a.name="Type Error",a},this.getCache=()=>this.cache.getCache(),this.setCache=e=>this.cache.setCache(e),this.getVersion=()=>"2.17.1",this.options=Bt(e),this.operators=o(Dt,null!==(r=null===(t=this.options)||void 0===t?void 0:t.excludeOperators)&&void 0!==r?r:[],g),this.operatorAliases=g,this.cache=new _t({maxSize:e.maxCacheSize,maxTime:e.maxCacheTime}),this.graphQLClient=Ft(null===(a=e.graphQLConnection)||void 0===a?void 0:a.httpClient),this.httpClient=Ft(e.httpClient)}evaluate(e,t={}){var a;return r(this,void 0,void 0,(function*(){const r=h(this.options,Bt(t),!0);return t.httpClient&&(this.httpClient=Ft(t.httpClient)),(null===(a=t.graphQLConnection)||void 0===a?void 0:a.httpClient)&&(this.graphQLClient=Ft(t.graphQLConnection.httpClient)),r.maxCacheSize&&r.maxCacheSize!==this.cache.getMax()&&this.cache.setMax(r.maxCacheSize),r.maxCacheTime&&r.maxCacheTime!==this.cache.getMaxTime()&&this.cache.setMaxTime(r.maxCacheTime),yield M(e,{options:r,operators:t.excludeOperators?o(Dt,t.excludeOperators,g):this.operators,operatorAliases:this.operatorAliases,typeChecker:r.skipRuntimeTypeCheck?()=>{}:this.typeChecker,resolvedAliasNodes:{},cache:this.cache,graphQLClient:this.graphQLClient,httpClient:this.httpClient})}))}getOptions(){return this.options}updateOptions(e){this.options=h(this.options,Bt(e),!1),this.options.excludeOperators&&(this.operators=o(Dt,this.options.excludeOperators,g))}getOperators(){const e=this.options.excludeOperators?o(Dt,this.options.excludeOperators,g):this.operators,t=Object.entries(e).map((([e,t])=>Object.assign({name:e},t.operatorData))),r=[...new Set(Object.values(g))];return t.sort(((e,t)=>r.indexOf(e.name)-r.indexOf(t.name)))}getFragments(){var e;return Object.entries(null!==(e=this.options.fragments)&&void 0!==e?e:{}).map((([e,t])=>Object.assign({name:e},null==t?void 0:t.metadata)))}getCustomFunctions(){var e;return Object.entries(null!==(e=this.options.functions)&&void 0!==e?e:{}).map((([e,t])=>{const r="function"==typeof t?t:null==t?void 0:t.function,a={name:e,numRequiredArgs:null==r?void 0:r.length};if("function"!=typeof t){const{description:e,argsDefault:r,inputDefault:i,textColor:s,backgroundColor:n}=t;return e&&(a.description=e),r&&(a.argsDefault=r),i&&(a.inputDefault=i),s&&(a.textColor=s),n&&(a.backgroundColor=n),a}return a}))}}const Bt=e=>"objects"in e?Object.assign(Object.assign({},e),{data:e.objects}):e;exports.AxiosClient=Ht,exports.FetchClient=Mt,exports.FigTreeError=E,exports.FigTreeEvaluator=$t,exports.SQLNodePostgres=e=>({query:({query:t,values:a=[]})=>r(void 0,void 0,void 0,(function*(){const r={text:t,values:null!=a?a:[]};try{const t=yield e.query(r);if(null==t?void 0:t.error)throw new Error(t.error);return t.rows}catch(e){throw e.name="Node-Postgres error",e}}))}),exports.SQLite=e=>({query:({query:t,values:a=[]})=>r(void 0,void 0,void 0,(function*(){try{return yield e.all(t,a)}catch(e){throw e.name="SQLite error",e}}))}),exports.evaluateExpression=(e,t)=>new $t(t).evaluate(e),exports.isAliasString=d,exports.isFigTreeError=e=>e instanceof E,exports.isFigTreeExpression=e=>a(e)||i(e)||"string"==typeof e&&d(e)||m(e)&&1===Object.keys(e).length&&d(Object.keys(e)[0]),exports.isFragmentNode=i,exports.isObject=m,exports.isOperatorNode=a,exports.preProcessShorthand=O,exports.standardiseOperatorName=s,exports.truncateString=l;
"use strict";var e=require("object-property-extractor"),t=require("dequal/lite");function r(e,t,r,a){return new(r||(r=Promise))((function(i,s){function n(e){try{l(a.next(e))}catch(e){s(e)}}function o(e){try{l(a.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(n,o)}l((a=a.apply(e,t||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;const a=e=>e instanceof Object&&"operator"in e,i=e=>e instanceof Object&&"fragment"in e,s=e=>{const t=f(e);return t||e},n=(e,t)=>t[s(e)],o=(e,t,r)=>{const a=Object.assign({},e);return t.forEach((e=>{r[s(e)]||console.warn(`Invalid operator exclusion: ${e}`),delete a[r[s(e)]]})),a},l=(e,t=200)=>e.length<t?e:`${e.slice(0,t-2).trim()}...`,u=(e,t)=>{const r=Object.entries(e).map((([e,r])=>[t(e),r]));return Object.fromEntries(r)},d=e=>/^\$.+/.test(e),c=(e,{resolvedAliasNodes:t})=>{var r;return"string"==typeof e&&d(e)&&null!==(r=null==t?void 0:t[e])&&void 0!==r?r:e},p=(e,t)=>r(void 0,void 0,void 0,(function*(){var r,a;if(!(e.operator in(null!==(a=null===(r=t.options)||void 0===r?void 0:r.functions)&&void 0!==a?a:{})))return e;const{operator:i,fallback:s,outputType:n,type:o,useCache:l,input:u,args:d}=e,c=function(e,t){var r={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)<0&&(r[a]=e[a]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(a=Object.getOwnPropertySymbols(e);i<a.length;i++)t.indexOf(a[i])<0&&Object.prototype.propertyIsEnumerable.call(e,a[i])&&(r[a[i]]=e[a[i]])}return r}(e,["operator","fallback","outputType","type","useCache","input","args"]),p={operator:"CUSTOM_FUNCTIONS",function:i};return void 0!==s&&(p.fallback=s),void 0!==n&&(p.outputType=n),void 0!==o&&(p.type=o),void 0!==l&&(p.useCache=l),void 0!==d&&(p.args=d),void 0!==u?p.input=u:Object.keys(c).length>0&&(p.input=c),p})),h=(e,t,r)=>{const a=Object.assign(Object.assign({},e),t);return r?((e.data||t.data)&&(a.data=Object.assign(Object.assign({},e.data),t.data)),(e.functions||t.functions)&&(a.functions=Object.assign(Object.assign({},e.functions),t.functions)),(e.fragments||t.fragments)&&(a.fragments=Object.assign(Object.assign({},e.fragments),t.fragments)),(e.headers||t.headers)&&(a.headers=Object.assign(Object.assign({},e.headers),t.headers)),a):a},v={number:e=>y(e),string:e=>String(e),array:e=>Array.isArray(e)?e:[e],boolean:e=>Boolean(e),bool:e=>Boolean(e)},y=e=>{if("string"!=typeof e)return Number.isNaN(Number(e))?e:Number(e);const t=new RegExp(/-?\d*\.?\d+/gm),r=e.match(t);return r?Number(r[0]):0},f=e=>e.replace(/[^A-Za-z\d _-]/g,"").split(/[-_ ]/).map((e=>{var t;return null!==(t=e.match(/[a-z]+|[A-Z]+[a-z]*/g))&&void 0!==t?t:e})).flat().filter((e=>""!==e)).map(((e,t)=>0===t?e.toLowerCase():e.charAt(0).toUpperCase()+e.slice(1).toLowerCase())).join(""),m=e=>"object"==typeof e&&null!==e&&!Array.isArray(e),g={and:"AND","&":"AND","&&":"AND",or:"OR","|":"OR","||":"OR","=":"EQUAL",eq:"EQUAL",equal:"EQUAL",equals:"EQUAL","!=":"NOT_EQUAL","!":"NOT_EQUAL",ne:"NOT_EQUAL",notEqual:"NOT_EQUAL","+":"PLUS",plus:"PLUS",add:"PLUS",concat:"PLUS",join:"PLUS",merge:"PLUS","-":"SUBTRACT",subtract:"SUBTRACT",minus:"SUBTRACT",takeaway:"SUBTRACT","*":"MULTIPLY",x:"MULTIPLY",multiply:"MULTIPLY",times:"MULTIPLY","/":"DIVIDE",divide:"DIVIDE","÷":"DIVIDE",">":"GREATER_THAN",greaterThan:"GREATER_THAN",higher:"GREATER_THAN",larger:"GREATER_THAN","<":"LESS_THAN",lessThan:"LESS_THAN",lower:"LESS_THAN",smaller:"LESS_THAN","?":"CONDITIONAL",conditional:"CONDITIONAL",ifThen:"CONDITIONAL",regex:"REGEX",patternMatch:"REGEX",regexp:"REGEX",matchPattern:"REGEX",dataProperties:"OBJECT_PROPERTIES",data:"OBJECT_PROPERTIES",getData:"OBJECT_PROPERTIES",objectProperties:"OBJECT_PROPERTIES",objProps:"OBJECT_PROPERTIES",getProperty:"OBJECT_PROPERTIES",getObjProp:"OBJECT_PROPERTIES",stringSubstitution:"STRING_SUBSTITUTION",substitute:"STRING_SUBSTITUTION",stringSub:"STRING_SUBSTITUTION",replace:"STRING_SUBSTITUTION",split:"SPLIT",arraySplit:"SPLIT",count:"COUNT",length:"COUNT",get:"GET",api:"GET",post:"POST",sql:"SQL",pgSql:"SQL",postgres:"SQL",pg:"SQL",sqLite:"SQL",sqlite:"SQL",mySql:"SQL",graphQl:"GRAPHQL",graphql:"GRAPHQL",gql:"GRAPHQL",buildObject:"BUILD_OBJECT",build:"BUILD_OBJECT",object:"BUILD_OBJECT",match:"MATCH",switch:"MATCH",customFunctions:"CUSTOM_FUNCTIONS",customFunction:"CUSTOM_FUNCTIONS",objectFunctions:"CUSTOM_FUNCTIONS",function:"CUSTOM_FUNCTIONS",functions:"CUSTOM_FUNCTIONS",runFunction:"CUSTOM_FUNCTIONS",_:"PASSTHRU",passThru:"PASSTHRU",passthru:"PASSTHRU",pass:"PASSTHRU",ignore:"PASSTHRU",coerce:"PASSTHRU",convert:"PASSTHRU"},b=g,T=/(\$[^()]+)\((.*)\)/,O=(e,t={},r,a=!0)=>a?"string"==typeof e?C(e,t,r):m(e)?S(e,t,r):e:e,C=(e,t,r)=>{const a=T.exec(e);if(!a)return e;const i=a[1].trim(),s=a[2].split(",").map((e=>O(e.trim(),t,r)));return j(i,s,t,r)},S=(e,t,r)=>{if(a(e)||i(e))return e;const s=Object.entries(e),n=s.filter((([e])=>d(e))),o=s.filter((([e])=>!d(e))),l=n.reduce(((e,[a,i])=>e=Object.assign(Object.assign({},e),j(a,i,t,r))),{});return Object.assign(Object.assign({},l),Object.fromEntries(o))},j=(e,t,r,a)=>{const i=e.slice(1),s=n(i,b);return s?Array.isArray(t)?{operator:s,children:t}:m(t)&&!Object.keys(t).some((e=>d(e)))?Object.assign({operator:s},t):{operator:s,children:[t]}:i in r?{fragment:i,parameters:Object.assign({},t)}:a.includes(i)?Array.isArray(t)?{operator:i,args:t}:m(t)?"input"in t||"args"in t?Object.assign({operator:i},t):{operator:i,input:t}:{operator:i,args:[t]}:{[e]:t}};class E extends Error{constructor(e,t,r,a){super(e.message),Object.assign(this,e),this.operator=t,this.expression=a,this.errorData=e.errorData,r&&(this.name=r),"Error"===this.name&&(this.name="FigTreeError");const i=(t?"Operator: "+t:"")+("FigTreeError"===this.name?"":` - ${this.name}`),s=this.errorData?"\n"+JSON.stringify(this.errorData,null,2):"";this.prettyPrint=`${""!==i?i+"\n":""}${this.message}${"\n{}"===s?"":s}`}}const q=({fallback:e,operator:t,name:r,error:a,expression:i,returnErrorAsString:s=!1})=>{if(void 0!==e)return e;if(a instanceof E){if(!s)throw a;return a.prettyPrint}const n=new E("string"==typeof a?new Error(a):a,t,r,i);if(s)return n.prettyPrint;throw n},A=e=>m(e)&&"literal"in e,x=({value:e,name:t,expectedType:r})=>{if(A(r)){const{literal:a}=r;return!!a.includes(e)||P(t,e,`Literal(${a.map((e=>void 0===e?"undefined":`"${e}"`)).join(", ")})`)}if(Array.isArray(r))return!!r.some((r=>!0===x({value:e,name:t,expectedType:r})))||P(t,e,r.join("|"));return!!(0,N[r])(e)||P(t,e,r)},w=(...e)=>{const t=[];return e.forEach((e=>{const r=x(e);!0!==r&&t.push(r)})),!(t.length>0)||t.join("\n")},N={any:e=>void 0!==e,string:e=>"string"==typeof e,number:e=>"number"==typeof e,boolean:e=>"boolean"==typeof e,array:e=>Array.isArray(e),null:e=>null===e,object:e=>m(e),undefined:e=>void 0===e},P=(e,t,r)=>void 0===t&&e?`- Missing required property "${e}" (type: ${r})`:void 0!==e?`- Property "${e}" (value: ${L(t)}) is not of type: ${r}`:`- ${L(t)} is not of type: ${r}`,L=e=>{const t=void 0===e||Number.isNaN(e)?String(e):JSON.stringify(e);return l(t,50)},I=e=>{const t={};return e.forEach((e=>{e.aliases.forEach((r=>t[r]=e.name))})),t},k=(e,t)=>e.map((({name:e,required:r,type:a})=>{if(A(a)){const i=[...a.literal];return r||i.push(void 0),{name:e,value:t[e],expectedType:{literal:i}}}const i=Array.isArray(a)?a:[a];r||i.push("undefined");const s=1===i.length?i[0]:i;return{name:e,value:t[e],expectedType:s}})),U=(e,t)=>{const r=e.map(((e,r)=>[e,t[r]]));return Object.fromEntries(r)},R=e=>{if(e.length%2!=0)throw new Error("Even number of children required to make key/value pairs");const t=e.filter(((e,t)=>t%2==0)),r=w(...t.map((e=>({value:e,expectedType:["string","number","boolean"]}))));if(!0!==r)throw new Error(r);const a=e.filter(((e,t)=>t%2==1)),i={};return t.forEach(((e,t)=>{i[e]=a[t]})),i},D=e=>m(e)&&1===Object.keys(e).length?Object.values(e)[0]:e,_=(t,r,a=void 0)=>{const i=r?e(t,r,a):t;return Array.isArray(i)?i.map((e=>D(e))):r?null===i?null:D(i):i},Q=e=>/^https?:\/\/.+/.test(e),F=(...e)=>e.reduce(((e,t,r)=>{const a="/"===t[0]?1:0,i="/"===t.slice(-1)?-1:void 0,s=t.slice(a,i);return""===s?e:e+(0===r?"":"/")+s}),""),H=(e,t)=>r(void 0,void 0,void 0,(function*(){const{url:r,params:a={},data:i={},headers:s={},method:n="get"}=t;if(!r||""===r)throw new Error("Invalid url");try{return yield e[n]({url:r,headers:Object.assign({"Content-Type":"application/json",Accept:"application/json"},s),params:a,data:i})}catch(t){e.throwError(t)}})),M=(e,t)=>r(void 0,void 0,void 0,(function*(){var r,s,o,l,d,h;const{options:y,operators:f,operatorAliases:g}=t;let b=(null==y?void 0:y.allowJSONStringInput)?(e=>{if("string"!=typeof e)return e;try{const t=JSON.parse(e);return a(t)?t:e}catch(t){return e}})(e):e;const T=Object.keys(null!==(s=null===(r=t.options)||void 0===r?void 0:r.functions)&&void 0!==s?s:{});b=O(b,null===(o=t.options)||void 0===o?void 0:o.fragments,T,!y.noShorthand),Array.isArray(b)&&(b=yield $(b,t));const C=a(b),S=i(b);if(C&&(b=yield p(b,t)),y.evaluateFullObject&&!C&&!S)return c(yield G(b,t),t);if(!C&&!S)return y.supportDeprecatedValueNodes&&m(b)&&"value"in b?b.value:c(b,t);const{fallback:j}=b,E=null!==(l=null==y?void 0:y.returnErrorAsString)&&void 0!==l&&l;if(S){const e=b,[r,i]=yield $([e.fragment,e.parameters],t),s=O(null===(d=null==y?void 0:y.fragments)||void 0===d?void 0:d[r],y.fragments,T,!y.noShorthand);if(void 0===s)return q({fallback:yield M(j,t),error:`Fragment not defined: ${r}`,expression:b,returnErrorAsString:E});if(!a(s))return c(s,t);b=Object.assign(Object.assign(Object.assign({},e),s),i),delete b.fragment}const A=b,x=n(A.operator,g);if(!x)return q({fallback:yield M(j,t),error:`Invalid operator: ${A.operator}`,expression:b,returnErrorAsString:E});if(!t.operators[x])return q({fallback:yield M(j,t),error:`Excluded operator: ${A.operator}`,expression:b,returnErrorAsString:E});const{propertyAliases:w,evaluate:N,parseChildren:P}=f[x];let L=((e,t)=>u(t,(t=>t in e?e[t]:t)))(w,A);const I=yield B(L,t);S||Object.entries(I).forEach((([e,r])=>t.resolvedAliasNodes[e]=r));const k=S?Object.assign(Object.assign({},t),{resolvedAliasNodes:Object.assign(Object.assign({},t.resolvedAliasNodes),I)}):t;if("children"in L){if(Array.isArray(L.children)||(L.children=yield M(L.children,k)),!Array.isArray(L.children))return q({fallback:yield M(j,t),operator:x,name:"Type Error",error:'- Property "children" is not of type: array',expression:b,returnErrorAsString:E});L=yield P(L,k),delete L.children}let U;try{U=yield N(L,k)}catch(e){return q({fallback:yield M(L.fallback,t),operator:x,error:e,expression:L,returnErrorAsString:E})}const R=null!==(h=null==L?void 0:L.outputType)&&void 0!==h?h:null==L?void 0:L.type;if(!R)return U;const D=yield M(R,t);return D in v?v[D](U):q({fallback:yield M(j,t),operator:x,error:`- Invalid output type: ${D}`,expression:L,returnErrorAsString:E})})),$=(e,t)=>r(void 0,void 0,void 0,(function*(){return Array.isArray(e)?yield Promise.all(e.map((e=>M(e,t)))):yield M(e,t)})),B=(e,t)=>r(void 0,void 0,void 0,(function*(){var r;const a=Object.keys(e).filter(d);if(0===a.length)return{};const i=[];a.forEach((r=>i.push(M(e[r],t))));const s=yield Promise.all(i),n=U(a,yield Promise.all(i));for(const[e,t]of s.entries())"string"==typeof t&&d(t)&&(n[a[e]]=null!==(r=null==n?void 0:n[t])&&void 0!==r?r:t);return n})),G=(e,t)=>r(void 0,void 0,void 0,(function*(){if(!m(e))return e;const r=[],a=[];Object.entries(e).forEach((([r,i])=>{d(r)&&(a.push(r,M(i,t)),delete e[r])}));const i=yield Promise.all(a);t.resolvedAliasNodes=Object.assign(Object.assign({},t.resolvedAliasNodes),R(i)),Object.entries(e).forEach((([e,a])=>{r.push(e,M(a,t))}));const s=yield Promise.all(r);return c(R(s),t)})),z=[{name:"values",description:"Returns true if all values are true",aliases:[],required:!0,type:"array",default:[!0,!0]}],W=I(z),J={description:"Logical AND",aliases:["and","&","&&"],parameters:z},V=e=>{const t=e.children;return Object.assign(Object.assign({},e),{values:t})},Y={propertyAliases:W,operatorData:J,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){const r=yield $(e.values,t);return t.typeChecker(k(J.parameters,{values:r})),r.reduce(((e,t)=>e&&!!t),!0)})),parseChildren:V},X=[{name:"values",description:"Returns true if any values are true",aliases:[],required:!0,type:"array",default:[!0,!1]}],Z=I(X),K={description:"Logical OR",aliases:["or","|","||"],parameters:X},ee={propertyAliases:Z,operatorData:K,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){const r=yield $(e.values,t);return t.typeChecker(k(K.parameters,{values:r})),r.reduce(((e,t)=>e||!!t),!1)})),parseChildren:V},te=[{name:"values",description:"Array of values to check for equality",aliases:[],required:!0,type:"array",default:["These are equal","These are equal"]},{name:"caseInsensitive",description:"If the values are strings, ignore the case (default: false)",aliases:[],required:!1,type:"boolean",default:!1},{name:"nullEqualsUndefined",description:"Whether a null value should be considered equal to an undefined value (default: false)",aliases:[],required:!1,type:"boolean",default:!1}],re=I(te),ae={description:"Test multiple values are equal",aliases:["=","eq","equal","equals"],parameters:te},ie={propertyAliases:re,operatorData:ae,evaluate:(e,a)=>r(void 0,void 0,void 0,(function*(){var r,i,s;const[n,o,l]=yield $([e.values,e.caseInsensitive,e.nullEqualsUndefined],a);a.typeChecker(k(ae.parameters,{values:n,caseInsensitive:o,nullEqualsUndefined:l}));const u=(void 0!==o?o:null!==(i=null===(r=a.options)||void 0===r?void 0:r.caseInsensitive)&&void 0!==i&&i)&&n.every((e=>"string"==typeof e))?n.map((e=>e.toLowerCase())):n;return!(void 0!==l?l:void 0!==(null===(s=a.options)||void 0===s?void 0:s.nullEqualsUndefined)&&a.options.nullEqualsUndefined)||null!==u[0]&&void 0!==u[0]?u.every((e=>t.dequal(e,u[0]))):u.every((e=>null==e))})),parseChildren:V},se=[{name:"values",description:"Array of values to check for inequality",aliases:[],required:!0,type:"array",default:["These items","don't match"]},{name:"caseInsensitive",description:"If the values are strings, ignore the case (default: false)",aliases:[],required:!1,type:"boolean",default:!1},{name:"nullEqualsUndefined",description:"Whether a null value should be considered equal to an undefined value (default: false)",aliases:[],required:!1,type:"boolean",default:!1}],ne=I(se),oe={description:"Test if any values are different",aliases:["!=","!","ne","notEqual"],parameters:se},le={propertyAliases:ne,operatorData:oe,evaluate:(e,a)=>r(void 0,void 0,void 0,(function*(){var r,i,s;const[n,o,l]=yield $([e.values,e.caseInsensitive,e.nullEqualsUndefined],a);a.typeChecker(k(oe.parameters,{values:n,caseInsensitive:o,nullEqualsUndefined:l}));const u=(void 0!==o?o:null!==(i=null===(r=a.options)||void 0===r?void 0:r.caseInsensitive)&&void 0!==i&&i)&&n.every((e=>"string"==typeof e))?n.map((e=>e.toLowerCase())):n;return!(void 0!==l?l:void 0!==(null===(s=a.options)||void 0===s?void 0:s.nullEqualsUndefined)&&a.options.nullEqualsUndefined)||null!==u[0]&&void 0!==u[0]?u.some((e=>!t.dequal(e,u[0]))):u.some((e=>null===e&&void 0===e))})),parseChildren:V},ue=[{name:"values",description:"Array of values to check to add together",aliases:[],required:!0,type:"array",default:[1,2,3]},{name:"type",description:"Data type to coerce input values to before addition",aliases:[],required:!1,type:{literal:["string","array","number","boolean","bool"]},default:"string"}],de=I(ue),ce={description:"Add, concatenate or merge multiple values",aliases:["+","plus","add","concat","join","merge"],parameters:ue},pe={propertyAliases:de,operatorData:ce,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){const r=yield $(e.values,t);return t.typeChecker(k(ce.parameters,{values:r,type:e.type})),0===r.length?r:"string"===(null==e?void 0:e.type)?r.reduce(((e,t)=>e.concat(t)),""):"array"===(null==e?void 0:e.type)?r.reduce(((e,t)=>e.concat(t)),[]):r.every((e=>"string"==typeof e||Array.isArray(e)))?r.reduce(((e,t)=>e.concat(t))):r.every((e=>m(e)))?r.reduce(((e,t)=>Object.assign(Object.assign({},e),t)),{}):r.reduce(((e,t)=>e+t))})),parseChildren:V},he=[{name:"values",description:"Array of values - 2nd element will be subtracted from the first",aliases:[],required:!1,type:"array",default:[10,5]},{name:"from",description:"Numerical value that will be subtracted from",aliases:["subtractFrom"],required:!1,type:"number",default:100},{name:"subtract",description:"Numerical value to subtract",aliases:[],required:!1,type:"number",default:50}],ve=I(he),ye={description:"Subtract one numerical value from another",aliases:["-","subtract","minus","takeaway"],parameters:he},fe={propertyAliases:ve,operatorData:ye,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){const[r,a,i]=yield $([e.values,e.from,e.subtract],t);t.typeChecker(k(ye.parameters,{values:r,from:a,subtract:i}));const s=null!=r?r:[a,i].filter((e=>void 0!==e));if(s.length<2)throw new Error("- Not enough values provided");if(s.some((e=>"number"!=typeof e)))throw new Error("- Not all values are numbers");return s[0]-s[1]})),parseChildren:V},me=[{name:"values",description:"Array of values whose product will be calculated",aliases:[],required:!0,type:"array",default:[5,5]}],ge=I(me),be={description:"Multiply several numerical values together",aliases:["*","x","multiply","times"],parameters:me},Te={propertyAliases:ge,operatorData:be,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){const r=yield $(e.values,t);if(t.typeChecker(k(be.parameters,{values:r})),0===r.length)return 0;if(r.some((e=>"number"!=typeof e)))throw new Error("- Not all values are numbers");return r.reduce(((e,t)=>e*t))})),parseChildren:V},Oe=[{name:"values",description:"Array of values - 1st element will be divided by the first",aliases:[],required:!1,type:"array",default:[100,10]},{name:"dividend",description:"The number that will be divided",aliases:["divide"],required:!1,type:"number",default:99},{name:"divisor",description:"The number that dividend will be divided by",aliases:["by","divideBy"],required:!1,type:"number",default:3},{name:"output",description:"Whether to output a quotient, remainder or decimal",aliases:[],required:!1,type:{literal:["quotient","remainder"]},default:"quotient"}],Ce=I(Oe),Se={description:"Divide one numerical value by another",aliases:["/","divide","÷"],parameters:Oe},je={propertyAliases:Ce,operatorData:Se,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){const[r,a,i,s]=yield $([e.values,e.dividend,e.divisor,e.output],t);t.typeChecker(k(Se.parameters,{values:r,dividend:a,divisor:i,output:s}));const n=null!=r?r:[a,i].filter((e=>void 0!==e));if(n.length<2)throw new Error("- Not enough values provided");if(n.some((e=>"number"!=typeof e)))throw new Error("- Not all values are numbers");if(0===n[1])throw new Error("Division by zero!");switch(s){case"quotient":return Math.floor(n[0]/n[1]);case"remainder":return n[0]%n[1];default:return n[0]/n[1]}})),parseChildren:V},Ee=[{name:"values",description:"Array of values - 1st element will be compared to the second",aliases:[],required:!0,type:"array",default:[10,9]},{name:"strict",description:"Whether value must be strictly greater than (i.e. not equal) (default: false)",aliases:[],required:!1,type:"boolean",default:!1}],qe=I(Ee),Ae={description:"Test if a value is greater than (or equal to) another value",aliases:[">","greaterThan","higher","larger"],parameters:Ee},xe={propertyAliases:qe,operatorData:Ae,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){const[r,a=!0]=yield $([e.values,e.strict],t);if(t.typeChecker(k(Ae.parameters,{values:r,strict:a})),r.length<2)throw new Error("- Not enough values provided");const[i,s]=r;return i===s&&!a||i>s})),parseChildren:V},we=[{name:"values",description:"Array of values - 1st element will be compared to the second",aliases:[],required:!0,type:"array",default:[9,10]},{name:"strict",description:"Whether value must be strictly smaller than (i.e. not equal) (default: false)",aliases:[],required:!1,type:"boolean",default:!1}],Ne=I(we),Pe={description:"Test if a value is smaller than (or equal to) another value",aliases:["<","lessThan","lower","smaller"],parameters:we},Le={propertyAliases:Ne,operatorData:Pe,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){const[r,a=!0]=yield $([e.values,e.strict],t);if(t.typeChecker(k(Pe.parameters,{values:r,strict:a})),r.length<2)throw new Error("- Not enough values provided");const[i,s]=r;return i===s&&!a||i<s})),parseChildren:V},Ie=[{name:"condition",description:"The expression to check for truthiness",aliases:[],required:!0,type:"any",default:!0},{name:"valueIfTrue",description:"Value to return if condition is true",aliases:["ifTrue"],required:!0,type:"any",default:"The condition is true"},{name:"valueIfFalse",description:"Value to return if condition is false",aliases:["ifFalse","ifNot"],required:!0,type:"any",default:"The condition is false"}],ke=I(Ie),Ue={description:"Return a value based on a condition",aliases:["?","conditional","ifThen"],parameters:Ie},Re={propertyAliases:ke,operatorData:Ue,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){t.typeChecker(k(Ue.parameters,{condition:e.condition,valueIfTrue:e.valueIfTrue,valueIfFalse:e.valueIfFalse}));return(yield M(e.condition,t))?yield M(e.valueIfTrue,t):yield M(e.valueIfFalse,t)})),parseChildren:e=>{const[t,r,a]=e.children;return Object.assign(Object.assign({},e),{condition:t,valueIfTrue:r,valueIfFalse:a})}},De=[{name:"testString",description:"The string to test",aliases:["string","value"],required:!0,type:"string",default:"test-this"},{name:"pattern",description:"The regular expression pattern",aliases:["regex","regexp","regExp","re"],required:!0,type:"string",default:"^[a-z]{4}-[a-z]{4}$"}],_e=I(De),Qe={description:"Compare a string against a regex pattern",aliases:["regex","patternMatch","regexp","matchPattern"],parameters:De},Fe={propertyAliases:_e,operatorData:Qe,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){const[r,a]=yield $([e.testString,e.pattern],t);t.typeChecker(k(Qe.parameters,{testString:r,pattern:a}));return new RegExp(a).test(r)})),parseChildren:e=>{const[t,r]=e.children;return Object.assign(Object.assign({},e),{testString:t,pattern:r})}},He=[{name:"property",description:'The path to the required property (e.g. "user.firstName")',aliases:["path","propertyName"],required:!0,type:"string",default:"path.to[0].my.data"},{name:"additionalData",description:"Additional data objects to be considered",aliases:["additional","objects","data","additionalObjects"],required:!1,type:"object",default:{}}],Me=I(He),$e={description:"Extract values from data objects",aliases:["dataProperties","data","getData","objectProperties","objProps","getProperty","getObjProp"],parameters:He},Be={propertyAliases:Me,operatorData:$e,evaluate:(t,a)=>r(void 0,void 0,void 0,(function*(){var r,i;const[s,n={}]=yield $([t.property,t.additionalData],a);a.typeChecker(k($e.parameters,{property:s,additionalData:n}));const o=Object.assign(Object.assign({},null!==(i=null===(r=a.options)||void 0===r?void 0:r.data)&&void 0!==i?i:{}),n);return e(o,s)})),parseChildren:e=>{const[t,r]=e.children,a=Object.assign(Object.assign({},e),{property:t});return void 0!==r&&(a.fallback=r),a}},Ge=[{name:"string",description:"A parameterised (%1, %2) string where the parameters are to be replaced",aliases:[],required:!0,type:"string",default:"Hello, %1"},{name:"substitutions",description:"An array of substitution values for the parameterised string",aliases:["replacements","values"],required:!1,type:["array","object"],default:{}},{name:"trimWhiteSpace",description:"Whether or not to trim white space from either end of the substituted strings (default: true)",aliases:["trim","trimWhitespace"],required:!1,type:"boolean",default:!0},{name:"substitutionCharacter",description:'Which character to search for in original string for replacement -- can be "%" or "$" (default: "%")',aliases:["subCharacter","subChar"],required:!1,type:"string",default:"$"},{name:"numberMapping",description:"Rules for mapping number values to text strings, such as pluralisation.",aliases:["numMap","numberMap","pluralisation","pluralization","plurals"],required:!1,type:"object",default:{}}],ze=I(Ge),We={description:"Replace values in a string using simple parameter substitution",aliases:["stringSubstitution","substitute","stringSub","replace"],parameters:Ge},Je={propertyAliases:ze,operatorData:We,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){const[r,a={},i=!0,s="%",n={}]=yield $([e.string,e.substitutions,e.trimWhiteSpace,e.substitutionCharacter,e.numberMapping],t);if(t.typeChecker(k(We.parameters,{string:r,substitutions:a,trimWhiteSpace:i,substitutionCharacter:s,numberMapping:n})),Array.isArray(a)){const e="$"===s?"$":"%",t=new RegExp(`(?<!\\\\)(${"%"===e?"%":"\\$"}[\\d]+)`,"g"),n=(r.match(t)||[]).sort(((e,t)=>Number(e.slice(1))-Number(t.slice(1)))),o=new Set(n),l=U(Array.from(o),a.map((e=>i?String(e).trim():e)));return r.split(t).map((e=>e in l?l[e]:e)).join("").replace(`\\${e}`,e)}const o=/(?<!\\)({{(?:[A-Za-z0-9_.]|\[[0-9]+\])+}})/g,l=[];for(const e of r.split(o)){if(!/(?<!\\){{(.+)}}/.exec(e)){l.push(e.replace("\\{{","{{"));continue}const r=yield Ve(e,a,n,t);l.push(i?String(r).trim():r)}return l.join("")})),parseChildren:e=>{const[t,...r]=e.children;return Object.assign(Object.assign({},e),{string:t,substitutions:r})}},Ve=(t,a,i,s)=>r(void 0,void 0,void 0,(function*(){var r,n;const o=null!==(n=null===(r=s.options)||void 0===r?void 0:r.data)&&void 0!==n?n:{},l=t.replace(/{{(.+)}}/,"$1"),u=yield M(e(a,l,e(o,l,"")),s);if("number"!=typeof u)return u;if(!(l in i))return u;const d=i[l];if(u in d)return d[u].replace("{}",String(u));const c=Object.keys(i[l]),p=c.find((e=>e.startsWith(">")));if(p){if(u>Number(p.slice(1)))return null==d?void 0:d[p]}const h=c.find((e=>e.startsWith("<")));if(h){if(u<Number(h.slice(1)))return null==d?void 0:d[h]}return d.other?d.other.replace("{}",String(u)):u})),Ye=[{name:"values",description:"An array to count",aliases:[],required:!0,type:"array",default:[1,2,3,4,5]}],Xe=I(Ye),Ze={description:"Count elements in an array",aliases:["count","length"],parameters:Ye},Ke={propertyAliases:Xe,operatorData:Ze,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){const r=yield $(e.values,t);return t.typeChecker(k(Ze.parameters,{values:r})),r.length})),parseChildren:e=>{const[t]=e.children;return Object.assign(Object.assign({},e),{values:t})}},et=[{name:"value",description:"The string to be split",aliases:["string"],required:!0,type:"string",default:"Alpha, Bravo, Charlie"},{name:"delimiter",description:"The value to split the string on (default is white space)",aliases:["separator"],required:!1,type:"string",default:","},{name:"trimWhiteSpace",description:"Whether to trim white space from around the resulting elements (default: true)",aliases:["trim","trimWhitespace"],required:!1,type:"boolean",default:!0},{name:"excludeTrailing",description:"If the input string ends in a delimiter, there will be an additional blank element if this value is false (default: true)",aliases:["removeTrailing","excludeTrailingDelimiter"],required:!1,type:"boolean",default:!0}],tt=I(et),rt={description:"Split a string into an array",aliases:["split","arraySplit"],parameters:et},at=" ",it={propertyAliases:tt,operatorData:rt,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){var r,a,i;const[s,n,o,l]=yield $([e.value,null!==(r=e.delimiter)&&void 0!==r?r:at,null===(a=e.trimWhiteSpace)||void 0===a||a,null===(i=e.excludeTrailing)||void 0===i||i],t);t.typeChecker(k(rt.parameters,{value:s,delimiter:n,trimWhiteSpace:o,excludeTrailing:l}));let u=s.split(n);return o&&(u=u.map((e=>e.trim()))),l&&""===u[u.length-1]&&u.pop(),u})),parseChildren:e=>{const[t,r=at]=e.children;return Object.assign(Object.assign({},e),{value:t,delimiter:r})}},st=[{name:"query",description:"SQL query string, with parameterised replacements (e.g. $1, $2, etc)",aliases:["text"],required:!0,type:"string"},{name:"values",description:"An array/object of values to replace the SQL string parameters, as per SQL connection specifications ",aliases:["replacements"],required:!1,type:["array","object"]},{name:"single",description:"Specify if returning a single record",aliases:["singleRecord"],required:!1,type:"boolean"},{name:"flatten",description:"Specify whether to flatten resulting record objects to arrays of values",aliases:["flat","array"],required:!1,type:"boolean"},{name:"useCache",description:"Whether or not the FigTree cache is used",aliases:[],required:!1,type:"boolean"}],nt=I(st),ot={description:"Query an SQL database",aliases:["sql","pgSql","postgres","pg","sqLite","sqlite","mySql"],parameters:st},lt={propertyAliases:nt,operatorData:ot,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){var a,i,s;const n=null===(a=t.options)||void 0===a?void 0:a.sqlConnection;if(!n)throw new Error("No SQL database connection provided");const[o,l,u,d,c,p]=yield $([e.query,e.values||[],e.single,e.flatten,e.useCache,e.type],t);t.typeChecker(k(ot.parameters,{query:o,single:u,flatten:d,values:l,useCache:c}));const h=null===(s=null!==(i=e.useCache)&&void 0!==i?i:t.options.useCache)||void 0===s||s;{const e=t.cache.useCache(h,((e,t,a,i,s)=>r(void 0,void 0,void 0,(function*(){const r=(yield n.query({query:e,values:t}))||[];["array","string","number"].includes(null!=s?s:"")&&(i=!0);const o=i?r.map((e=>{const t=Object.values(e);return t.length<=1?t[0]:t})):r;return a?o[0]:o}))),o,l,u,d,p);return e}})),parseChildren:e=>{const[t,...r]=e.children;return Object.assign(Object.assign({},e),{query:t,values:r})}},ut=[{name:"query",description:"GraphQL query string",aliases:[],required:!0,type:"string",default:'query getCountries {\n countries(filter: {continent: {eq: "OC"}}) {\n name\n }\n }'},{name:"url",description:"Endpoint for the GraphQL request (if not already provided in options)",aliases:["endpoint"],required:!1,type:["string","null"],default:"https://countries.trevorblades.com/"},{name:"headers",description:"HTTP Headers (if not already provided in options)",aliases:[],required:!1,type:"object",default:{}},{name:"variables",description:"Values for the variables used in query (key-value pairs)",aliases:[],required:!1,type:"object",default:{}},{name:"returnNode",description:"Property path to extract from the query response",aliases:["outputNode","returnProperty"],required:!1,type:"string",default:"data.countries[1].name"},{name:"useCache",description:"Whether or not the FigTree cache is used",aliases:[],required:!1,type:"boolean",default:!0}],dt=I(ut),ct={description:"GraphQL request",aliases:["graphQl","graphql","gql"],parameters:ut},pt={propertyAliases:dt,operatorData:ct,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){var a,i,s,n,o,l,u;const d=null!==(a=t.graphQLClient)&&void 0!==a?a:t.httpClient;if(!d)throw new Error("No HTTP client provided for GraphQL connection");const[c,p,h,v,y,f]=yield $([e.query,e.url,yield G(e.variables,t),e.returnNode,e.headers,e.useCache],t),{url:m,headers:g}=p instanceof Object?p:{url:p,headers:null};t.typeChecker([...k(ct.parameters,{url:m,query:c,variables:h,returnNode:v,headers:y,useCache:f}),{name:"headers",value:g,expectedType:["object","null"]}]);const b=m&&"graphqlendpoint"!==m.toLowerCase()?m:"",T=null!==(n=null!==(s=null===(i=t.options.graphQLConnection)||void 0===i?void 0:i.endpoint)&&void 0!==s?s:t.options.baseEndpoint)&&void 0!==n?n:"",O=Q(b)?b:F(T,b),C={query:c,variables:h},S=null===(o=null!=f?f:t.options.useCache)||void 0===o||o,j=yield t.cache.useCache(S,((e,t,a,i)=>r(void 0,void 0,void 0,(function*(){const r=yield H(d,{url:e,method:"post",data:t,headers:a});return _(null==r?void 0:r.data,i)}))),O,C,Object.assign(Object.assign(Object.assign(Object.assign({},null===(l=t.options.graphQLConnection)||void 0===l?void 0:l.headers),null===(u=t.options)||void 0===u?void 0:u.headers),g),y),v);return j})),parseChildren:(e,t)=>r(void 0,void 0,void 0,(function*(){const[r,a="",i,...s]=yield $(e.children,t),n=Array.isArray(i)?i:[i],o=s.slice(0,n.length),l=U(n,o),u=Object.assign(Object.assign({},e),{query:r,url:a,variables:l});return s.length>n.length&&(u.returnNode=s.pop()),u}))},ht=[{name:"url",description:"Endpoint URL",aliases:["endpoint"],required:!0,type:"string",default:"https://restcountries.com/v3.1/name/zealand"},{name:"returnProperty",description:"Property from request result",aliases:["outputProperty"],required:!1,type:"string",default:"result.path"},{name:"headers",description:"HTTP Headers",aliases:[],required:!1,type:"object",default:{}},{name:"parameters",description:"Query parameters (key-value)",aliases:["queryParams","queryParameters","urlQueries"],required:!1,type:"object",default:{}},{name:"useCache",description:"Whether or not the FigTree cache is used",aliases:[],required:!1,type:"boolean",default:!0}],vt=I(ht),yt={description:"HTTP GET Request",aliases:["get","api"],parameters:ht},ft=(e,t)=>r(void 0,void 0,void 0,(function*(){const[r="",a,...i]=yield $(e.children,t),s=Array.isArray(a)?a:[a],n=i.slice(0,s.length),o=U(s,n),l=Object.assign(Object.assign({},e),{url:r,parameters:o});return i.length>s.length&&(l.returnProperty=i.pop()),l})),mt=ft,gt={propertyAliases:vt,operatorData:yt,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){var a,i,s;const n=t.httpClient;if(!n)throw new Error("No HTTP client provided");const[o,l,u,d,c]=yield $([e.url,yield G(e.parameters,t),e.returnProperty,yield G(e.headers,t),e.useCache],t),{url:p,headers:h}=o instanceof Object?o:{url:o,headers:null};t.typeChecker([...k(yt.parameters,{url:p,returnProperty:u,headers:d,parameters:l,useCache:c}),{name:"headers",value:h,expectedType:["object","null"]}]);const v=null!==(a=t.options.baseEndpoint)&&void 0!==a?a:"",y=Object.assign(Object.assign(Object.assign({},null===(i=t.options)||void 0===i?void 0:i.headers),h),d),f=null===(s=null!=c?c:t.options.useCache)||void 0===s||s,m=yield t.cache.useCache(f,((e,t,a,i)=>r(void 0,void 0,void 0,(function*(){const r=yield H(n,{url:e,params:t,headers:a});return _(r,i)}))),Q(p)?p:F(v,p),l,y,u);return m})),parseChildren:ft},bt=[{name:"url",description:"Endpoint URL",aliases:["endpoint"],required:!0,type:"string",default:"https://jsonplaceholder.typicode.com/posts"},{name:"returnProperty",description:"Property path from request result",aliases:["outputProperty"],required:!1,type:"string",default:"result.path"},{name:"headers",description:"HTTP Headers",aliases:[],required:!1,type:"object",default:{}},{name:"parameters",description:"JSON Body parameters (key-value)",aliases:["bodyJson","data"],required:!1,type:"object",default:{}},{name:"useCache",description:"Whether or not the FigTree cache is used",aliases:[],required:!1,type:"boolean",default:!0}],Tt=I(bt),Ot={description:"HTTP POST Request",aliases:["post"],parameters:bt},Ct={propertyAliases:Tt,operatorData:Ot,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){var a,i,s;const n=t.httpClient;if(!n)throw new Error("No HTTP client provided");const[o,l,u,d,c]=yield $([e.url,yield G(e.parameters,t),e.returnProperty,yield G(e.headers,t),e.useCache],t),{url:p,headers:h}=o instanceof Object?o:{url:o,headers:null};t.typeChecker([...k(Ot.parameters,{url:p,headers:d,data:l,returnProperty:u,useCache:c}),{name:"headers",value:h,expectedType:["object","null"]}]);const v=null!==(a=t.options.baseEndpoint)&&void 0!==a?a:"",y=Object.assign(Object.assign(Object.assign({},null===(i=t.options)||void 0===i?void 0:i.headers),h),d),f=null!==(s=null!=c?c:t.options.useCache)&&void 0!==s&&s,m=yield t.cache.useCache(f,((e,t,a,i)=>r(void 0,void 0,void 0,(function*(){const r=yield H(n,{url:e,data:t,headers:a,method:"post"});return _(r,i)}))),Q(p)?p:F(v,p),l,y,u);return m})),parseChildren:mt},St=[{name:"properties",description:'An array of objects, each with a "key" property and a "value" property',aliases:["values","keyValPairs","keyValuePairs"],required:!0,type:"array",default:["firstKey","firstValue","secondKey","secondValue"]}],jt=I(St),Et={description:"Construct an object using objects defining keys and values",aliases:["buildObject","build","object"],parameters:St},qt={propertyAliases:jt,operatorData:Et,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){t.typeChecker(k(Et.parameters,{properties:e.properties}));const a=e.properties.filter((e=>e instanceof Object&&"key"in e&&"value"in e)).map((({key:e,value:a})=>{return i=[e,a],r(void 0,void 0,void 0,(function*(){const[e,r]=yield $(i,t);return t.typeChecker({name:"key",value:e,expectedType:["string","number","boolean"]}),[e,r]}));var i}));return Object.fromEntries(yield Promise.all(a))})),parseChildren:e=>{const t=e.children;if(t.length%2!=0)throw new Error("Even number of children required to make key/value pairs");const r=t.filter(((e,t)=>t%2==0)),a=t.filter(((e,t)=>t%2==1)),i=r.map(((e,t)=>({key:e,value:a[t]})));return Object.assign(Object.assign({},e),{properties:i})}},At=[{name:"matchExpression",description:"Expression to match against",aliases:["match"],required:!0,type:["string","number","boolean"],default:"matchMe"},{name:"branches",description:"Object whose keys are compared against the match expression. The value of the matching key is returned",aliases:["arms","cases"],required:!1,type:["object","array"],default:{matchMe:"YES",nonMatch:"NO"}},{name:"[...branches]",description:"Branch properties can optionally be placed at the operator root",aliases:[],required:!1,type:["object","array"]}],xt={propertyAliases:I(At),operatorData:{description:"Return different values depending on a matching expression",aliases:["match","switch"],parameters:At},evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){var r;const i=yield M(e.matchExpression,t);t.typeChecker({name:"matchExpression",value:i,expectedType:["string","number","boolean"]});const s=Array.isArray(e.branches)?R(e.branches):null!==(r=e.branches)&&void 0!==r?r:{},n=a(s)?yield M(s,t):s;if(!m(n))throw new Error("Branches don't evaluate to an object");if(i in n)return yield M(n[i],t);if("fallback"in n)return yield M(n.fallback,t);if(i in e)return yield M(e[i],t);throw new Error(`No match found for ${i}`)})),parseChildren:(e,t)=>r(void 0,void 0,void 0,(function*(){const[r,...a]=e.children,i=R(yield $(a,t));return Object.assign(Object.assign({},e),{matchExpression:r,branches:i})}))},wt=[{name:"functionName",description:"Path (in options.functions) to the required function",aliases:["functionPath","funcName","function","path","name"],required:!0,type:"string",default:null},{name:"args",description:"Arguments for the function",aliases:["arguments","variables"],required:!1,type:["array","any"],default:[]},{name:"input",description:"Argument for the function if a single input parameter",aliases:["arg"],required:!1,type:"any",default:"input"},{name:"useCache",description:"Whether or not the FigTree cache is used",aliases:[],required:!1,type:"boolean",default:!1}],Nt=I(wt),Pt={description:"Call a custom function (defined in options)",aliases:["customFunctions","customFunction","objectFunctions","function","functions","runFunction"],parameters:wt},Lt={propertyAliases:Nt,operatorData:Pt,evaluate:(t,a)=>r(void 0,void 0,void 0,(function*(){var i,s,n,o;const[l,u=[],d,c]=yield $([t.functionName,t.args,t.input,t.useCache],a);a.typeChecker(k(Pt.parameters,{functionName:l,args:u}));const{data:p,functions:h}=a.options;if(!h)throw new Error("- No functions defined");const v=null!==(n=null!==(s=null!==(i=e(h,`${l}.function`,null))&&void 0!==i?i:e(h,l,null))&&void 0!==s?s:e(p,l,null))&&void 0!==n?n:e(a.options,l,null);if(!v||"function"!=typeof v)throw new Error(`- No function found: "${l}"`);const y=null!==(o=null!=c?c:a.options.useCache)&&void 0!==o&&o,f=[...void 0===d?[]:[yield G(d,a)],...Array.isArray(u)?u:[u]];return yield a.cache.useCache(y,((e,...t)=>r(void 0,void 0,void 0,(function*(){return yield v(...t)}))),l,...f)})),parseChildren:e=>{const[t,...r]=e.children;return Object.assign(Object.assign({},e),{functionName:t,args:r})}},It=[{name:"value",description:"Value to pass through",aliases:["_","data"],required:!0,type:"any",default:null}],kt=I(It),Ut={description:"Pass through a value unchanged (or change its type)",aliases:["_","passThru","passthru","pass","ignore","coerce","convert"],parameters:It},Rt={propertyAliases:kt,operatorData:Ut,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){return t.typeChecker(k(Ut.parameters,{value:e.value})),yield M(e.value,t)})),parseChildren:e=>{const[...t]=e.children,r=1===(null==t?void 0:t.length)?t[0]:t;return Object.assign(Object.assign({},e),{value:r})}};var Dt=Object.freeze({__proto__:null,AND:Y,BUILD_OBJECT:qt,CONDITIONAL:Re,COUNT:Ke,CUSTOM_FUNCTIONS:Lt,DIVIDE:je,EQUAL:ie,GET:gt,GRAPHQL:pt,GREATER_THAN:xe,LESS_THAN:Le,MATCH:xt,MULTIPLY:Te,NOT_EQUAL:le,OBJECT_PROPERTIES:Be,OR:ee,PASSTHRU:Rt,PLUS:pe,POST:Ct,REGEX:Fe,SPLIT:it,SQL:lt,STRING_SUBSTITUTION:Je,SUBTRACT:fe});class _t{constructor(e){var t,a;this.useCache=(e,t,...a)=>r(this,void 0,void 0,(function*(){if(!e)return yield t(...a);const r=Qt(a),i=r in this.store,s=Date.now(),n=i&&s-this.store[r].timestamp>1e3*this.maxTime;if(i)return this.queue=this.queue.filter((e=>e!==r)),this.queue.unshift(r),this.store[r].timestamp=s,n&&(this.store[r].result=yield t(...a)),this.store[r].result;const o=yield t(...a);return this.store[r]={result:o,timestamp:s},this.queue.unshift(r),this.resizeCache(),o})),this.getMax=()=>this.maxSize,this.setMax=e=>{this.maxSize=e,this.resizeCache()},this.getMaxTime=()=>this.maxTime,this.setMaxTime=e=>{this.maxTime=e},this.getCache=()=>this.store,this.setCache=e=>this.store=e,this.resizeCache=()=>{if(this.queue.length>this.maxSize){this.queue.slice(this.maxSize).forEach((e=>delete this.store[e])),this.queue=this.queue.slice(0,this.maxSize)}},this.store={},this.queue=[],this.maxSize=null!==(t=null==e?void 0:e.maxSize)&&void 0!==t?t:50,this.maxTime=null!==(a=null==e?void 0:e.maxTime)&&void 0!==a?a:1800}}const Qt=e=>e.map((e=>"object"==typeof e?JSON.stringify(e):e)).join("_"),Ft=e=>e||("undefined"!=typeof window&&"document"in window&&"fetch"in window?Ht(window.fetch):void 0),Ht=e=>({get:t=>r(void 0,void 0,void 0,(function*(){const{url:r,headers:a,params:i={}}=t,s=Object.keys(i).length>0?`?${new URLSearchParams(i).toString()}`:"",n=yield e(r+s,{headers:a,method:"GET"}),o=yield n.json();if(!n.ok){const e=new Error("Problem with GET request");throw e.name="FetchError",e.errorData={status:n.status,error:n.statusText,url:n.url,response:o},console.log(e.errorData),e}return o})),post:t=>r(void 0,void 0,void 0,(function*(){const{url:r,headers:a,params:i,data:s}=t,n=new URLSearchParams(i),o=n.size>0?`?${n.toString()}`:"",l=yield e(r+o,{headers:a,body:JSON.stringify(s),method:"POST"}),u=yield l.json();if(!l.ok){const e=new Error("Problem with POST request");throw e.name="FetchError",e.errorData={status:l.status,error:l.statusText,url:l.url,response:u},console.log(e.errorData),e}return u})),throwError:e=>{throw e}});class Mt{constructor(e={}){var t,r,a;this.typeChecker=(...e)=>{const t=1===e.length&&Array.isArray(e[0])?e[0]:e,r=w(...t);if(!0===r)return;const a=new Error(r);throw a.name="Type Error",a},this.getCache=()=>this.cache.getCache(),this.setCache=e=>this.cache.setCache(e),this.getVersion=()=>"2.18.1",this.options=$t(e),this.operators=o(Dt,null!==(r=null===(t=this.options)||void 0===t?void 0:t.excludeOperators)&&void 0!==r?r:[],g),this.operatorAliases=g,this.cache=new _t({maxSize:e.maxCacheSize,maxTime:e.maxCacheTime}),this.graphQLClient=Ft(null===(a=e.graphQLConnection)||void 0===a?void 0:a.httpClient),this.httpClient=Ft(e.httpClient)}evaluate(e,t={}){var a;return r(this,void 0,void 0,(function*(){const r=h(this.options,$t(t),!0);return t.httpClient&&(this.httpClient=Ft(t.httpClient)),(null===(a=t.graphQLConnection)||void 0===a?void 0:a.httpClient)&&(this.graphQLClient=Ft(t.graphQLConnection.httpClient)),r.maxCacheSize&&r.maxCacheSize!==this.cache.getMax()&&this.cache.setMax(r.maxCacheSize),r.maxCacheTime&&r.maxCacheTime!==this.cache.getMaxTime()&&this.cache.setMaxTime(r.maxCacheTime),yield M(e,{options:r,operators:t.excludeOperators?o(Dt,t.excludeOperators,g):this.operators,operatorAliases:this.operatorAliases,typeChecker:r.skipRuntimeTypeCheck?()=>{}:this.typeChecker,resolvedAliasNodes:{},cache:this.cache,graphQLClient:this.graphQLClient,httpClient:this.httpClient})}))}getOptions(){return this.options}updateOptions(e){this.options=h(this.options,$t(e),!1),this.options.excludeOperators&&(this.operators=o(Dt,this.options.excludeOperators,g))}getOperators(){const e=this.options.excludeOperators?o(Dt,this.options.excludeOperators,g):this.operators,t=Object.entries(e).map((([e,t])=>Object.assign({name:e},t.operatorData))),r=[...new Set(Object.values(g))];return t.sort(((e,t)=>r.indexOf(e.name)-r.indexOf(t.name)))}getFragments(){var e;return Object.entries(null!==(e=this.options.fragments)&&void 0!==e?e:{}).map((([e,t])=>Object.assign({name:e},null==t?void 0:t.metadata)))}getCustomFunctions(){var e;return Object.entries(null!==(e=this.options.functions)&&void 0!==e?e:{}).map((([e,t])=>{const r="function"==typeof t?t:null==t?void 0:t.function,a={name:e,numRequiredArgs:null==r?void 0:r.length};if("function"!=typeof t){const{description:e,argsDefault:r,inputDefault:i,textColor:s,backgroundColor:n}=t;return e&&(a.description=e),r&&(a.argsDefault=r),i&&(a.inputDefault=i),s&&(a.textColor=s),n&&(a.backgroundColor=n),a}return a}))}}const $t=e=>"objects"in e?Object.assign(Object.assign({},e),{data:e.objects}):e;exports.AxiosClient=e=>({get:t=>r(void 0,void 0,void 0,(function*(){return(yield e(Object.assign(Object.assign({},t),{method:"get"}))).data})),post:t=>r(void 0,void 0,void 0,(function*(){return(yield e(Object.assign(Object.assign({},t),{method:"post"}))).data})),throwError:t=>{var r,a,i,s;if(e.isAxiosError(t)&&t.response)throw t.errorData={status:null===(r=t.response)||void 0===r?void 0:r.status,error:null===(a=t.response)||void 0===a?void 0:a.statusText,url:null===(i=t.config)||void 0===i?void 0:i.url,response:null===(s=t.response)||void 0===s?void 0:s.data},t;throw new Error("Network error: "+(null==t?void 0:t.message))}}),exports.FetchClient=Ht,exports.FigTreeError=E,exports.FigTreeEvaluator=Mt,exports.SQLNodePostgres=e=>({query:({query:t,values:a=[]})=>r(void 0,void 0,void 0,(function*(){const r={text:t,values:null!=a?a:[]};try{const t=yield e.query(r);if(null==t?void 0:t.error)throw new Error(t.error);return t.rows}catch(e){throw e.name="Node-Postgres error",e}}))}),exports.SQLite=e=>({query:({query:t,values:a=[]})=>r(void 0,void 0,void 0,(function*(){try{return yield e.all(t,a)}catch(e){throw e.name="SQLite error",e}}))}),exports.evaluateExpression=(e,t)=>new Mt(t).evaluate(e),exports.isAliasString=d,exports.isFigTreeError=e=>e instanceof E,exports.isFigTreeExpression=e=>a(e)||i(e)||"string"==typeof e&&d(e)||m(e)&&1===Object.keys(e).length&&d(Object.keys(e)[0]),exports.isFragmentNode=i,exports.isObject=m,exports.isOperatorNode=a,exports.preProcessShorthand=O,exports.standardiseOperatorName=s,exports.truncateString=l;
/// <reference types="node" />
import { Client } from 'pg';
import { Database } from 'sqlite';
import { AxiosStatic } from 'axios';
import { RequestInfo, RequestInit, Response } from 'node-fetch';
import { Client } from 'pg';
import { Database } from 'sqlite';

@@ -70,14 +70,2 @@ interface CacheOptions {

type Fetch = (input: URL | string | RequestInfo, init?: RequestInit | undefined) => Promise<Response>;
declare const AxiosClient: (axios: AxiosStatic) => {
get: (req: Omit<HttpRequest, 'method'>) => Promise<any>;
post: (req: Omit<HttpRequest, 'method'>) => Promise<any>;
throwError: (err: unknown) => never;
};
declare const FetchClient: (fetch: Fetch) => {
get: (req: Omit<HttpRequest, 'method'>) => Promise<any>;
post: (req: Omit<HttpRequest, 'method'>) => Promise<any>;
throwError: (err: unknown) => never;
};
interface GraphQLConnection {

@@ -88,3 +76,3 @@ endpoint: string;

};
httpClient?: HttpClient | AxiosStatic | Fetch;
httpClient?: HttpClient;
}

@@ -105,3 +93,3 @@

fragments?: Fragments;
httpClient?: HttpClient | AxiosStatic | Fetch;
httpClient?: HttpClient;
graphQLConnection?: GraphQLConnection;

@@ -232,3 +220,2 @@ sqlConnection?: SQLConnection;

}
declare const evaluateExpression: (expression: EvaluatorNode, options?: FigTreeOptions) => Promise<EvaluatorOutput>;

@@ -254,2 +241,14 @@

type Fetch = (input: URL | string | RequestInfo, init?: RequestInit | undefined) => Promise<Response>;
declare const AxiosClient: (axios: AxiosStatic) => {
get: (req: Omit<HttpRequest, 'method'>) => Promise<any>;
post: (req: Omit<HttpRequest, 'method'>) => Promise<any>;
throwError: (err: unknown) => never;
};
declare const FetchClient: (fetch: Fetch) => {
get: (req: Omit<HttpRequest, 'method'>) => Promise<any>;
post: (req: Omit<HttpRequest, 'method'>) => Promise<any>;
throwError: (err: unknown) => never;
};
declare const preProcessShorthand: (expression: EvaluatorNode, fragments: Fragments | undefined, functionNames: string[], useShorthand?: boolean) => EvaluatorNode | FragmentNode;

@@ -256,0 +255,0 @@

@@ -1,1 +0,1 @@

import e from"object-property-extractor";import{dequal as t}from"dequal/lite";function r(e,t,r,a){return new(r||(r=Promise))((function(i,s){function n(e){try{l(a.next(e))}catch(e){s(e)}}function o(e){try{l(a.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(n,o)}l((a=a.apply(e,t||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;const a=e=>e instanceof Object&&"operator"in e,i=e=>e instanceof Object&&"fragment"in e,s=e=>{const t=f(e);return t||e},n=(e,t)=>t[s(e)],o=(e,t,r)=>{const a=Object.assign({},e);return t.forEach((e=>{r[s(e)]||console.warn(`Invalid operator exclusion: ${e}`),delete a[r[s(e)]]})),a},l=(e,t=200)=>e.length<t?e:`${e.slice(0,t-2).trim()}...`,u=(e,t)=>{const r=Object.entries(e).map((([e,r])=>[t(e),r]));return Object.fromEntries(r)},d=e=>/^\$.+/.test(e),c=(e,{resolvedAliasNodes:t})=>{var r;return"string"==typeof e&&d(e)&&null!==(r=null==t?void 0:t[e])&&void 0!==r?r:e},p=(e,t)=>r(void 0,void 0,void 0,(function*(){var r,a;if(!(e.operator in(null!==(a=null===(r=t.options)||void 0===r?void 0:r.functions)&&void 0!==a?a:{})))return e;const{operator:i,fallback:s,outputType:n,type:o,useCache:l,input:u,args:d}=e,c=function(e,t){var r={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)<0&&(r[a]=e[a]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(a=Object.getOwnPropertySymbols(e);i<a.length;i++)t.indexOf(a[i])<0&&Object.prototype.propertyIsEnumerable.call(e,a[i])&&(r[a[i]]=e[a[i]])}return r}(e,["operator","fallback","outputType","type","useCache","input","args"]),p={operator:"CUSTOM_FUNCTIONS",function:i};return void 0!==s&&(p.fallback=s),void 0!==n&&(p.outputType=n),void 0!==o&&(p.type=o),void 0!==l&&(p.useCache=l),void 0!==d&&(p.args=d),void 0!==u?p.input=u:Object.keys(c).length>0&&(p.input=c),p})),h=(e,t,r)=>{const a=Object.assign(Object.assign({},e),t);return r?((e.data||t.data)&&(a.data=Object.assign(Object.assign({},e.data),t.data)),(e.functions||t.functions)&&(a.functions=Object.assign(Object.assign({},e.functions),t.functions)),(e.fragments||t.fragments)&&(a.fragments=Object.assign(Object.assign({},e.fragments),t.fragments)),(e.headers||t.headers)&&(a.headers=Object.assign(Object.assign({},e.headers),t.headers)),a):a},v={number:e=>y(e),string:e=>String(e),array:e=>Array.isArray(e)?e:[e],boolean:e=>Boolean(e),bool:e=>Boolean(e)},y=e=>{if("string"!=typeof e)return Number.isNaN(Number(e))?e:Number(e);const t=new RegExp(/-?\d*\.?\d+/gm),r=e.match(t);return r?Number(r[0]):0},f=e=>e.replace(/[^A-Za-z\d _-]/g,"").split(/[-_ ]/).map((e=>{var t;return null!==(t=e.match(/[a-z]+|[A-Z]+[a-z]*/g))&&void 0!==t?t:e})).flat().filter((e=>""!==e)).map(((e,t)=>0===t?e.toLowerCase():e.charAt(0).toUpperCase()+e.slice(1).toLowerCase())).join(""),m=e=>"object"==typeof e&&null!==e&&!Array.isArray(e),g=e=>a(e)||i(e)||"string"==typeof e&&d(e)||m(e)&&1===Object.keys(e).length&&d(Object.keys(e)[0]),b={and:"AND","&":"AND","&&":"AND",or:"OR","|":"OR","||":"OR","=":"EQUAL",eq:"EQUAL",equal:"EQUAL",equals:"EQUAL","!=":"NOT_EQUAL","!":"NOT_EQUAL",ne:"NOT_EQUAL",notEqual:"NOT_EQUAL","+":"PLUS",plus:"PLUS",add:"PLUS",concat:"PLUS",join:"PLUS",merge:"PLUS","-":"SUBTRACT",subtract:"SUBTRACT",minus:"SUBTRACT",takeaway:"SUBTRACT","*":"MULTIPLY",x:"MULTIPLY",multiply:"MULTIPLY",times:"MULTIPLY","/":"DIVIDE",divide:"DIVIDE","÷":"DIVIDE",">":"GREATER_THAN",greaterThan:"GREATER_THAN",higher:"GREATER_THAN",larger:"GREATER_THAN","<":"LESS_THAN",lessThan:"LESS_THAN",lower:"LESS_THAN",smaller:"LESS_THAN","?":"CONDITIONAL",conditional:"CONDITIONAL",ifThen:"CONDITIONAL",regex:"REGEX",patternMatch:"REGEX",regexp:"REGEX",matchPattern:"REGEX",dataProperties:"OBJECT_PROPERTIES",data:"OBJECT_PROPERTIES",getData:"OBJECT_PROPERTIES",objectProperties:"OBJECT_PROPERTIES",objProps:"OBJECT_PROPERTIES",getProperty:"OBJECT_PROPERTIES",getObjProp:"OBJECT_PROPERTIES",stringSubstitution:"STRING_SUBSTITUTION",substitute:"STRING_SUBSTITUTION",stringSub:"STRING_SUBSTITUTION",replace:"STRING_SUBSTITUTION",split:"SPLIT",arraySplit:"SPLIT",count:"COUNT",length:"COUNT",get:"GET",api:"GET",post:"POST",sql:"SQL",pgSql:"SQL",postgres:"SQL",pg:"SQL",sqLite:"SQL",sqlite:"SQL",mySql:"SQL",graphQl:"GRAPHQL",graphql:"GRAPHQL",gql:"GRAPHQL",buildObject:"BUILD_OBJECT",build:"BUILD_OBJECT",object:"BUILD_OBJECT",match:"MATCH",switch:"MATCH",customFunctions:"CUSTOM_FUNCTIONS",customFunction:"CUSTOM_FUNCTIONS",objectFunctions:"CUSTOM_FUNCTIONS",function:"CUSTOM_FUNCTIONS",functions:"CUSTOM_FUNCTIONS",runFunction:"CUSTOM_FUNCTIONS",_:"PASSTHRU",passThru:"PASSTHRU",passthru:"PASSTHRU",pass:"PASSTHRU",ignore:"PASSTHRU",coerce:"PASSTHRU",convert:"PASSTHRU"},T=b,O=/(\$[^()]+)\((.*)\)/,C=(e,t={},r,a=!0)=>a?"string"==typeof e?j(e,t,r):m(e)?S(e,t,r):e:e,j=(e,t,r)=>{const a=O.exec(e);if(!a)return e;const i=a[1].trim(),s=a[2].split(",").map((e=>C(e.trim(),t,r)));return E(i,s,t,r)},S=(e,t,r)=>{if(a(e)||i(e))return e;const s=Object.entries(e),n=s.filter((([e])=>d(e))),o=s.filter((([e])=>!d(e))),l=n.reduce(((e,[a,i])=>e=Object.assign(Object.assign({},e),E(a,i,t,r))),{});return Object.assign(Object.assign({},l),Object.fromEntries(o))},E=(e,t,r,a)=>{const i=e.slice(1),s=n(i,T);return s?Array.isArray(t)?{operator:s,children:t}:m(t)&&!Object.keys(t).some((e=>d(e)))?Object.assign({operator:s},t):{operator:s,children:[t]}:i in r?{fragment:i,parameters:Object.assign({},t)}:a.includes(i)?Array.isArray(t)?{operator:i,args:t}:m(t)?"input"in t||"args"in t?Object.assign({operator:i},t):{operator:i,input:t}:{operator:i,args:[t]}:{[e]:t}};class q extends Error{constructor(e,t,r,a){super(e.message),Object.assign(this,e),this.operator=t,this.expression=a,this.errorData=e.errorData,r&&(this.name=r),"Error"===this.name&&(this.name="FigTreeError");const i=(t?"Operator: "+t:"")+("FigTreeError"===this.name?"":` - ${this.name}`),s=this.errorData?"\n"+JSON.stringify(this.errorData,null,2):"";this.prettyPrint=`${""!==i?i+"\n":""}${this.message}${"\n{}"===s?"":s}`}}const A=e=>e instanceof q,w=({fallback:e,operator:t,name:r,error:a,expression:i,returnErrorAsString:s=!1})=>{if(void 0!==e)return e;if(a instanceof q){if(!s)throw a;return a.prettyPrint}const n=new q("string"==typeof a?new Error(a):a,t,r,i);if(s)return n.prettyPrint;throw n},N=e=>m(e)&&"literal"in e,x=({value:e,name:t,expectedType:r})=>{if(N(r)){const{literal:a}=r;return!!a.includes(e)||I(t,e,`Literal(${a.map((e=>void 0===e?"undefined":`"${e}"`)).join(", ")})`)}if(Array.isArray(r))return!!r.some((r=>!0===x({value:e,name:t,expectedType:r})))||I(t,e,r.join("|"));return!!(0,L[r])(e)||I(t,e,r)},P=(...e)=>{const t=[];return e.forEach((e=>{const r=x(e);!0!==r&&t.push(r)})),!(t.length>0)||t.join("\n")},L={any:e=>void 0!==e,string:e=>"string"==typeof e,number:e=>"number"==typeof e,boolean:e=>"boolean"==typeof e,array:e=>Array.isArray(e),null:e=>null===e,object:e=>m(e),undefined:e=>void 0===e},I=(e,t,r)=>void 0===t&&e?`- Missing required property "${e}" (type: ${r})`:void 0!==e?`- Property "${e}" (value: ${k(t)}) is not of type: ${r}`:`- ${k(t)} is not of type: ${r}`,k=e=>{const t=void 0===e||Number.isNaN(e)?String(e):JSON.stringify(e);return l(t,50)},U=e=>{const t={};return e.forEach((e=>{e.aliases.forEach((r=>t[r]=e.name))})),t},R=(e,t)=>e.map((({name:e,required:r,type:a})=>{if(N(a)){const i=[...a.literal];return r||i.push(void 0),{name:e,value:t[e],expectedType:{literal:i}}}const i=Array.isArray(a)?a:[a];r||i.push("undefined");const s=1===i.length?i[0]:i;return{name:e,value:t[e],expectedType:s}})),D=(e,t)=>{const r=e.map(((e,r)=>[e,t[r]]));return Object.fromEntries(r)},_=e=>{if(e.length%2!=0)throw new Error("Even number of children required to make key/value pairs");const t=e.filter(((e,t)=>t%2==0)),r=P(...t.map((e=>({value:e,expectedType:["string","number","boolean"]}))));if(!0!==r)throw new Error(r);const a=e.filter(((e,t)=>t%2==1)),i={};return t.forEach(((e,t)=>{i[e]=a[t]})),i},Q=e=>m(e)&&1===Object.keys(e).length?Object.values(e)[0]:e,H=(t,r,a=void 0)=>{const i=r?e(t,r,a):t;return Array.isArray(i)?i.map((e=>Q(e))):r?null===i?null:Q(i):i},M=e=>/^https?:\/\/.+/.test(e),$=(...e)=>e.reduce(((e,t,r)=>{const a="/"===t[0]?1:0,i="/"===t.slice(-1)?-1:void 0,s=t.slice(a,i);return""===s?e:e+(0===r?"":"/")+s}),""),F=(e,t)=>r(void 0,void 0,void 0,(function*(){const{url:r,params:a={},data:i={},headers:s={},method:n="get"}=t;if(!r||""===r)throw new Error("Invalid url");try{return yield e[n]({url:r,headers:Object.assign({"Content-Type":"application/json",Accept:"application/json"},s),params:a,data:i})}catch(t){e.throwError(t)}})),B=(e,t)=>r(void 0,void 0,void 0,(function*(){var r,s,o,l,d,h;const{options:y,operators:f,operatorAliases:g}=t;let b=(null==y?void 0:y.allowJSONStringInput)?(e=>{if("string"!=typeof e)return e;try{const t=JSON.parse(e);return a(t)?t:e}catch(t){return e}})(e):e;const T=Object.keys(null!==(s=null===(r=t.options)||void 0===r?void 0:r.functions)&&void 0!==s?s:{});b=C(b,null===(o=t.options)||void 0===o?void 0:o.fragments,T,!y.noShorthand),Array.isArray(b)&&(b=yield G(b,t));const O=a(b),j=i(b);if(O&&(b=yield p(b,t)),y.evaluateFullObject&&!O&&!j)return c(yield W(b,t),t);if(!O&&!j)return y.supportDeprecatedValueNodes&&m(b)&&"value"in b?b.value:c(b,t);const{fallback:S}=b,E=null!==(l=null==y?void 0:y.returnErrorAsString)&&void 0!==l&&l;if(j){const e=b,[r,i]=yield G([e.fragment,e.parameters],t),s=C(null===(d=null==y?void 0:y.fragments)||void 0===d?void 0:d[r],y.fragments,T,!y.noShorthand);if(void 0===s)return w({fallback:yield B(S,t),error:`Fragment not defined: ${r}`,expression:b,returnErrorAsString:E});if(!a(s))return c(s,t);b=Object.assign(Object.assign(Object.assign({},e),s),i),delete b.fragment}const q=b,A=n(q.operator,g);if(!A)return w({fallback:yield B(S,t),error:`Invalid operator: ${q.operator}`,expression:b,returnErrorAsString:E});if(!t.operators[A])return w({fallback:yield B(S,t),error:`Excluded operator: ${q.operator}`,expression:b,returnErrorAsString:E});const{propertyAliases:N,evaluate:x,parseChildren:P}=f[A];let L=((e,t)=>u(t,(t=>t in e?e[t]:t)))(N,q);const I=yield z(L,t);j||Object.entries(I).forEach((([e,r])=>t.resolvedAliasNodes[e]=r));const k=j?Object.assign(Object.assign({},t),{resolvedAliasNodes:Object.assign(Object.assign({},t.resolvedAliasNodes),I)}):t;if("children"in L){if(Array.isArray(L.children)||(L.children=yield B(L.children,k)),!Array.isArray(L.children))return w({fallback:yield B(S,t),operator:A,name:"Type Error",error:'- Property "children" is not of type: array',expression:b,returnErrorAsString:E});L=yield P(L,k),delete L.children}let U;try{U=yield x(L,k)}catch(e){return w({fallback:yield B(L.fallback,t),operator:A,error:e,expression:L,returnErrorAsString:E})}const R=null!==(h=null==L?void 0:L.outputType)&&void 0!==h?h:null==L?void 0:L.type;if(!R)return U;const D=yield B(R,t);return D in v?v[D](U):w({fallback:yield B(S,t),operator:A,error:`- Invalid output type: ${D}`,expression:L,returnErrorAsString:E})})),G=(e,t)=>r(void 0,void 0,void 0,(function*(){return Array.isArray(e)?yield Promise.all(e.map((e=>B(e,t)))):yield B(e,t)})),z=(e,t)=>r(void 0,void 0,void 0,(function*(){var r;const a=Object.keys(e).filter(d);if(0===a.length)return{};const i=[];a.forEach((r=>i.push(B(e[r],t))));const s=yield Promise.all(i),n=D(a,yield Promise.all(i));for(const[e,t]of s.entries())"string"==typeof t&&d(t)&&(n[a[e]]=null!==(r=null==n?void 0:n[t])&&void 0!==r?r:t);return n})),W=(e,t)=>r(void 0,void 0,void 0,(function*(){if(!m(e))return e;const r=[],a=[];Object.entries(e).forEach((([r,i])=>{d(r)&&(a.push(r,B(i,t)),delete e[r])}));const i=yield Promise.all(a);t.resolvedAliasNodes=Object.assign(Object.assign({},t.resolvedAliasNodes),_(i)),Object.entries(e).forEach((([e,a])=>{r.push(e,B(a,t))}));const s=yield Promise.all(r);return c(_(s),t)})),J=[{name:"values",description:"Returns true if all values are true",aliases:[],required:!0,type:"array",default:[!0,!0]}],V=U(J),Y={description:"Logical AND",aliases:["and","&","&&"],parameters:J},X=e=>{const t=e.children;return Object.assign(Object.assign({},e),{values:t})},Z={propertyAliases:V,operatorData:Y,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){const r=yield G(e.values,t);return t.typeChecker(R(Y.parameters,{values:r})),r.reduce(((e,t)=>e&&!!t),!0)})),parseChildren:X},K=[{name:"values",description:"Returns true if any values are true",aliases:[],required:!0,type:"array",default:[!0,!1]}],ee=U(K),te={description:"Logical OR",aliases:["or","|","||"],parameters:K},re={propertyAliases:ee,operatorData:te,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){const r=yield G(e.values,t);return t.typeChecker(R(te.parameters,{values:r})),r.reduce(((e,t)=>e||!!t),!1)})),parseChildren:X},ae=[{name:"values",description:"Array of values to check for equality",aliases:[],required:!0,type:"array",default:["These are equal","These are equal"]},{name:"caseInsensitive",description:"If the values are strings, ignore the case (default: false)",aliases:[],required:!1,type:"boolean",default:!1},{name:"nullEqualsUndefined",description:"Whether a null value should be considered equal to an undefined value (default: false)",aliases:[],required:!1,type:"boolean",default:!1}],ie=U(ae),se={description:"Test multiple values are equal",aliases:["=","eq","equal","equals"],parameters:ae},ne={propertyAliases:ie,operatorData:se,evaluate:(e,a)=>r(void 0,void 0,void 0,(function*(){var r,i,s;const[n,o,l]=yield G([e.values,e.caseInsensitive,e.nullEqualsUndefined],a);a.typeChecker(R(se.parameters,{values:n,caseInsensitive:o,nullEqualsUndefined:l}));const u=(void 0!==o?o:null!==(i=null===(r=a.options)||void 0===r?void 0:r.caseInsensitive)&&void 0!==i&&i)&&n.every((e=>"string"==typeof e))?n.map((e=>e.toLowerCase())):n;return!(void 0!==l?l:void 0!==(null===(s=a.options)||void 0===s?void 0:s.nullEqualsUndefined)&&a.options.nullEqualsUndefined)||null!==u[0]&&void 0!==u[0]?u.every((e=>t(e,u[0]))):u.every((e=>null==e))})),parseChildren:X},oe=[{name:"values",description:"Array of values to check for inequality",aliases:[],required:!0,type:"array",default:["These items","don't match"]},{name:"caseInsensitive",description:"If the values are strings, ignore the case (default: false)",aliases:[],required:!1,type:"boolean",default:!1},{name:"nullEqualsUndefined",description:"Whether a null value should be considered equal to an undefined value (default: false)",aliases:[],required:!1,type:"boolean",default:!1}],le=U(oe),ue={description:"Test if any values are different",aliases:["!=","!","ne","notEqual"],parameters:oe},de={propertyAliases:le,operatorData:ue,evaluate:(e,a)=>r(void 0,void 0,void 0,(function*(){var r,i,s;const[n,o,l]=yield G([e.values,e.caseInsensitive,e.nullEqualsUndefined],a);a.typeChecker(R(ue.parameters,{values:n,caseInsensitive:o,nullEqualsUndefined:l}));const u=(void 0!==o?o:null!==(i=null===(r=a.options)||void 0===r?void 0:r.caseInsensitive)&&void 0!==i&&i)&&n.every((e=>"string"==typeof e))?n.map((e=>e.toLowerCase())):n;return!(void 0!==l?l:void 0!==(null===(s=a.options)||void 0===s?void 0:s.nullEqualsUndefined)&&a.options.nullEqualsUndefined)||null!==u[0]&&void 0!==u[0]?u.some((e=>!t(e,u[0]))):u.some((e=>null===e&&void 0===e))})),parseChildren:X},ce=[{name:"values",description:"Array of values to check to add together",aliases:[],required:!0,type:"array",default:[1,2,3]},{name:"type",description:"Data type to coerce input values to before addition",aliases:[],required:!1,type:{literal:["string","array","number","boolean","bool"]},default:"string"}],pe=U(ce),he={description:"Add, concatenate or merge multiple values",aliases:["+","plus","add","concat","join","merge"],parameters:ce},ve={propertyAliases:pe,operatorData:he,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){const r=yield G(e.values,t);return t.typeChecker(R(he.parameters,{values:r,type:e.type})),0===r.length?r:"string"===(null==e?void 0:e.type)?r.reduce(((e,t)=>e.concat(t)),""):"array"===(null==e?void 0:e.type)?r.reduce(((e,t)=>e.concat(t)),[]):r.every((e=>"string"==typeof e||Array.isArray(e)))?r.reduce(((e,t)=>e.concat(t))):r.every((e=>m(e)))?r.reduce(((e,t)=>Object.assign(Object.assign({},e),t)),{}):r.reduce(((e,t)=>e+t))})),parseChildren:X},ye=[{name:"values",description:"Array of values - 2nd element will be subtracted from the first",aliases:[],required:!1,type:"array",default:[10,5]},{name:"from",description:"Numerical value that will be subtracted from",aliases:["subtractFrom"],required:!1,type:"number",default:100},{name:"subtract",description:"Numerical value to subtract",aliases:[],required:!1,type:"number",default:50}],fe=U(ye),me={description:"Subtract one numerical value from another",aliases:["-","subtract","minus","takeaway"],parameters:ye},ge={propertyAliases:fe,operatorData:me,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){const[r,a,i]=yield G([e.values,e.from,e.subtract],t);t.typeChecker(R(me.parameters,{values:r,from:a,subtract:i}));const s=null!=r?r:[a,i].filter((e=>void 0!==e));if(s.length<2)throw new Error("- Not enough values provided");if(s.some((e=>"number"!=typeof e)))throw new Error("- Not all values are numbers");return s[0]-s[1]})),parseChildren:X},be=[{name:"values",description:"Array of values whose product will be calculated",aliases:[],required:!0,type:"array",default:[5,5]}],Te=U(be),Oe={description:"Multiply several numerical values together",aliases:["*","x","multiply","times"],parameters:be},Ce={propertyAliases:Te,operatorData:Oe,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){const r=yield G(e.values,t);if(t.typeChecker(R(Oe.parameters,{values:r})),0===r.length)return 0;if(r.some((e=>"number"!=typeof e)))throw new Error("- Not all values are numbers");return r.reduce(((e,t)=>e*t))})),parseChildren:X},je=[{name:"values",description:"Array of values - 1st element will be divided by the first",aliases:[],required:!1,type:"array",default:[100,10]},{name:"dividend",description:"The number that will be divided",aliases:["divide"],required:!1,type:"number",default:99},{name:"divisor",description:"The number that dividend will be divided by",aliases:["by","divideBy"],required:!1,type:"number",default:3},{name:"output",description:"Whether to output a quotient, remainder or decimal",aliases:[],required:!1,type:{literal:["quotient","remainder"]},default:"quotient"}],Se=U(je),Ee={description:"Divide one numerical value by another",aliases:["/","divide","÷"],parameters:je},qe={propertyAliases:Se,operatorData:Ee,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){const[r,a,i,s]=yield G([e.values,e.dividend,e.divisor,e.output],t);t.typeChecker(R(Ee.parameters,{values:r,dividend:a,divisor:i,output:s}));const n=null!=r?r:[a,i].filter((e=>void 0!==e));if(n.length<2)throw new Error("- Not enough values provided");if(n.some((e=>"number"!=typeof e)))throw new Error("- Not all values are numbers");if(0===n[1])throw new Error("Division by zero!");switch(s){case"quotient":return Math.floor(n[0]/n[1]);case"remainder":return n[0]%n[1];default:return n[0]/n[1]}})),parseChildren:X},Ae=[{name:"values",description:"Array of values - 1st element will be compared to the second",aliases:[],required:!0,type:"array",default:[10,9]},{name:"strict",description:"Whether value must be strictly greater than (i.e. not equal) (default: false)",aliases:[],required:!1,type:"boolean",default:!1}],we=U(Ae),Ne={description:"Test if a value is greater than (or equal to) another value",aliases:[">","greaterThan","higher","larger"],parameters:Ae},xe={propertyAliases:we,operatorData:Ne,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){const[r,a=!0]=yield G([e.values,e.strict],t);if(t.typeChecker(R(Ne.parameters,{values:r,strict:a})),r.length<2)throw new Error("- Not enough values provided");const[i,s]=r;return i===s&&!a||i>s})),parseChildren:X},Pe=[{name:"values",description:"Array of values - 1st element will be compared to the second",aliases:[],required:!0,type:"array",default:[9,10]},{name:"strict",description:"Whether value must be strictly smaller than (i.e. not equal) (default: false)",aliases:[],required:!1,type:"boolean",default:!1}],Le=U(Pe),Ie={description:"Test if a value is smaller than (or equal to) another value",aliases:["<","lessThan","lower","smaller"],parameters:Pe},ke={propertyAliases:Le,operatorData:Ie,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){const[r,a=!0]=yield G([e.values,e.strict],t);if(t.typeChecker(R(Ie.parameters,{values:r,strict:a})),r.length<2)throw new Error("- Not enough values provided");const[i,s]=r;return i===s&&!a||i<s})),parseChildren:X},Ue=[{name:"condition",description:"The expression to check for truthiness",aliases:[],required:!0,type:"any",default:!0},{name:"valueIfTrue",description:"Value to return if condition is true",aliases:["ifTrue"],required:!0,type:"any",default:"The condition is true"},{name:"valueIfFalse",description:"Value to return if condition is false",aliases:["ifFalse","ifNot"],required:!0,type:"any",default:"The condition is false"}],Re=U(Ue),De={description:"Return a value based on a condition",aliases:["?","conditional","ifThen"],parameters:Ue},_e={propertyAliases:Re,operatorData:De,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){t.typeChecker(R(De.parameters,{condition:e.condition,valueIfTrue:e.valueIfTrue,valueIfFalse:e.valueIfFalse}));return(yield B(e.condition,t))?yield B(e.valueIfTrue,t):yield B(e.valueIfFalse,t)})),parseChildren:e=>{const[t,r,a]=e.children;return Object.assign(Object.assign({},e),{condition:t,valueIfTrue:r,valueIfFalse:a})}},Qe=[{name:"testString",description:"The string to test",aliases:["string","value"],required:!0,type:"string",default:"test-this"},{name:"pattern",description:"The regular expression pattern",aliases:["regex","regexp","regExp","re"],required:!0,type:"string",default:"^[a-z]{4}-[a-z]{4}$"}],He=U(Qe),Me={description:"Compare a string against a regex pattern",aliases:["regex","patternMatch","regexp","matchPattern"],parameters:Qe},$e={propertyAliases:He,operatorData:Me,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){const[r,a]=yield G([e.testString,e.pattern],t);t.typeChecker(R(Me.parameters,{testString:r,pattern:a}));return new RegExp(a).test(r)})),parseChildren:e=>{const[t,r]=e.children;return Object.assign(Object.assign({},e),{testString:t,pattern:r})}},Fe=[{name:"property",description:'The path to the required property (e.g. "user.firstName")',aliases:["path","propertyName"],required:!0,type:"string",default:"path.to[0].my.data"},{name:"additionalData",description:"Additional data objects to be considered",aliases:["additional","objects","data","additionalObjects"],required:!1,type:"object",default:{}}],Be=U(Fe),Ge={description:"Extract values from data objects",aliases:["dataProperties","data","getData","objectProperties","objProps","getProperty","getObjProp"],parameters:Fe},ze={propertyAliases:Be,operatorData:Ge,evaluate:(t,a)=>r(void 0,void 0,void 0,(function*(){var r,i;const[s,n={}]=yield G([t.property,t.additionalData],a);a.typeChecker(R(Ge.parameters,{property:s,additionalData:n}));const o=Object.assign(Object.assign({},null!==(i=null===(r=a.options)||void 0===r?void 0:r.data)&&void 0!==i?i:{}),n);return e(o,s)})),parseChildren:e=>{const[t,r]=e.children,a=Object.assign(Object.assign({},e),{property:t});return void 0!==r&&(a.fallback=r),a}},We=[{name:"string",description:"A parameterised (%1, %2) string where the parameters are to be replaced",aliases:[],required:!0,type:"string",default:"Hello, %1"},{name:"substitutions",description:"An array of substitution values for the parameterised string",aliases:["replacements","values"],required:!1,type:["array","object"],default:{}},{name:"trimWhiteSpace",description:"Whether or not to trim white space from either end of the substituted strings (default: true)",aliases:["trim","trimWhitespace"],required:!1,type:"boolean",default:!0},{name:"substitutionCharacter",description:'Which character to search for in original string for replacement -- can be "%" or "$" (default: "%")',aliases:["subCharacter","subChar"],required:!1,type:"string",default:"$"},{name:"numberMapping",description:"Rules for mapping number values to text strings, such as pluralisation.",aliases:["numMap","numberMap","pluralisation","pluralization","plurals"],required:!1,type:"object",default:{}}],Je=U(We),Ve={description:"Replace values in a string using simple parameter substitution",aliases:["stringSubstitution","substitute","stringSub","replace"],parameters:We},Ye={propertyAliases:Je,operatorData:Ve,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){const[r,a={},i=!0,s="%",n={}]=yield G([e.string,e.substitutions,e.trimWhiteSpace,e.substitutionCharacter,e.numberMapping],t);if(t.typeChecker(R(Ve.parameters,{string:r,substitutions:a,trimWhiteSpace:i,substitutionCharacter:s,numberMapping:n})),Array.isArray(a)){const e="$"===s?"$":"%",t=new RegExp(`(?<!\\\\)(${"%"===e?"%":"\\$"}[\\d]+)`,"g"),n=(r.match(t)||[]).sort(((e,t)=>Number(e.slice(1))-Number(t.slice(1)))),o=new Set(n),l=D(Array.from(o),a.map((e=>i?String(e).trim():e)));return r.split(t).map((e=>e in l?l[e]:e)).join("").replace(`\\${e}`,e)}const o=/(?<!\\)({{(?:[A-Za-z0-9_.]|\[[0-9]+\])+}})/g,l=[];for(const e of r.split(o)){if(!/(?<!\\){{(.+)}}/.exec(e)){l.push(e.replace("\\{{","{{"));continue}const r=yield Xe(e,a,n,t);l.push(i?String(r).trim():r)}return l.join("")})),parseChildren:e=>{const[t,...r]=e.children;return Object.assign(Object.assign({},e),{string:t,substitutions:r})}},Xe=(t,a,i,s)=>r(void 0,void 0,void 0,(function*(){var r,n;const o=null!==(n=null===(r=s.options)||void 0===r?void 0:r.data)&&void 0!==n?n:{},l=t.replace(/{{(.+)}}/,"$1"),u=yield B(e(a,l,e(o,l,"")),s);if("number"!=typeof u)return u;if(!(l in i))return u;const d=i[l];if(u in d)return d[u].replace("{}",String(u));const c=Object.keys(i[l]),p=c.find((e=>e.startsWith(">")));if(p){if(u>Number(p.slice(1)))return null==d?void 0:d[p]}const h=c.find((e=>e.startsWith("<")));if(h){if(u<Number(h.slice(1)))return null==d?void 0:d[h]}return d.other?d.other.replace("{}",String(u)):u})),Ze=[{name:"values",description:"An array to count",aliases:[],required:!0,type:"array",default:[1,2,3,4,5]}],Ke=U(Ze),et={description:"Count elements in an array",aliases:["count","length"],parameters:Ze},tt={propertyAliases:Ke,operatorData:et,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){const r=yield G(e.values,t);return t.typeChecker(R(et.parameters,{values:r})),r.length})),parseChildren:e=>{const[t]=e.children;return Object.assign(Object.assign({},e),{values:t})}},rt=[{name:"value",description:"The string to be split",aliases:["string"],required:!0,type:"string",default:"Alpha, Bravo, Charlie"},{name:"delimiter",description:"The value to split the string on (default is white space)",aliases:["separator"],required:!1,type:"string",default:","},{name:"trimWhiteSpace",description:"Whether to trim white space from around the resulting elements (default: true)",aliases:["trim","trimWhitespace"],required:!1,type:"boolean",default:!0},{name:"excludeTrailing",description:"If the input string ends in a delimiter, there will be an additional blank element if this value is false (default: true)",aliases:["removeTrailing","excludeTrailingDelimiter"],required:!1,type:"boolean",default:!0}],at=U(rt),it={description:"Split a string into an array",aliases:["split","arraySplit"],parameters:rt},st=" ",nt={propertyAliases:at,operatorData:it,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){var r,a,i;const[s,n,o,l]=yield G([e.value,null!==(r=e.delimiter)&&void 0!==r?r:st,null===(a=e.trimWhiteSpace)||void 0===a||a,null===(i=e.excludeTrailing)||void 0===i||i],t);t.typeChecker(R(it.parameters,{value:s,delimiter:n,trimWhiteSpace:o,excludeTrailing:l}));let u=s.split(n);return o&&(u=u.map((e=>e.trim()))),l&&""===u[u.length-1]&&u.pop(),u})),parseChildren:e=>{const[t,r=st]=e.children;return Object.assign(Object.assign({},e),{value:t,delimiter:r})}},ot=[{name:"query",description:"SQL query string, with parameterised replacements (e.g. $1, $2, etc)",aliases:["text"],required:!0,type:"string"},{name:"values",description:"An array/object of values to replace the SQL string parameters, as per SQL connection specifications ",aliases:["replacements"],required:!1,type:["array","object"]},{name:"single",description:"Specify if returning a single record",aliases:["singleRecord"],required:!1,type:"boolean"},{name:"flatten",description:"Specify whether to flatten resulting record objects to arrays of values",aliases:["flat","array"],required:!1,type:"boolean"},{name:"useCache",description:"Whether or not the FigTree cache is used",aliases:[],required:!1,type:"boolean"}],lt=U(ot),ut={description:"Query an SQL database",aliases:["sql","pgSql","postgres","pg","sqLite","sqlite","mySql"],parameters:ot},dt={propertyAliases:lt,operatorData:ut,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){var a,i,s;const n=null===(a=t.options)||void 0===a?void 0:a.sqlConnection;if(!n)throw new Error("No SQL database connection provided");const[o,l,u,d,c,p]=yield G([e.query,e.values||[],e.single,e.flatten,e.useCache,e.type],t);t.typeChecker(R(ut.parameters,{query:o,single:u,flatten:d,values:l,useCache:c}));const h=null===(s=null!==(i=e.useCache)&&void 0!==i?i:t.options.useCache)||void 0===s||s;{const e=t.cache.useCache(h,((e,t,a,i,s)=>r(void 0,void 0,void 0,(function*(){const r=(yield n.query({query:e,values:t}))||[];["array","string","number"].includes(null!=s?s:"")&&(i=!0);const o=i?r.map((e=>{const t=Object.values(e);return t.length<=1?t[0]:t})):r;return a?o[0]:o}))),o,l,u,d,p);return e}})),parseChildren:e=>{const[t,...r]=e.children;return Object.assign(Object.assign({},e),{query:t,values:r})}},ct=[{name:"query",description:"GraphQL query string",aliases:[],required:!0,type:"string",default:'query getCountries {\n countries(filter: {continent: {eq: "OC"}}) {\n name\n }\n }'},{name:"url",description:"Endpoint for the GraphQL request (if not already provided in options)",aliases:["endpoint"],required:!1,type:["string","null"],default:"https://countries.trevorblades.com/"},{name:"headers",description:"HTTP Headers (if not already provided in options)",aliases:[],required:!1,type:"object",default:{}},{name:"variables",description:"Values for the variables used in query (key-value pairs)",aliases:[],required:!1,type:"object",default:{}},{name:"returnNode",description:"Property path to extract from the query response",aliases:["outputNode","returnProperty"],required:!1,type:"string",default:"data.countries[1].name"},{name:"useCache",description:"Whether or not the FigTree cache is used",aliases:[],required:!1,type:"boolean",default:!0}],pt=U(ct),ht={description:"GraphQL request",aliases:["graphQl","graphql","gql"],parameters:ct},vt={propertyAliases:pt,operatorData:ht,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){var a,i,s,n,o,l,u;const d=null!==(a=t.graphQLClient)&&void 0!==a?a:t.httpClient;if(!d)throw new Error("No HTTP client provided for GraphQL connection");const[c,p,h,v,y,f]=yield G([e.query,e.url,yield W(e.variables,t),e.returnNode,e.headers,e.useCache],t),{url:m,headers:g}=p instanceof Object?p:{url:p,headers:null};t.typeChecker([...R(ht.parameters,{url:m,query:c,variables:h,returnNode:v,headers:y,useCache:f}),{name:"headers",value:g,expectedType:["object","null"]}]);const b=m&&"graphqlendpoint"!==m.toLowerCase()?m:"",T=null!==(n=null!==(s=null===(i=t.options.graphQLConnection)||void 0===i?void 0:i.endpoint)&&void 0!==s?s:t.options.baseEndpoint)&&void 0!==n?n:"",O=M(b)?b:$(T,b),C={query:c,variables:h},j=null===(o=null!=f?f:t.options.useCache)||void 0===o||o,S=yield t.cache.useCache(j,((e,t,a,i)=>r(void 0,void 0,void 0,(function*(){const r=yield F(d,{url:e,method:"post",data:t,headers:a});return H(null==r?void 0:r.data,i)}))),O,C,Object.assign(Object.assign(Object.assign(Object.assign({},null===(l=t.options.graphQLConnection)||void 0===l?void 0:l.headers),null===(u=t.options)||void 0===u?void 0:u.headers),g),y),v);return S})),parseChildren:(e,t)=>r(void 0,void 0,void 0,(function*(){const[r,a="",i,...s]=yield G(e.children,t),n=Array.isArray(i)?i:[i],o=s.slice(0,n.length),l=D(n,o),u=Object.assign(Object.assign({},e),{query:r,url:a,variables:l});return s.length>n.length&&(u.returnNode=s.pop()),u}))},yt=[{name:"url",description:"Endpoint URL",aliases:["endpoint"],required:!0,type:"string",default:"https://restcountries.com/v3.1/name/zealand"},{name:"returnProperty",description:"Property from request result",aliases:["outputProperty"],required:!1,type:"string",default:"result.path"},{name:"headers",description:"HTTP Headers",aliases:[],required:!1,type:"object",default:{}},{name:"parameters",description:"Query parameters (key-value)",aliases:["queryParams","queryParameters","urlQueries"],required:!1,type:"object",default:{}},{name:"useCache",description:"Whether or not the FigTree cache is used",aliases:[],required:!1,type:"boolean",default:!0}],ft=U(yt),mt={description:"HTTP GET Request",aliases:["get","api"],parameters:yt},gt=(e,t)=>r(void 0,void 0,void 0,(function*(){const[r="",a,...i]=yield G(e.children,t),s=Array.isArray(a)?a:[a],n=i.slice(0,s.length),o=D(s,n),l=Object.assign(Object.assign({},e),{url:r,parameters:o});return i.length>s.length&&(l.returnProperty=i.pop()),l})),bt=gt,Tt={propertyAliases:ft,operatorData:mt,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){var a,i,s;const n=t.httpClient;if(!n)throw new Error("No HTTP client provided");const[o,l,u,d,c]=yield G([e.url,yield W(e.parameters,t),e.returnProperty,yield W(e.headers,t),e.useCache],t),{url:p,headers:h}=o instanceof Object?o:{url:o,headers:null};t.typeChecker([...R(mt.parameters,{url:p,returnProperty:u,headers:d,parameters:l,useCache:c}),{name:"headers",value:h,expectedType:["object","null"]}]);const v=null!==(a=t.options.baseEndpoint)&&void 0!==a?a:"",y=Object.assign(Object.assign(Object.assign({},null===(i=t.options)||void 0===i?void 0:i.headers),h),d),f=null===(s=null!=c?c:t.options.useCache)||void 0===s||s,m=yield t.cache.useCache(f,((e,t,a,i)=>r(void 0,void 0,void 0,(function*(){const r=yield F(n,{url:e,params:t,headers:a});return H(r,i)}))),M(p)?p:$(v,p),l,y,u);return m})),parseChildren:gt},Ot=[{name:"url",description:"Endpoint URL",aliases:["endpoint"],required:!0,type:"string",default:"https://jsonplaceholder.typicode.com/posts"},{name:"returnProperty",description:"Property path from request result",aliases:["outputProperty"],required:!1,type:"string",default:"result.path"},{name:"headers",description:"HTTP Headers",aliases:[],required:!1,type:"object",default:{}},{name:"parameters",description:"JSON Body parameters (key-value)",aliases:["bodyJson","data"],required:!1,type:"object",default:{}},{name:"useCache",description:"Whether or not the FigTree cache is used",aliases:[],required:!1,type:"boolean",default:!0}],Ct=U(Ot),jt={description:"HTTP POST Request",aliases:["post"],parameters:Ot},St={propertyAliases:Ct,operatorData:jt,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){var a,i,s;const n=t.httpClient;if(!n)throw new Error("No HTTP client provided");const[o,l,u,d,c]=yield G([e.url,yield W(e.parameters,t),e.returnProperty,yield W(e.headers,t),e.useCache],t),{url:p,headers:h}=o instanceof Object?o:{url:o,headers:null};t.typeChecker([...R(jt.parameters,{url:p,headers:d,data:l,returnProperty:u,useCache:c}),{name:"headers",value:h,expectedType:["object","null"]}]);const v=null!==(a=t.options.baseEndpoint)&&void 0!==a?a:"",y=Object.assign(Object.assign(Object.assign({},null===(i=t.options)||void 0===i?void 0:i.headers),h),d),f=null!==(s=null!=c?c:t.options.useCache)&&void 0!==s&&s,m=yield t.cache.useCache(f,((e,t,a,i)=>r(void 0,void 0,void 0,(function*(){const r=yield F(n,{url:e,data:t,headers:a,method:"post"});return H(r,i)}))),M(p)?p:$(v,p),l,y,u);return m})),parseChildren:bt},Et=[{name:"properties",description:'An array of objects, each with a "key" property and a "value" property',aliases:["values","keyValPairs","keyValuePairs"],required:!0,type:"array",default:["firstKey","firstValue","secondKey","secondValue"]}],qt=U(Et),At={description:"Construct an object using objects defining keys and values",aliases:["buildObject","build","object"],parameters:Et},wt={propertyAliases:qt,operatorData:At,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){t.typeChecker(R(At.parameters,{properties:e.properties}));const a=e.properties.filter((e=>e instanceof Object&&"key"in e&&"value"in e)).map((({key:e,value:a})=>{return i=[e,a],r(void 0,void 0,void 0,(function*(){const[e,r]=yield G(i,t);return t.typeChecker({name:"key",value:e,expectedType:["string","number","boolean"]}),[e,r]}));var i}));return Object.fromEntries(yield Promise.all(a))})),parseChildren:e=>{const t=e.children;if(t.length%2!=0)throw new Error("Even number of children required to make key/value pairs");const r=t.filter(((e,t)=>t%2==0)),a=t.filter(((e,t)=>t%2==1)),i=r.map(((e,t)=>({key:e,value:a[t]})));return Object.assign(Object.assign({},e),{properties:i})}},Nt=[{name:"matchExpression",description:"Expression to match against",aliases:["match"],required:!0,type:["string","number","boolean"],default:"matchMe"},{name:"branches",description:"Object whose keys are compared against the match expression. The value of the matching key is returned",aliases:["arms","cases"],required:!1,type:["object","array"],default:{matchMe:"YES",nonMatch:"NO"}},{name:"[...branches]",description:"Branch properties can optionally be placed at the operator root",aliases:[],required:!1,type:["object","array"]}],xt={propertyAliases:U(Nt),operatorData:{description:"Return different values depending on a matching expression",aliases:["match","switch"],parameters:Nt},evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){var r;const i=yield B(e.matchExpression,t);t.typeChecker({name:"matchExpression",value:i,expectedType:["string","number","boolean"]});const s=Array.isArray(e.branches)?_(e.branches):null!==(r=e.branches)&&void 0!==r?r:{},n=a(s)?yield B(s,t):s;if(!m(n))throw new Error("Branches don't evaluate to an object");if(i in n)return yield B(n[i],t);if("fallback"in n)return yield B(n.fallback,t);if(i in e)return yield B(e[i],t);throw new Error(`No match found for ${i}`)})),parseChildren:(e,t)=>r(void 0,void 0,void 0,(function*(){const[r,...a]=e.children,i=_(yield G(a,t));return Object.assign(Object.assign({},e),{matchExpression:r,branches:i})}))},Pt=[{name:"functionName",description:"Path (in options.functions) to the required function",aliases:["functionPath","funcName","function","path","name"],required:!0,type:"string",default:null},{name:"args",description:"Arguments for the function",aliases:["arguments","variables"],required:!1,type:["array","any"],default:[]},{name:"input",description:"Argument for the function if a single input parameter",aliases:["arg"],required:!1,type:"any",default:"input"},{name:"useCache",description:"Whether or not the FigTree cache is used",aliases:[],required:!1,type:"boolean",default:!1}],Lt=U(Pt),It={description:"Call a custom function (defined in options)",aliases:["customFunctions","customFunction","objectFunctions","function","functions","runFunction"],parameters:Pt},kt={propertyAliases:Lt,operatorData:It,evaluate:(t,a)=>r(void 0,void 0,void 0,(function*(){var i,s,n,o;const[l,u=[],d,c]=yield G([t.functionName,t.args,t.input,t.useCache],a);a.typeChecker(R(It.parameters,{functionName:l,args:u}));const{data:p,functions:h}=a.options;if(!h)throw new Error("- No functions defined");const v=null!==(n=null!==(s=null!==(i=e(h,`${l}.function`,null))&&void 0!==i?i:e(h,l,null))&&void 0!==s?s:e(p,l,null))&&void 0!==n?n:e(a.options,l,null);if(!v||"function"!=typeof v)throw new Error(`- No function found: "${l}"`);const y=null!==(o=null!=c?c:a.options.useCache)&&void 0!==o&&o,f=[...void 0===d?[]:[yield W(d,a)],...Array.isArray(u)?u:[u]];return yield a.cache.useCache(y,((e,...t)=>r(void 0,void 0,void 0,(function*(){return yield v(...t)}))),l,...f)})),parseChildren:e=>{const[t,...r]=e.children;return Object.assign(Object.assign({},e),{functionName:t,args:r})}},Ut=[{name:"value",description:"Value to pass through",aliases:["_","data"],required:!0,type:"any",default:null}],Rt=U(Ut),Dt={description:"Pass through a value unchanged (or change its type)",aliases:["_","passThru","passthru","pass","ignore","coerce","convert"],parameters:Ut},_t={propertyAliases:Rt,operatorData:Dt,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){return t.typeChecker(R(Dt.parameters,{value:e.value})),yield B(e.value,t)})),parseChildren:e=>{const[...t]=e.children,r=1===(null==t?void 0:t.length)?t[0]:t;return Object.assign(Object.assign({},e),{value:r})}};var Qt=Object.freeze({__proto__:null,AND:Z,BUILD_OBJECT:wt,CONDITIONAL:_e,COUNT:tt,CUSTOM_FUNCTIONS:kt,DIVIDE:qe,EQUAL:ne,GET:Tt,GRAPHQL:vt,GREATER_THAN:xe,LESS_THAN:ke,MATCH:xt,MULTIPLY:Ce,NOT_EQUAL:de,OBJECT_PROPERTIES:ze,OR:re,PASSTHRU:_t,PLUS:ve,POST:St,REGEX:$e,SPLIT:nt,SQL:dt,STRING_SUBSTITUTION:Ye,SUBTRACT:ge});class Ht{constructor(e){var t,a;this.useCache=(e,t,...a)=>r(this,void 0,void 0,(function*(){if(!e)return yield t(...a);const r=Mt(a),i=r in this.store,s=Date.now(),n=i&&s-this.store[r].timestamp>1e3*this.maxTime;if(i)return this.queue=this.queue.filter((e=>e!==r)),this.queue.unshift(r),this.store[r].timestamp=s,n&&(this.store[r].result=yield t(...a)),this.store[r].result;const o=yield t(...a);return this.store[r]={result:o,timestamp:s},this.queue.unshift(r),this.resizeCache(),o})),this.getMax=()=>this.maxSize,this.setMax=e=>{this.maxSize=e,this.resizeCache()},this.getMaxTime=()=>this.maxTime,this.setMaxTime=e=>{this.maxTime=e},this.getCache=()=>this.store,this.setCache=e=>this.store=e,this.resizeCache=()=>{if(this.queue.length>this.maxSize){this.queue.slice(this.maxSize).forEach((e=>delete this.store[e])),this.queue=this.queue.slice(0,this.maxSize)}},this.store={},this.queue=[],this.maxSize=null!==(t=null==e?void 0:e.maxSize)&&void 0!==t?t:50,this.maxTime=null!==(a=null==e?void 0:e.maxTime)&&void 0!==a?a:1800}}const Mt=e=>e.map((e=>"object"==typeof e?JSON.stringify(e):e)).join("_"),$t=e=>e?"name"in e&&"fetch"===e.name?Bt(e):"Axios"in e&&"Axios"===e.Axios.name?Ft(e):e:"undefined"!=typeof window&&"document"in window&&"fetch"in window?Bt(window.fetch):void 0,Ft=e=>({get:t=>r(void 0,void 0,void 0,(function*(){return(yield e(Object.assign(Object.assign({},t),{method:"get"}))).data})),post:t=>r(void 0,void 0,void 0,(function*(){return(yield e(Object.assign(Object.assign({},t),{method:"post"}))).data})),throwError:t=>{var r,a,i,s;if(e.isAxiosError(t)&&t.response)throw t.errorData={status:null===(r=t.response)||void 0===r?void 0:r.status,error:null===(a=t.response)||void 0===a?void 0:a.statusText,url:null===(i=t.config)||void 0===i?void 0:i.url,response:null===(s=t.response)||void 0===s?void 0:s.data},t;throw new Error("Network error: "+(null==t?void 0:t.message))}}),Bt=e=>({get:t=>r(void 0,void 0,void 0,(function*(){const{url:r,headers:a,params:i={}}=t,s=Object.keys(i).length>0?`?${new URLSearchParams(i).toString()}`:"",n=yield e(r+s,{headers:a,method:"GET"}),o=yield n.json();if(!n.ok){const e=new Error("Problem with GET request");throw e.name="FetchError",e.errorData={status:n.status,error:n.statusText,url:n.url,response:o},console.log(e.errorData),e}return o})),post:t=>r(void 0,void 0,void 0,(function*(){const{url:r,headers:a,params:i,data:s}=t,n=new URLSearchParams(i),o=n.size>0?`?${n.toString()}`:"",l=yield e(r+o,{headers:a,body:JSON.stringify(s),method:"POST"}),u=yield l.json();if(!l.ok){const e=new Error("Problem with POST request");throw e.name="FetchError",e.errorData={status:l.status,error:l.statusText,url:l.url,response:u},console.log(e.errorData),e}return u})),throwError:e=>{throw e}});class Gt{constructor(e={}){var t,r,a;this.typeChecker=(...e)=>{const t=1===e.length&&Array.isArray(e[0])?e[0]:e,r=P(...t);if(!0===r)return;const a=new Error(r);throw a.name="Type Error",a},this.getCache=()=>this.cache.getCache(),this.setCache=e=>this.cache.setCache(e),this.getVersion=()=>"2.17.1",this.options=Wt(e),this.operators=o(Qt,null!==(r=null===(t=this.options)||void 0===t?void 0:t.excludeOperators)&&void 0!==r?r:[],b),this.operatorAliases=b,this.cache=new Ht({maxSize:e.maxCacheSize,maxTime:e.maxCacheTime}),this.graphQLClient=$t(null===(a=e.graphQLConnection)||void 0===a?void 0:a.httpClient),this.httpClient=$t(e.httpClient)}evaluate(e,t={}){var a;return r(this,void 0,void 0,(function*(){const r=h(this.options,Wt(t),!0);return t.httpClient&&(this.httpClient=$t(t.httpClient)),(null===(a=t.graphQLConnection)||void 0===a?void 0:a.httpClient)&&(this.graphQLClient=$t(t.graphQLConnection.httpClient)),r.maxCacheSize&&r.maxCacheSize!==this.cache.getMax()&&this.cache.setMax(r.maxCacheSize),r.maxCacheTime&&r.maxCacheTime!==this.cache.getMaxTime()&&this.cache.setMaxTime(r.maxCacheTime),yield B(e,{options:r,operators:t.excludeOperators?o(Qt,t.excludeOperators,b):this.operators,operatorAliases:this.operatorAliases,typeChecker:r.skipRuntimeTypeCheck?()=>{}:this.typeChecker,resolvedAliasNodes:{},cache:this.cache,graphQLClient:this.graphQLClient,httpClient:this.httpClient})}))}getOptions(){return this.options}updateOptions(e){this.options=h(this.options,Wt(e),!1),this.options.excludeOperators&&(this.operators=o(Qt,this.options.excludeOperators,b))}getOperators(){const e=this.options.excludeOperators?o(Qt,this.options.excludeOperators,b):this.operators,t=Object.entries(e).map((([e,t])=>Object.assign({name:e},t.operatorData))),r=[...new Set(Object.values(b))];return t.sort(((e,t)=>r.indexOf(e.name)-r.indexOf(t.name)))}getFragments(){var e;return Object.entries(null!==(e=this.options.fragments)&&void 0!==e?e:{}).map((([e,t])=>Object.assign({name:e},null==t?void 0:t.metadata)))}getCustomFunctions(){var e;return Object.entries(null!==(e=this.options.functions)&&void 0!==e?e:{}).map((([e,t])=>{const r="function"==typeof t?t:null==t?void 0:t.function,a={name:e,numRequiredArgs:null==r?void 0:r.length};if("function"!=typeof t){const{description:e,argsDefault:r,inputDefault:i,textColor:s,backgroundColor:n}=t;return e&&(a.description=e),r&&(a.argsDefault=r),i&&(a.inputDefault=i),s&&(a.textColor=s),n&&(a.backgroundColor=n),a}return a}))}}const zt=(e,t)=>new Gt(t).evaluate(e),Wt=e=>"objects"in e?Object.assign(Object.assign({},e),{data:e.objects}):e,Jt=e=>({query:({query:t,values:a=[]})=>r(void 0,void 0,void 0,(function*(){const r={text:t,values:null!=a?a:[]};try{const t=yield e.query(r);if(null==t?void 0:t.error)throw new Error(t.error);return t.rows}catch(e){throw e.name="Node-Postgres error",e}}))}),Vt=e=>({query:({query:t,values:a=[]})=>r(void 0,void 0,void 0,(function*(){try{return yield e.all(t,a)}catch(e){throw e.name="SQLite error",e}}))});export{Ft as AxiosClient,Bt as FetchClient,q as FigTreeError,Gt as FigTreeEvaluator,Jt as SQLNodePostgres,Vt as SQLite,zt as evaluateExpression,d as isAliasString,A as isFigTreeError,g as isFigTreeExpression,i as isFragmentNode,m as isObject,a as isOperatorNode,C as preProcessShorthand,s as standardiseOperatorName,l as truncateString};
import e from"object-property-extractor";import{dequal as t}from"dequal/lite";function r(e,t,r,a){return new(r||(r=Promise))((function(i,s){function n(e){try{l(a.next(e))}catch(e){s(e)}}function o(e){try{l(a.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(n,o)}l((a=a.apply(e,t||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;const a=e=>e instanceof Object&&"operator"in e,i=e=>e instanceof Object&&"fragment"in e,s=e=>{const t=f(e);return t||e},n=(e,t)=>t[s(e)],o=(e,t,r)=>{const a=Object.assign({},e);return t.forEach((e=>{r[s(e)]||console.warn(`Invalid operator exclusion: ${e}`),delete a[r[s(e)]]})),a},l=(e,t=200)=>e.length<t?e:`${e.slice(0,t-2).trim()}...`,u=(e,t)=>{const r=Object.entries(e).map((([e,r])=>[t(e),r]));return Object.fromEntries(r)},d=e=>/^\$.+/.test(e),c=(e,{resolvedAliasNodes:t})=>{var r;return"string"==typeof e&&d(e)&&null!==(r=null==t?void 0:t[e])&&void 0!==r?r:e},p=(e,t)=>r(void 0,void 0,void 0,(function*(){var r,a;if(!(e.operator in(null!==(a=null===(r=t.options)||void 0===r?void 0:r.functions)&&void 0!==a?a:{})))return e;const{operator:i,fallback:s,outputType:n,type:o,useCache:l,input:u,args:d}=e,c=function(e,t){var r={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)<0&&(r[a]=e[a]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(a=Object.getOwnPropertySymbols(e);i<a.length;i++)t.indexOf(a[i])<0&&Object.prototype.propertyIsEnumerable.call(e,a[i])&&(r[a[i]]=e[a[i]])}return r}(e,["operator","fallback","outputType","type","useCache","input","args"]),p={operator:"CUSTOM_FUNCTIONS",function:i};return void 0!==s&&(p.fallback=s),void 0!==n&&(p.outputType=n),void 0!==o&&(p.type=o),void 0!==l&&(p.useCache=l),void 0!==d&&(p.args=d),void 0!==u?p.input=u:Object.keys(c).length>0&&(p.input=c),p})),h=(e,t,r)=>{const a=Object.assign(Object.assign({},e),t);return r?((e.data||t.data)&&(a.data=Object.assign(Object.assign({},e.data),t.data)),(e.functions||t.functions)&&(a.functions=Object.assign(Object.assign({},e.functions),t.functions)),(e.fragments||t.fragments)&&(a.fragments=Object.assign(Object.assign({},e.fragments),t.fragments)),(e.headers||t.headers)&&(a.headers=Object.assign(Object.assign({},e.headers),t.headers)),a):a},v={number:e=>y(e),string:e=>String(e),array:e=>Array.isArray(e)?e:[e],boolean:e=>Boolean(e),bool:e=>Boolean(e)},y=e=>{if("string"!=typeof e)return Number.isNaN(Number(e))?e:Number(e);const t=new RegExp(/-?\d*\.?\d+/gm),r=e.match(t);return r?Number(r[0]):0},f=e=>e.replace(/[^A-Za-z\d _-]/g,"").split(/[-_ ]/).map((e=>{var t;return null!==(t=e.match(/[a-z]+|[A-Z]+[a-z]*/g))&&void 0!==t?t:e})).flat().filter((e=>""!==e)).map(((e,t)=>0===t?e.toLowerCase():e.charAt(0).toUpperCase()+e.slice(1).toLowerCase())).join(""),m=e=>"object"==typeof e&&null!==e&&!Array.isArray(e),g=e=>a(e)||i(e)||"string"==typeof e&&d(e)||m(e)&&1===Object.keys(e).length&&d(Object.keys(e)[0]),b={and:"AND","&":"AND","&&":"AND",or:"OR","|":"OR","||":"OR","=":"EQUAL",eq:"EQUAL",equal:"EQUAL",equals:"EQUAL","!=":"NOT_EQUAL","!":"NOT_EQUAL",ne:"NOT_EQUAL",notEqual:"NOT_EQUAL","+":"PLUS",plus:"PLUS",add:"PLUS",concat:"PLUS",join:"PLUS",merge:"PLUS","-":"SUBTRACT",subtract:"SUBTRACT",minus:"SUBTRACT",takeaway:"SUBTRACT","*":"MULTIPLY",x:"MULTIPLY",multiply:"MULTIPLY",times:"MULTIPLY","/":"DIVIDE",divide:"DIVIDE","÷":"DIVIDE",">":"GREATER_THAN",greaterThan:"GREATER_THAN",higher:"GREATER_THAN",larger:"GREATER_THAN","<":"LESS_THAN",lessThan:"LESS_THAN",lower:"LESS_THAN",smaller:"LESS_THAN","?":"CONDITIONAL",conditional:"CONDITIONAL",ifThen:"CONDITIONAL",regex:"REGEX",patternMatch:"REGEX",regexp:"REGEX",matchPattern:"REGEX",dataProperties:"OBJECT_PROPERTIES",data:"OBJECT_PROPERTIES",getData:"OBJECT_PROPERTIES",objectProperties:"OBJECT_PROPERTIES",objProps:"OBJECT_PROPERTIES",getProperty:"OBJECT_PROPERTIES",getObjProp:"OBJECT_PROPERTIES",stringSubstitution:"STRING_SUBSTITUTION",substitute:"STRING_SUBSTITUTION",stringSub:"STRING_SUBSTITUTION",replace:"STRING_SUBSTITUTION",split:"SPLIT",arraySplit:"SPLIT",count:"COUNT",length:"COUNT",get:"GET",api:"GET",post:"POST",sql:"SQL",pgSql:"SQL",postgres:"SQL",pg:"SQL",sqLite:"SQL",sqlite:"SQL",mySql:"SQL",graphQl:"GRAPHQL",graphql:"GRAPHQL",gql:"GRAPHQL",buildObject:"BUILD_OBJECT",build:"BUILD_OBJECT",object:"BUILD_OBJECT",match:"MATCH",switch:"MATCH",customFunctions:"CUSTOM_FUNCTIONS",customFunction:"CUSTOM_FUNCTIONS",objectFunctions:"CUSTOM_FUNCTIONS",function:"CUSTOM_FUNCTIONS",functions:"CUSTOM_FUNCTIONS",runFunction:"CUSTOM_FUNCTIONS",_:"PASSTHRU",passThru:"PASSTHRU",passthru:"PASSTHRU",pass:"PASSTHRU",ignore:"PASSTHRU",coerce:"PASSTHRU",convert:"PASSTHRU"},T=b,O=/(\$[^()]+)\((.*)\)/,C=(e,t={},r,a=!0)=>a?"string"==typeof e?j(e,t,r):m(e)?S(e,t,r):e:e,j=(e,t,r)=>{const a=O.exec(e);if(!a)return e;const i=a[1].trim(),s=a[2].split(",").map((e=>C(e.trim(),t,r)));return E(i,s,t,r)},S=(e,t,r)=>{if(a(e)||i(e))return e;const s=Object.entries(e),n=s.filter((([e])=>d(e))),o=s.filter((([e])=>!d(e))),l=n.reduce(((e,[a,i])=>e=Object.assign(Object.assign({},e),E(a,i,t,r))),{});return Object.assign(Object.assign({},l),Object.fromEntries(o))},E=(e,t,r,a)=>{const i=e.slice(1),s=n(i,T);return s?Array.isArray(t)?{operator:s,children:t}:m(t)&&!Object.keys(t).some((e=>d(e)))?Object.assign({operator:s},t):{operator:s,children:[t]}:i in r?{fragment:i,parameters:Object.assign({},t)}:a.includes(i)?Array.isArray(t)?{operator:i,args:t}:m(t)?"input"in t||"args"in t?Object.assign({operator:i},t):{operator:i,input:t}:{operator:i,args:[t]}:{[e]:t}};class q extends Error{constructor(e,t,r,a){super(e.message),Object.assign(this,e),this.operator=t,this.expression=a,this.errorData=e.errorData,r&&(this.name=r),"Error"===this.name&&(this.name="FigTreeError");const i=(t?"Operator: "+t:"")+("FigTreeError"===this.name?"":` - ${this.name}`),s=this.errorData?"\n"+JSON.stringify(this.errorData,null,2):"";this.prettyPrint=`${""!==i?i+"\n":""}${this.message}${"\n{}"===s?"":s}`}}const A=e=>e instanceof q,w=({fallback:e,operator:t,name:r,error:a,expression:i,returnErrorAsString:s=!1})=>{if(void 0!==e)return e;if(a instanceof q){if(!s)throw a;return a.prettyPrint}const n=new q("string"==typeof a?new Error(a):a,t,r,i);if(s)return n.prettyPrint;throw n},N=e=>m(e)&&"literal"in e,P=({value:e,name:t,expectedType:r})=>{if(N(r)){const{literal:a}=r;return!!a.includes(e)||I(t,e,`Literal(${a.map((e=>void 0===e?"undefined":`"${e}"`)).join(", ")})`)}if(Array.isArray(r))return!!r.some((r=>!0===P({value:e,name:t,expectedType:r})))||I(t,e,r.join("|"));return!!(0,L[r])(e)||I(t,e,r)},x=(...e)=>{const t=[];return e.forEach((e=>{const r=P(e);!0!==r&&t.push(r)})),!(t.length>0)||t.join("\n")},L={any:e=>void 0!==e,string:e=>"string"==typeof e,number:e=>"number"==typeof e,boolean:e=>"boolean"==typeof e,array:e=>Array.isArray(e),null:e=>null===e,object:e=>m(e),undefined:e=>void 0===e},I=(e,t,r)=>void 0===t&&e?`- Missing required property "${e}" (type: ${r})`:void 0!==e?`- Property "${e}" (value: ${k(t)}) is not of type: ${r}`:`- ${k(t)} is not of type: ${r}`,k=e=>{const t=void 0===e||Number.isNaN(e)?String(e):JSON.stringify(e);return l(t,50)},U=e=>{const t={};return e.forEach((e=>{e.aliases.forEach((r=>t[r]=e.name))})),t},R=(e,t)=>e.map((({name:e,required:r,type:a})=>{if(N(a)){const i=[...a.literal];return r||i.push(void 0),{name:e,value:t[e],expectedType:{literal:i}}}const i=Array.isArray(a)?a:[a];r||i.push("undefined");const s=1===i.length?i[0]:i;return{name:e,value:t[e],expectedType:s}})),D=(e,t)=>{const r=e.map(((e,r)=>[e,t[r]]));return Object.fromEntries(r)},_=e=>{if(e.length%2!=0)throw new Error("Even number of children required to make key/value pairs");const t=e.filter(((e,t)=>t%2==0)),r=x(...t.map((e=>({value:e,expectedType:["string","number","boolean"]}))));if(!0!==r)throw new Error(r);const a=e.filter(((e,t)=>t%2==1)),i={};return t.forEach(((e,t)=>{i[e]=a[t]})),i},Q=e=>m(e)&&1===Object.keys(e).length?Object.values(e)[0]:e,H=(t,r,a=void 0)=>{const i=r?e(t,r,a):t;return Array.isArray(i)?i.map((e=>Q(e))):r?null===i?null:Q(i):i},M=e=>/^https?:\/\/.+/.test(e),$=(...e)=>e.reduce(((e,t,r)=>{const a="/"===t[0]?1:0,i="/"===t.slice(-1)?-1:void 0,s=t.slice(a,i);return""===s?e:e+(0===r?"":"/")+s}),""),F=(e,t)=>r(void 0,void 0,void 0,(function*(){const{url:r,params:a={},data:i={},headers:s={},method:n="get"}=t;if(!r||""===r)throw new Error("Invalid url");try{return yield e[n]({url:r,headers:Object.assign({"Content-Type":"application/json",Accept:"application/json"},s),params:a,data:i})}catch(t){e.throwError(t)}})),B=(e,t)=>r(void 0,void 0,void 0,(function*(){var r,s,o,l,d,h;const{options:y,operators:f,operatorAliases:g}=t;let b=(null==y?void 0:y.allowJSONStringInput)?(e=>{if("string"!=typeof e)return e;try{const t=JSON.parse(e);return a(t)?t:e}catch(t){return e}})(e):e;const T=Object.keys(null!==(s=null===(r=t.options)||void 0===r?void 0:r.functions)&&void 0!==s?s:{});b=C(b,null===(o=t.options)||void 0===o?void 0:o.fragments,T,!y.noShorthand),Array.isArray(b)&&(b=yield G(b,t));const O=a(b),j=i(b);if(O&&(b=yield p(b,t)),y.evaluateFullObject&&!O&&!j)return c(yield W(b,t),t);if(!O&&!j)return y.supportDeprecatedValueNodes&&m(b)&&"value"in b?b.value:c(b,t);const{fallback:S}=b,E=null!==(l=null==y?void 0:y.returnErrorAsString)&&void 0!==l&&l;if(j){const e=b,[r,i]=yield G([e.fragment,e.parameters],t),s=C(null===(d=null==y?void 0:y.fragments)||void 0===d?void 0:d[r],y.fragments,T,!y.noShorthand);if(void 0===s)return w({fallback:yield B(S,t),error:`Fragment not defined: ${r}`,expression:b,returnErrorAsString:E});if(!a(s))return c(s,t);b=Object.assign(Object.assign(Object.assign({},e),s),i),delete b.fragment}const q=b,A=n(q.operator,g);if(!A)return w({fallback:yield B(S,t),error:`Invalid operator: ${q.operator}`,expression:b,returnErrorAsString:E});if(!t.operators[A])return w({fallback:yield B(S,t),error:`Excluded operator: ${q.operator}`,expression:b,returnErrorAsString:E});const{propertyAliases:N,evaluate:P,parseChildren:x}=f[A];let L=((e,t)=>u(t,(t=>t in e?e[t]:t)))(N,q);const I=yield z(L,t);j||Object.entries(I).forEach((([e,r])=>t.resolvedAliasNodes[e]=r));const k=j?Object.assign(Object.assign({},t),{resolvedAliasNodes:Object.assign(Object.assign({},t.resolvedAliasNodes),I)}):t;if("children"in L){if(Array.isArray(L.children)||(L.children=yield B(L.children,k)),!Array.isArray(L.children))return w({fallback:yield B(S,t),operator:A,name:"Type Error",error:'- Property "children" is not of type: array',expression:b,returnErrorAsString:E});L=yield x(L,k),delete L.children}let U;try{U=yield P(L,k)}catch(e){return w({fallback:yield B(L.fallback,t),operator:A,error:e,expression:L,returnErrorAsString:E})}const R=null!==(h=null==L?void 0:L.outputType)&&void 0!==h?h:null==L?void 0:L.type;if(!R)return U;const D=yield B(R,t);return D in v?v[D](U):w({fallback:yield B(S,t),operator:A,error:`- Invalid output type: ${D}`,expression:L,returnErrorAsString:E})})),G=(e,t)=>r(void 0,void 0,void 0,(function*(){return Array.isArray(e)?yield Promise.all(e.map((e=>B(e,t)))):yield B(e,t)})),z=(e,t)=>r(void 0,void 0,void 0,(function*(){var r;const a=Object.keys(e).filter(d);if(0===a.length)return{};const i=[];a.forEach((r=>i.push(B(e[r],t))));const s=yield Promise.all(i),n=D(a,yield Promise.all(i));for(const[e,t]of s.entries())"string"==typeof t&&d(t)&&(n[a[e]]=null!==(r=null==n?void 0:n[t])&&void 0!==r?r:t);return n})),W=(e,t)=>r(void 0,void 0,void 0,(function*(){if(!m(e))return e;const r=[],a=[];Object.entries(e).forEach((([r,i])=>{d(r)&&(a.push(r,B(i,t)),delete e[r])}));const i=yield Promise.all(a);t.resolvedAliasNodes=Object.assign(Object.assign({},t.resolvedAliasNodes),_(i)),Object.entries(e).forEach((([e,a])=>{r.push(e,B(a,t))}));const s=yield Promise.all(r);return c(_(s),t)})),J=[{name:"values",description:"Returns true if all values are true",aliases:[],required:!0,type:"array",default:[!0,!0]}],V=U(J),Y={description:"Logical AND",aliases:["and","&","&&"],parameters:J},X=e=>{const t=e.children;return Object.assign(Object.assign({},e),{values:t})},Z={propertyAliases:V,operatorData:Y,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){const r=yield G(e.values,t);return t.typeChecker(R(Y.parameters,{values:r})),r.reduce(((e,t)=>e&&!!t),!0)})),parseChildren:X},K=[{name:"values",description:"Returns true if any values are true",aliases:[],required:!0,type:"array",default:[!0,!1]}],ee=U(K),te={description:"Logical OR",aliases:["or","|","||"],parameters:K},re={propertyAliases:ee,operatorData:te,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){const r=yield G(e.values,t);return t.typeChecker(R(te.parameters,{values:r})),r.reduce(((e,t)=>e||!!t),!1)})),parseChildren:X},ae=[{name:"values",description:"Array of values to check for equality",aliases:[],required:!0,type:"array",default:["These are equal","These are equal"]},{name:"caseInsensitive",description:"If the values are strings, ignore the case (default: false)",aliases:[],required:!1,type:"boolean",default:!1},{name:"nullEqualsUndefined",description:"Whether a null value should be considered equal to an undefined value (default: false)",aliases:[],required:!1,type:"boolean",default:!1}],ie=U(ae),se={description:"Test multiple values are equal",aliases:["=","eq","equal","equals"],parameters:ae},ne={propertyAliases:ie,operatorData:se,evaluate:(e,a)=>r(void 0,void 0,void 0,(function*(){var r,i,s;const[n,o,l]=yield G([e.values,e.caseInsensitive,e.nullEqualsUndefined],a);a.typeChecker(R(se.parameters,{values:n,caseInsensitive:o,nullEqualsUndefined:l}));const u=(void 0!==o?o:null!==(i=null===(r=a.options)||void 0===r?void 0:r.caseInsensitive)&&void 0!==i&&i)&&n.every((e=>"string"==typeof e))?n.map((e=>e.toLowerCase())):n;return!(void 0!==l?l:void 0!==(null===(s=a.options)||void 0===s?void 0:s.nullEqualsUndefined)&&a.options.nullEqualsUndefined)||null!==u[0]&&void 0!==u[0]?u.every((e=>t(e,u[0]))):u.every((e=>null==e))})),parseChildren:X},oe=[{name:"values",description:"Array of values to check for inequality",aliases:[],required:!0,type:"array",default:["These items","don't match"]},{name:"caseInsensitive",description:"If the values are strings, ignore the case (default: false)",aliases:[],required:!1,type:"boolean",default:!1},{name:"nullEqualsUndefined",description:"Whether a null value should be considered equal to an undefined value (default: false)",aliases:[],required:!1,type:"boolean",default:!1}],le=U(oe),ue={description:"Test if any values are different",aliases:["!=","!","ne","notEqual"],parameters:oe},de={propertyAliases:le,operatorData:ue,evaluate:(e,a)=>r(void 0,void 0,void 0,(function*(){var r,i,s;const[n,o,l]=yield G([e.values,e.caseInsensitive,e.nullEqualsUndefined],a);a.typeChecker(R(ue.parameters,{values:n,caseInsensitive:o,nullEqualsUndefined:l}));const u=(void 0!==o?o:null!==(i=null===(r=a.options)||void 0===r?void 0:r.caseInsensitive)&&void 0!==i&&i)&&n.every((e=>"string"==typeof e))?n.map((e=>e.toLowerCase())):n;return!(void 0!==l?l:void 0!==(null===(s=a.options)||void 0===s?void 0:s.nullEqualsUndefined)&&a.options.nullEqualsUndefined)||null!==u[0]&&void 0!==u[0]?u.some((e=>!t(e,u[0]))):u.some((e=>null===e&&void 0===e))})),parseChildren:X},ce=[{name:"values",description:"Array of values to check to add together",aliases:[],required:!0,type:"array",default:[1,2,3]},{name:"type",description:"Data type to coerce input values to before addition",aliases:[],required:!1,type:{literal:["string","array","number","boolean","bool"]},default:"string"}],pe=U(ce),he={description:"Add, concatenate or merge multiple values",aliases:["+","plus","add","concat","join","merge"],parameters:ce},ve={propertyAliases:pe,operatorData:he,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){const r=yield G(e.values,t);return t.typeChecker(R(he.parameters,{values:r,type:e.type})),0===r.length?r:"string"===(null==e?void 0:e.type)?r.reduce(((e,t)=>e.concat(t)),""):"array"===(null==e?void 0:e.type)?r.reduce(((e,t)=>e.concat(t)),[]):r.every((e=>"string"==typeof e||Array.isArray(e)))?r.reduce(((e,t)=>e.concat(t))):r.every((e=>m(e)))?r.reduce(((e,t)=>Object.assign(Object.assign({},e),t)),{}):r.reduce(((e,t)=>e+t))})),parseChildren:X},ye=[{name:"values",description:"Array of values - 2nd element will be subtracted from the first",aliases:[],required:!1,type:"array",default:[10,5]},{name:"from",description:"Numerical value that will be subtracted from",aliases:["subtractFrom"],required:!1,type:"number",default:100},{name:"subtract",description:"Numerical value to subtract",aliases:[],required:!1,type:"number",default:50}],fe=U(ye),me={description:"Subtract one numerical value from another",aliases:["-","subtract","minus","takeaway"],parameters:ye},ge={propertyAliases:fe,operatorData:me,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){const[r,a,i]=yield G([e.values,e.from,e.subtract],t);t.typeChecker(R(me.parameters,{values:r,from:a,subtract:i}));const s=null!=r?r:[a,i].filter((e=>void 0!==e));if(s.length<2)throw new Error("- Not enough values provided");if(s.some((e=>"number"!=typeof e)))throw new Error("- Not all values are numbers");return s[0]-s[1]})),parseChildren:X},be=[{name:"values",description:"Array of values whose product will be calculated",aliases:[],required:!0,type:"array",default:[5,5]}],Te=U(be),Oe={description:"Multiply several numerical values together",aliases:["*","x","multiply","times"],parameters:be},Ce={propertyAliases:Te,operatorData:Oe,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){const r=yield G(e.values,t);if(t.typeChecker(R(Oe.parameters,{values:r})),0===r.length)return 0;if(r.some((e=>"number"!=typeof e)))throw new Error("- Not all values are numbers");return r.reduce(((e,t)=>e*t))})),parseChildren:X},je=[{name:"values",description:"Array of values - 1st element will be divided by the first",aliases:[],required:!1,type:"array",default:[100,10]},{name:"dividend",description:"The number that will be divided",aliases:["divide"],required:!1,type:"number",default:99},{name:"divisor",description:"The number that dividend will be divided by",aliases:["by","divideBy"],required:!1,type:"number",default:3},{name:"output",description:"Whether to output a quotient, remainder or decimal",aliases:[],required:!1,type:{literal:["quotient","remainder"]},default:"quotient"}],Se=U(je),Ee={description:"Divide one numerical value by another",aliases:["/","divide","÷"],parameters:je},qe={propertyAliases:Se,operatorData:Ee,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){const[r,a,i,s]=yield G([e.values,e.dividend,e.divisor,e.output],t);t.typeChecker(R(Ee.parameters,{values:r,dividend:a,divisor:i,output:s}));const n=null!=r?r:[a,i].filter((e=>void 0!==e));if(n.length<2)throw new Error("- Not enough values provided");if(n.some((e=>"number"!=typeof e)))throw new Error("- Not all values are numbers");if(0===n[1])throw new Error("Division by zero!");switch(s){case"quotient":return Math.floor(n[0]/n[1]);case"remainder":return n[0]%n[1];default:return n[0]/n[1]}})),parseChildren:X},Ae=[{name:"values",description:"Array of values - 1st element will be compared to the second",aliases:[],required:!0,type:"array",default:[10,9]},{name:"strict",description:"Whether value must be strictly greater than (i.e. not equal) (default: false)",aliases:[],required:!1,type:"boolean",default:!1}],we=U(Ae),Ne={description:"Test if a value is greater than (or equal to) another value",aliases:[">","greaterThan","higher","larger"],parameters:Ae},Pe={propertyAliases:we,operatorData:Ne,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){const[r,a=!0]=yield G([e.values,e.strict],t);if(t.typeChecker(R(Ne.parameters,{values:r,strict:a})),r.length<2)throw new Error("- Not enough values provided");const[i,s]=r;return i===s&&!a||i>s})),parseChildren:X},xe=[{name:"values",description:"Array of values - 1st element will be compared to the second",aliases:[],required:!0,type:"array",default:[9,10]},{name:"strict",description:"Whether value must be strictly smaller than (i.e. not equal) (default: false)",aliases:[],required:!1,type:"boolean",default:!1}],Le=U(xe),Ie={description:"Test if a value is smaller than (or equal to) another value",aliases:["<","lessThan","lower","smaller"],parameters:xe},ke={propertyAliases:Le,operatorData:Ie,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){const[r,a=!0]=yield G([e.values,e.strict],t);if(t.typeChecker(R(Ie.parameters,{values:r,strict:a})),r.length<2)throw new Error("- Not enough values provided");const[i,s]=r;return i===s&&!a||i<s})),parseChildren:X},Ue=[{name:"condition",description:"The expression to check for truthiness",aliases:[],required:!0,type:"any",default:!0},{name:"valueIfTrue",description:"Value to return if condition is true",aliases:["ifTrue"],required:!0,type:"any",default:"The condition is true"},{name:"valueIfFalse",description:"Value to return if condition is false",aliases:["ifFalse","ifNot"],required:!0,type:"any",default:"The condition is false"}],Re=U(Ue),De={description:"Return a value based on a condition",aliases:["?","conditional","ifThen"],parameters:Ue},_e={propertyAliases:Re,operatorData:De,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){t.typeChecker(R(De.parameters,{condition:e.condition,valueIfTrue:e.valueIfTrue,valueIfFalse:e.valueIfFalse}));return(yield B(e.condition,t))?yield B(e.valueIfTrue,t):yield B(e.valueIfFalse,t)})),parseChildren:e=>{const[t,r,a]=e.children;return Object.assign(Object.assign({},e),{condition:t,valueIfTrue:r,valueIfFalse:a})}},Qe=[{name:"testString",description:"The string to test",aliases:["string","value"],required:!0,type:"string",default:"test-this"},{name:"pattern",description:"The regular expression pattern",aliases:["regex","regexp","regExp","re"],required:!0,type:"string",default:"^[a-z]{4}-[a-z]{4}$"}],He=U(Qe),Me={description:"Compare a string against a regex pattern",aliases:["regex","patternMatch","regexp","matchPattern"],parameters:Qe},$e={propertyAliases:He,operatorData:Me,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){const[r,a]=yield G([e.testString,e.pattern],t);t.typeChecker(R(Me.parameters,{testString:r,pattern:a}));return new RegExp(a).test(r)})),parseChildren:e=>{const[t,r]=e.children;return Object.assign(Object.assign({},e),{testString:t,pattern:r})}},Fe=[{name:"property",description:'The path to the required property (e.g. "user.firstName")',aliases:["path","propertyName"],required:!0,type:"string",default:"path.to[0].my.data"},{name:"additionalData",description:"Additional data objects to be considered",aliases:["additional","objects","data","additionalObjects"],required:!1,type:"object",default:{}}],Be=U(Fe),Ge={description:"Extract values from data objects",aliases:["dataProperties","data","getData","objectProperties","objProps","getProperty","getObjProp"],parameters:Fe},ze={propertyAliases:Be,operatorData:Ge,evaluate:(t,a)=>r(void 0,void 0,void 0,(function*(){var r,i;const[s,n={}]=yield G([t.property,t.additionalData],a);a.typeChecker(R(Ge.parameters,{property:s,additionalData:n}));const o=Object.assign(Object.assign({},null!==(i=null===(r=a.options)||void 0===r?void 0:r.data)&&void 0!==i?i:{}),n);return e(o,s)})),parseChildren:e=>{const[t,r]=e.children,a=Object.assign(Object.assign({},e),{property:t});return void 0!==r&&(a.fallback=r),a}},We=[{name:"string",description:"A parameterised (%1, %2) string where the parameters are to be replaced",aliases:[],required:!0,type:"string",default:"Hello, %1"},{name:"substitutions",description:"An array of substitution values for the parameterised string",aliases:["replacements","values"],required:!1,type:["array","object"],default:{}},{name:"trimWhiteSpace",description:"Whether or not to trim white space from either end of the substituted strings (default: true)",aliases:["trim","trimWhitespace"],required:!1,type:"boolean",default:!0},{name:"substitutionCharacter",description:'Which character to search for in original string for replacement -- can be "%" or "$" (default: "%")',aliases:["subCharacter","subChar"],required:!1,type:"string",default:"$"},{name:"numberMapping",description:"Rules for mapping number values to text strings, such as pluralisation.",aliases:["numMap","numberMap","pluralisation","pluralization","plurals"],required:!1,type:"object",default:{}}],Je=U(We),Ve={description:"Replace values in a string using simple parameter substitution",aliases:["stringSubstitution","substitute","stringSub","replace"],parameters:We},Ye={propertyAliases:Je,operatorData:Ve,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){const[r,a={},i=!0,s="%",n={}]=yield G([e.string,e.substitutions,e.trimWhiteSpace,e.substitutionCharacter,e.numberMapping],t);if(t.typeChecker(R(Ve.parameters,{string:r,substitutions:a,trimWhiteSpace:i,substitutionCharacter:s,numberMapping:n})),Array.isArray(a)){const e="$"===s?"$":"%",t=new RegExp(`(?<!\\\\)(${"%"===e?"%":"\\$"}[\\d]+)`,"g"),n=(r.match(t)||[]).sort(((e,t)=>Number(e.slice(1))-Number(t.slice(1)))),o=new Set(n),l=D(Array.from(o),a.map((e=>i?String(e).trim():e)));return r.split(t).map((e=>e in l?l[e]:e)).join("").replace(`\\${e}`,e)}const o=/(?<!\\)({{(?:[A-Za-z0-9_.]|\[[0-9]+\])+}})/g,l=[];for(const e of r.split(o)){if(!/(?<!\\){{(.+)}}/.exec(e)){l.push(e.replace("\\{{","{{"));continue}const r=yield Xe(e,a,n,t);l.push(i?String(r).trim():r)}return l.join("")})),parseChildren:e=>{const[t,...r]=e.children;return Object.assign(Object.assign({},e),{string:t,substitutions:r})}},Xe=(t,a,i,s)=>r(void 0,void 0,void 0,(function*(){var r,n;const o=null!==(n=null===(r=s.options)||void 0===r?void 0:r.data)&&void 0!==n?n:{},l=t.replace(/{{(.+)}}/,"$1"),u=yield B(e(a,l,e(o,l,"")),s);if("number"!=typeof u)return u;if(!(l in i))return u;const d=i[l];if(u in d)return d[u].replace("{}",String(u));const c=Object.keys(i[l]),p=c.find((e=>e.startsWith(">")));if(p){if(u>Number(p.slice(1)))return null==d?void 0:d[p]}const h=c.find((e=>e.startsWith("<")));if(h){if(u<Number(h.slice(1)))return null==d?void 0:d[h]}return d.other?d.other.replace("{}",String(u)):u})),Ze=[{name:"values",description:"An array to count",aliases:[],required:!0,type:"array",default:[1,2,3,4,5]}],Ke=U(Ze),et={description:"Count elements in an array",aliases:["count","length"],parameters:Ze},tt={propertyAliases:Ke,operatorData:et,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){const r=yield G(e.values,t);return t.typeChecker(R(et.parameters,{values:r})),r.length})),parseChildren:e=>{const[t]=e.children;return Object.assign(Object.assign({},e),{values:t})}},rt=[{name:"value",description:"The string to be split",aliases:["string"],required:!0,type:"string",default:"Alpha, Bravo, Charlie"},{name:"delimiter",description:"The value to split the string on (default is white space)",aliases:["separator"],required:!1,type:"string",default:","},{name:"trimWhiteSpace",description:"Whether to trim white space from around the resulting elements (default: true)",aliases:["trim","trimWhitespace"],required:!1,type:"boolean",default:!0},{name:"excludeTrailing",description:"If the input string ends in a delimiter, there will be an additional blank element if this value is false (default: true)",aliases:["removeTrailing","excludeTrailingDelimiter"],required:!1,type:"boolean",default:!0}],at=U(rt),it={description:"Split a string into an array",aliases:["split","arraySplit"],parameters:rt},st=" ",nt={propertyAliases:at,operatorData:it,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){var r,a,i;const[s,n,o,l]=yield G([e.value,null!==(r=e.delimiter)&&void 0!==r?r:st,null===(a=e.trimWhiteSpace)||void 0===a||a,null===(i=e.excludeTrailing)||void 0===i||i],t);t.typeChecker(R(it.parameters,{value:s,delimiter:n,trimWhiteSpace:o,excludeTrailing:l}));let u=s.split(n);return o&&(u=u.map((e=>e.trim()))),l&&""===u[u.length-1]&&u.pop(),u})),parseChildren:e=>{const[t,r=st]=e.children;return Object.assign(Object.assign({},e),{value:t,delimiter:r})}},ot=[{name:"query",description:"SQL query string, with parameterised replacements (e.g. $1, $2, etc)",aliases:["text"],required:!0,type:"string"},{name:"values",description:"An array/object of values to replace the SQL string parameters, as per SQL connection specifications ",aliases:["replacements"],required:!1,type:["array","object"]},{name:"single",description:"Specify if returning a single record",aliases:["singleRecord"],required:!1,type:"boolean"},{name:"flatten",description:"Specify whether to flatten resulting record objects to arrays of values",aliases:["flat","array"],required:!1,type:"boolean"},{name:"useCache",description:"Whether or not the FigTree cache is used",aliases:[],required:!1,type:"boolean"}],lt=U(ot),ut={description:"Query an SQL database",aliases:["sql","pgSql","postgres","pg","sqLite","sqlite","mySql"],parameters:ot},dt={propertyAliases:lt,operatorData:ut,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){var a,i,s;const n=null===(a=t.options)||void 0===a?void 0:a.sqlConnection;if(!n)throw new Error("No SQL database connection provided");const[o,l,u,d,c,p]=yield G([e.query,e.values||[],e.single,e.flatten,e.useCache,e.type],t);t.typeChecker(R(ut.parameters,{query:o,single:u,flatten:d,values:l,useCache:c}));const h=null===(s=null!==(i=e.useCache)&&void 0!==i?i:t.options.useCache)||void 0===s||s;{const e=t.cache.useCache(h,((e,t,a,i,s)=>r(void 0,void 0,void 0,(function*(){const r=(yield n.query({query:e,values:t}))||[];["array","string","number"].includes(null!=s?s:"")&&(i=!0);const o=i?r.map((e=>{const t=Object.values(e);return t.length<=1?t[0]:t})):r;return a?o[0]:o}))),o,l,u,d,p);return e}})),parseChildren:e=>{const[t,...r]=e.children;return Object.assign(Object.assign({},e),{query:t,values:r})}},ct=[{name:"query",description:"GraphQL query string",aliases:[],required:!0,type:"string",default:'query getCountries {\n countries(filter: {continent: {eq: "OC"}}) {\n name\n }\n }'},{name:"url",description:"Endpoint for the GraphQL request (if not already provided in options)",aliases:["endpoint"],required:!1,type:["string","null"],default:"https://countries.trevorblades.com/"},{name:"headers",description:"HTTP Headers (if not already provided in options)",aliases:[],required:!1,type:"object",default:{}},{name:"variables",description:"Values for the variables used in query (key-value pairs)",aliases:[],required:!1,type:"object",default:{}},{name:"returnNode",description:"Property path to extract from the query response",aliases:["outputNode","returnProperty"],required:!1,type:"string",default:"data.countries[1].name"},{name:"useCache",description:"Whether or not the FigTree cache is used",aliases:[],required:!1,type:"boolean",default:!0}],pt=U(ct),ht={description:"GraphQL request",aliases:["graphQl","graphql","gql"],parameters:ct},vt={propertyAliases:pt,operatorData:ht,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){var a,i,s,n,o,l,u;const d=null!==(a=t.graphQLClient)&&void 0!==a?a:t.httpClient;if(!d)throw new Error("No HTTP client provided for GraphQL connection");const[c,p,h,v,y,f]=yield G([e.query,e.url,yield W(e.variables,t),e.returnNode,e.headers,e.useCache],t),{url:m,headers:g}=p instanceof Object?p:{url:p,headers:null};t.typeChecker([...R(ht.parameters,{url:m,query:c,variables:h,returnNode:v,headers:y,useCache:f}),{name:"headers",value:g,expectedType:["object","null"]}]);const b=m&&"graphqlendpoint"!==m.toLowerCase()?m:"",T=null!==(n=null!==(s=null===(i=t.options.graphQLConnection)||void 0===i?void 0:i.endpoint)&&void 0!==s?s:t.options.baseEndpoint)&&void 0!==n?n:"",O=M(b)?b:$(T,b),C={query:c,variables:h},j=null===(o=null!=f?f:t.options.useCache)||void 0===o||o,S=yield t.cache.useCache(j,((e,t,a,i)=>r(void 0,void 0,void 0,(function*(){const r=yield F(d,{url:e,method:"post",data:t,headers:a});return H(null==r?void 0:r.data,i)}))),O,C,Object.assign(Object.assign(Object.assign(Object.assign({},null===(l=t.options.graphQLConnection)||void 0===l?void 0:l.headers),null===(u=t.options)||void 0===u?void 0:u.headers),g),y),v);return S})),parseChildren:(e,t)=>r(void 0,void 0,void 0,(function*(){const[r,a="",i,...s]=yield G(e.children,t),n=Array.isArray(i)?i:[i],o=s.slice(0,n.length),l=D(n,o),u=Object.assign(Object.assign({},e),{query:r,url:a,variables:l});return s.length>n.length&&(u.returnNode=s.pop()),u}))},yt=[{name:"url",description:"Endpoint URL",aliases:["endpoint"],required:!0,type:"string",default:"https://restcountries.com/v3.1/name/zealand"},{name:"returnProperty",description:"Property from request result",aliases:["outputProperty"],required:!1,type:"string",default:"result.path"},{name:"headers",description:"HTTP Headers",aliases:[],required:!1,type:"object",default:{}},{name:"parameters",description:"Query parameters (key-value)",aliases:["queryParams","queryParameters","urlQueries"],required:!1,type:"object",default:{}},{name:"useCache",description:"Whether or not the FigTree cache is used",aliases:[],required:!1,type:"boolean",default:!0}],ft=U(yt),mt={description:"HTTP GET Request",aliases:["get","api"],parameters:yt},gt=(e,t)=>r(void 0,void 0,void 0,(function*(){const[r="",a,...i]=yield G(e.children,t),s=Array.isArray(a)?a:[a],n=i.slice(0,s.length),o=D(s,n),l=Object.assign(Object.assign({},e),{url:r,parameters:o});return i.length>s.length&&(l.returnProperty=i.pop()),l})),bt=gt,Tt={propertyAliases:ft,operatorData:mt,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){var a,i,s;const n=t.httpClient;if(!n)throw new Error("No HTTP client provided");const[o,l,u,d,c]=yield G([e.url,yield W(e.parameters,t),e.returnProperty,yield W(e.headers,t),e.useCache],t),{url:p,headers:h}=o instanceof Object?o:{url:o,headers:null};t.typeChecker([...R(mt.parameters,{url:p,returnProperty:u,headers:d,parameters:l,useCache:c}),{name:"headers",value:h,expectedType:["object","null"]}]);const v=null!==(a=t.options.baseEndpoint)&&void 0!==a?a:"",y=Object.assign(Object.assign(Object.assign({},null===(i=t.options)||void 0===i?void 0:i.headers),h),d),f=null===(s=null!=c?c:t.options.useCache)||void 0===s||s,m=yield t.cache.useCache(f,((e,t,a,i)=>r(void 0,void 0,void 0,(function*(){const r=yield F(n,{url:e,params:t,headers:a});return H(r,i)}))),M(p)?p:$(v,p),l,y,u);return m})),parseChildren:gt},Ot=[{name:"url",description:"Endpoint URL",aliases:["endpoint"],required:!0,type:"string",default:"https://jsonplaceholder.typicode.com/posts"},{name:"returnProperty",description:"Property path from request result",aliases:["outputProperty"],required:!1,type:"string",default:"result.path"},{name:"headers",description:"HTTP Headers",aliases:[],required:!1,type:"object",default:{}},{name:"parameters",description:"JSON Body parameters (key-value)",aliases:["bodyJson","data"],required:!1,type:"object",default:{}},{name:"useCache",description:"Whether or not the FigTree cache is used",aliases:[],required:!1,type:"boolean",default:!0}],Ct=U(Ot),jt={description:"HTTP POST Request",aliases:["post"],parameters:Ot},St={propertyAliases:Ct,operatorData:jt,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){var a,i,s;const n=t.httpClient;if(!n)throw new Error("No HTTP client provided");const[o,l,u,d,c]=yield G([e.url,yield W(e.parameters,t),e.returnProperty,yield W(e.headers,t),e.useCache],t),{url:p,headers:h}=o instanceof Object?o:{url:o,headers:null};t.typeChecker([...R(jt.parameters,{url:p,headers:d,data:l,returnProperty:u,useCache:c}),{name:"headers",value:h,expectedType:["object","null"]}]);const v=null!==(a=t.options.baseEndpoint)&&void 0!==a?a:"",y=Object.assign(Object.assign(Object.assign({},null===(i=t.options)||void 0===i?void 0:i.headers),h),d),f=null!==(s=null!=c?c:t.options.useCache)&&void 0!==s&&s,m=yield t.cache.useCache(f,((e,t,a,i)=>r(void 0,void 0,void 0,(function*(){const r=yield F(n,{url:e,data:t,headers:a,method:"post"});return H(r,i)}))),M(p)?p:$(v,p),l,y,u);return m})),parseChildren:bt},Et=[{name:"properties",description:'An array of objects, each with a "key" property and a "value" property',aliases:["values","keyValPairs","keyValuePairs"],required:!0,type:"array",default:["firstKey","firstValue","secondKey","secondValue"]}],qt=U(Et),At={description:"Construct an object using objects defining keys and values",aliases:["buildObject","build","object"],parameters:Et},wt={propertyAliases:qt,operatorData:At,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){t.typeChecker(R(At.parameters,{properties:e.properties}));const a=e.properties.filter((e=>e instanceof Object&&"key"in e&&"value"in e)).map((({key:e,value:a})=>{return i=[e,a],r(void 0,void 0,void 0,(function*(){const[e,r]=yield G(i,t);return t.typeChecker({name:"key",value:e,expectedType:["string","number","boolean"]}),[e,r]}));var i}));return Object.fromEntries(yield Promise.all(a))})),parseChildren:e=>{const t=e.children;if(t.length%2!=0)throw new Error("Even number of children required to make key/value pairs");const r=t.filter(((e,t)=>t%2==0)),a=t.filter(((e,t)=>t%2==1)),i=r.map(((e,t)=>({key:e,value:a[t]})));return Object.assign(Object.assign({},e),{properties:i})}},Nt=[{name:"matchExpression",description:"Expression to match against",aliases:["match"],required:!0,type:["string","number","boolean"],default:"matchMe"},{name:"branches",description:"Object whose keys are compared against the match expression. The value of the matching key is returned",aliases:["arms","cases"],required:!1,type:["object","array"],default:{matchMe:"YES",nonMatch:"NO"}},{name:"[...branches]",description:"Branch properties can optionally be placed at the operator root",aliases:[],required:!1,type:["object","array"]}],Pt={propertyAliases:U(Nt),operatorData:{description:"Return different values depending on a matching expression",aliases:["match","switch"],parameters:Nt},evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){var r;const i=yield B(e.matchExpression,t);t.typeChecker({name:"matchExpression",value:i,expectedType:["string","number","boolean"]});const s=Array.isArray(e.branches)?_(e.branches):null!==(r=e.branches)&&void 0!==r?r:{},n=a(s)?yield B(s,t):s;if(!m(n))throw new Error("Branches don't evaluate to an object");if(i in n)return yield B(n[i],t);if("fallback"in n)return yield B(n.fallback,t);if(i in e)return yield B(e[i],t);throw new Error(`No match found for ${i}`)})),parseChildren:(e,t)=>r(void 0,void 0,void 0,(function*(){const[r,...a]=e.children,i=_(yield G(a,t));return Object.assign(Object.assign({},e),{matchExpression:r,branches:i})}))},xt=[{name:"functionName",description:"Path (in options.functions) to the required function",aliases:["functionPath","funcName","function","path","name"],required:!0,type:"string",default:null},{name:"args",description:"Arguments for the function",aliases:["arguments","variables"],required:!1,type:["array","any"],default:[]},{name:"input",description:"Argument for the function if a single input parameter",aliases:["arg"],required:!1,type:"any",default:"input"},{name:"useCache",description:"Whether or not the FigTree cache is used",aliases:[],required:!1,type:"boolean",default:!1}],Lt=U(xt),It={description:"Call a custom function (defined in options)",aliases:["customFunctions","customFunction","objectFunctions","function","functions","runFunction"],parameters:xt},kt={propertyAliases:Lt,operatorData:It,evaluate:(t,a)=>r(void 0,void 0,void 0,(function*(){var i,s,n,o;const[l,u=[],d,c]=yield G([t.functionName,t.args,t.input,t.useCache],a);a.typeChecker(R(It.parameters,{functionName:l,args:u}));const{data:p,functions:h}=a.options;if(!h)throw new Error("- No functions defined");const v=null!==(n=null!==(s=null!==(i=e(h,`${l}.function`,null))&&void 0!==i?i:e(h,l,null))&&void 0!==s?s:e(p,l,null))&&void 0!==n?n:e(a.options,l,null);if(!v||"function"!=typeof v)throw new Error(`- No function found: "${l}"`);const y=null!==(o=null!=c?c:a.options.useCache)&&void 0!==o&&o,f=[...void 0===d?[]:[yield W(d,a)],...Array.isArray(u)?u:[u]];return yield a.cache.useCache(y,((e,...t)=>r(void 0,void 0,void 0,(function*(){return yield v(...t)}))),l,...f)})),parseChildren:e=>{const[t,...r]=e.children;return Object.assign(Object.assign({},e),{functionName:t,args:r})}},Ut=[{name:"value",description:"Value to pass through",aliases:["_","data"],required:!0,type:"any",default:null}],Rt=U(Ut),Dt={description:"Pass through a value unchanged (or change its type)",aliases:["_","passThru","passthru","pass","ignore","coerce","convert"],parameters:Ut},_t={propertyAliases:Rt,operatorData:Dt,evaluate:(e,t)=>r(void 0,void 0,void 0,(function*(){return t.typeChecker(R(Dt.parameters,{value:e.value})),yield B(e.value,t)})),parseChildren:e=>{const[...t]=e.children,r=1===(null==t?void 0:t.length)?t[0]:t;return Object.assign(Object.assign({},e),{value:r})}};var Qt=Object.freeze({__proto__:null,AND:Z,BUILD_OBJECT:wt,CONDITIONAL:_e,COUNT:tt,CUSTOM_FUNCTIONS:kt,DIVIDE:qe,EQUAL:ne,GET:Tt,GRAPHQL:vt,GREATER_THAN:Pe,LESS_THAN:ke,MATCH:Pt,MULTIPLY:Ce,NOT_EQUAL:de,OBJECT_PROPERTIES:ze,OR:re,PASSTHRU:_t,PLUS:ve,POST:St,REGEX:$e,SPLIT:nt,SQL:dt,STRING_SUBSTITUTION:Ye,SUBTRACT:ge});class Ht{constructor(e){var t,a;this.useCache=(e,t,...a)=>r(this,void 0,void 0,(function*(){if(!e)return yield t(...a);const r=Mt(a),i=r in this.store,s=Date.now(),n=i&&s-this.store[r].timestamp>1e3*this.maxTime;if(i)return this.queue=this.queue.filter((e=>e!==r)),this.queue.unshift(r),this.store[r].timestamp=s,n&&(this.store[r].result=yield t(...a)),this.store[r].result;const o=yield t(...a);return this.store[r]={result:o,timestamp:s},this.queue.unshift(r),this.resizeCache(),o})),this.getMax=()=>this.maxSize,this.setMax=e=>{this.maxSize=e,this.resizeCache()},this.getMaxTime=()=>this.maxTime,this.setMaxTime=e=>{this.maxTime=e},this.getCache=()=>this.store,this.setCache=e=>this.store=e,this.resizeCache=()=>{if(this.queue.length>this.maxSize){this.queue.slice(this.maxSize).forEach((e=>delete this.store[e])),this.queue=this.queue.slice(0,this.maxSize)}},this.store={},this.queue=[],this.maxSize=null!==(t=null==e?void 0:e.maxSize)&&void 0!==t?t:50,this.maxTime=null!==(a=null==e?void 0:e.maxTime)&&void 0!==a?a:1800}}const Mt=e=>e.map((e=>"object"==typeof e?JSON.stringify(e):e)).join("_"),$t=e=>e||("undefined"!=typeof window&&"document"in window&&"fetch"in window?Bt(window.fetch):void 0),Ft=e=>({get:t=>r(void 0,void 0,void 0,(function*(){return(yield e(Object.assign(Object.assign({},t),{method:"get"}))).data})),post:t=>r(void 0,void 0,void 0,(function*(){return(yield e(Object.assign(Object.assign({},t),{method:"post"}))).data})),throwError:t=>{var r,a,i,s;if(e.isAxiosError(t)&&t.response)throw t.errorData={status:null===(r=t.response)||void 0===r?void 0:r.status,error:null===(a=t.response)||void 0===a?void 0:a.statusText,url:null===(i=t.config)||void 0===i?void 0:i.url,response:null===(s=t.response)||void 0===s?void 0:s.data},t;throw new Error("Network error: "+(null==t?void 0:t.message))}}),Bt=e=>({get:t=>r(void 0,void 0,void 0,(function*(){const{url:r,headers:a,params:i={}}=t,s=Object.keys(i).length>0?`?${new URLSearchParams(i).toString()}`:"",n=yield e(r+s,{headers:a,method:"GET"}),o=yield n.json();if(!n.ok){const e=new Error("Problem with GET request");throw e.name="FetchError",e.errorData={status:n.status,error:n.statusText,url:n.url,response:o},console.log(e.errorData),e}return o})),post:t=>r(void 0,void 0,void 0,(function*(){const{url:r,headers:a,params:i,data:s}=t,n=new URLSearchParams(i),o=n.size>0?`?${n.toString()}`:"",l=yield e(r+o,{headers:a,body:JSON.stringify(s),method:"POST"}),u=yield l.json();if(!l.ok){const e=new Error("Problem with POST request");throw e.name="FetchError",e.errorData={status:l.status,error:l.statusText,url:l.url,response:u},console.log(e.errorData),e}return u})),throwError:e=>{throw e}});class Gt{constructor(e={}){var t,r,a;this.typeChecker=(...e)=>{const t=1===e.length&&Array.isArray(e[0])?e[0]:e,r=x(...t);if(!0===r)return;const a=new Error(r);throw a.name="Type Error",a},this.getCache=()=>this.cache.getCache(),this.setCache=e=>this.cache.setCache(e),this.getVersion=()=>"2.18.1",this.options=Wt(e),this.operators=o(Qt,null!==(r=null===(t=this.options)||void 0===t?void 0:t.excludeOperators)&&void 0!==r?r:[],b),this.operatorAliases=b,this.cache=new Ht({maxSize:e.maxCacheSize,maxTime:e.maxCacheTime}),this.graphQLClient=$t(null===(a=e.graphQLConnection)||void 0===a?void 0:a.httpClient),this.httpClient=$t(e.httpClient)}evaluate(e,t={}){var a;return r(this,void 0,void 0,(function*(){const r=h(this.options,Wt(t),!0);return t.httpClient&&(this.httpClient=$t(t.httpClient)),(null===(a=t.graphQLConnection)||void 0===a?void 0:a.httpClient)&&(this.graphQLClient=$t(t.graphQLConnection.httpClient)),r.maxCacheSize&&r.maxCacheSize!==this.cache.getMax()&&this.cache.setMax(r.maxCacheSize),r.maxCacheTime&&r.maxCacheTime!==this.cache.getMaxTime()&&this.cache.setMaxTime(r.maxCacheTime),yield B(e,{options:r,operators:t.excludeOperators?o(Qt,t.excludeOperators,b):this.operators,operatorAliases:this.operatorAliases,typeChecker:r.skipRuntimeTypeCheck?()=>{}:this.typeChecker,resolvedAliasNodes:{},cache:this.cache,graphQLClient:this.graphQLClient,httpClient:this.httpClient})}))}getOptions(){return this.options}updateOptions(e){this.options=h(this.options,Wt(e),!1),this.options.excludeOperators&&(this.operators=o(Qt,this.options.excludeOperators,b))}getOperators(){const e=this.options.excludeOperators?o(Qt,this.options.excludeOperators,b):this.operators,t=Object.entries(e).map((([e,t])=>Object.assign({name:e},t.operatorData))),r=[...new Set(Object.values(b))];return t.sort(((e,t)=>r.indexOf(e.name)-r.indexOf(t.name)))}getFragments(){var e;return Object.entries(null!==(e=this.options.fragments)&&void 0!==e?e:{}).map((([e,t])=>Object.assign({name:e},null==t?void 0:t.metadata)))}getCustomFunctions(){var e;return Object.entries(null!==(e=this.options.functions)&&void 0!==e?e:{}).map((([e,t])=>{const r="function"==typeof t?t:null==t?void 0:t.function,a={name:e,numRequiredArgs:null==r?void 0:r.length};if("function"!=typeof t){const{description:e,argsDefault:r,inputDefault:i,textColor:s,backgroundColor:n}=t;return e&&(a.description=e),r&&(a.argsDefault=r),i&&(a.inputDefault=i),s&&(a.textColor=s),n&&(a.backgroundColor=n),a}return a}))}}const zt=(e,t)=>new Gt(t).evaluate(e),Wt=e=>"objects"in e?Object.assign(Object.assign({},e),{data:e.objects}):e,Jt=e=>({query:({query:t,values:a=[]})=>r(void 0,void 0,void 0,(function*(){const r={text:t,values:null!=a?a:[]};try{const t=yield e.query(r);if(null==t?void 0:t.error)throw new Error(t.error);return t.rows}catch(e){throw e.name="Node-Postgres error",e}}))}),Vt=e=>({query:({query:t,values:a=[]})=>r(void 0,void 0,void 0,(function*(){try{return yield e.all(t,a)}catch(e){throw e.name="SQLite error",e}}))});export{Ft as AxiosClient,Bt as FetchClient,q as FigTreeError,Gt as FigTreeEvaluator,Jt as SQLNodePostgres,Vt as SQLite,zt as evaluateExpression,d as isAliasString,A as isFigTreeError,g as isFigTreeExpression,i as isFragmentNode,m as isObject,a as isOperatorNode,C as preProcessShorthand,s as standardiseOperatorName,l as truncateString};
{
"name": "fig-tree-evaluator",
"version": "2.17.1",
"version": "2.18.1",
"description": "Module to evaluate JSON-structured expression trees",
"main": "build/index.cjs.js",
"module": "build/index.esm.js",
"sideEffects": false,
"types": "build/index.d.ts",
"exports": {
"types": "./build/index.d.ts",
"import": "./build/index.esm.js",
"require": "./dist/index.cjs.js"
},
"files": [
"build/**/*"
"build"
],

@@ -27,3 +33,3 @@ "repository": "git+https://github.com/CarlosNZ/fig-tree-evaluator.git",

"eslint": "^8.53.0",
"fig-tree-evaluator": "^2.17.0",
"fig-tree-evaluator": "^2.17.1",
"jest": "^29.7.0",

@@ -34,2 +40,3 @@ "node-fetch": "2.7.0",

"rimraf": "^5.0.5",
"rollup-plugin-bundle-size": "^1.0.3",
"rollup-plugin-dts": "^6.0.2",

@@ -36,0 +43,0 @@ "rollup-plugin-sizes": "^1.0.5",

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc