@malloydata/render 0.0.253-dev250328051543 → 0.0.253-dev250330190957
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/module/index.mjs
CHANGED
|
@@ -120872,7 +120872,7 @@ function iXe(t) {
|
|
|
120872
120872
|
}
|
|
120873
120873
|
Sn.isTemporalFilter = iXe;
|
|
120874
120874
|
function sXe(t) {
|
|
120875
|
-
return t && "operator" in t;
|
|
120875
|
+
return !!t && "operator" in t;
|
|
120876
120876
|
}
|
|
120877
120877
|
Sn.isFilterExpression = sXe;
|
|
120878
120878
|
function oXe(t) {
|
|
@@ -121799,7 +121799,7 @@ function SXe(t, e) {
|
|
|
121799
121799
|
try {
|
|
121800
121800
|
e.feed(t);
|
|
121801
121801
|
const i = e.finish()[0];
|
|
121802
|
-
return
|
|
121802
|
+
return (0, CXe.isFilterExpression)(i) ? { parsed: i, log: [] } : { parsed: null, log: [] };
|
|
121803
121803
|
} catch (r) {
|
|
121804
121804
|
let i = r.message, s = 1, o = t.length;
|
|
121805
121805
|
if (r.token) {
|
|
@@ -123139,7 +123139,7 @@ let ok = class extends HXe {
|
|
|
123139
123139
|
case "compositeField":
|
|
123140
123140
|
return "{COMPOSITE_FIELD}";
|
|
123141
123141
|
case "filterMatch":
|
|
123142
|
-
if ((a.dataType === "string" || a.dataType === "number" || a.dataType === "date" || a.dataType === "timestamp" || a.dataType === "boolean") && (
|
|
123142
|
+
if ((a.dataType === "string" || a.dataType === "number" || a.dataType === "date" || a.dataType === "timestamp" || a.dataType === "boolean") && (a.filter === null || (0, UXe.isFilterExpression)(a.filter)))
|
|
123143
123143
|
return PXe.FilterCompilers.compile(a.dataType, a.filter, a.e.sql || "", this.parent.dialect);
|
|
123144
123144
|
throw new Error(`Internal Error: Filter Compiler Undefined Type '${a.dataType}'`);
|
|
123145
123145
|
default:
|
package/dist/module/index.umd.js
CHANGED
|
@@ -1024,7 +1024,7 @@ ${(0,uJe.indent)(r)}
|
|
|
1024
1024
|
$$ LANGUAGE SQL;
|
|
1025
1025
|
`}sqlCreateFunctionCombineLastStage(e){return`SELECT ARRAY((SELECT AS STRUCT * FROM ${e}))
|
|
1026
1026
|
`}sqlSelectAliasAsStruct(e,r){return"MYSQL: Implement this"}sqlMaybeQuoteIdentifier(e){return"`"+e.replace(/`/g,"``")+"`"}sqlCreateTableAsSelect(e,r){throw new Error("Not implemented Yet")}sqlNowExpr(){return"LOCALTIMESTAMP"}sqlTruncExpr(e,r){let i=r.e.sql||"why could this be undefined";if(r.units==="week"&&(i=`DATE_SUB(${i}, INTERVAL DAYOFWEEK(${i}) - 1 DAY)`),Tc.TD.isTimestamp(r.e.typeDef)){const o=(0,_y.qtz)(e);if(o){const u=`(CONVERT_TZ(${i}, 'UTC','${o}'))`;return`(${`CONVERT_TZ(${`${this.truncToUnit(u,r.units)}`}, '${o}', 'UTC')`})`}}return`${this.truncToUnit(i,r.units)}`}truncToUnit(e,r){let i="'%Y-%m-%d %H:%i:%s'";switch(r){case"minute":i="'%Y-%m-%d %H:%i:00'";break;case"hour":i="'%Y-%m-%d %H:00:00'";break;case"day":case"week":i="'%Y-%m-%d 00:00:00'";break;case"month":i="'%Y-%m-01 00:00:00'";break;case"quarter":i=`CASE WHEN MONTH(${e}) > 9 THEN '%Y-10-01 00:00:00' WHEN MONTH(${e}) > 6 THEN '%Y-07-01 00:00:00' WHEN MONTH(${e}) > 3 THEN '%Y-04-01 00:00:00' ELSE '%Y-01-01 00:00:00' end`;break;case"year":i="'%Y-01-01 00:00:00'";break}return`TIMESTAMP(DATE_FORMAT(${e}, ${i}))`}sqlTimeExtractExpr(e,r){const i=cJe[r.units]||r.units;let s=r.e.sql;if(Tc.TD.isTimestamp(r.e.typeDef)){const o=(0,_y.qtz)(e);o&&(s=`CONVERT_TZ(${s}, 'UTC', '${o}')`)}return`${i}(${s})`}sqlAlterTimeExpr(e){let r=e.units,i=e.kids.delta.sql;r==="quarter"?(r="month",i=`${i}*3`):r==="week"&&(r="day",i=`${i}*7`);const s=`INTERVAL ${i} ${r} `;return`(${e.kids.base.sql})${e.op}${s}`}sqlCast(e,r){const i=r.e.sql||"internal-error-in-sql-generation",{op:s,srcTypeDef:o,dstTypeDef:u,dstSQLType:a}=this.sqlCastPrep(r),l=(0,_y.qtz)(e);if(s==="timestamp::date"&&l)return`CAST(CONVERT_TZ(${i}, 'UTC', '${l}') AS DATE) `;if(s==="date::timestamp"&&l)return` CONVERT_TZ(${i}, '${l}', 'UTC')`;if(!Tc.TD.eq(o,u)){if(r.safe)throw new Error("Mysql dialect doesn't support Safe Cast");return Tc.TD.isString(u)?`CONCAT(${i}, '')`:`CAST(${i} AS ${a})`}return i}sqlRegexpMatch(e){return`REGEXP_LIKE(${e.kids.expr.sql}, ${e.kids.regex.sql})`}sqlLiteralTime(e,r){if(Tc.TD.isDate(r.typeDef))return`DATE '${r.literal}'`;const i=r.timezone||(0,_y.qtz)(e);return i?` CONVERT_TZ('${r.literal}', '${i}', 'UTC')`:`TIMESTAMP '${r.literal}'`}sqlMeasureTimeExpr(e){let r=e.kids.left.sql,i=e.kids.right.sql;if(oae[e.units]){r=`UNIX_TIMESTAMP(${r})`,i=`UNIX_TIMESTAMP(${i})`;const s=`${i}-${r}`;return e.units==="second"?`FLOOR(${s})`:`FLOOR((${s})/${oae[e.units].toString()}.0)`}throw new Error(`Unknown or unhandled MySQL time unit: ${e.units}`)}sqlAggDistinct(e,r,i){throw new Error("MySQL dialect does not support nesting.")}sqlSampleTable(e,r){if(r!==void 0){if((0,Tc.isSamplingEnable)(r)&&r.enable&&(r=this.defaultSampling),(0,Tc.isSamplingRows)(r))return`(SELECT * FROM ${e} ORDER BY rand() LIMIT ${r.rows} )`;if((0,Tc.isSamplingPercent)(r))return`(SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY rand()) as __row_number, __source_tbl.* from ${e} as __source_tbl) as __rand_tbl where __row_number % FLOOR(100.0 / ${r.percent}) = 1)`}return e}sqlLiteralString(e){return"'"+e.replace(/\\/g,"\\\\").replace(/'/g,"\\'")+"'"}sqlLiteralRegexp(e){return"'"+e.replace(/'/g,"''")+"'"}getDialectFunctionOverrides(){return(0,sae.expandOverrideMap)(lJe.MYSQL_MALLOY_STANDARD_OVERLOADS)}getDialectFunctions(){return(0,sae.expandBlueprintMap)(aJe.MYSQL_DIALECT_FUNCTIONS)}mapFieldsForJsonObject(e,r){return e.map(i=>`${i.sqlOutputName.replace(/`/g,"'")}, ${r?"NULL":i.sqlExpression}
|
|
1027
|
-
`).join(", ")}castToString(e){return`CONCAT(${e}, '')`}concat(...e){return`CONCAT(${e.join(",")})`}validateTypeName(e){return e.match(/^[A-Za-z\s(),0-9]*$/)!==null}sqlLiteralArray(e){return`JSON_ARRAY(${e.kids.values.map(i=>i.sql).join(",")})`}sqlLiteralRecord(e){return`JSON_OBJECT(${Object.entries(e.kids).map(([i,s])=>`${this.sqlLiteralString(i)},${s.sql}`).join(", ")})`}}L4.MySQLDialect=xJe,function(t){var e=T&&T.__createBinding||(Object.create?function(i,s,o,u){u===void 0&&(u=o);var a=Object.getOwnPropertyDescriptor(s,o);(!a||("get"in a?!s.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return s[o]}}),Object.defineProperty(i,u,a)}:function(i,s,o,u){u===void 0&&(u=o),i[u]=s[o]}),r=T&&T.__exportStar||function(i,s){for(var o in i)o!=="default"&&!Object.prototype.hasOwnProperty.call(s,o)&&e(s,i,o)};Object.defineProperty(t,"__esModule",{value:!0}),r(L4,t)}(W$);var Ca={};Object.defineProperty(Ca,"__esModule",{value:!0}),Ca.getDialects=Ca.registerDialect=Ca.getDialect=void 0;const dJe=M$,hJe=$$,pJe=j$,mJe=R$,uae=H$,gJe=W$,Y$=new Map;function yJe(t){const e=Y$.get(t);if(e===void 0)throw new Error(`Unknown Dialect ${t}`);return e}Ca.getDialect=yJe;function Rc(t){Y$.set(t.name,t)}Ca.registerDialect=Rc;function EJe(){return[...Y$.values()]}Ca.getDialects=EJe,Rc(new hJe.PostgresDialect),Rc(new mJe.StandardSQLDialect),Rc(new dJe.DuckDBDialect),Rc(new pJe.SnowflakeDialect),Rc(new uae.TrinoDialect),Rc(new uae.PrestoDialect),Rc(new gJe.MySQLDialect),function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.TinyParser=t.getMalloyStandardFunctions=t.registerDialect=t.getDialect=t.MySQLDialect=t.TrinoDialect=t.SnowflakeDialect=t.DuckDBDialect=t.PostgresDialect=t.StandardSQLDialect=t.qtz=t.Dialect=t.sql=t.literal=t.variadicParam=t.param=t.spread=t.maxScalar=t.minAggregate=t.minScalar=t.overload=t.makeParam=t.anyExprType=t.arg=void 0;var e=ot;Object.defineProperty(t,"arg",{enumerable:!0,get:function(){return e.arg}}),Object.defineProperty(t,"anyExprType",{enumerable:!0,get:function(){return e.anyExprType}}),Object.defineProperty(t,"makeParam",{enumerable:!0,get:function(){return e.makeParam}}),Object.defineProperty(t,"overload",{enumerable:!0,get:function(){return e.overload}}),Object.defineProperty(t,"minScalar",{enumerable:!0,get:function(){return e.minScalar}}),Object.defineProperty(t,"minAggregate",{enumerable:!0,get:function(){return e.minAggregate}}),Object.defineProperty(t,"maxScalar",{enumerable:!0,get:function(){return e.maxScalar}}),Object.defineProperty(t,"spread",{enumerable:!0,get:function(){return e.spread}}),Object.defineProperty(t,"param",{enumerable:!0,get:function(){return e.param}}),Object.defineProperty(t,"variadicParam",{enumerable:!0,get:function(){return e.variadicParam}}),Object.defineProperty(t,"literal",{enumerable:!0,get:function(){return e.literal}}),Object.defineProperty(t,"sql",{enumerable:!0,get:function(){return e.sql}});var r=vc;Object.defineProperty(t,"Dialect",{enumerable:!0,get:function(){return r.Dialect}}),Object.defineProperty(t,"qtz",{enumerable:!0,get:function(){return r.qtz}});var i=R$;Object.defineProperty(t,"StandardSQLDialect",{enumerable:!0,get:function(){return i.StandardSQLDialect}});var s=$$;Object.defineProperty(t,"PostgresDialect",{enumerable:!0,get:function(){return s.PostgresDialect}});var o=M$;Object.defineProperty(t,"DuckDBDialect",{enumerable:!0,get:function(){return o.DuckDBDialect}});var u=j$;Object.defineProperty(t,"SnowflakeDialect",{enumerable:!0,get:function(){return u.SnowflakeDialect}});var a=H$;Object.defineProperty(t,"TrinoDialect",{enumerable:!0,get:function(){return a.TrinoDialect}});var l=W$;Object.defineProperty(t,"MySQLDialect",{enumerable:!0,get:function(){return l.MySQLDialect}});var c=Ca;Object.defineProperty(t,"getDialect",{enumerable:!0,get:function(){return c.getDialect}}),Object.defineProperty(t,"registerDialect",{enumerable:!0,get:function(){return c.registerDialect}});var f=Sc;Object.defineProperty(t,"getMalloyStandardFunctions",{enumerable:!0,get:function(){return f.getMalloyStandardFunctions}});var x=Xx;Object.defineProperty(t,"TinyParser",{enumerable:!0,get:function(){return x.TinyParser}})}(Mp);var Ui={},$s={},Hp={},ai={};Object.defineProperty(ai,"__esModule",{value:!0}),ai.annotationToTag=ai.annotationToTaglines=ai.addModelScope=void 0;const aae=Zo;function AJe(t,e){const r=t?{...t}:{};return r.scopes?r.scopes=r.scopes.concat(e):r.scopes=[e],r}ai.addModelScope=AJe;function lae(t,e){t||(t={});const r=t.inherits?lae(t.inherits,e):[];function i(s){const o=[];for(const u of s||[])(e===void 0||u.text.match(e))&&o.push(u.text);return o}return r.concat(i(t.blockNotes),i(t.notes))}ai.annotationToTaglines=lae;function cae(t,e={}){var r;let i=e.extending||new aae.Tag;const s=e.prefix||/^##? /;t||(t={});const o=[];if(t.inherits){const l=cae(t.inherits,e);o.push(...l.log),i=l.tag}const u=[];t.blockNotes&&u.push(...t.blockNotes),t.notes&&u.push(...t.notes);const a=[];for(const l of u)l.text.match(s)&&a.push(l);for(let l=0;l<a.length;l++){const c=a[l];if(c.text.match(s)){const f=aae.Tag.fromTagLine(c.text,l,i,...(r=e.scopes)!==null&&r!==void 0?r:[]);i=f.tag,o.push(...f.log.map(x=>_Je(x,c)))}}return{tag:i,log:o}}ai.annotationToTag=cae;function _Je(t,e){const r={line:e.at.range.start.line,character:e.at.range.start.character+t.offset};return{code:"tag-parse-error",severity:"error",message:t.message,at:{url:e.at.url,range:{start:r,end:r}}}}Object.defineProperty(Hp,"__esModule",{value:!0}),Hp.buildQueryMaterializationSpec=Hp.shouldMaterialize=void 0;const vJe=$t,CJe=ai;function SJe(t){const e=structuredClone(t);return e&&(e.inherits=void 0),(0,CJe.annotationToTag)(e).tag.has("materialize")}Hp.shouldMaterialize=SJe;function bJe(t,e,r){if(!e)throw new Error(`Query tagged to materialize, but its name is not specified. ${t}`);if(!t)throw new Error(`Query tagged to materialize, but its path is not specified: ${e}`);const i={path:t,source:void 0,queryName:e},s=(0,vJe.generateHash)(JSON.stringify(i)).replace(/-/g,"_"),o=`${r?`${r}_`:""}${e}_${s}`;return{...i,id:o}}Hp.buildQueryMaterializationSpec=bJe;var fae={},B4={},bn={};Object.defineProperty(bn,"__esModule",{value:!0}),bn.isFilterable=bn.isFilterExpression=bn.isTemporalFilter=bn.isNumberFilter=bn.isBooleanFilter=bn.isStringFilter=bn.isStringCondition=bn.isChainOp=void 0;function TJe(t){return["and","or",","].includes(t)}bn.isChainOp=TJe;function RJe(t){return["starts","ends","contains","="].includes(t.operator)}bn.isStringCondition=RJe;function DJe(t){return"operator"in t&&typeof t.operator=="string"&&["starts","ends","contains","=","~","null","empty","and","or",",","()"].includes(t.operator)}bn.isStringFilter=DJe;function OJe(t){return"operator"in t&&typeof t.operator=="string"&&["null","true","false","false_or_null"].includes(t.operator)}bn.isBooleanFilter=OJe;function FJe(t){return"operator"in t&&typeof t.operator=="string"&&["range","<=",">=","!=","=",">","<","and","or","()","null"].includes(t.operator)}bn.isNumberFilter=FJe;function wJe(t){return"operator"in t&&typeof t.operator=="string"&&["literal","before","after","to","for","in","and","or","in_last","this","last","next","()","null"].includes(t.operator)}bn.isTemporalFilter=wJe;function NJe(t){return t&&"operator"in t}bn.isFilterExpression=NJe;function LJe(t){return["string","number","boolean","timestamp","date"].includes(t)}bn.isFilterable=LJe;var k4={};Object.defineProperty(k4,"__esModule",{value:!0}),k4.BooleanFilterExpression=void 0,k4.BooleanFilterExpression={parse(t){var e;if(t.match(/^\s*$/))return{parsed:null,log:[]};const r={parsed:null,log:[]};let i=t.toLowerCase().trim().replace(/\s\s+/," "),s=!1;if(i.startsWith("not ")&&(s=!0,i=i.slice(4)),i==="true")r.parsed={operator:"true"};else if(i==="false")r.parsed={operator:"false_or_null"};else if(i==="=false")r.parsed={operator:"false"};else if(i==="null")r.parsed={operator:"null"};else if(i==="not null")r.parsed={operator:"null",not:!0};else{const o=t.match(/[^\s]/),u=o&&(e=o.index)!==null&&e!==void 0?e:0;r.log=[{message:"Illegal boolean filter. Must be one of true,false,=false,null,not null",severity:"error",startIndex:u,endIndex:u+t.length-1}]}return s&&r.parsed&&(r.parsed.not=!0),r},unparse(t){if(t===null)return"";const e=t.not?"not ":"";switch(t.operator){case"true":case"null":return e+t.operator;case"false_or_null":return e+"false";case"false":return e+"=false"}}};var xae={},dae={exports:{}};(function(t){(function(e,r){t.exports?t.exports=r():e.nearley=r()})(T,function(){function e(c,f,x){return this.id=++e.highestId,this.name=c,this.symbols=f,this.postprocess=x,this}e.highestId=0,e.prototype.toString=function(c){var f=typeof c>"u"?this.symbols.map(l).join(" "):this.symbols.slice(0,c).map(l).join(" ")+" ● "+this.symbols.slice(c).map(l).join(" ");return this.name+" → "+f};function r(c,f,x,h){this.rule=c,this.dot=f,this.reference=x,this.data=[],this.wantedBy=h,this.isComplete=this.dot===c.symbols.length}r.prototype.toString=function(){return"{"+this.rule.toString(this.dot)+"}, from: "+(this.reference||0)},r.prototype.nextState=function(c){var f=new r(this.rule,this.dot+1,this.reference,this.wantedBy);return f.left=this,f.right=c,f.isComplete&&(f.data=f.build(),f.right=void 0),f},r.prototype.build=function(){var c=[],f=this;do c.push(f.right.data),f=f.left;while(f.left);return c.reverse(),c},r.prototype.finish=function(){this.rule.postprocess&&(this.data=this.rule.postprocess(this.data,this.reference,u.fail))};function i(c,f){this.grammar=c,this.index=f,this.states=[],this.wants={},this.scannable=[],this.completed={}}i.prototype.process=function(c){for(var f=this.states,x=this.wants,h=this.completed,p=0;p<f.length;p++){var m=f[p];if(m.isComplete){if(m.finish(),m.data!==u.fail){for(var y=m.wantedBy,g=y.length;g--;){var E=y[g];this.complete(E,m)}if(m.reference===this.index){var A=m.rule.name;(this.completed[A]=this.completed[A]||[]).push(m)}}}else{var A=m.rule.symbols[m.dot];if(typeof A!="string"){this.scannable.push(m);continue}if(x[A]){if(x[A].push(m),h.hasOwnProperty(A))for(var _=h[A],g=0;g<_.length;g++){var v=_[g];this.complete(m,v)}}else x[A]=[m],this.predict(A)}}},i.prototype.predict=function(c){for(var f=this.grammar.byName[c]||[],x=0;x<f.length;x++){var h=f[x],p=this.wants[c],m=new r(h,0,this.index,p);this.states.push(m)}},i.prototype.complete=function(c,f){var x=c.nextState(f);this.states.push(x)};function s(c,f){this.rules=c,this.start=f||this.rules[0].name;var x=this.byName={};this.rules.forEach(function(h){x.hasOwnProperty(h.name)||(x[h.name]=[]),x[h.name].push(h)})}s.fromCompiled=function(h,f){var x=h.Lexer;h.ParserStart&&(f=h.ParserStart,h=h.ParserRules);var h=h.map(function(m){return new e(m.name,m.symbols,m.postprocess)}),p=new s(h,f);return p.lexer=x,p};function o(){this.reset("")}o.prototype.reset=function(c,f){this.buffer=c,this.index=0,this.line=f?f.line:1,this.lastLineBreak=f?-f.col:0},o.prototype.next=function(){if(this.index<this.buffer.length){var c=this.buffer[this.index++];return c===`
|
|
1027
|
+
`).join(", ")}castToString(e){return`CONCAT(${e}, '')`}concat(...e){return`CONCAT(${e.join(",")})`}validateTypeName(e){return e.match(/^[A-Za-z\s(),0-9]*$/)!==null}sqlLiteralArray(e){return`JSON_ARRAY(${e.kids.values.map(i=>i.sql).join(",")})`}sqlLiteralRecord(e){return`JSON_OBJECT(${Object.entries(e.kids).map(([i,s])=>`${this.sqlLiteralString(i)},${s.sql}`).join(", ")})`}}L4.MySQLDialect=xJe,function(t){var e=T&&T.__createBinding||(Object.create?function(i,s,o,u){u===void 0&&(u=o);var a=Object.getOwnPropertyDescriptor(s,o);(!a||("get"in a?!s.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return s[o]}}),Object.defineProperty(i,u,a)}:function(i,s,o,u){u===void 0&&(u=o),i[u]=s[o]}),r=T&&T.__exportStar||function(i,s){for(var o in i)o!=="default"&&!Object.prototype.hasOwnProperty.call(s,o)&&e(s,i,o)};Object.defineProperty(t,"__esModule",{value:!0}),r(L4,t)}(W$);var Ca={};Object.defineProperty(Ca,"__esModule",{value:!0}),Ca.getDialects=Ca.registerDialect=Ca.getDialect=void 0;const dJe=M$,hJe=$$,pJe=j$,mJe=R$,uae=H$,gJe=W$,Y$=new Map;function yJe(t){const e=Y$.get(t);if(e===void 0)throw new Error(`Unknown Dialect ${t}`);return e}Ca.getDialect=yJe;function Rc(t){Y$.set(t.name,t)}Ca.registerDialect=Rc;function EJe(){return[...Y$.values()]}Ca.getDialects=EJe,Rc(new hJe.PostgresDialect),Rc(new mJe.StandardSQLDialect),Rc(new dJe.DuckDBDialect),Rc(new pJe.SnowflakeDialect),Rc(new uae.TrinoDialect),Rc(new uae.PrestoDialect),Rc(new gJe.MySQLDialect),function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.TinyParser=t.getMalloyStandardFunctions=t.registerDialect=t.getDialect=t.MySQLDialect=t.TrinoDialect=t.SnowflakeDialect=t.DuckDBDialect=t.PostgresDialect=t.StandardSQLDialect=t.qtz=t.Dialect=t.sql=t.literal=t.variadicParam=t.param=t.spread=t.maxScalar=t.minAggregate=t.minScalar=t.overload=t.makeParam=t.anyExprType=t.arg=void 0;var e=ot;Object.defineProperty(t,"arg",{enumerable:!0,get:function(){return e.arg}}),Object.defineProperty(t,"anyExprType",{enumerable:!0,get:function(){return e.anyExprType}}),Object.defineProperty(t,"makeParam",{enumerable:!0,get:function(){return e.makeParam}}),Object.defineProperty(t,"overload",{enumerable:!0,get:function(){return e.overload}}),Object.defineProperty(t,"minScalar",{enumerable:!0,get:function(){return e.minScalar}}),Object.defineProperty(t,"minAggregate",{enumerable:!0,get:function(){return e.minAggregate}}),Object.defineProperty(t,"maxScalar",{enumerable:!0,get:function(){return e.maxScalar}}),Object.defineProperty(t,"spread",{enumerable:!0,get:function(){return e.spread}}),Object.defineProperty(t,"param",{enumerable:!0,get:function(){return e.param}}),Object.defineProperty(t,"variadicParam",{enumerable:!0,get:function(){return e.variadicParam}}),Object.defineProperty(t,"literal",{enumerable:!0,get:function(){return e.literal}}),Object.defineProperty(t,"sql",{enumerable:!0,get:function(){return e.sql}});var r=vc;Object.defineProperty(t,"Dialect",{enumerable:!0,get:function(){return r.Dialect}}),Object.defineProperty(t,"qtz",{enumerable:!0,get:function(){return r.qtz}});var i=R$;Object.defineProperty(t,"StandardSQLDialect",{enumerable:!0,get:function(){return i.StandardSQLDialect}});var s=$$;Object.defineProperty(t,"PostgresDialect",{enumerable:!0,get:function(){return s.PostgresDialect}});var o=M$;Object.defineProperty(t,"DuckDBDialect",{enumerable:!0,get:function(){return o.DuckDBDialect}});var u=j$;Object.defineProperty(t,"SnowflakeDialect",{enumerable:!0,get:function(){return u.SnowflakeDialect}});var a=H$;Object.defineProperty(t,"TrinoDialect",{enumerable:!0,get:function(){return a.TrinoDialect}});var l=W$;Object.defineProperty(t,"MySQLDialect",{enumerable:!0,get:function(){return l.MySQLDialect}});var c=Ca;Object.defineProperty(t,"getDialect",{enumerable:!0,get:function(){return c.getDialect}}),Object.defineProperty(t,"registerDialect",{enumerable:!0,get:function(){return c.registerDialect}});var f=Sc;Object.defineProperty(t,"getMalloyStandardFunctions",{enumerable:!0,get:function(){return f.getMalloyStandardFunctions}});var x=Xx;Object.defineProperty(t,"TinyParser",{enumerable:!0,get:function(){return x.TinyParser}})}(Mp);var Ui={},$s={},Hp={},ai={};Object.defineProperty(ai,"__esModule",{value:!0}),ai.annotationToTag=ai.annotationToTaglines=ai.addModelScope=void 0;const aae=Zo;function AJe(t,e){const r=t?{...t}:{};return r.scopes?r.scopes=r.scopes.concat(e):r.scopes=[e],r}ai.addModelScope=AJe;function lae(t,e){t||(t={});const r=t.inherits?lae(t.inherits,e):[];function i(s){const o=[];for(const u of s||[])(e===void 0||u.text.match(e))&&o.push(u.text);return o}return r.concat(i(t.blockNotes),i(t.notes))}ai.annotationToTaglines=lae;function cae(t,e={}){var r;let i=e.extending||new aae.Tag;const s=e.prefix||/^##? /;t||(t={});const o=[];if(t.inherits){const l=cae(t.inherits,e);o.push(...l.log),i=l.tag}const u=[];t.blockNotes&&u.push(...t.blockNotes),t.notes&&u.push(...t.notes);const a=[];for(const l of u)l.text.match(s)&&a.push(l);for(let l=0;l<a.length;l++){const c=a[l];if(c.text.match(s)){const f=aae.Tag.fromTagLine(c.text,l,i,...(r=e.scopes)!==null&&r!==void 0?r:[]);i=f.tag,o.push(...f.log.map(x=>_Je(x,c)))}}return{tag:i,log:o}}ai.annotationToTag=cae;function _Je(t,e){const r={line:e.at.range.start.line,character:e.at.range.start.character+t.offset};return{code:"tag-parse-error",severity:"error",message:t.message,at:{url:e.at.url,range:{start:r,end:r}}}}Object.defineProperty(Hp,"__esModule",{value:!0}),Hp.buildQueryMaterializationSpec=Hp.shouldMaterialize=void 0;const vJe=$t,CJe=ai;function SJe(t){const e=structuredClone(t);return e&&(e.inherits=void 0),(0,CJe.annotationToTag)(e).tag.has("materialize")}Hp.shouldMaterialize=SJe;function bJe(t,e,r){if(!e)throw new Error(`Query tagged to materialize, but its name is not specified. ${t}`);if(!t)throw new Error(`Query tagged to materialize, but its path is not specified: ${e}`);const i={path:t,source:void 0,queryName:e},s=(0,vJe.generateHash)(JSON.stringify(i)).replace(/-/g,"_"),o=`${r?`${r}_`:""}${e}_${s}`;return{...i,id:o}}Hp.buildQueryMaterializationSpec=bJe;var fae={},B4={},bn={};Object.defineProperty(bn,"__esModule",{value:!0}),bn.isFilterable=bn.isFilterExpression=bn.isTemporalFilter=bn.isNumberFilter=bn.isBooleanFilter=bn.isStringFilter=bn.isStringCondition=bn.isChainOp=void 0;function TJe(t){return["and","or",","].includes(t)}bn.isChainOp=TJe;function RJe(t){return["starts","ends","contains","="].includes(t.operator)}bn.isStringCondition=RJe;function DJe(t){return"operator"in t&&typeof t.operator=="string"&&["starts","ends","contains","=","~","null","empty","and","or",",","()"].includes(t.operator)}bn.isStringFilter=DJe;function OJe(t){return"operator"in t&&typeof t.operator=="string"&&["null","true","false","false_or_null"].includes(t.operator)}bn.isBooleanFilter=OJe;function FJe(t){return"operator"in t&&typeof t.operator=="string"&&["range","<=",">=","!=","=",">","<","and","or","()","null"].includes(t.operator)}bn.isNumberFilter=FJe;function wJe(t){return"operator"in t&&typeof t.operator=="string"&&["literal","before","after","to","for","in","and","or","in_last","this","last","next","()","null"].includes(t.operator)}bn.isTemporalFilter=wJe;function NJe(t){return!!t&&"operator"in t}bn.isFilterExpression=NJe;function LJe(t){return["string","number","boolean","timestamp","date"].includes(t)}bn.isFilterable=LJe;var k4={};Object.defineProperty(k4,"__esModule",{value:!0}),k4.BooleanFilterExpression=void 0,k4.BooleanFilterExpression={parse(t){var e;if(t.match(/^\s*$/))return{parsed:null,log:[]};const r={parsed:null,log:[]};let i=t.toLowerCase().trim().replace(/\s\s+/," "),s=!1;if(i.startsWith("not ")&&(s=!0,i=i.slice(4)),i==="true")r.parsed={operator:"true"};else if(i==="false")r.parsed={operator:"false_or_null"};else if(i==="=false")r.parsed={operator:"false"};else if(i==="null")r.parsed={operator:"null"};else if(i==="not null")r.parsed={operator:"null",not:!0};else{const o=t.match(/[^\s]/),u=o&&(e=o.index)!==null&&e!==void 0?e:0;r.log=[{message:"Illegal boolean filter. Must be one of true,false,=false,null,not null",severity:"error",startIndex:u,endIndex:u+t.length-1}]}return s&&r.parsed&&(r.parsed.not=!0),r},unparse(t){if(t===null)return"";const e=t.not?"not ":"";switch(t.operator){case"true":case"null":return e+t.operator;case"false_or_null":return e+"false";case"false":return e+"=false"}}};var xae={},dae={exports:{}};(function(t){(function(e,r){t.exports?t.exports=r():e.nearley=r()})(T,function(){function e(c,f,x){return this.id=++e.highestId,this.name=c,this.symbols=f,this.postprocess=x,this}e.highestId=0,e.prototype.toString=function(c){var f=typeof c>"u"?this.symbols.map(l).join(" "):this.symbols.slice(0,c).map(l).join(" ")+" ● "+this.symbols.slice(c).map(l).join(" ");return this.name+" → "+f};function r(c,f,x,h){this.rule=c,this.dot=f,this.reference=x,this.data=[],this.wantedBy=h,this.isComplete=this.dot===c.symbols.length}r.prototype.toString=function(){return"{"+this.rule.toString(this.dot)+"}, from: "+(this.reference||0)},r.prototype.nextState=function(c){var f=new r(this.rule,this.dot+1,this.reference,this.wantedBy);return f.left=this,f.right=c,f.isComplete&&(f.data=f.build(),f.right=void 0),f},r.prototype.build=function(){var c=[],f=this;do c.push(f.right.data),f=f.left;while(f.left);return c.reverse(),c},r.prototype.finish=function(){this.rule.postprocess&&(this.data=this.rule.postprocess(this.data,this.reference,u.fail))};function i(c,f){this.grammar=c,this.index=f,this.states=[],this.wants={},this.scannable=[],this.completed={}}i.prototype.process=function(c){for(var f=this.states,x=this.wants,h=this.completed,p=0;p<f.length;p++){var m=f[p];if(m.isComplete){if(m.finish(),m.data!==u.fail){for(var y=m.wantedBy,g=y.length;g--;){var E=y[g];this.complete(E,m)}if(m.reference===this.index){var A=m.rule.name;(this.completed[A]=this.completed[A]||[]).push(m)}}}else{var A=m.rule.symbols[m.dot];if(typeof A!="string"){this.scannable.push(m);continue}if(x[A]){if(x[A].push(m),h.hasOwnProperty(A))for(var _=h[A],g=0;g<_.length;g++){var v=_[g];this.complete(m,v)}}else x[A]=[m],this.predict(A)}}},i.prototype.predict=function(c){for(var f=this.grammar.byName[c]||[],x=0;x<f.length;x++){var h=f[x],p=this.wants[c],m=new r(h,0,this.index,p);this.states.push(m)}},i.prototype.complete=function(c,f){var x=c.nextState(f);this.states.push(x)};function s(c,f){this.rules=c,this.start=f||this.rules[0].name;var x=this.byName={};this.rules.forEach(function(h){x.hasOwnProperty(h.name)||(x[h.name]=[]),x[h.name].push(h)})}s.fromCompiled=function(h,f){var x=h.Lexer;h.ParserStart&&(f=h.ParserStart,h=h.ParserRules);var h=h.map(function(m){return new e(m.name,m.symbols,m.postprocess)}),p=new s(h,f);return p.lexer=x,p};function o(){this.reset("")}o.prototype.reset=function(c,f){this.buffer=c,this.index=0,this.line=f?f.line:1,this.lastLineBreak=f?-f.col:0},o.prototype.next=function(){if(this.index<this.buffer.length){var c=this.buffer[this.index++];return c===`
|
|
1028
1028
|
`&&(this.line+=1,this.lastLineBreak=this.index),{value:c}}},o.prototype.save=function(){return{line:this.line,col:this.index-this.lastLineBreak}},o.prototype.formatError=function(c,f){var x=this.buffer;if(typeof x=="string"){var h=x.split(`
|
|
1029
1029
|
`).slice(Math.max(0,this.line-5),this.line),p=x.indexOf(`
|
|
1030
1030
|
`,this.index);p===-1&&(p=x.length);var m=this.index-this.lastLineBreak,y=String(this.line).length;return f+=" at line "+this.line+" col "+m+`:
|
|
@@ -1042,7 +1042,7 @@ Use (?: … ) instead`);if(!ue.lineBreaks&&j.test(`
|
|
|
1042
1042
|
`))throw new Error("Rule should declare lineBreaks: "+j);xe.push(l(L))}}var z=q&&q.fallback,F=i&&!z?"ym":"gm",k=i||z?"":"|";X===!0&&(F+="u");var U=new RegExp(c(xe)+k,F);return{regexp:U,groups:fe,fast:K,error:q||E}}function _(D){var B=A(g(D));return new S({start:B},"start")}function v(D,B,q){var K=D&&(D.push||D.next);if(K&&!q[K])throw new Error("Missing state '"+K+"' (in token '"+D.defaultType+"' of state '"+B+"')");if(D&&D.pop&&+D.pop!=1)throw new Error("pop must be 1 (in token '"+D.defaultType+"' of state '"+B+"')")}function C(D,B){var q=D.$all?g(D.$all):[];delete D.$all;var K=Object.getOwnPropertyNames(D);B||(B=K[0]);for(var Q=Object.create(null),X=0;X<K.length;X++){var fe=K[X];Q[fe]=g(D[fe]).concat(q)}for(var X=0;X<K.length;X++)for(var fe=K[X],xe=Q[fe],te=Object.create(null),ue=0;ue<xe.length;ue++){var de=xe[ue];if(de.include){var Se=[ue,1];if(de.include!==fe&&!te[de.include]){te[de.include]=!0;var I=Q[de.include];if(!I)throw new Error("Cannot include nonexistent state '"+de.include+"' (in state '"+fe+"')");for(var N=0;N<I.length;N++){var L=I[N];xe.indexOf(L)===-1&&Se.push(L)}}xe.splice.apply(xe,Se),ue--}}for(var j=Object.create(null),X=0;X<K.length;X++){var fe=K[X];j[fe]=A(Q[fe],!0)}for(var X=0;X<K.length;X++){for(var V=K[X],z=j[V],F=z.groups,ue=0;ue<F.length;ue++)v(F[ue],V,j);for(var k=Object.getOwnPropertyNames(z.fast),ue=0;ue<k.length;ue++)v(z.fast[k[ue]],V,j)}return new S(j,B)}function b(D){for(var B=typeof Map<"u",q=B?new Map:Object.create(null),K=Object.getOwnPropertyNames(D),Q=0;Q<K.length;Q++){var X=K[Q],fe=D[X],xe=Array.isArray(fe)?fe:[fe];xe.forEach(function(te){if(typeof te!="string")throw new Error("keyword must be string (in keyword '"+X+"')");B?q.set(te,X):q[te]=X})}return function(te){return B?q.get(te):q[te]}}var S=function(D,B){this.startState=B,this.states=D,this.buffer="",this.stack=[],this.reset()};S.prototype.reset=function(D,B){return this.buffer=D||"",this.index=0,this.line=B?B.line:1,this.col=B?B.col:1,this.queuedToken=B?B.queuedToken:null,this.queuedText=B?B.queuedText:"",this.queuedThrow=B?B.queuedThrow:null,this.setState(B?B.state:this.startState),this.stack=B&&B.stack?B.stack.slice():[],this},S.prototype.save=function(){return{line:this.line,col:this.col,state:this.state,stack:this.stack.slice(),queuedToken:this.queuedToken,queuedText:this.queuedText,queuedThrow:this.queuedThrow}},S.prototype.setState=function(D){if(!(!D||this.state===D)){this.state=D;var B=this.states[D];this.groups=B.groups,this.error=B.error,this.re=B.regexp,this.fast=B.fast}},S.prototype.popState=function(){this.setState(this.stack.pop())},S.prototype.pushState=function(D){this.stack.push(this.state),this.setState(D)};var R=i?function(D,B){return D.exec(B)}:function(D,B){var q=D.exec(B);return q[0].length===0?null:q};S.prototype._getGroup=function(D){for(var B=this.groups.length,q=0;q<B;q++)if(D[q+1]!==void 0)return this.groups[q];throw new Error("Cannot find token type for matched text")};function O(){return this.value}if(S.prototype.next=function(){var D=this.index;if(this.queuedGroup){var B=this._token(this.queuedGroup,this.queuedText,D);return this.queuedGroup=null,this.queuedText="",B}var q=this.buffer;if(D!==q.length){var fe=this.fast[q.charCodeAt(D)];if(fe)return this._token(fe,q.charAt(D),D);var K=this.re;K.lastIndex=D;var Q=R(K,q),X=this.error;if(Q==null)return this._token(X,q.slice(D,q.length),D);var fe=this._getGroup(Q),xe=Q[0];return X.fallback&&Q.index!==D?(this.queuedGroup=fe,this.queuedText=xe,this._token(X,q.slice(D,Q.index),D)):this._token(fe,xe,D)}},S.prototype._token=function(D,B,q){var K=0;if(D.lineBreaks){var Q=/\n/g,X=1;if(B===`
|
|
1043
1043
|
`)K=1;else for(;Q.exec(B);)K++,X=Q.lastIndex}var fe={type:typeof D.type=="function"&&D.type(B)||D.defaultType,value:typeof D.value=="function"?D.value(B):B,text:B,toString:O,offset:q,lineBreaks:K,line:this.line,col:this.col},xe=B.length;if(this.index+=xe,this.line+=K,K!==0?this.col=xe-X+1:this.col+=xe,D.shouldThrow){var te=new Error(this.formatError(fe,"invalid syntax"));throw te}return D.pop?this.popState():D.push?this.pushState(D.push):D.next&&this.setState(D.next),fe},typeof Symbol<"u"&&Symbol.iterator){var $=function(D){this.lexer=D};$.prototype.next=function(){var D=this.lexer.next();return{value:D,done:!D}},$.prototype[Symbol.iterator]=function(){return this},S.prototype[Symbol.iterator]=function(){return new $(this)}}return S.prototype.formatError=function(D,B){if(D==null)var q=this.buffer.slice(this.index),D={text:q,offset:this.index,lineBreaks:q.indexOf(`
|
|
1044
1044
|
`)===-1?0:1,line:this.line,col:this.col};var K=2,Q=Math.max(D.line-K,1),X=D.line+K,fe=String(X).length,xe=h(this.buffer,this.line-D.line+K+1).slice(0,5),te=[];te.push(B+" at line "+D.line+" col "+D.col+":"),te.push("");for(var ue=0;ue<xe.length;ue++){var de=xe[ue],Se=Q+ue;te.push(x(String(Se),fe)+" "+de),Se===D.line&&te.push(x("",fe+D.col+1)+"^")}return te.join(`
|
|
1045
|
-
`)},S.prototype.clone=function(){return new S(this.states,this.state)},S.prototype.has=function(D){return!0},{compile:_,states:C,error:Object.freeze({error:!0}),fallback:Object.freeze({fallback:!0}),keywords:b}})})(hae);var X$=hae.exports,qt={};Object.defineProperty(qt,"__esModule",{value:!0}),qt.mkUnits=qt.timeLiteral=qt.joinTemporal=qt.temporalNot=qt.numNot=qt.mkValues=qt.mkRange=qt.joinNumbers=qt.conjoin=qt.matchOp=qt.escape=qt.unescape=qt.maybeNot=void 0;const Sa=bn;function IJe(t){const[e,r]=t;return e&&r&&(0,Sa.isStringFilter)(r)?{...r,not:!0}:r}qt.maybeNot=IJe;function vy(t){return t.replace(/\\(.)/g,"$1")}qt.unescape=vy;function $Je(t){const e=t.toLowerCase();return e==="null"||e==="empty"?"\\"+t:t.replace(/([,; |()\\%_-])/g,"\\$1")}qt.escape=$Je;function M4(t){let e=!1,r=!1,i=0,s=!1;const o=t.length;for(let u=0;u<o;u+=1){const a=t[u];if(a===" "||a===" "){i+=1;continue}i=0,a==="%"?(s=!0,u===0&&(e=!0),r=!0):(r=!1,a==="\\"?u+=1:a==="_"&&(s=!0))}return{hasLike:s,percentEnd:r&&o>1,percentStart:e&&o>1,endSpace:i}}function BJe(t){let e=t.trimStart();const{hasLike:r,percentEnd:i,percentStart:s,endSpace:o}=M4(e);if(o>0&&(e=e.slice(0,-o)),r){if(s&&i){const u=e.slice(1,-1);if(!M4(u).hasLike&&u.length>0)return{operator:"contains",values:[vy(u)]}}else if(i){const u=e.slice(0,-1);if(!M4(u).hasLike)return{operator:"starts",values:[vy(u)]}}else if(s){const u=e.slice(1);if(!M4(u).hasLike)return{operator:"ends",values:[vy(u)]}}return{operator:"~",escaped_values:[e]}}return e.toLowerCase()==="null"||e==="NULL"?{operator:"null"}:e==="empty"||e==="EMPTY"?{operator:"empty"}:{operator:"=",values:[vy(e)]}}qt.matchOp=BJe;function Z$(t,e){var r,i;return t.operator===e.operator&&((r=t.not)!==null&&r!==void 0?r:!1)===((i=e.not)!==null&&i!==void 0?i:!1)}function kJe(t,e,r){if((0,Sa.isStringFilter)(t)&&(0,Sa.isStringFilter)(r)){if(e===","){if(t.operator==="~"&&Z$(t,r))return{...t,escaped_values:[...t.escaped_values,...r.escaped_values]};if((0,Sa.isStringCondition)(t)&&Z$(t,r))return{...t,values:[...t.values,...r.values]}}const i=e===","?",":e==="|"?"or":e===";"?"and":void 0;if(i)return t.operator===i?{...t,members:[...t.members,r]}:{operator:i,members:[t,r]}}return null}qt.conjoin=kJe;function MJe(t,e,r){if((0,Sa.isNumberFilter)(t)&&(0,Sa.isNumberFilter)(r)){if(e==="or"&&t.operator==="="&&Z$(t,r)){const i={operator:"=",values:[...t.values,...r.values]};return t.not&&(i.not=!0),i}if(e==="and"||e==="or")return t.operator===e?{...t,members:[...t.members,r]}:{operator:e,members:[t,r]}}return null}qt.joinNumbers=MJe;function PJe(t,e,r,i){return{operator:"range",startValue:e,startOperator:t==="("?">":">=",endValue:r,endOperator:i===")"?"<":"<="}}qt.mkRange=PJe;function UJe(t,e){return{values:[t,...e]}}qt.mkValues=UJe;function jJe(t,e){return(0,Sa.isNumberFilter)(t)&&e?t.operator==="="?{operator:"!=",values:t.values}:t.operator==="!="?{operator:"=",values:t.values}:{...t,not:!0}:t}qt.numNot=jJe;function qJe(t,e){return(0,Sa.isTemporalFilter)(t)&&e?{...t,not:!0}:t}qt.temporalNot=qJe;function HJe(t,e,r){return(0,Sa.isTemporalFilter)(t)&&(0,Sa.isTemporalFilter)(r)&&(e==="and"||e==="or")?t.operator===e?{...t,members:[...t.members,r]}:{operator:e,members:[t,r]}:null}qt.joinTemporal=HJe;function QJe(t,e){const r={moment:"literal",literal:t};return e&&(r.units=e),r}qt.timeLiteral=QJe;function zJe(t){switch(t.toLowerCase()){case"second":case"seconds":return"second";case"minute":case"minutes":return"minute";case"hour":case"hours":return"hour";case"day":case"days":return"day";case"week":case"weeks":return"week";case"month":case"months":return"month";case"quarter":case"quarters":return"quarter";case"year":case"years":return"year"}}qt.mkUnits=zJe;var GJe=T&&T.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(J$,"__esModule",{value:!0});function WJe(t){return t[0]}const pae=GJe(X$),Qp=qt,Ln=pae.default.compile({WS:/[ \t]+/,id:{match:/[a-zA-Z]+/,type:pae.default.keywords({AND:"and",OR:"or",NOT:"not",NULL_KW:"null",TO:"to"})},oparen:"(",cparen:")",obrack:"[",cbrack:"]",comma:",",op:/<=|>=|<|>/,ne:"!=",eq:"=",float:/-?(?:\d+)?\.\d+(?:[Ee][+-]?\d+)?/,numberE:/-?\d+[Ee][+-]?\d+/,integer:/-?\d+/}),VJe=Ln.next;Ln.next=(t=>()=>{for(;;){const e=t.call(Ln);if(e===void 0||e.type!=="WS")return e}})(VJe);const YJe={Lexer:Ln,ParserRules:[{name:"numberFilter",symbols:["numberFilter","conjunction","numberUnary"],postprocess:([t,e,r])=>(0,Qp.joinNumbers)(t,e[0].text,r)},{name:"numberFilter",symbols:["numberUnary"],postprocess:t=>t[0]},{name:"numberUnary$ebnf$1",symbols:[Ln.has("NOT")?{type:"NOT"}:NOT],postprocess:WJe},{name:"numberUnary$ebnf$1",symbols:[],postprocess:()=>null},{name:"numberUnary",symbols:["numberUnary$ebnf$1","clause"],postprocess:([t,e])=>(0,Qp.numNot)(e,t)},{name:"clause",symbols:[Ln.has("NULL_KW")?{type:"NULL_KW"}:NULL_KW],postprocess:()=>({operator:"null"})},{name:"clause$ebnf$1",symbols:[]},{name:"clause$ebnf$1",symbols:["clause$ebnf$1","numberList"],postprocess:t=>t[0].concat([t[1]])},{name:"clause",symbols:["N","clause$ebnf$1"],postprocess:([t,e])=>({operator:"=",...(0,Qp.mkValues)(t,e)})},{name:"clause$ebnf$2",symbols:[]},{name:"clause$ebnf$2",symbols:["clause$ebnf$2","numberList"],postprocess:t=>t[0].concat([t[1]])},{name:"clause",symbols:[Ln.has("eq")?{type:"eq"}:eq,"N","clause$ebnf$2"],postprocess:([t,e,r])=>({operator:"=",...(0,Qp.mkValues)(e,r)})},{name:"clause$ebnf$3",symbols:[]},{name:"clause$ebnf$3",symbols:["clause$ebnf$3","numberList"],postprocess:t=>t[0].concat([t[1]])},{name:"clause",symbols:[Ln.has("ne")?{type:"ne"}:ne,"N","clause$ebnf$3"],postprocess:([t,e,r])=>({operator:"!=",...(0,Qp.mkValues)(e,r)})},{name:"clause",symbols:[Ln.has("op")?{type:"op"}:op,"N"],postprocess:([t,e])=>({operator:t.text,values:[e]})},{name:"clause",symbols:[Ln.has("oparen")?{type:"oparen"}:oparen,"numberFilter",Ln.has("cparen")?{type:"cparen"}:cparen],postprocess:([t,e,r])=>({operator:"()",expr:e})},{name:"clause",symbols:["openInterval","N",Ln.has("TO")?{type:"TO"}:TO,"N","closeInterval"],postprocess:([t,e,r,i,s])=>(0,Qp.mkRange)(t[0].text,e,i,s[0].text)},{name:"numberList",symbols:[Ln.has("comma")?{type:"comma"}:comma,"N"],postprocess:([t,e])=>e},{name:"closeInterval",symbols:[Ln.has("cbrack")?{type:"cbrack"}:cbrack]},{name:"closeInterval",symbols:[Ln.has("cparen")?{type:"cparen"}:cparen]},{name:"openInterval",symbols:[Ln.has("obrack")?{type:"obrack"}:obrack]},{name:"openInterval",symbols:[Ln.has("oparen")?{type:"oparen"}:oparen]},{name:"N$subexpression$1",symbols:[Ln.has("float")?{type:"float"}:float]},{name:"N$subexpression$1",symbols:[Ln.has("numberE")?{type:"numberE"}:numberE]},{name:"N$subexpression$1",symbols:[Ln.has("integer")?{type:"integer"}:integer]},{name:"N",symbols:["N$subexpression$1"],postprocess:([t])=>t[0].text},{name:"conjunction",symbols:[Ln.has("OR")?{type:"OR"}:OR]},{name:"conjunction",symbols:[Ln.has("AND")?{type:"AND"}:AND]}],ParserStart:"numberFilter"};J$.default=YJe;var zp={};Object.defineProperty(zp,"__esModule",{value:!0}),zp.run_parser=void 0;const KJe=bn;function JJe(t,e){try{e.feed(t);const i=e.finish()[0];return i&&(0,KJe.isFilterExpression)(i)?{parsed:i,log:[]}:{parsed:null,log:[]}}catch(r){let i=r.message,s=1,o=t.length;if(r.token){const u=r.token;s=u.col,o=u.text.length;const l=r.message.match(new RegExp("(?<=A ).*(?= based on:)","g")).map(c=>c.replace(/\s+token/i,""));i=`Unexpected ${u.type} token "${u.value}"`,l&&l.length&&(i+=` Tokens expected: ${[...new Set(l)]}`)}return{parsed:null,log:[{message:i,startIndex:s-1,endIndex:s-1+o-1,severity:"error"}]}}}zp.run_parser=JJe,function(t){var e=T&&T.__createBinding||(Object.create?function(c,f,x,h){h===void 0&&(h=x);var p=Object.getOwnPropertyDescriptor(f,x);(!p||("get"in p?!f.__esModule:p.writable||p.configurable))&&(p={enumerable:!0,get:function(){return f[x]}}),Object.defineProperty(c,h,p)}:function(c,f,x,h){h===void 0&&(h=x),c[h]=f[x]}),r=T&&T.__setModuleDefault||(Object.create?function(c,f){Object.defineProperty(c,"default",{enumerable:!0,value:f})}:function(c,f){c.default=f}),i=T&&T.__importStar||function(c){if(c&&c.__esModule)return c;var f={};if(c!=null)for(var x in c)x!=="default"&&Object.prototype.hasOwnProperty.call(c,x)&&e(f,c,x);return r(f,c),f},s=T&&T.__importDefault||function(c){return c&&c.__esModule?c:{default:c}};Object.defineProperty(t,"__esModule",{value:!0}),t.NumberFilterExpression=void 0;const o=bn,u=i(K$),a=s(J$),l=zp;t.NumberFilterExpression={parse(c){if(c.match(/^\s*$/))return{parsed:null,log:[]};const f=new u.Parser(u.Grammar.fromCompiled(a.default)),x=(0,l.run_parser)(c,f);return x.parsed&&(0,o.isNumberFilter)(x.parsed)?{parsed:x.parsed,log:[]}:{parsed:null,log:x.log}},unparse(c){if(c===null)return"";switch(c.operator){case"=":return c.values.join(", ");case"!=":return"!= "+c.values.join(", ");case">":case"<":case"<=":case">=":return c.not?c.values.map(f=>c.operator==="="?`not ${f}`:`not ${c.operator} ${f}`).join(", "):c.values.map(f=>`${c.operator} ${f}`).join(", ");case"range":{const f=c.startOperator===">"?"(":"[",x=c.endOperator==="<"?")":"]",h=`${f}${c.startValue} to ${c.endValue}${x}`;return c.not?`not ${h}`:h}case"null":return c.not?"not null":"null";case"and":case"or":return c.members.map(f=>t.NumberFilterExpression.unparse(f)).join(` ${c.operator} `);case"()":{const f="("+t.NumberFilterExpression.unparse(c.expr)+")";return c.not?"not "+f:f}}return`no unparse for ${JSON.stringify(c)}`}}}(xae);var mae={},eB={},XJe=T&&T.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(eB,"__esModule",{value:!0});function ZJe(t){return t[0]}const eXe=XJe(X$),tB=qt,fu=eXe.default.compile({WS:/[ \t]+/,comma:",",semi:";",or:"|",open:"(",close:")",minus:"-",matchStr:/(?:\\[^\n]|[^\n,;()|])+/}),tXe=fu.next;fu.next=(t=>()=>{for(;;){const e=t.call(fu);if(e==null||e.type!=="WS")return e}})(tXe);const nXe={Lexer:fu,ParserRules:[{name:"stringFilter",symbols:["stringFilter","conjunction","sfUnary"],postprocess:([t,e,r])=>(0,tB.conjoin)(t,e[0].text,r)},{name:"stringFilter",symbols:["sfUnary"],postprocess:t=>t[0]},{name:"sfUnary$ebnf$1",symbols:[fu.has("minus")?{type:"minus"}:minus],postprocess:ZJe},{name:"sfUnary$ebnf$1",symbols:[],postprocess:()=>null},{name:"sfUnary",symbols:["sfUnary$ebnf$1","clause"],postprocess:t=>(0,tB.maybeNot)(t)},{name:"parens",symbols:[fu.has("open")?{type:"open"}:open,"stringFilter",fu.has("close")?{type:"close"}:close],postprocess:([t,e,r])=>({operator:"()",expr:e})},{name:"clause",symbols:[fu.has("matchStr")?{type:"matchStr"}:matchStr],postprocess:([t])=>(0,tB.matchOp)(t.text)},{name:"clause",symbols:["parens"],postprocess:t=>t[0]},{name:"conjunction",symbols:[fu.has("comma")?{type:"comma"}:comma]},{name:"conjunction",symbols:[fu.has("semi")?{type:"semi"}:semi]},{name:"conjunction",symbols:[fu.has("or")?{type:"or"}:or]}],ParserStart:"stringFilter"};eB.default=nXe,function(t){var e=T&&T.__createBinding||(Object.create?function(f,x,h,p){p===void 0&&(p=h);var m=Object.getOwnPropertyDescriptor(x,h);(!m||("get"in m?!x.__esModule:m.writable||m.configurable))&&(m={enumerable:!0,get:function(){return x[h]}}),Object.defineProperty(f,p,m)}:function(f,x,h,p){p===void 0&&(p=h),f[p]=x[h]}),r=T&&T.__setModuleDefault||(Object.create?function(f,x){Object.defineProperty(f,"default",{enumerable:!0,value:x})}:function(f,x){f.default=x}),i=T&&T.__importStar||function(f){if(f&&f.__esModule)return f;var x={};if(f!=null)for(var h in f)h!=="default"&&Object.prototype.hasOwnProperty.call(f,h)&&e(x,f,h);return r(x,f),x},s=T&&T.__importDefault||function(f){return f&&f.__esModule?f:{default:f}};Object.defineProperty(t,"__esModule",{value:!0}),t.StringFilterExpression=void 0;const o=bn,u=i(K$),a=s(eB),l=qt,c=zp;t.StringFilterExpression={parse(f){if(f.match(/^\s*$/))return{parsed:null,log:[]};const x=new u.Parser(u.Grammar.fromCompiled(a.default)),h=(0,c.run_parser)(f,x);return h.parsed&&(0,o.isStringFilter)(h.parsed)?{parsed:h.parsed,log:[]}:{parsed:null,log:h.log}},unparse(f){if(f===null)return"";switch(f.operator){case"=":return f.not?f.values.map(x=>"-"+(0,l.escape)(x)).join(", "):f.values.map(x=>(0,l.escape)(x)).join(", ");case"~":return f.not?f.escaped_values.map(x=>"-"+x).join(", "):f.escaped_values.join(", ");case"starts":return f.not?f.values.map(x=>"-"+(0,l.escape)(x)+"%").join(", "):f.values.map(x=>(0,l.escape)(x)+"%").join(", ");case"ends":return f.not?f.values.map(x=>"-%"+(0,l.escape)(x)).join(", "):f.values.map(x=>"%"+(0,l.escape)(x)).join(", ");case"contains":return f.not?f.values.map(x=>"-%"+(0,l.escape)(x)+"%").join(", "):f.values.map(x=>"%"+(0,l.escape)(x)+"%").join(", ");case"or":return f.members.map(x=>t.StringFilterExpression.unparse(x)).join(" | ");case"and":return f.members.map(x=>t.StringFilterExpression.unparse(x)).join("; ");case",":return f.members.map(x=>t.StringFilterExpression.unparse(x)).join(", ");case"()":{const x="("+t.StringFilterExpression.unparse(f.expr)+")";return f.not?"-"+x:x}case"null":return f.not?"-null":"null";case"empty":return f.not?"-empty":"empty"}}}}(mae);var gae={},nB={},rXe=T&&T.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(nB,"__esModule",{value:!0});function iXe(t){return t[0]}const yae=rXe(X$),xu=qt,Ke=yae.default.compile({WS:/[ \t]+/,id:{match:/[a-zA-Z]+/,type:yae.default.keywords({AND:"and",OR:"or",NOT:"not",NULL_KW:"null",TO:"to",NOW:"now",LAST:"last",THIS:"this",NEXT:"next",AGO:"ago",FROM:"from",BEFORE:"before",AFTER:"after",FOR:"for",TODAY:"today",YESTERDAY:"yesterday",TOMORROW:"tomorrow",SECOND:"second",MINUTE:"minute",HOUR:"hour",DAY:"day",WEEK:"week",MONTH:"month",QUARTER:"quarter",YEAR:"year",SECONDS:"seconds",MINUTES:"minutes",HOURS:"hours",DAYS:"days",WEEKS:"weeks",MONTHS:"months",QUARTERS:"quarters",YEARS:"years",MONDAY:"monday",TUESDAY:"tuesday",WEDNESDAY:"wednesday",THURSDAY:"thursday",FRIDAY:"friday",SATURDAY:"saturday",SUNDAY:"sunday"})},oparen:"(",cparen:")",comma:",",literal:/\d\d\d\d-\d\d-\d\d[ Tt]\d\d:\d\d(?::\d\d(?:[.,]\d*)?)/,lit_week:/\d\d\d\d-\d\d-\d\d-[Ww][Kk]/,lit_quarter:/\d\d\d\d-[qQ][1234]/,lit_min:/\d\d\d\d-\d\d-\d\d[ Tt]\d\d:\d\d/,lit_hour:/\d\d\d\d-\d\d-\d\d[ Tt]\d\d/,lit_day:/\d\d\d\d-\d\d-\d\d/,lit_month:/\d\d\d\d-\d\d/,lit_year:/\d\d\d\d/,n:/\d+/}),sXe=Ke.next;Ke.next=(t=>()=>{for(;;){const e=t.call(Ke);if(e===void 0||e.type!=="WS")return e}})(sXe);const oXe={Lexer:Ke,ParserRules:[{name:"temporalFilter",symbols:["temporalFilter","conjunction","temporalUnary"],postprocess:([t,e,r])=>(0,xu.joinTemporal)(t,e[0].text,r)},{name:"temporalFilter",symbols:["temporalUnary"],postprocess:t=>t[0]},{name:"temporalUnary$ebnf$1",symbols:[Ke.has("NOT")?{type:"NOT"}:NOT],postprocess:iXe},{name:"temporalUnary$ebnf$1",symbols:[],postprocess:()=>null},{name:"temporalUnary",symbols:["temporalUnary$ebnf$1","clause"],postprocess:([t,e])=>(0,xu.temporalNot)(e,t)},{name:"duration",symbols:["number","unit"],postprocess:([t,e])=>({units:e,n:t})},{name:"number",symbols:[Ke.has("n")?{type:"n"}:n],postprocess:([t])=>t.text},{name:"number",symbols:[Ke.has("lityear")?{type:"lityear"}:lityear],postprocess:([t])=>t.text},{name:"unit$subexpression$1",symbols:[Ke.has("SECOND")?{type:"SECOND"}:SECOND]},{name:"unit$subexpression$1",symbols:[Ke.has("MINUTE")?{type:"MINUTE"}:MINUTE]},{name:"unit$subexpression$1",symbols:[Ke.has("HOUR")?{type:"HOUR"}:HOUR]},{name:"unit$subexpression$1",symbols:[Ke.has("DAY")?{type:"DAY"}:DAY]},{name:"unit$subexpression$1",symbols:[Ke.has("WEEK")?{type:"WEEK"}:WEEK]},{name:"unit$subexpression$1",symbols:[Ke.has("MONTH")?{type:"MONTH"}:MONTH]},{name:"unit$subexpression$1",symbols:[Ke.has("QUARTER")?{type:"QUARTER"}:QUARTER]},{name:"unit$subexpression$1",symbols:[Ke.has("YEAR")?{type:"YEAR"}:YEAR]},{name:"unit$subexpression$1",symbols:[Ke.has("SECONDS")?{type:"SECONDS"}:SECONDS]},{name:"unit$subexpression$1",symbols:[Ke.has("MINUTES")?{type:"MINUTES"}:MINUTES]},{name:"unit$subexpression$1",symbols:[Ke.has("HOURS")?{type:"HOURS"}:HOURS]},{name:"unit$subexpression$1",symbols:[Ke.has("DAYS")?{type:"DAYS"}:DAYS]},{name:"unit$subexpression$1",symbols:[Ke.has("WEEKS")?{type:"WEEKS"}:WEEKS]},{name:"unit$subexpression$1",symbols:[Ke.has("MONTHS")?{type:"MONTHS"}:MONTHS]},{name:"unit$subexpression$1",symbols:[Ke.has("QUARTERS")?{type:"QUARTERS"}:QUARTERS]},{name:"unit$subexpression$1",symbols:[Ke.has("YEARS")?{type:"YEARS"}:YEARS]},{name:"unit",symbols:["unit$subexpression$1"],postprocess:([t])=>(0,xu.mkUnits)(t[0].text)},{name:"clause",symbols:[Ke.has("NULL_KW")?{type:"NULL_KW"}:NULL_KW],postprocess:()=>({operator:"null"})},{name:"clause",symbols:["parens"],postprocess:t=>t[0]},{name:"clause",symbols:["duration"],postprocess:([t])=>({operator:"in_last",...t})},{name:"clause",symbols:[Ke.has("BEFORE")?{type:"BEFORE"}:BEFORE,"moment"],postprocess:([t,e])=>({operator:"before",before:e})},{name:"clause",symbols:[Ke.has("AFTER")?{type:"AFTER"}:AFTER,"moment"],postprocess:([t,e])=>({operator:"after",after:e})},{name:"clause",symbols:["moment",Ke.has("TO")?{type:"TO"}:TO,"moment"],postprocess:([t,e,r])=>({operator:"to",fromMoment:t,toMoment:r})},{name:"clause",symbols:["moment",Ke.has("FOR")?{type:"FOR"}:FOR,"duration"],postprocess:([t,e,r])=>({...r,operator:"for",begin:t})},{name:"clause$subexpression$1",symbols:[Ke.has("LAST")?{type:"LAST"}:LAST]},{name:"clause$subexpression$1",symbols:[Ke.has("NEXT")?{type:"NEXT"}:NEXT]},{name:"clause",symbols:["clause$subexpression$1","duration"],postprocess:([t,e])=>({operator:t[0].text,...e})},{name:"clause",symbols:["moment"],postprocess:([t])=>({operator:"in",in:t})},{name:"lastNextThis",symbols:[Ke.has("THIS")?{type:"THIS"}:THIS],postprocess:([t])=>t.text.toLowerCase()},{name:"lastNextThis",symbols:[Ke.has("NEXT")?{type:"NEXT"}:NEXT],postprocess:([t])=>t.text.toLowerCase()},{name:"lastNextThis",symbols:[Ke.has("LAST")?{type:"LAST"}:LAST],postprocess:([t])=>t.text.toLowerCase()},{name:"moment",symbols:[Ke.has("NOW")?{type:"NOW"}:NOW],postprocess:()=>({moment:"now"})},{name:"moment",symbols:["lastNextThis","unit"],postprocess:([t,e])=>({moment:t,units:e})},{name:"moment",symbols:[Ke.has("TODAY")?{type:"TODAY"}:TODAY],postprocess:()=>({moment:"today"})},{name:"moment",symbols:[Ke.has("YESTERDAY")?{type:"YESTERDAY"}:YESTERDAY],postprocess:()=>({moment:"yesterday"})},{name:"moment",symbols:[Ke.has("TOMORROW")?{type:"TOMORROW"}:TOMORROW],postprocess:()=>({moment:"tomorrow"})},{name:"moment",symbols:["duration",Ke.has("AGO")?{type:"AGO"}:AGO],postprocess:([t,e])=>({moment:"ago",...t})},{name:"moment",symbols:["duration",Ke.has("FROM")?{type:"FROM"}:FROM,Ke.has("NOW")?{type:"NOW"}:NOW],postprocess:([t,e])=>({moment:"from_now",...t})},{name:"moment",symbols:[Ke.has("NEXT")?{type:"NEXT"}:NEXT,"weekday"],postprocess:([t,e])=>({moment:e.toLowerCase(),which:"next"})},{name:"moment",symbols:[Ke.has("LAST")?{type:"LAST"}:LAST,"weekday"],postprocess:([t,e])=>({moment:e.toLowerCase(),which:"last"})},{name:"moment",symbols:["weekday"],postprocess:([t])=>({moment:t.toLowerCase(),which:"last"})},{name:"moment",symbols:["timeLiteral"],postprocess:t=>t[0]},{name:"timeLiteral",symbols:[Ke.has("literal")?{type:"literal"}:literal],postprocess:([t])=>(0,xu.timeLiteral)(t.text)},{name:"timeLiteral",symbols:[Ke.has("lit_day")?{type:"lit_day"}:lit_day],postprocess:([t])=>(0,xu.timeLiteral)(t.text,"day")},{name:"timeLiteral",symbols:[Ke.has("lit_min")?{type:"lit_min"}:lit_min],postprocess:([t])=>(0,xu.timeLiteral)(t.text,"minute")},{name:"timeLiteral",symbols:[Ke.has("lit_hour")?{type:"lit_hour"}:lit_hour],postprocess:([t])=>(0,xu.timeLiteral)(t.text,"hour")},{name:"timeLiteral",symbols:[Ke.has("lit_month")?{type:"lit_month"}:lit_month],postprocess:([t])=>(0,xu.timeLiteral)(t.text,"month")},{name:"timeLiteral",symbols:[Ke.has("lit_quarter")?{type:"lit_quarter"}:lit_quarter],postprocess:([t])=>(0,xu.timeLiteral)(t.text,"quarter")},{name:"timeLiteral",symbols:[Ke.has("lit_week")?{type:"lit_week"}:lit_week],postprocess:([t])=>(0,xu.timeLiteral)(t.text,"week")},{name:"timeLiteral",symbols:[Ke.has("lit_year")?{type:"lit_year"}:lit_year],postprocess:([t])=>(0,xu.timeLiteral)(t.text,"year")},{name:"weekday$subexpression$1",symbols:[Ke.has("MONDAY")?{type:"MONDAY"}:MONDAY]},{name:"weekday$subexpression$1",symbols:[Ke.has("TUESDAY")?{type:"TUESDAY"}:TUESDAY]},{name:"weekday$subexpression$1",symbols:[Ke.has("WEDNESDAY")?{type:"WEDNESDAY"}:WEDNESDAY]},{name:"weekday$subexpression$1",symbols:[Ke.has("THURSDAY")?{type:"THURSDAY"}:THURSDAY]},{name:"weekday$subexpression$1",symbols:[Ke.has("FRIDAY")?{type:"FRIDAY"}:FRIDAY]},{name:"weekday$subexpression$1",symbols:[Ke.has("SATURDAY")?{type:"SATURDAY"}:SATURDAY]},{name:"weekday$subexpression$1",symbols:[Ke.has("SUNDAY")?{type:"SUNDAY"}:SUNDAY]},{name:"weekday",symbols:["weekday$subexpression$1"],postprocess:([t])=>t[0].text},{name:"parens",symbols:[Ke.has("oparen")?{type:"oparen"}:oparen,"temporalFilter",Ke.has("cparen")?{type:"cparen"}:cparen],postprocess:([t,e,r])=>({operator:"()",expr:e})},{name:"conjunction",symbols:[Ke.has("OR")?{type:"OR"}:OR]},{name:"conjunction",symbols:[Ke.has("AND")?{type:"AND"}:AND]}],ParserStart:"temporalFilter"};nB.default=oXe,function(t){var e=T&&T.__createBinding||(Object.create?function(h,p,m,y){y===void 0&&(y=m);var g=Object.getOwnPropertyDescriptor(p,m);(!g||("get"in g?!p.__esModule:g.writable||g.configurable))&&(g={enumerable:!0,get:function(){return p[m]}}),Object.defineProperty(h,y,g)}:function(h,p,m,y){y===void 0&&(y=m),h[y]=p[m]}),r=T&&T.__setModuleDefault||(Object.create?function(h,p){Object.defineProperty(h,"default",{enumerable:!0,value:p})}:function(h,p){h.default=p}),i=T&&T.__importStar||function(h){if(h&&h.__esModule)return h;var p={};if(h!=null)for(var m in h)m!=="default"&&Object.prototype.hasOwnProperty.call(h,m)&&e(p,h,m);return r(p,h),p},s=T&&T.__importDefault||function(h){return h&&h.__esModule?h:{default:h}};Object.defineProperty(t,"__esModule",{value:!0}),t.TemporalFilterExpression=void 0;const o=bn,u=s(nB),a=i(K$),l=zp;t.TemporalFilterExpression={parse(h){if(h.match(/^\s*$/))return{parsed:null,log:[]};const p=new a.Parser(a.Grammar.fromCompiled(u.default)),m=(0,l.run_parser)(h,p);return m.parsed&&(0,o.isTemporalFilter)(m.parsed)?{parsed:m.parsed,log:[]}:{parsed:null,log:m.log}},unparse(h){if(h===null)return"";switch(h.operator){case"null":return c(h,"null");case"in":return c(h,x(h.in));case"()":return"("+t.TemporalFilterExpression.unparse(h.expr)+")";case"in_last":return c(h,f(h));case"last":case"next":return c(h,`${h.operator} ${f(h)}`);case"before":return c(h,`before ${x(h.before)}`);case"after":return c(h,`after ${x(h.after)}`);case"to":return c(h,`${x(h.fromMoment)} to ${x(h.toMoment)}`);case"for":return c(h,`${x(h.begin)} for ${f(h)}`);case"or":return h.members.map(p=>t.TemporalFilterExpression.unparse(p)).join(" or ");case"and":return h.members.map(p=>t.TemporalFilterExpression.unparse(p)).join(" and ")}}};function c(h,p){return"not"in h&&h.not?"not "+p:p}function f(h){return h.n==="1"?`1 ${h.units}`:`${h.n} ${h.units}s`}function x(h){switch(h.moment){case"literal":return h.literal;case"now":case"today":case"yesterday":case"tomorrow":return h.moment;case"monday":case"tuesday":case"wednesday":case"thursday":case"friday":case"saturday":case"sunday":return h.which==="next"?"next "+h.moment:h.moment;case"this":case"next":case"last":return`${h.moment} ${h.units}`;case"ago":return`${f(h)} ago`;case"from_now":return`${f(h)} from now`}}}(gae),function(t){var e=T&&T.__createBinding||(Object.create?function(a,l,c,f){f===void 0&&(f=c);var x=Object.getOwnPropertyDescriptor(l,c);(!x||("get"in x?!l.__esModule:x.writable||x.configurable))&&(x={enumerable:!0,get:function(){return l[c]}}),Object.defineProperty(a,f,x)}:function(a,l,c,f){f===void 0&&(f=c),a[f]=l[c]}),r=T&&T.__exportStar||function(a,l){for(var c in a)c!=="default"&&!Object.prototype.hasOwnProperty.call(l,c)&&e(l,a,c)};Object.defineProperty(t,"__esModule",{value:!0}),t.TemporalFilterExpression=t.StringFilterExpression=t.NumberFilterExpression=t.BooleanFilterExpression=void 0,r(bn,t);var i=k4;Object.defineProperty(t,"BooleanFilterExpression",{enumerable:!0,get:function(){return i.BooleanFilterExpression}});var s=xae;Object.defineProperty(t,"NumberFilterExpression",{enumerable:!0,get:function(){return s.NumberFilterExpression}});var o=mae;Object.defineProperty(t,"StringFilterExpression",{enumerable:!0,get:function(){return o.StringFilterExpression}});var u=gae;Object.defineProperty(t,"TemporalFilterExpression",{enumerable:!0,get:function(){return u.TemporalFilterExpression}})}(B4);var P4={};const Cy=yP(H1e);Object.defineProperty(P4,"__esModule",{value:!0}),P4.TemporalFilterCompiler=void 0;const rB=Xe,Zx=Cy,Eae="yyyy",Aae=`${Eae}-LL`,iB=`${Aae}-dd`,_ae=`${iB} HH`,vae=`${_ae}:mm`,xs=`${vae}:ss`;class uXe{constructor(e,r,i="timestamp"){this.expr=e,this.timetype=i,this.d=r}time(e){return this.timetype==="timestamp"?e:this.d.sqlCast({},{node:"cast",e:{node:"genericSQLExpr",src:["",e],kids:{args:[]},sql:e},srcType:{type:"timestamp"},dstType:{type:"date"},safe:!1})}compile(e){const r=this.expr;switch(e.operator){case"after":return`${r} ${e.not?"<":">="} ${this.time(this.moment(e.after).end)}`;case"before":return`${r} ${e.not?">=":"<"} ${this.time(this.moment(e.before).begin.sql)}`;case"in":{const i=this.moment(e.in);return i.begin.sql===i.end?e.not?`${r} != ${this.time(i.end)} OR ${r} IS NULL`:`${r} = ${this.time(i.end)}`:this.isIn(e.not,i.begin.sql,i.end)}case"for":{const i=this.moment(e.begin),s=this.delta(i.begin,"+",e.n,e.units);return this.isIn(e.not,i.begin.sql,s.sql)}case"in_last":{const i=Number(e.n)-1,s=this.nowDot(e.units),o=i>0?this.delta(s,"-",i.toString(),e.units):s,u=this.delta(s,"+","1",e.units);return this.isIn(e.not,o.sql,u.sql)}case"to":{const i=this.moment(e.fromMoment),s=this.moment(e.toMoment);return this.isIn(e.not,i.begin.sql,s.begin.sql)}case"last":{const i=this.nowDot(e.units),s=this.delta(i,"-",e.n,e.units);return this.isIn(e.not,s.sql,i.sql)}case"next":{const i=this.nowDot(e.units),s=this.delta(i,"+","1",e.units),o=this.delta(i,"+",(Number(e.n)+1).toString(),e.units);return this.isIn(e.not,s.sql,o.sql)}case"null":return e.not?`${r} IS NOT NULL`:`${r} IS NULL`;case"()":{const i="("+this.compile(e.expr)+")";return e.not?`NOT ${i}`:i}case"and":case"or":return e.members.map(i=>this.compile(i)).join(` ${e.operator.toUpperCase()} `)}}expandLiteral(e){let r=e.literal;switch(e.units){case"year":{const i=Zx.DateTime.fromFormat(r,Eae),s=this.literalNode(i.toFormat(xs)),o=i.plus({year:1});return{begin:s,end:this.literalNode(o.toFormat(xs)).sql}}case"month":{const i=Zx.DateTime.fromFormat(r,Aae),s=this.literalNode(i.toFormat(xs)),o=i.plus({month:1});return{begin:s,end:this.literalNode(o.toFormat(xs)).sql}}case"day":{const i=Zx.DateTime.fromFormat(r,iB),s=this.literalNode(i.toFormat(xs)),o=i.plus({day:1});return{begin:s,end:this.literalNode(o.toFormat(xs)).sql}}case"hour":{const i=Zx.DateTime.fromFormat(r,_ae),s=this.literalNode(i.toFormat(xs)),o=i.plus({hour:1});return{begin:s,end:this.literalNode(o.toFormat(xs)).sql}}case"minute":{const i=Zx.DateTime.fromFormat(r,vae),s=this.literalNode(i.toFormat(xs)),o=i.plus({minute:1});return{begin:s,end:this.literalNode(o.toFormat(xs)).sql}}case"week":{const o=Zx.DateTime.fromFormat(r.slice(0,10),iB).plus({day:1}).startOf("week").minus({day:1}),u=this.literalNode(o.toFormat(xs)),a=o.plus({days:7});return{begin:u,end:this.literalNode(a.toFormat(xs)).sql}}case"quarter":{const i=r.slice(0,4),s=r.slice(6);s==="1"?r=`${i}-01-01 00:00:00`:s==="2"?r=`${i}-03-01 00:00:00`:s==="3"?r=`${i}-06-01 00:00:00`:r=`${i}-09-01 00:00:00`;const o=this.literalNode(r),a=Zx.DateTime.fromFormat(r,xs).plus({months:3});return{begin:o,end:this.literalNode(a.toFormat(xs)).sql}}case void 0:case"second":{const i=this.literalNode(r);return{begin:i,end:i.sql}}}}literalNode(e){const r={node:"timeLiteral",typeDef:{type:"timestamp"},literal:e};return{...r,sql:this.d.sqlLiteralTime({},r)}}nowExpr(){return{node:"now",typeDef:{type:"timestamp"},sql:this.d.sqlNowExpr()}}n(e){return{node:"numberLiteral",literal:e,sql:e}}delta(e,r,i,s){const o={node:"delta",op:r,units:s,kids:{base:(0,rB.mkTemporal)(e,"timestamp"),delta:this.n(i)}};return{...o,sql:this.d.sqlAlterTimeExpr(o)}}dayofWeek(e){const r={node:"extract",e:(0,rB.mkTemporal)(e,"timestamp"),units:"day_of_week"};return{...r,sql:this.d.sqlTimeExtractExpr({},r)}}nowDot(e){const r={node:"trunc",e:this.nowExpr(),units:e};return{...r,sql:this.d.sqlTruncExpr({},r)}}thisUnit(e){const r=this.nowDot(e),i=this.delta(r,"+","1",e);return{begin:r,end:i.sql}}lastUnit(e){const r=this.nowDot(e);return{begin:this.delta(r,"-","1",e),end:r.sql}}nextUnit(e){const r=this.nowDot(e),i=this.delta(r,"+","1",e),s=this.delta(r,"+","2",e);return{begin:i,end:s.sql}}mod7(e){return this.d.hasModOperator?`(${e})%7`:`MOD(${e},7)`}moment(e){switch(e.moment){case"now":{const r=this.nowExpr();return{begin:r,end:r.sql}}case"literal":return this.expandLiteral(e);case"ago":case"from_now":{const r=this.nowDot(e.units),i=(0,rB.mkTemporal)(r,"timestamp"),s=this.delta(i,e.moment==="ago"?"-":"+",e.n,e.units);if(e.moment==="ago"&&e.n==="1")return{begin:s,end:r.sql};const o=Number(e.n)+(e.moment==="ago"?-1:1),u={...s,kids:{base:i,delta:this.n(o.toString())}};return{begin:s,end:this.d.sqlAlterTimeExpr(u)}}case"today":return this.thisUnit("day");case"yesterday":return this.lastUnit("day");case"tomorrow":return this.nextUnit("day");case"this":return this.thisUnit(e.units);case"last":return this.lastUnit(e.units);case"next":return this.nextUnit(e.units);case"monday":case"tuesday":case"wednesday":case"thursday":case"friday":case"saturday":case"sunday":{const r=["sunday","monday","tuesday","wednesday","thursday","friday","saturday"].indexOf(e.moment),i=this.dayofWeek(this.nowExpr()).sql;if(e.which==="next"){const a=`${this.mod7(`${r}-(${i}-1)+6`)}+1`,l=this.delta(this.thisUnit("day").begin,"+",a,"day"),c=this.delta(this.thisUnit("day").begin,"+",`${a}+1`,"day");return{begin:l,end:c.sql}}const s=`${this.mod7(`(${i}-1)-${r}+6`)}+1`,o=this.delta(this.thisUnit("day").begin,"-",s,"day"),u=this.delta(this.thisUnit("day").begin,"-",`(${s})-1`,"day");return{begin:o,end:u.sql}}}}isIn(e,r,i){let s=">=",o="<",u="AND";return e&&(u="OR",s="<",o=">="),r=this.time(r),i=this.time(i),`${this.expr} ${s} ${r} ${u} ${this.expr} ${o} ${i}`}}P4.TemporalFilterCompiler=uXe,function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.FilterCompilers=void 0;const e=B4,r=P4;function i(u){return u.replace(/([%_\\])/g,"\\$1")}function s(u){return u===">"?"<=":u==="<"?">=":u===">="?"<":">"}function o(u,a){const l=` OR ${a} IS NULL`;return u.length===1?`${u[0]}${l}`:`(${u.join(" AND ")})${l}`}t.FilterCompilers={compile(u,a,l,c){if(a===null)return"true";if(u==="string"&&(0,e.isStringFilter)(a))return t.FilterCompilers.stringCompile(a,l,c);if(u==="number"&&(0,e.isNumberFilter)(a))return t.FilterCompilers.numberCompile(a,l,c);if(u==="boolean"&&(0,e.isBooleanFilter)(a))return t.FilterCompilers.booleanCompile(a,l,c);if((u==="date"||u==="timestamp")&&(0,e.isTemporalFilter)(a))return t.FilterCompilers.temporalCompile(a,l,c,u);throw new Error("INTERNAL ERROR: No filter compiler for "+u)},numberCompile(u,a,l){switch(u.operator){case"!=":case"=":{const c=u.operator==="="&&u.not||u.operator==="!="&&!u.not,f=u.values.join(", ");return u.values.length===1?c?`${a} != ${f} OR ${a} IS NULL`:`${a} = ${f}`:c?`${a} NOT IN (${f}) OR ${a} IS NULL`:`${a} IN (${f})`}case">":case"<":case">=":case"<=":return u.values.map(c=>`${a} ${u.operator} ${c}`).join(u.not?" AND ":" OR ");case"range":{let c=u.startOperator,f=u.endOperator,x=" AND ";return u.not&&(c=s(c),f=s(f),x=" OR "),`${a} ${c} ${u.startValue} ${x} ${a} ${f} ${u.endValue}`}case"null":return u.not?`${a} IS NOT NULL`:`${a} IS NULL`;case"()":{const c="("+t.FilterCompilers.numberCompile(u.expr,a,l)+")";return u.not?`NOT ${c}`:c}case"and":case"or":return u.members.map(c=>t.FilterCompilers.numberCompile(c,a,l)).join(` ${u.operator.toUpperCase()} `)}},booleanCompile(u,a,l){switch(u.operator){case"false":return`${a} = false`;case"false_or_null":return`${a} IS NULL OR ${a} = false`;case"null":return u.not?`${a} IS NOT NULL`:`${a} IS NULL`;case"true":return a}},stringCompile(u,a,l){switch(u.operator){case"null":return u.not?`${a} IS NOT NULL`:`${a} IS NULL`;case"empty":return u.not?`COALESCE(${a},'') != ''`:`COALESCE(${a},'') = ''`;case"=":{if(u.values.length===1){const f=u.not?"!=":"=",x=`${a} ${f} ${l.sqlLiteralString(u.values[0])}`;return u.not?`(${x} OR ${a} IS NULL)`:x}const c="("+u.values.map(f=>l.sqlLiteralString(f)).join(", ")+")";return u.not?`(${a} NOT IN ${c} OR ${a} IS NULL)`:`${a} IN ${c}`}case"()":{const c="("+t.FilterCompilers.stringCompile(u.expr,a,l)+")";return u.not?`not ${c}`:c}case"contains":{const c=u.values.map(f=>"%"+i(f)+"%");return u.not?o(c.map(f=>l.sqlLike("NOT LIKE",a,f)),a):c.map(f=>l.sqlLike("LIKE",a,f)).join(" OR ")}case"starts":{const c=u.values.map(f=>i(f)+"%");return u.not?o(c.map(f=>l.sqlLike("NOT LIKE",a,f)),a):c.map(f=>l.sqlLike("LIKE",a,f)).join(" OR ")}case"ends":{const c=u.values.map(f=>"%"+i(f));return u.not?o(c.map(f=>l.sqlLike("NOT LIKE",a,f)),a):c.map(f=>l.sqlLike("LIKE",a,f)).join(" OR ")}case"~":return u.not?o(u.escaped_values.map(c=>l.sqlLike("NOT LIKE",a,c)),a):u.escaped_values.map(c=>l.sqlLike("LIKE",a,c)).join(" OR ");case"and":return u.members.map(f=>t.FilterCompilers.stringCompile(f,a,l)).join(" AND ");case"or":return u.members.map(f=>t.FilterCompilers.stringCompile(f,a,l)).join(" AND ");case",":{const c=[],f=[];let x=!1,h=!1,p=!1,m=!1;for(const E of u.members)switch(E.operator){case"or":case"and":case",":c.push(E);break;case"null":E.not?h=!0:x=!0;break;case"empty":E.not?(m=!0,h=!0):(p=!0,x=!0);break;default:(E.not?f:c).push(E)}if(p&&m||x&&h)return"false";let y="";if(c.length>0||x||p){m=!1,h=!1;const E=c.map(A=>t.FilterCompilers.stringCompile(A,a,l));p&&E.push(`${a} = ''`),x&&E.push(`${a} IS NULL`),y=E.join(" OR ")}let g="";if(f.length>0||m||h){const E=f.map(A=>t.FilterCompilers.stringCompile(A,a,l));m&&E.push(`${a} != ''`),h&&E.push(`${a} IS NOT NULL`),g=E.join(" AND ")}return y?g!==""?`(${y}) AND (${g})`:y:g!==""?g:"true"}}},temporalCompile(u,a,l,c){return new r.TemporalFilterCompiler(a,l,c).compile(u)}}}(fae),Object.defineProperty($s,"__esModule",{value:!0}),$s.QueryModel=$s.getResultStructDefForQuery=$s.getResultStructDefForView=$s.Segment=void 0;const aXe=Up,lXe=Mp,cXe=Ey,ke=Xe,Tn=$t,U4=Hp,fXe=ai,xXe=fae,dXe=B4;function Cae(t){return t.map(e=>encodeURIComponent(e)).join("/")}function sB(t){return`'${t}'`}function hXe(t){return t.replace(/[^a-zA-Z0-9_]/g,"_o_")}function Gp(t){const e=[];for(const r of t.fields.filter(ke.fieldIsIntrinsic))e.push({type:r.type,sqlExpression:(0,ke.getIdentifier)(r),rawName:(0,ke.getIdentifier)(r),sqlOutputName:(0,ke.getIdentifier)(r)});return e}class pXe extends Set{add_use(e){if(e!==void 0)return this.add(e)}hasAsymetricFunctions(){return this.has("sum")||this.has("avg")||this.has("count")||this.has("generic_asymmetric_aggregate")}}class Sy{constructor(e=!0,r){this.parent=r,this.withs=[],this.udfs=[],this.pdts=[],this.dependenciesToMaterialize={},this.stagePrefix="__stage",this.useCTE=e}getName(e){return`${this.stagePrefix}${e}`}root(){return this.parent===void 0?this:this.parent.root()}addStage(e){return this.useCTE?(this.withs.push(e),this.getName(this.withs.length-1)):(this.withs[0]=e,(0,Tn.indent)(`
|
|
1045
|
+
`)},S.prototype.clone=function(){return new S(this.states,this.state)},S.prototype.has=function(D){return!0},{compile:_,states:C,error:Object.freeze({error:!0}),fallback:Object.freeze({fallback:!0}),keywords:b}})})(hae);var X$=hae.exports,qt={};Object.defineProperty(qt,"__esModule",{value:!0}),qt.mkUnits=qt.timeLiteral=qt.joinTemporal=qt.temporalNot=qt.numNot=qt.mkValues=qt.mkRange=qt.joinNumbers=qt.conjoin=qt.matchOp=qt.escape=qt.unescape=qt.maybeNot=void 0;const Sa=bn;function IJe(t){const[e,r]=t;return e&&r&&(0,Sa.isStringFilter)(r)?{...r,not:!0}:r}qt.maybeNot=IJe;function vy(t){return t.replace(/\\(.)/g,"$1")}qt.unescape=vy;function $Je(t){const e=t.toLowerCase();return e==="null"||e==="empty"?"\\"+t:t.replace(/([,; |()\\%_-])/g,"\\$1")}qt.escape=$Je;function M4(t){let e=!1,r=!1,i=0,s=!1;const o=t.length;for(let u=0;u<o;u+=1){const a=t[u];if(a===" "||a===" "){i+=1;continue}i=0,a==="%"?(s=!0,u===0&&(e=!0),r=!0):(r=!1,a==="\\"?u+=1:a==="_"&&(s=!0))}return{hasLike:s,percentEnd:r&&o>1,percentStart:e&&o>1,endSpace:i}}function BJe(t){let e=t.trimStart();const{hasLike:r,percentEnd:i,percentStart:s,endSpace:o}=M4(e);if(o>0&&(e=e.slice(0,-o)),r){if(s&&i){const u=e.slice(1,-1);if(!M4(u).hasLike&&u.length>0)return{operator:"contains",values:[vy(u)]}}else if(i){const u=e.slice(0,-1);if(!M4(u).hasLike)return{operator:"starts",values:[vy(u)]}}else if(s){const u=e.slice(1);if(!M4(u).hasLike)return{operator:"ends",values:[vy(u)]}}return{operator:"~",escaped_values:[e]}}return e.toLowerCase()==="null"||e==="NULL"?{operator:"null"}:e==="empty"||e==="EMPTY"?{operator:"empty"}:{operator:"=",values:[vy(e)]}}qt.matchOp=BJe;function Z$(t,e){var r,i;return t.operator===e.operator&&((r=t.not)!==null&&r!==void 0?r:!1)===((i=e.not)!==null&&i!==void 0?i:!1)}function kJe(t,e,r){if((0,Sa.isStringFilter)(t)&&(0,Sa.isStringFilter)(r)){if(e===","){if(t.operator==="~"&&Z$(t,r))return{...t,escaped_values:[...t.escaped_values,...r.escaped_values]};if((0,Sa.isStringCondition)(t)&&Z$(t,r))return{...t,values:[...t.values,...r.values]}}const i=e===","?",":e==="|"?"or":e===";"?"and":void 0;if(i)return t.operator===i?{...t,members:[...t.members,r]}:{operator:i,members:[t,r]}}return null}qt.conjoin=kJe;function MJe(t,e,r){if((0,Sa.isNumberFilter)(t)&&(0,Sa.isNumberFilter)(r)){if(e==="or"&&t.operator==="="&&Z$(t,r)){const i={operator:"=",values:[...t.values,...r.values]};return t.not&&(i.not=!0),i}if(e==="and"||e==="or")return t.operator===e?{...t,members:[...t.members,r]}:{operator:e,members:[t,r]}}return null}qt.joinNumbers=MJe;function PJe(t,e,r,i){return{operator:"range",startValue:e,startOperator:t==="("?">":">=",endValue:r,endOperator:i===")"?"<":"<="}}qt.mkRange=PJe;function UJe(t,e){return{values:[t,...e]}}qt.mkValues=UJe;function jJe(t,e){return(0,Sa.isNumberFilter)(t)&&e?t.operator==="="?{operator:"!=",values:t.values}:t.operator==="!="?{operator:"=",values:t.values}:{...t,not:!0}:t}qt.numNot=jJe;function qJe(t,e){return(0,Sa.isTemporalFilter)(t)&&e?{...t,not:!0}:t}qt.temporalNot=qJe;function HJe(t,e,r){return(0,Sa.isTemporalFilter)(t)&&(0,Sa.isTemporalFilter)(r)&&(e==="and"||e==="or")?t.operator===e?{...t,members:[...t.members,r]}:{operator:e,members:[t,r]}:null}qt.joinTemporal=HJe;function QJe(t,e){const r={moment:"literal",literal:t};return e&&(r.units=e),r}qt.timeLiteral=QJe;function zJe(t){switch(t.toLowerCase()){case"second":case"seconds":return"second";case"minute":case"minutes":return"minute";case"hour":case"hours":return"hour";case"day":case"days":return"day";case"week":case"weeks":return"week";case"month":case"months":return"month";case"quarter":case"quarters":return"quarter";case"year":case"years":return"year"}}qt.mkUnits=zJe;var GJe=T&&T.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(J$,"__esModule",{value:!0});function WJe(t){return t[0]}const pae=GJe(X$),Qp=qt,Ln=pae.default.compile({WS:/[ \t]+/,id:{match:/[a-zA-Z]+/,type:pae.default.keywords({AND:"and",OR:"or",NOT:"not",NULL_KW:"null",TO:"to"})},oparen:"(",cparen:")",obrack:"[",cbrack:"]",comma:",",op:/<=|>=|<|>/,ne:"!=",eq:"=",float:/-?(?:\d+)?\.\d+(?:[Ee][+-]?\d+)?/,numberE:/-?\d+[Ee][+-]?\d+/,integer:/-?\d+/}),VJe=Ln.next;Ln.next=(t=>()=>{for(;;){const e=t.call(Ln);if(e===void 0||e.type!=="WS")return e}})(VJe);const YJe={Lexer:Ln,ParserRules:[{name:"numberFilter",symbols:["numberFilter","conjunction","numberUnary"],postprocess:([t,e,r])=>(0,Qp.joinNumbers)(t,e[0].text,r)},{name:"numberFilter",symbols:["numberUnary"],postprocess:t=>t[0]},{name:"numberUnary$ebnf$1",symbols:[Ln.has("NOT")?{type:"NOT"}:NOT],postprocess:WJe},{name:"numberUnary$ebnf$1",symbols:[],postprocess:()=>null},{name:"numberUnary",symbols:["numberUnary$ebnf$1","clause"],postprocess:([t,e])=>(0,Qp.numNot)(e,t)},{name:"clause",symbols:[Ln.has("NULL_KW")?{type:"NULL_KW"}:NULL_KW],postprocess:()=>({operator:"null"})},{name:"clause$ebnf$1",symbols:[]},{name:"clause$ebnf$1",symbols:["clause$ebnf$1","numberList"],postprocess:t=>t[0].concat([t[1]])},{name:"clause",symbols:["N","clause$ebnf$1"],postprocess:([t,e])=>({operator:"=",...(0,Qp.mkValues)(t,e)})},{name:"clause$ebnf$2",symbols:[]},{name:"clause$ebnf$2",symbols:["clause$ebnf$2","numberList"],postprocess:t=>t[0].concat([t[1]])},{name:"clause",symbols:[Ln.has("eq")?{type:"eq"}:eq,"N","clause$ebnf$2"],postprocess:([t,e,r])=>({operator:"=",...(0,Qp.mkValues)(e,r)})},{name:"clause$ebnf$3",symbols:[]},{name:"clause$ebnf$3",symbols:["clause$ebnf$3","numberList"],postprocess:t=>t[0].concat([t[1]])},{name:"clause",symbols:[Ln.has("ne")?{type:"ne"}:ne,"N","clause$ebnf$3"],postprocess:([t,e,r])=>({operator:"!=",...(0,Qp.mkValues)(e,r)})},{name:"clause",symbols:[Ln.has("op")?{type:"op"}:op,"N"],postprocess:([t,e])=>({operator:t.text,values:[e]})},{name:"clause",symbols:[Ln.has("oparen")?{type:"oparen"}:oparen,"numberFilter",Ln.has("cparen")?{type:"cparen"}:cparen],postprocess:([t,e,r])=>({operator:"()",expr:e})},{name:"clause",symbols:["openInterval","N",Ln.has("TO")?{type:"TO"}:TO,"N","closeInterval"],postprocess:([t,e,r,i,s])=>(0,Qp.mkRange)(t[0].text,e,i,s[0].text)},{name:"numberList",symbols:[Ln.has("comma")?{type:"comma"}:comma,"N"],postprocess:([t,e])=>e},{name:"closeInterval",symbols:[Ln.has("cbrack")?{type:"cbrack"}:cbrack]},{name:"closeInterval",symbols:[Ln.has("cparen")?{type:"cparen"}:cparen]},{name:"openInterval",symbols:[Ln.has("obrack")?{type:"obrack"}:obrack]},{name:"openInterval",symbols:[Ln.has("oparen")?{type:"oparen"}:oparen]},{name:"N$subexpression$1",symbols:[Ln.has("float")?{type:"float"}:float]},{name:"N$subexpression$1",symbols:[Ln.has("numberE")?{type:"numberE"}:numberE]},{name:"N$subexpression$1",symbols:[Ln.has("integer")?{type:"integer"}:integer]},{name:"N",symbols:["N$subexpression$1"],postprocess:([t])=>t[0].text},{name:"conjunction",symbols:[Ln.has("OR")?{type:"OR"}:OR]},{name:"conjunction",symbols:[Ln.has("AND")?{type:"AND"}:AND]}],ParserStart:"numberFilter"};J$.default=YJe;var zp={};Object.defineProperty(zp,"__esModule",{value:!0}),zp.run_parser=void 0;const KJe=bn;function JJe(t,e){try{e.feed(t);const i=e.finish()[0];return(0,KJe.isFilterExpression)(i)?{parsed:i,log:[]}:{parsed:null,log:[]}}catch(r){let i=r.message,s=1,o=t.length;if(r.token){const u=r.token;s=u.col,o=u.text.length;const l=r.message.match(new RegExp("(?<=A ).*(?= based on:)","g")).map(c=>c.replace(/\s+token/i,""));i=`Unexpected ${u.type} token "${u.value}"`,l&&l.length&&(i+=` Tokens expected: ${[...new Set(l)]}`)}return{parsed:null,log:[{message:i,startIndex:s-1,endIndex:s-1+o-1,severity:"error"}]}}}zp.run_parser=JJe,function(t){var e=T&&T.__createBinding||(Object.create?function(c,f,x,h){h===void 0&&(h=x);var p=Object.getOwnPropertyDescriptor(f,x);(!p||("get"in p?!f.__esModule:p.writable||p.configurable))&&(p={enumerable:!0,get:function(){return f[x]}}),Object.defineProperty(c,h,p)}:function(c,f,x,h){h===void 0&&(h=x),c[h]=f[x]}),r=T&&T.__setModuleDefault||(Object.create?function(c,f){Object.defineProperty(c,"default",{enumerable:!0,value:f})}:function(c,f){c.default=f}),i=T&&T.__importStar||function(c){if(c&&c.__esModule)return c;var f={};if(c!=null)for(var x in c)x!=="default"&&Object.prototype.hasOwnProperty.call(c,x)&&e(f,c,x);return r(f,c),f},s=T&&T.__importDefault||function(c){return c&&c.__esModule?c:{default:c}};Object.defineProperty(t,"__esModule",{value:!0}),t.NumberFilterExpression=void 0;const o=bn,u=i(K$),a=s(J$),l=zp;t.NumberFilterExpression={parse(c){if(c.match(/^\s*$/))return{parsed:null,log:[]};const f=new u.Parser(u.Grammar.fromCompiled(a.default)),x=(0,l.run_parser)(c,f);return x.parsed&&(0,o.isNumberFilter)(x.parsed)?{parsed:x.parsed,log:[]}:{parsed:null,log:x.log}},unparse(c){if(c===null)return"";switch(c.operator){case"=":return c.values.join(", ");case"!=":return"!= "+c.values.join(", ");case">":case"<":case"<=":case">=":return c.not?c.values.map(f=>c.operator==="="?`not ${f}`:`not ${c.operator} ${f}`).join(", "):c.values.map(f=>`${c.operator} ${f}`).join(", ");case"range":{const f=c.startOperator===">"?"(":"[",x=c.endOperator==="<"?")":"]",h=`${f}${c.startValue} to ${c.endValue}${x}`;return c.not?`not ${h}`:h}case"null":return c.not?"not null":"null";case"and":case"or":return c.members.map(f=>t.NumberFilterExpression.unparse(f)).join(` ${c.operator} `);case"()":{const f="("+t.NumberFilterExpression.unparse(c.expr)+")";return c.not?"not "+f:f}}return`no unparse for ${JSON.stringify(c)}`}}}(xae);var mae={},eB={},XJe=T&&T.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(eB,"__esModule",{value:!0});function ZJe(t){return t[0]}const eXe=XJe(X$),tB=qt,fu=eXe.default.compile({WS:/[ \t]+/,comma:",",semi:";",or:"|",open:"(",close:")",minus:"-",matchStr:/(?:\\[^\n]|[^\n,;()|])+/}),tXe=fu.next;fu.next=(t=>()=>{for(;;){const e=t.call(fu);if(e==null||e.type!=="WS")return e}})(tXe);const nXe={Lexer:fu,ParserRules:[{name:"stringFilter",symbols:["stringFilter","conjunction","sfUnary"],postprocess:([t,e,r])=>(0,tB.conjoin)(t,e[0].text,r)},{name:"stringFilter",symbols:["sfUnary"],postprocess:t=>t[0]},{name:"sfUnary$ebnf$1",symbols:[fu.has("minus")?{type:"minus"}:minus],postprocess:ZJe},{name:"sfUnary$ebnf$1",symbols:[],postprocess:()=>null},{name:"sfUnary",symbols:["sfUnary$ebnf$1","clause"],postprocess:t=>(0,tB.maybeNot)(t)},{name:"parens",symbols:[fu.has("open")?{type:"open"}:open,"stringFilter",fu.has("close")?{type:"close"}:close],postprocess:([t,e,r])=>({operator:"()",expr:e})},{name:"clause",symbols:[fu.has("matchStr")?{type:"matchStr"}:matchStr],postprocess:([t])=>(0,tB.matchOp)(t.text)},{name:"clause",symbols:["parens"],postprocess:t=>t[0]},{name:"conjunction",symbols:[fu.has("comma")?{type:"comma"}:comma]},{name:"conjunction",symbols:[fu.has("semi")?{type:"semi"}:semi]},{name:"conjunction",symbols:[fu.has("or")?{type:"or"}:or]}],ParserStart:"stringFilter"};eB.default=nXe,function(t){var e=T&&T.__createBinding||(Object.create?function(f,x,h,p){p===void 0&&(p=h);var m=Object.getOwnPropertyDescriptor(x,h);(!m||("get"in m?!x.__esModule:m.writable||m.configurable))&&(m={enumerable:!0,get:function(){return x[h]}}),Object.defineProperty(f,p,m)}:function(f,x,h,p){p===void 0&&(p=h),f[p]=x[h]}),r=T&&T.__setModuleDefault||(Object.create?function(f,x){Object.defineProperty(f,"default",{enumerable:!0,value:x})}:function(f,x){f.default=x}),i=T&&T.__importStar||function(f){if(f&&f.__esModule)return f;var x={};if(f!=null)for(var h in f)h!=="default"&&Object.prototype.hasOwnProperty.call(f,h)&&e(x,f,h);return r(x,f),x},s=T&&T.__importDefault||function(f){return f&&f.__esModule?f:{default:f}};Object.defineProperty(t,"__esModule",{value:!0}),t.StringFilterExpression=void 0;const o=bn,u=i(K$),a=s(eB),l=qt,c=zp;t.StringFilterExpression={parse(f){if(f.match(/^\s*$/))return{parsed:null,log:[]};const x=new u.Parser(u.Grammar.fromCompiled(a.default)),h=(0,c.run_parser)(f,x);return h.parsed&&(0,o.isStringFilter)(h.parsed)?{parsed:h.parsed,log:[]}:{parsed:null,log:h.log}},unparse(f){if(f===null)return"";switch(f.operator){case"=":return f.not?f.values.map(x=>"-"+(0,l.escape)(x)).join(", "):f.values.map(x=>(0,l.escape)(x)).join(", ");case"~":return f.not?f.escaped_values.map(x=>"-"+x).join(", "):f.escaped_values.join(", ");case"starts":return f.not?f.values.map(x=>"-"+(0,l.escape)(x)+"%").join(", "):f.values.map(x=>(0,l.escape)(x)+"%").join(", ");case"ends":return f.not?f.values.map(x=>"-%"+(0,l.escape)(x)).join(", "):f.values.map(x=>"%"+(0,l.escape)(x)).join(", ");case"contains":return f.not?f.values.map(x=>"-%"+(0,l.escape)(x)+"%").join(", "):f.values.map(x=>"%"+(0,l.escape)(x)+"%").join(", ");case"or":return f.members.map(x=>t.StringFilterExpression.unparse(x)).join(" | ");case"and":return f.members.map(x=>t.StringFilterExpression.unparse(x)).join("; ");case",":return f.members.map(x=>t.StringFilterExpression.unparse(x)).join(", ");case"()":{const x="("+t.StringFilterExpression.unparse(f.expr)+")";return f.not?"-"+x:x}case"null":return f.not?"-null":"null";case"empty":return f.not?"-empty":"empty"}}}}(mae);var gae={},nB={},rXe=T&&T.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(nB,"__esModule",{value:!0});function iXe(t){return t[0]}const yae=rXe(X$),xu=qt,Ke=yae.default.compile({WS:/[ \t]+/,id:{match:/[a-zA-Z]+/,type:yae.default.keywords({AND:"and",OR:"or",NOT:"not",NULL_KW:"null",TO:"to",NOW:"now",LAST:"last",THIS:"this",NEXT:"next",AGO:"ago",FROM:"from",BEFORE:"before",AFTER:"after",FOR:"for",TODAY:"today",YESTERDAY:"yesterday",TOMORROW:"tomorrow",SECOND:"second",MINUTE:"minute",HOUR:"hour",DAY:"day",WEEK:"week",MONTH:"month",QUARTER:"quarter",YEAR:"year",SECONDS:"seconds",MINUTES:"minutes",HOURS:"hours",DAYS:"days",WEEKS:"weeks",MONTHS:"months",QUARTERS:"quarters",YEARS:"years",MONDAY:"monday",TUESDAY:"tuesday",WEDNESDAY:"wednesday",THURSDAY:"thursday",FRIDAY:"friday",SATURDAY:"saturday",SUNDAY:"sunday"})},oparen:"(",cparen:")",comma:",",literal:/\d\d\d\d-\d\d-\d\d[ Tt]\d\d:\d\d(?::\d\d(?:[.,]\d*)?)/,lit_week:/\d\d\d\d-\d\d-\d\d-[Ww][Kk]/,lit_quarter:/\d\d\d\d-[qQ][1234]/,lit_min:/\d\d\d\d-\d\d-\d\d[ Tt]\d\d:\d\d/,lit_hour:/\d\d\d\d-\d\d-\d\d[ Tt]\d\d/,lit_day:/\d\d\d\d-\d\d-\d\d/,lit_month:/\d\d\d\d-\d\d/,lit_year:/\d\d\d\d/,n:/\d+/}),sXe=Ke.next;Ke.next=(t=>()=>{for(;;){const e=t.call(Ke);if(e===void 0||e.type!=="WS")return e}})(sXe);const oXe={Lexer:Ke,ParserRules:[{name:"temporalFilter",symbols:["temporalFilter","conjunction","temporalUnary"],postprocess:([t,e,r])=>(0,xu.joinTemporal)(t,e[0].text,r)},{name:"temporalFilter",symbols:["temporalUnary"],postprocess:t=>t[0]},{name:"temporalUnary$ebnf$1",symbols:[Ke.has("NOT")?{type:"NOT"}:NOT],postprocess:iXe},{name:"temporalUnary$ebnf$1",symbols:[],postprocess:()=>null},{name:"temporalUnary",symbols:["temporalUnary$ebnf$1","clause"],postprocess:([t,e])=>(0,xu.temporalNot)(e,t)},{name:"duration",symbols:["number","unit"],postprocess:([t,e])=>({units:e,n:t})},{name:"number",symbols:[Ke.has("n")?{type:"n"}:n],postprocess:([t])=>t.text},{name:"number",symbols:[Ke.has("lityear")?{type:"lityear"}:lityear],postprocess:([t])=>t.text},{name:"unit$subexpression$1",symbols:[Ke.has("SECOND")?{type:"SECOND"}:SECOND]},{name:"unit$subexpression$1",symbols:[Ke.has("MINUTE")?{type:"MINUTE"}:MINUTE]},{name:"unit$subexpression$1",symbols:[Ke.has("HOUR")?{type:"HOUR"}:HOUR]},{name:"unit$subexpression$1",symbols:[Ke.has("DAY")?{type:"DAY"}:DAY]},{name:"unit$subexpression$1",symbols:[Ke.has("WEEK")?{type:"WEEK"}:WEEK]},{name:"unit$subexpression$1",symbols:[Ke.has("MONTH")?{type:"MONTH"}:MONTH]},{name:"unit$subexpression$1",symbols:[Ke.has("QUARTER")?{type:"QUARTER"}:QUARTER]},{name:"unit$subexpression$1",symbols:[Ke.has("YEAR")?{type:"YEAR"}:YEAR]},{name:"unit$subexpression$1",symbols:[Ke.has("SECONDS")?{type:"SECONDS"}:SECONDS]},{name:"unit$subexpression$1",symbols:[Ke.has("MINUTES")?{type:"MINUTES"}:MINUTES]},{name:"unit$subexpression$1",symbols:[Ke.has("HOURS")?{type:"HOURS"}:HOURS]},{name:"unit$subexpression$1",symbols:[Ke.has("DAYS")?{type:"DAYS"}:DAYS]},{name:"unit$subexpression$1",symbols:[Ke.has("WEEKS")?{type:"WEEKS"}:WEEKS]},{name:"unit$subexpression$1",symbols:[Ke.has("MONTHS")?{type:"MONTHS"}:MONTHS]},{name:"unit$subexpression$1",symbols:[Ke.has("QUARTERS")?{type:"QUARTERS"}:QUARTERS]},{name:"unit$subexpression$1",symbols:[Ke.has("YEARS")?{type:"YEARS"}:YEARS]},{name:"unit",symbols:["unit$subexpression$1"],postprocess:([t])=>(0,xu.mkUnits)(t[0].text)},{name:"clause",symbols:[Ke.has("NULL_KW")?{type:"NULL_KW"}:NULL_KW],postprocess:()=>({operator:"null"})},{name:"clause",symbols:["parens"],postprocess:t=>t[0]},{name:"clause",symbols:["duration"],postprocess:([t])=>({operator:"in_last",...t})},{name:"clause",symbols:[Ke.has("BEFORE")?{type:"BEFORE"}:BEFORE,"moment"],postprocess:([t,e])=>({operator:"before",before:e})},{name:"clause",symbols:[Ke.has("AFTER")?{type:"AFTER"}:AFTER,"moment"],postprocess:([t,e])=>({operator:"after",after:e})},{name:"clause",symbols:["moment",Ke.has("TO")?{type:"TO"}:TO,"moment"],postprocess:([t,e,r])=>({operator:"to",fromMoment:t,toMoment:r})},{name:"clause",symbols:["moment",Ke.has("FOR")?{type:"FOR"}:FOR,"duration"],postprocess:([t,e,r])=>({...r,operator:"for",begin:t})},{name:"clause$subexpression$1",symbols:[Ke.has("LAST")?{type:"LAST"}:LAST]},{name:"clause$subexpression$1",symbols:[Ke.has("NEXT")?{type:"NEXT"}:NEXT]},{name:"clause",symbols:["clause$subexpression$1","duration"],postprocess:([t,e])=>({operator:t[0].text,...e})},{name:"clause",symbols:["moment"],postprocess:([t])=>({operator:"in",in:t})},{name:"lastNextThis",symbols:[Ke.has("THIS")?{type:"THIS"}:THIS],postprocess:([t])=>t.text.toLowerCase()},{name:"lastNextThis",symbols:[Ke.has("NEXT")?{type:"NEXT"}:NEXT],postprocess:([t])=>t.text.toLowerCase()},{name:"lastNextThis",symbols:[Ke.has("LAST")?{type:"LAST"}:LAST],postprocess:([t])=>t.text.toLowerCase()},{name:"moment",symbols:[Ke.has("NOW")?{type:"NOW"}:NOW],postprocess:()=>({moment:"now"})},{name:"moment",symbols:["lastNextThis","unit"],postprocess:([t,e])=>({moment:t,units:e})},{name:"moment",symbols:[Ke.has("TODAY")?{type:"TODAY"}:TODAY],postprocess:()=>({moment:"today"})},{name:"moment",symbols:[Ke.has("YESTERDAY")?{type:"YESTERDAY"}:YESTERDAY],postprocess:()=>({moment:"yesterday"})},{name:"moment",symbols:[Ke.has("TOMORROW")?{type:"TOMORROW"}:TOMORROW],postprocess:()=>({moment:"tomorrow"})},{name:"moment",symbols:["duration",Ke.has("AGO")?{type:"AGO"}:AGO],postprocess:([t,e])=>({moment:"ago",...t})},{name:"moment",symbols:["duration",Ke.has("FROM")?{type:"FROM"}:FROM,Ke.has("NOW")?{type:"NOW"}:NOW],postprocess:([t,e])=>({moment:"from_now",...t})},{name:"moment",symbols:[Ke.has("NEXT")?{type:"NEXT"}:NEXT,"weekday"],postprocess:([t,e])=>({moment:e.toLowerCase(),which:"next"})},{name:"moment",symbols:[Ke.has("LAST")?{type:"LAST"}:LAST,"weekday"],postprocess:([t,e])=>({moment:e.toLowerCase(),which:"last"})},{name:"moment",symbols:["weekday"],postprocess:([t])=>({moment:t.toLowerCase(),which:"last"})},{name:"moment",symbols:["timeLiteral"],postprocess:t=>t[0]},{name:"timeLiteral",symbols:[Ke.has("literal")?{type:"literal"}:literal],postprocess:([t])=>(0,xu.timeLiteral)(t.text)},{name:"timeLiteral",symbols:[Ke.has("lit_day")?{type:"lit_day"}:lit_day],postprocess:([t])=>(0,xu.timeLiteral)(t.text,"day")},{name:"timeLiteral",symbols:[Ke.has("lit_min")?{type:"lit_min"}:lit_min],postprocess:([t])=>(0,xu.timeLiteral)(t.text,"minute")},{name:"timeLiteral",symbols:[Ke.has("lit_hour")?{type:"lit_hour"}:lit_hour],postprocess:([t])=>(0,xu.timeLiteral)(t.text,"hour")},{name:"timeLiteral",symbols:[Ke.has("lit_month")?{type:"lit_month"}:lit_month],postprocess:([t])=>(0,xu.timeLiteral)(t.text,"month")},{name:"timeLiteral",symbols:[Ke.has("lit_quarter")?{type:"lit_quarter"}:lit_quarter],postprocess:([t])=>(0,xu.timeLiteral)(t.text,"quarter")},{name:"timeLiteral",symbols:[Ke.has("lit_week")?{type:"lit_week"}:lit_week],postprocess:([t])=>(0,xu.timeLiteral)(t.text,"week")},{name:"timeLiteral",symbols:[Ke.has("lit_year")?{type:"lit_year"}:lit_year],postprocess:([t])=>(0,xu.timeLiteral)(t.text,"year")},{name:"weekday$subexpression$1",symbols:[Ke.has("MONDAY")?{type:"MONDAY"}:MONDAY]},{name:"weekday$subexpression$1",symbols:[Ke.has("TUESDAY")?{type:"TUESDAY"}:TUESDAY]},{name:"weekday$subexpression$1",symbols:[Ke.has("WEDNESDAY")?{type:"WEDNESDAY"}:WEDNESDAY]},{name:"weekday$subexpression$1",symbols:[Ke.has("THURSDAY")?{type:"THURSDAY"}:THURSDAY]},{name:"weekday$subexpression$1",symbols:[Ke.has("FRIDAY")?{type:"FRIDAY"}:FRIDAY]},{name:"weekday$subexpression$1",symbols:[Ke.has("SATURDAY")?{type:"SATURDAY"}:SATURDAY]},{name:"weekday$subexpression$1",symbols:[Ke.has("SUNDAY")?{type:"SUNDAY"}:SUNDAY]},{name:"weekday",symbols:["weekday$subexpression$1"],postprocess:([t])=>t[0].text},{name:"parens",symbols:[Ke.has("oparen")?{type:"oparen"}:oparen,"temporalFilter",Ke.has("cparen")?{type:"cparen"}:cparen],postprocess:([t,e,r])=>({operator:"()",expr:e})},{name:"conjunction",symbols:[Ke.has("OR")?{type:"OR"}:OR]},{name:"conjunction",symbols:[Ke.has("AND")?{type:"AND"}:AND]}],ParserStart:"temporalFilter"};nB.default=oXe,function(t){var e=T&&T.__createBinding||(Object.create?function(h,p,m,y){y===void 0&&(y=m);var g=Object.getOwnPropertyDescriptor(p,m);(!g||("get"in g?!p.__esModule:g.writable||g.configurable))&&(g={enumerable:!0,get:function(){return p[m]}}),Object.defineProperty(h,y,g)}:function(h,p,m,y){y===void 0&&(y=m),h[y]=p[m]}),r=T&&T.__setModuleDefault||(Object.create?function(h,p){Object.defineProperty(h,"default",{enumerable:!0,value:p})}:function(h,p){h.default=p}),i=T&&T.__importStar||function(h){if(h&&h.__esModule)return h;var p={};if(h!=null)for(var m in h)m!=="default"&&Object.prototype.hasOwnProperty.call(h,m)&&e(p,h,m);return r(p,h),p},s=T&&T.__importDefault||function(h){return h&&h.__esModule?h:{default:h}};Object.defineProperty(t,"__esModule",{value:!0}),t.TemporalFilterExpression=void 0;const o=bn,u=s(nB),a=i(K$),l=zp;t.TemporalFilterExpression={parse(h){if(h.match(/^\s*$/))return{parsed:null,log:[]};const p=new a.Parser(a.Grammar.fromCompiled(u.default)),m=(0,l.run_parser)(h,p);return m.parsed&&(0,o.isTemporalFilter)(m.parsed)?{parsed:m.parsed,log:[]}:{parsed:null,log:m.log}},unparse(h){if(h===null)return"";switch(h.operator){case"null":return c(h,"null");case"in":return c(h,x(h.in));case"()":return"("+t.TemporalFilterExpression.unparse(h.expr)+")";case"in_last":return c(h,f(h));case"last":case"next":return c(h,`${h.operator} ${f(h)}`);case"before":return c(h,`before ${x(h.before)}`);case"after":return c(h,`after ${x(h.after)}`);case"to":return c(h,`${x(h.fromMoment)} to ${x(h.toMoment)}`);case"for":return c(h,`${x(h.begin)} for ${f(h)}`);case"or":return h.members.map(p=>t.TemporalFilterExpression.unparse(p)).join(" or ");case"and":return h.members.map(p=>t.TemporalFilterExpression.unparse(p)).join(" and ")}}};function c(h,p){return"not"in h&&h.not?"not "+p:p}function f(h){return h.n==="1"?`1 ${h.units}`:`${h.n} ${h.units}s`}function x(h){switch(h.moment){case"literal":return h.literal;case"now":case"today":case"yesterday":case"tomorrow":return h.moment;case"monday":case"tuesday":case"wednesday":case"thursday":case"friday":case"saturday":case"sunday":return h.which==="next"?"next "+h.moment:h.moment;case"this":case"next":case"last":return`${h.moment} ${h.units}`;case"ago":return`${f(h)} ago`;case"from_now":return`${f(h)} from now`}}}(gae),function(t){var e=T&&T.__createBinding||(Object.create?function(a,l,c,f){f===void 0&&(f=c);var x=Object.getOwnPropertyDescriptor(l,c);(!x||("get"in x?!l.__esModule:x.writable||x.configurable))&&(x={enumerable:!0,get:function(){return l[c]}}),Object.defineProperty(a,f,x)}:function(a,l,c,f){f===void 0&&(f=c),a[f]=l[c]}),r=T&&T.__exportStar||function(a,l){for(var c in a)c!=="default"&&!Object.prototype.hasOwnProperty.call(l,c)&&e(l,a,c)};Object.defineProperty(t,"__esModule",{value:!0}),t.TemporalFilterExpression=t.StringFilterExpression=t.NumberFilterExpression=t.BooleanFilterExpression=void 0,r(bn,t);var i=k4;Object.defineProperty(t,"BooleanFilterExpression",{enumerable:!0,get:function(){return i.BooleanFilterExpression}});var s=xae;Object.defineProperty(t,"NumberFilterExpression",{enumerable:!0,get:function(){return s.NumberFilterExpression}});var o=mae;Object.defineProperty(t,"StringFilterExpression",{enumerable:!0,get:function(){return o.StringFilterExpression}});var u=gae;Object.defineProperty(t,"TemporalFilterExpression",{enumerable:!0,get:function(){return u.TemporalFilterExpression}})}(B4);var P4={};const Cy=yP(H1e);Object.defineProperty(P4,"__esModule",{value:!0}),P4.TemporalFilterCompiler=void 0;const rB=Xe,Zx=Cy,Eae="yyyy",Aae=`${Eae}-LL`,iB=`${Aae}-dd`,_ae=`${iB} HH`,vae=`${_ae}:mm`,xs=`${vae}:ss`;class uXe{constructor(e,r,i="timestamp"){this.expr=e,this.timetype=i,this.d=r}time(e){return this.timetype==="timestamp"?e:this.d.sqlCast({},{node:"cast",e:{node:"genericSQLExpr",src:["",e],kids:{args:[]},sql:e},srcType:{type:"timestamp"},dstType:{type:"date"},safe:!1})}compile(e){const r=this.expr;switch(e.operator){case"after":return`${r} ${e.not?"<":">="} ${this.time(this.moment(e.after).end)}`;case"before":return`${r} ${e.not?">=":"<"} ${this.time(this.moment(e.before).begin.sql)}`;case"in":{const i=this.moment(e.in);return i.begin.sql===i.end?e.not?`${r} != ${this.time(i.end)} OR ${r} IS NULL`:`${r} = ${this.time(i.end)}`:this.isIn(e.not,i.begin.sql,i.end)}case"for":{const i=this.moment(e.begin),s=this.delta(i.begin,"+",e.n,e.units);return this.isIn(e.not,i.begin.sql,s.sql)}case"in_last":{const i=Number(e.n)-1,s=this.nowDot(e.units),o=i>0?this.delta(s,"-",i.toString(),e.units):s,u=this.delta(s,"+","1",e.units);return this.isIn(e.not,o.sql,u.sql)}case"to":{const i=this.moment(e.fromMoment),s=this.moment(e.toMoment);return this.isIn(e.not,i.begin.sql,s.begin.sql)}case"last":{const i=this.nowDot(e.units),s=this.delta(i,"-",e.n,e.units);return this.isIn(e.not,s.sql,i.sql)}case"next":{const i=this.nowDot(e.units),s=this.delta(i,"+","1",e.units),o=this.delta(i,"+",(Number(e.n)+1).toString(),e.units);return this.isIn(e.not,s.sql,o.sql)}case"null":return e.not?`${r} IS NOT NULL`:`${r} IS NULL`;case"()":{const i="("+this.compile(e.expr)+")";return e.not?`NOT ${i}`:i}case"and":case"or":return e.members.map(i=>this.compile(i)).join(` ${e.operator.toUpperCase()} `)}}expandLiteral(e){let r=e.literal;switch(e.units){case"year":{const i=Zx.DateTime.fromFormat(r,Eae),s=this.literalNode(i.toFormat(xs)),o=i.plus({year:1});return{begin:s,end:this.literalNode(o.toFormat(xs)).sql}}case"month":{const i=Zx.DateTime.fromFormat(r,Aae),s=this.literalNode(i.toFormat(xs)),o=i.plus({month:1});return{begin:s,end:this.literalNode(o.toFormat(xs)).sql}}case"day":{const i=Zx.DateTime.fromFormat(r,iB),s=this.literalNode(i.toFormat(xs)),o=i.plus({day:1});return{begin:s,end:this.literalNode(o.toFormat(xs)).sql}}case"hour":{const i=Zx.DateTime.fromFormat(r,_ae),s=this.literalNode(i.toFormat(xs)),o=i.plus({hour:1});return{begin:s,end:this.literalNode(o.toFormat(xs)).sql}}case"minute":{const i=Zx.DateTime.fromFormat(r,vae),s=this.literalNode(i.toFormat(xs)),o=i.plus({minute:1});return{begin:s,end:this.literalNode(o.toFormat(xs)).sql}}case"week":{const o=Zx.DateTime.fromFormat(r.slice(0,10),iB).plus({day:1}).startOf("week").minus({day:1}),u=this.literalNode(o.toFormat(xs)),a=o.plus({days:7});return{begin:u,end:this.literalNode(a.toFormat(xs)).sql}}case"quarter":{const i=r.slice(0,4),s=r.slice(6);s==="1"?r=`${i}-01-01 00:00:00`:s==="2"?r=`${i}-03-01 00:00:00`:s==="3"?r=`${i}-06-01 00:00:00`:r=`${i}-09-01 00:00:00`;const o=this.literalNode(r),a=Zx.DateTime.fromFormat(r,xs).plus({months:3});return{begin:o,end:this.literalNode(a.toFormat(xs)).sql}}case void 0:case"second":{const i=this.literalNode(r);return{begin:i,end:i.sql}}}}literalNode(e){const r={node:"timeLiteral",typeDef:{type:"timestamp"},literal:e};return{...r,sql:this.d.sqlLiteralTime({},r)}}nowExpr(){return{node:"now",typeDef:{type:"timestamp"},sql:this.d.sqlNowExpr()}}n(e){return{node:"numberLiteral",literal:e,sql:e}}delta(e,r,i,s){const o={node:"delta",op:r,units:s,kids:{base:(0,rB.mkTemporal)(e,"timestamp"),delta:this.n(i)}};return{...o,sql:this.d.sqlAlterTimeExpr(o)}}dayofWeek(e){const r={node:"extract",e:(0,rB.mkTemporal)(e,"timestamp"),units:"day_of_week"};return{...r,sql:this.d.sqlTimeExtractExpr({},r)}}nowDot(e){const r={node:"trunc",e:this.nowExpr(),units:e};return{...r,sql:this.d.sqlTruncExpr({},r)}}thisUnit(e){const r=this.nowDot(e),i=this.delta(r,"+","1",e);return{begin:r,end:i.sql}}lastUnit(e){const r=this.nowDot(e);return{begin:this.delta(r,"-","1",e),end:r.sql}}nextUnit(e){const r=this.nowDot(e),i=this.delta(r,"+","1",e),s=this.delta(r,"+","2",e);return{begin:i,end:s.sql}}mod7(e){return this.d.hasModOperator?`(${e})%7`:`MOD(${e},7)`}moment(e){switch(e.moment){case"now":{const r=this.nowExpr();return{begin:r,end:r.sql}}case"literal":return this.expandLiteral(e);case"ago":case"from_now":{const r=this.nowDot(e.units),i=(0,rB.mkTemporal)(r,"timestamp"),s=this.delta(i,e.moment==="ago"?"-":"+",e.n,e.units);if(e.moment==="ago"&&e.n==="1")return{begin:s,end:r.sql};const o=Number(e.n)+(e.moment==="ago"?-1:1),u={...s,kids:{base:i,delta:this.n(o.toString())}};return{begin:s,end:this.d.sqlAlterTimeExpr(u)}}case"today":return this.thisUnit("day");case"yesterday":return this.lastUnit("day");case"tomorrow":return this.nextUnit("day");case"this":return this.thisUnit(e.units);case"last":return this.lastUnit(e.units);case"next":return this.nextUnit(e.units);case"monday":case"tuesday":case"wednesday":case"thursday":case"friday":case"saturday":case"sunday":{const r=["sunday","monday","tuesday","wednesday","thursday","friday","saturday"].indexOf(e.moment),i=this.dayofWeek(this.nowExpr()).sql;if(e.which==="next"){const a=`${this.mod7(`${r}-(${i}-1)+6`)}+1`,l=this.delta(this.thisUnit("day").begin,"+",a,"day"),c=this.delta(this.thisUnit("day").begin,"+",`${a}+1`,"day");return{begin:l,end:c.sql}}const s=`${this.mod7(`(${i}-1)-${r}+6`)}+1`,o=this.delta(this.thisUnit("day").begin,"-",s,"day"),u=this.delta(this.thisUnit("day").begin,"-",`(${s})-1`,"day");return{begin:o,end:u.sql}}}}isIn(e,r,i){let s=">=",o="<",u="AND";return e&&(u="OR",s="<",o=">="),r=this.time(r),i=this.time(i),`${this.expr} ${s} ${r} ${u} ${this.expr} ${o} ${i}`}}P4.TemporalFilterCompiler=uXe,function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.FilterCompilers=void 0;const e=B4,r=P4;function i(u){return u.replace(/([%_\\])/g,"\\$1")}function s(u){return u===">"?"<=":u==="<"?">=":u===">="?"<":">"}function o(u,a){const l=` OR ${a} IS NULL`;return u.length===1?`${u[0]}${l}`:`(${u.join(" AND ")})${l}`}t.FilterCompilers={compile(u,a,l,c){if(a===null)return"true";if(u==="string"&&(0,e.isStringFilter)(a))return t.FilterCompilers.stringCompile(a,l,c);if(u==="number"&&(0,e.isNumberFilter)(a))return t.FilterCompilers.numberCompile(a,l,c);if(u==="boolean"&&(0,e.isBooleanFilter)(a))return t.FilterCompilers.booleanCompile(a,l,c);if((u==="date"||u==="timestamp")&&(0,e.isTemporalFilter)(a))return t.FilterCompilers.temporalCompile(a,l,c,u);throw new Error("INTERNAL ERROR: No filter compiler for "+u)},numberCompile(u,a,l){switch(u.operator){case"!=":case"=":{const c=u.operator==="="&&u.not||u.operator==="!="&&!u.not,f=u.values.join(", ");return u.values.length===1?c?`${a} != ${f} OR ${a} IS NULL`:`${a} = ${f}`:c?`${a} NOT IN (${f}) OR ${a} IS NULL`:`${a} IN (${f})`}case">":case"<":case">=":case"<=":return u.values.map(c=>`${a} ${u.operator} ${c}`).join(u.not?" AND ":" OR ");case"range":{let c=u.startOperator,f=u.endOperator,x=" AND ";return u.not&&(c=s(c),f=s(f),x=" OR "),`${a} ${c} ${u.startValue} ${x} ${a} ${f} ${u.endValue}`}case"null":return u.not?`${a} IS NOT NULL`:`${a} IS NULL`;case"()":{const c="("+t.FilterCompilers.numberCompile(u.expr,a,l)+")";return u.not?`NOT ${c}`:c}case"and":case"or":return u.members.map(c=>t.FilterCompilers.numberCompile(c,a,l)).join(` ${u.operator.toUpperCase()} `)}},booleanCompile(u,a,l){switch(u.operator){case"false":return`${a} = false`;case"false_or_null":return`${a} IS NULL OR ${a} = false`;case"null":return u.not?`${a} IS NOT NULL`:`${a} IS NULL`;case"true":return a}},stringCompile(u,a,l){switch(u.operator){case"null":return u.not?`${a} IS NOT NULL`:`${a} IS NULL`;case"empty":return u.not?`COALESCE(${a},'') != ''`:`COALESCE(${a},'') = ''`;case"=":{if(u.values.length===1){const f=u.not?"!=":"=",x=`${a} ${f} ${l.sqlLiteralString(u.values[0])}`;return u.not?`(${x} OR ${a} IS NULL)`:x}const c="("+u.values.map(f=>l.sqlLiteralString(f)).join(", ")+")";return u.not?`(${a} NOT IN ${c} OR ${a} IS NULL)`:`${a} IN ${c}`}case"()":{const c="("+t.FilterCompilers.stringCompile(u.expr,a,l)+")";return u.not?`not ${c}`:c}case"contains":{const c=u.values.map(f=>"%"+i(f)+"%");return u.not?o(c.map(f=>l.sqlLike("NOT LIKE",a,f)),a):c.map(f=>l.sqlLike("LIKE",a,f)).join(" OR ")}case"starts":{const c=u.values.map(f=>i(f)+"%");return u.not?o(c.map(f=>l.sqlLike("NOT LIKE",a,f)),a):c.map(f=>l.sqlLike("LIKE",a,f)).join(" OR ")}case"ends":{const c=u.values.map(f=>"%"+i(f));return u.not?o(c.map(f=>l.sqlLike("NOT LIKE",a,f)),a):c.map(f=>l.sqlLike("LIKE",a,f)).join(" OR ")}case"~":return u.not?o(u.escaped_values.map(c=>l.sqlLike("NOT LIKE",a,c)),a):u.escaped_values.map(c=>l.sqlLike("LIKE",a,c)).join(" OR ");case"and":return u.members.map(f=>t.FilterCompilers.stringCompile(f,a,l)).join(" AND ");case"or":return u.members.map(f=>t.FilterCompilers.stringCompile(f,a,l)).join(" AND ");case",":{const c=[],f=[];let x=!1,h=!1,p=!1,m=!1;for(const E of u.members)switch(E.operator){case"or":case"and":case",":c.push(E);break;case"null":E.not?h=!0:x=!0;break;case"empty":E.not?(m=!0,h=!0):(p=!0,x=!0);break;default:(E.not?f:c).push(E)}if(p&&m||x&&h)return"false";let y="";if(c.length>0||x||p){m=!1,h=!1;const E=c.map(A=>t.FilterCompilers.stringCompile(A,a,l));p&&E.push(`${a} = ''`),x&&E.push(`${a} IS NULL`),y=E.join(" OR ")}let g="";if(f.length>0||m||h){const E=f.map(A=>t.FilterCompilers.stringCompile(A,a,l));m&&E.push(`${a} != ''`),h&&E.push(`${a} IS NOT NULL`),g=E.join(" AND ")}return y?g!==""?`(${y}) AND (${g})`:y:g!==""?g:"true"}}},temporalCompile(u,a,l,c){return new r.TemporalFilterCompiler(a,l,c).compile(u)}}}(fae),Object.defineProperty($s,"__esModule",{value:!0}),$s.QueryModel=$s.getResultStructDefForQuery=$s.getResultStructDefForView=$s.Segment=void 0;const aXe=Up,lXe=Mp,cXe=Ey,ke=Xe,Tn=$t,U4=Hp,fXe=ai,xXe=fae,dXe=B4;function Cae(t){return t.map(e=>encodeURIComponent(e)).join("/")}function sB(t){return`'${t}'`}function hXe(t){return t.replace(/[^a-zA-Z0-9_]/g,"_o_")}function Gp(t){const e=[];for(const r of t.fields.filter(ke.fieldIsIntrinsic))e.push({type:r.type,sqlExpression:(0,ke.getIdentifier)(r),rawName:(0,ke.getIdentifier)(r),sqlOutputName:(0,ke.getIdentifier)(r)});return e}class pXe extends Set{add_use(e){if(e!==void 0)return this.add(e)}hasAsymetricFunctions(){return this.has("sum")||this.has("avg")||this.has("count")||this.has("generic_asymmetric_aggregate")}}class Sy{constructor(e=!0,r){this.parent=r,this.withs=[],this.udfs=[],this.pdts=[],this.dependenciesToMaterialize={},this.stagePrefix="__stage",this.useCTE=e}getName(e){return`${this.stagePrefix}${e}`}root(){return this.parent===void 0?this:this.parent.root()}addStage(e){return this.useCTE?(this.withs.push(e),this.getName(this.withs.length-1)):(this.withs[0]=e,(0,Tn.indent)(`
|
|
1046
1046
|
(${e})
|
|
1047
1047
|
`))}addUDF(e,r,i){var s;let{sql:o,lastStageName:u}=e.combineStages(!0);if(u===void 0)throw new Error("Internal Error: no stage to combine");o+=r.sqlCreateFunctionCombineLastStage(u,Gp(i),(s=i.resultMetadata)===null||s===void 0?void 0:s.orderBy);const a=`${r.udfPrefix}${this.root().udfs.length}`;return o=r.sqlCreateFunction(a,o),this.root().udfs.push(o),a}addMaterializedQuery(e,r,i){var s;const o=r.name;if(!o)throw new Error(`Source ${e} on a unnamed query that is tagged as materialize, only named queries can be materialized.`);const u=(s=r.location)===null||s===void 0?void 0:s.url;if(!u)throw new Error(`Trying to materialize query ${o}, but its path is not set.`);const a=(0,U4.buildQueryMaterializationSpec)(u,o,i);return this.root().dependenciesToMaterialize[a.id]=a,a.id}addPDT(e,r){const i=this.combineStages(!1).sql+this.withs[this.withs.length-1],o=`scratch.${e+(0,Tn.generateHash)(i)}`;return this.root().pdts.push(r.sqlCreateTableAsSelect(o,i)),o}combineStages(e){if(!this.useCTE)return{sql:this.withs[0],lastStageName:this.withs[0]};let r=this.getName(0),i="WITH ",s="";for(let o=0;o<this.withs.length-(e?0:1);o++){const u=this.withs[o];if(r=this.getName(o),u===void 0)throw new Error(`Expected sql WITH to be present for stage ${r}.`);s+=`${i}${r} AS (
|
|
1048
1048
|
${(0,Tn.indent)(u)})
|
|
@@ -1050,7 +1050,7 @@ ${(0,Tn.indent)(u)})
|
|
|
1050
1050
|
`),i=this.pdts.join(`
|
|
1051
1051
|
`),s=this.combineStages(!1).sql;return r+i+s+this.withs[e]}generateCoorelatedSubQuery(e,r){var i,s;return this.useCTE?this.combineStages(!0).sql+e.sqlCreateFunctionCombineLastStage(this.getName(this.withs.length-1),Gp(r),(s=r.resultMetadata)===null||s===void 0?void 0:s.orderBy):e.sqlCreateFunctionCombineLastStage(`(${this.withs[0]})`,Gp(r),(i=r.resultMetadata)===null||i===void 0?void 0:i.orderBy)}}class by{constructor(){this.totalGroupSet=-1}withWhere(e){const r=new by;return r.whereSQL=e,r.applyValue=this.applyValue,r.totalGroupSet=this.totalGroupSet,r}withApply(e){const r=new by;return r.whereSQL=this.whereSQL,r.applyValue=e,r.totalGroupSet=this.totalGroupSet,r}withTotal(e){const r=new by;return r.whereSQL=this.whereSQL,r.applyValue=this.applyValue,r.totalGroupSet=e,r}}class mXe{constructor(e){this.referenceId=e??(0,aXe.v4)()}getChildByName(e){}}let oB=class extends mXe{constructor(e,r,i){super(i),this.fieldDef=e,this.parent=r,this.fieldDef=e}getIdentifier(){return(0,ke.getIdentifier)(this.fieldDef)}uniqueKeyPossibleUse(){}getJoinableParent(){const e=this.parent;return e.structDef.type==="record"?e.getJoinableParent():e}isAtomic(){return(0,ke.isAtomic)(this.fieldDef)}caseGroup(e,r){return e.length===0?r:`CASE WHEN group_set${e.length===1?`=${e[0]}`:` IN (${e.join(",")})`} THEN
|
|
1052
1052
|
${r}
|
|
1053
|
-
END`}getFullOutputName(){return this.parent.getFullOutputName()+this.getIdentifier()}generateFieldFragment(e,r,i,s){const o=r.getFieldByName(i.path);return(0,ke.hasExpression)(o.fieldDef)?`(${this.exprToSQL(e,o.parent,o.fieldDef.e,s)})`:o.generateExpression(e)}generateOutputFieldFragment(e,r,i,s){return`(${e.getField(i.name).getAnalyticalSQL(!1)})`}*stringsFromSQLExpression(e,r,i,s){const o=[...i.kids.args];for(const u of i.src){yield u;const a=o.shift();a&&(yield this.exprToSQL(e,r,a,s))}}getParameterMap(e,r){return new Map(e.params.map((i,s)=>{const o=i.isVariadic?(0,Tn.range)(s,r):[s];return[i.name,{param:i,argIndexes:o}]}))}expandFunctionCall(e,r,i,s,o){function u(c){const f=[];for(let x=0;x<c.length;)f.push(c[x]),x+=1,x<c.length&&f.push(",");return f}const a=this.getParameterMap(r,i.length);if(r.dialect[e]===void 0)throw new Error(`Function is not defined for '${e}' dialect`);return(0,Tn.exprMap)(r.dialect[e].e,c=>{var f,x;if(c.node==="spread"){const h=c.e;if(h.node!=="function_parameter")throw new Error("Invalid function definition. Argument to spread must be a function parameter.");const p=a.get(h.name);if(p===void 0)return c;const m=p.argIndexes.map(y=>i[y]);return(0,Tn.composeSQLExpr)(u(m))}else if(c.node==="function_parameter"){const h=a.get(c.name);if(h===void 0)return c;if(h.param.isVariadic){const p=h.argIndexes.map(m=>i[m]);return(0,Tn.composeSQLExpr)(u(p))}else return i[h.argIndexes[0]]}else{if(c.node==="aggregate_order_by")return s?(0,Tn.composeSQLExpr)([` ${(f=c.prefix)!==null&&f!==void 0?f:""}${s}${(x=c.suffix)!==null&&x!==void 0?x:""}`]):{node:""};if(c.node==="aggregate_limit")return o?(0,Tn.composeSQLExpr)([` ${o}`]):{node:""}}return c})}getFunctionOrderBy(e,r,i,s,o,u){if(s.length!==0)return"ORDER BY "+s.map(a=>{var l;const c=(l=u.dialect[r.dialect.name].defaultOrderByArgIndex)!==null&&l!==void 0?l:0,f=a.node==="functionOrderBy"?a.e:o[c],x=this.generateDimFragment(e,r,f,i),h=a.dir==="asc"?" ASC":a.dir==="desc"?" DESC":"";return`${x}${h}`}).join(", ")}generateAsymmetricStringAggExpression(e,r,i,s,o,u,a,l){if(u)throw new Error(`Function \`string_agg\` does not support fanning out with an order by in ${a}`);const c=this.generateDimFragment(e,r,i,l),f=s?this.generateDimFragment(e,r,s,l):"";return this.parent.dialect.sqlStringAggDistinct(o,c,f)}getParamForArgIndex(e,r){const i=e.slice(0,r).find(s=>s.isVariadic);return i??e[r]}generateFunctionCallExpression(e,r,i,s){var o,u,a;const l=i.overload,c=i.kids.args,f=(o=i.overload.isSymmetric)!==null&&o!==void 0?o:!1,x=(0,ke.expressionIsAggregate)(l.returnType.expressionType)&&!f&&this.generateDistinctKeyIfNecessary(e,r,i.structPath),h=i.limit?`LIMIT ${i.limit}`:void 0;if(i.name==="string_agg"&&x&&!r.dialect.supportsAggDistinct&&r.dialect.name!=="snowflake")return this.generateAsymmetricStringAggExpression(e,r,c[0],c[1],x,i.kids.orderBy,r.dialect.name,s);if(x){if(!r.dialect.supportsAggDistinct)throw new Error(`Function \`${i.name}\` does not support fanning out in ${r.dialect.name}`);const p=c.map(g=>this.generateDimFragment(e,r,g,s)),m=(u=i.kids.orderBy)!==null&&u!==void 0?u:[],y=m.map(g=>{var E;const A=(E=l.dialect[r.dialect.name].defaultOrderByArgIndex)!==null&&E!==void 0?E:0,_=g.node==="functionOrderBy"?g.e:c[A];return this.generateDimFragment(e,r,_,s)});return r.dialect.sqlAggDistinct(x,[...p,...y],g=>{const E=g.map((b,S)=>S<c.length&&this.getParamForArgIndex(l.params,S).allowedTypes.every(O=>(0,ke.isLiteral)(O.evalSpace))?c[S]:(0,Tn.composeSQLExpr)([b])),A=E.slice(0,p.length),_=E.slice(p.length).map((b,S)=>({node:"functionOrderBy",e:b,dir:m[S].dir})),v=this.getFunctionOrderBy(e,r,s,_,A,l),C=this.expandFunctionCall(r.dialect.name,l,A,v,h);return this.exprToSQL(e,r,C,s)})}else{const p=(0,ke.expressionIsAggregate)(l.returnType.expressionType)?c.map((g,E)=>this.getParamForArgIndex(l.params,E).allowedTypes.every(_=>(0,ke.isLiteral)(_.evalSpace))?g:(0,Tn.composeSQLExpr)([this.generateDimFragment(e,r,g,s)])):c,m=i.kids.orderBy?this.getFunctionOrderBy(e,r,s,i.kids.orderBy,c,l):"",y=this.expandFunctionCall(r.dialect.name,l,p,m,h);if((0,ke.expressionIsAnalytic)(l.returnType.expressionType)){const g=((a=i.partitionBy)!==null&&a!==void 0?a:[]).map(E=>`(${e.getField(E).getAnalyticalSQL(!1)})`);return this.generateAnalyticFragment(r.dialect.name,e,r,y,l,s,c,g,m)}return this.exprToSQL(e,r,y,s)}}generateSpread(e,r,i,s){throw new Error("Unexpanded spread encountered during SQL generation")}generateParameterFragment(e,r,i,s){var o;const u=i.path[0];(o=r.eventStream)===null||o===void 0||o.emit("source-argument-compiled",{name:u});const a=r.arguments()[u];if(a.value)return this.exprToSQL(e,r,a.value,s);throw new Error(`Can't generate SQL, no value for ${i.path}`)}generateFilterFragment(e,r,i,s){const o=new Tn.AndChain(s.whereSQL);for(const u of i.kids.filterList)o.add(this.exprToSQL(e,r,u.e,s.withWhere()));return this.exprToSQL(e,r,i.kids.e,s.withWhere(o.sql()))}generateDimFragment(e,r,i,s){let o=this.exprToSQL(e,r,i,s);return s.whereSQL&&(o=`CASE WHEN ${s.whereSQL} THEN ${o} END`),o}generateUngroupedFragment(e,r,i,s){if(s.totalGroupSet!==-1)throw new Error("Already in ALL. Cannot nest within an all calcuation.");let o,u;if(i.fields&&i.fields.length>0){const x=i.fields.sort().join("|")+i.node;if(u=e.ungroupedSets.get(x),u===void 0)throw new Error(`Internal Error, cannot find groupset with key ${x}`);o=u.groupSet}else o=e.parent?e.parent.groupSet:0;const a=this.exprToSQL(e,r,i.e,s.withTotal(o)),l=e.getUngroupPartitions(u);let c="";const f=l.map(x=>x.getAnalyticalSQL(!0)).join(", ");return f.length>0&&(c=`PARTITION BY ${f}`),`MAX(${a}) OVER (${c})`}generateDistinctKeyIfNecessary(e,r,i){let s=r;if(i&&(s=this.parent.root().getStructByName(i)),s.needsSymetricCalculation(e))return s.getDistinctKey().generateExpression(e)}generateSumFragment(e,r,i,s){const o=this.generateDimFragment(e,r,i.e,s),u=this.generateDistinctKeyIfNecessary(e,r,i.structPath);let a;return u?this.parent.dialect.supportsSumDistinctFunction?a=this.parent.dialect.sqlSumDistinct(u,o,"SUM"):a=Tae(this.parent.dialect,o,u):a=`SUM(${o})`,`COALESCE(${a},0)`}generateSymmetricFragment(e,r,i,s){const o=this.generateDimFragment(e,r,i.e,s);return`${i.function==="distinct"?"count(distinct ":i.function+"("}${o})`}generateAvgFragment(e,r,i,s){const o=this.generateDimFragment(e,r,i.e,s),u=this.generateDistinctKeyIfNecessary(e,r,i.structPath);if(u){let a=u;s.whereSQL&&(a=`CASE WHEN ${s.whereSQL} THEN ${u} END`);let l,c;return this.parent.dialect.supportsSumDistinctFunction?c=this.parent.dialect.sqlSumDistinct(u,o,"AVG"):(l=Tae(this.parent.dialect,o,u),c=`(${l})/NULLIF(COUNT(DISTINCT CASE WHEN ${o} IS NOT NULL THEN ${a} END),0)`),c}else return`AVG(${o})`}generateCountFragment(e,r,i,s){let o="COUNT(",u="1",a=r;i.structPath&&(a=this.parent.root().getStructByName(i.structPath));const l=a.getJoinableParent().getIdentifier(),c=e.root().joins.get(l);if(!c)throw new Error(`Join ${l} not found in result set`);return(!c.leafiest||c.makeUniqueKey)&&(o="COUNT(DISTINCT ",u=a.getDistinctKey().generateExpression(e)),s.whereSQL?`${o}CASE WHEN ${s.whereSQL} THEN ${u} END)`:`${o}${u})`}generateSourceReference(e,r,i){return i.path===void 0?r.getSQLIdentifier():r.getFieldByName(i.path).getIdentifier()}getAnalyticPartitions(e,r){const i=[];let s=e.parent;for(;s!==void 0;){const u=s.fields(a=>kr(a.f)&&a.fieldUsage.type==="result").map(a=>a.getAnalyticalSQL(!0));i.push(...u),s=s.parent}return r&&i.push(...r),i}generateAnalyticFragment(e,r,i,s,o,u,a,l,c){const f=r.root().isComplexQuery,x=this.getAnalyticPartitions(r,l),h=[...f?["group_set"]:[],...x],p=h.length>0?`PARTITION BY ${h.join(", ")}`:"";let m=c??"";const y=o.dialect[e];if(!c&&y.needsWindowOrderBy){const _=[];let v;const C=r.firstSegment.orderBy||r.calculateDefaultOrderBy();for(const b of C){typeof b.field=="string"?v={name:b.field,fif:r.getField(b.field)}:v=r.getFieldByNumber(b.field);const S=v.fif.f.fieldDef.expressionType;if(!(0,ke.expressionIsAnalytic)(S))if(r.firstSegment.type==="reduce"){const R=v.fif.getAnalyticalSQL(!1);_.push(` ${R} ${b.dir||"ASC"}`)}else r.firstSegment.type==="project"&&_.push(` ${v.fif.f.generateExpression(r)} ${b.dir||"ASC"}`)}_.length>0&&(m=" "+this.parent.dialect.sqlOrderBy(_,"analytical"))}let g="";if(y.between){const[_,v]=[y.between.preceding,y.between.following].map(C=>{if(C===-1)return"UNBOUNDED";if(typeof C=="number")return C;const b=o.params.findIndex(R=>R.name===C),S=a[b];if(S.node!=="numberLiteral")throw new Error("Invalid number of rows for window spec");return S.literal});g=`ROWS BETWEEN ${_} PRECEDING AND ${v} FOLLOWING`}let A=`${this.exprToSQL(r,i,s,u)} OVER(${p} ${m} ${g})`;return f&&(A=`CASE WHEN group_set=${r.groupSet} THEN ${A} END`),A}generateCaseSQL(e){const r=["CASE"];e.kids.caseValue!==void 0&&r.push(`${e.kids.caseValue.sql}`);for(let i=0;i<e.kids.caseWhen.length;i+=1)r.push(`WHEN ${e.kids.caseWhen[i].sql} THEN ${e.kids.caseThen[i].sql}`);return e.kids.caseElse!==void 0&&r.push(`ELSE ${e.kids.caseElse.sql}`),r.push("END"),r.join(" ")}exprToSQL(e,r,i,s=new by){var o;const u=function(f,x){const h=f.exprToSQL(e,r,x,s);return(0,ke.exprHasKids)(x)?`(${h})`:h};let a=i;if((0,ke.exprHasE)(i)){a={...i};const f=u(this,a.e);a.e={...a.e,sql:f}}else if((0,ke.exprHasKids)(i)){a={...i};const f=i.kids;for(const[x,h]of Object.entries(f))h!==null&&(Array.isArray(h)?a.kids[x]=h.map(p=>({...p,sql:u(this,p)})):a.kids[x]={...f[x],sql:u(this,h)})}const l=e.getQueryInfo(),c=this.parent.dialect.exprToSQL(l,a);if(c)return c;switch(a.node){case"field":return this.generateFieldFragment(e,r,a,s);case"parameter":return this.generateParameterFragment(e,r,a,s);case"filteredExpr":return this.generateFilterFragment(e,r,a,s);case"all":case"exclude":return this.generateUngroupedFragment(e,r,a,s);case"genericSQLExpr":return Array.from(this.stringsFromSQLExpression(e,r,a,s)).join("");case"aggregate":{let f="";if(a.function==="sum")f=this.generateSumFragment(e,r,a,s);else if(a.function==="avg")f=this.generateAvgFragment(e,r,a,s);else if(a.function==="count")f=this.generateCountFragment(e,r,a,s);else if(a.function==="min"||a.function==="max"||a.function==="distinct")f=this.generateSymmetricFragment(e,r,a,s);else throw new Error(`Internal Error: Unknown aggregate function ${a.function}`);if(e.root().isComplexQuery){let x=e.groupSet;return s.totalGroupSet!==-1&&(x=s.totalGroupSet),this.caseGroup([x],f)}return f}case"function_parameter":throw new Error("Internal Error: Function parameter fragment remaining during SQL generation");case"outputField":return this.generateOutputFieldFragment(e,r,a,s);case"function_call":return this.generateFunctionCallExpression(e,r,a,s);case"spread":return this.generateSpread(e,r,a,s);case"source-reference":return this.generateSourceReference(e,r,a);case"+":case"-":case"*":case"%":case"/":case">":case"<":case">=":case"<=":case"=":return`${a.kids.left.sql}${a.node}${a.kids.right.sql}`;case"!=":return`COALESCE(${`${a.kids.left.sql}!=${a.kids.right.sql}`},true)`;case"and":case"or":return`${a.kids.left.sql} ${a.node} ${a.kids.right.sql}`;case"coalesce":return`COALESCE(${a.kids.left.sql},${a.kids.right.sql})`;case"in":{const f=a.kids.oneOf.map(x=>x.sql).join(",");return`${a.kids.e.sql} ${a.not?"NOT IN":"IN"} (${f})`}case"like":case"!like":{const f=a.node==="like"?"LIKE":"NOT LIKE",x=a.kids.right.node==="stringLiteral"?this.parent.dialect.sqlLike(f,(o=a.kids.left.sql)!==null&&o!==void 0?o:"",a.kids.right.literal):`${a.kids.left.sql} ${f} ${a.kids.right.sql}`;return a.node==="like"?x:`COALESCE(${x},true)`}case"()":return`(${a.e.sql})`;case"not":return`COALESCE(NOT ${a.e.sql},TRUE)`;case"unary-":return`-${a.e.sql}`;case"is-null":return`${a.e.sql} IS NULL`;case"is-not-null":return`${a.e.sql} IS NOT NULL`;case"true":case"false":return a.node;case"null":return"NULL";case"case":return this.generateCaseSQL(a);case"":return"";case"filterCondition":return a.e.sql?(a.sql=a.e.sql,a.sql):"";case"functionDefaultOrderBy":case"functionOrderBy":return"";case"compositeField":return"{COMPOSITE_FIELD}";case"filterMatch":if((a.dataType==="string"||a.dataType==="number"||a.dataType==="date"||a.dataType==="timestamp"||a.dataType==="boolean")&&(!a.filter||(0,dXe.isFilterExpression)(a.filter)))return xXe.FilterCompilers.compile(a.dataType,a.filter,a.e.sql||"",this.parent.dialect);throw new Error(`Internal Error: Filter Compiler Undefined Type '${a.dataType}'`);default:throw new Error(`Internal Error: Unknown expression node '${a.node}' ${JSON.stringify(a,void 0,2)}`)}}isNestedInParent(e){switch(e.type){case"record":case"array":return!0;default:return!1}}isArrayElement(e){return e.type==="array"&&e.elementTypeDef.type!=="record_element"}generateExpression(e){if((0,ke.hasExpression)(this.fieldDef))return this.exprToSQL(e,this.parent,this.fieldDef.e);for(let r=this.parent;r!==void 0;r=r.parent)if(r.structDef.type==="record"&&(0,ke.hasExpression)(r.structDef)&&r.recordAlias===void 0){if(!r.parent)throw new Error("Inconcievable record ancestor with expression but no parent");const i=this.exprToSQL(e,r.parent,r.structDef.e);r.informOfAliasValue(i)}return this.parent.sqlChildReference(this.fieldDef.name,this.parent.structDef.type==="record"?{result:e,field:this}:void 0)}};function j4(t){return t instanceof Bs&&t.isCalculated()}function Sae(t){return t instanceof Bs&&t.isAggregate()}function kr(t){return t instanceof Bs&&!t.isCalculated()&&!t.isAggregate()}class Bs extends oB{constructor(e,r,i){super(e,r,i),this.fieldDef=e}includeInWildcard(){return!0}isCalculated(){return(0,ke.hasExpression)(this.fieldDef)&&(0,ke.expressionIsCalculation)(this.fieldDef.expressionType)}isAggregate(){return(0,ke.hasExpression)(this.fieldDef)&&(0,ke.expressionIsAggregate)(this.fieldDef.expressionType)}getFilterList(){return[]}hasExpression(){return(0,ke.hasExpression)(this.fieldDef)}isAtomic(){return!0}}class gXe extends Bs{}class yXe extends Bs{}class uB extends Bs{}class EXe extends Bs{}class AXe extends Bs{}class aB extends Bs{generateExpression(e){const r=this.fieldDef,i=super.generateExpression(e);if(r.timeframe){const s={node:"trunc",e:(0,ke.mkTemporal)({node:"genericSQLExpr",src:[i],kids:{args:[]}},"date"),units:r.timeframe};return this.exprToSQL(e,this.parent,s)}else return i}getChildByName(e){const r={...this.fieldDef,as:`${this.getIdentifier()}_${e}`,timeframe:e};return new aB(r,this.parent)}}class lB extends Bs{getChildByName(e){const r={...this.fieldDef,as:`${this.getIdentifier()}_${e}`,timeframe:e};return new lB(r,this.parent)}}class _Xe extends Bs{generateExpression(e){var r;if(this.parent.primaryKey())return this.parent.getPrimaryKeyField(this.fieldDef).generateExpression(e);if(this.parent.structDef.type==="array"){const i=(r=this.parent.parent)===null||r===void 0?void 0:r.getDistinctKey().generateExpression(e);return this.parent.dialect.sqlMakeUnnestKey(i||"",this.parent.dialect.sqlFieldReference(this.parent.getIdentifier(),"table","__row_id","string"))}else return this.parent.dialect.sqlFieldReference(this.parent.getIdentifier(),"table","__distinct_key","string")}includeInWildcard(){return!1}}const bae=9;function Tae(t,e,r){const s=t.sqlSumDistinctHashedKey(r),o=10**(9-bae);let a=`(${`
|
|
1053
|
+
END`}getFullOutputName(){return this.parent.getFullOutputName()+this.getIdentifier()}generateFieldFragment(e,r,i,s){const o=r.getFieldByName(i.path);return(0,ke.hasExpression)(o.fieldDef)?`(${this.exprToSQL(e,o.parent,o.fieldDef.e,s)})`:o.generateExpression(e)}generateOutputFieldFragment(e,r,i,s){return`(${e.getField(i.name).getAnalyticalSQL(!1)})`}*stringsFromSQLExpression(e,r,i,s){const o=[...i.kids.args];for(const u of i.src){yield u;const a=o.shift();a&&(yield this.exprToSQL(e,r,a,s))}}getParameterMap(e,r){return new Map(e.params.map((i,s)=>{const o=i.isVariadic?(0,Tn.range)(s,r):[s];return[i.name,{param:i,argIndexes:o}]}))}expandFunctionCall(e,r,i,s,o){function u(c){const f=[];for(let x=0;x<c.length;)f.push(c[x]),x+=1,x<c.length&&f.push(",");return f}const a=this.getParameterMap(r,i.length);if(r.dialect[e]===void 0)throw new Error(`Function is not defined for '${e}' dialect`);return(0,Tn.exprMap)(r.dialect[e].e,c=>{var f,x;if(c.node==="spread"){const h=c.e;if(h.node!=="function_parameter")throw new Error("Invalid function definition. Argument to spread must be a function parameter.");const p=a.get(h.name);if(p===void 0)return c;const m=p.argIndexes.map(y=>i[y]);return(0,Tn.composeSQLExpr)(u(m))}else if(c.node==="function_parameter"){const h=a.get(c.name);if(h===void 0)return c;if(h.param.isVariadic){const p=h.argIndexes.map(m=>i[m]);return(0,Tn.composeSQLExpr)(u(p))}else return i[h.argIndexes[0]]}else{if(c.node==="aggregate_order_by")return s?(0,Tn.composeSQLExpr)([` ${(f=c.prefix)!==null&&f!==void 0?f:""}${s}${(x=c.suffix)!==null&&x!==void 0?x:""}`]):{node:""};if(c.node==="aggregate_limit")return o?(0,Tn.composeSQLExpr)([` ${o}`]):{node:""}}return c})}getFunctionOrderBy(e,r,i,s,o,u){if(s.length!==0)return"ORDER BY "+s.map(a=>{var l;const c=(l=u.dialect[r.dialect.name].defaultOrderByArgIndex)!==null&&l!==void 0?l:0,f=a.node==="functionOrderBy"?a.e:o[c],x=this.generateDimFragment(e,r,f,i),h=a.dir==="asc"?" ASC":a.dir==="desc"?" DESC":"";return`${x}${h}`}).join(", ")}generateAsymmetricStringAggExpression(e,r,i,s,o,u,a,l){if(u)throw new Error(`Function \`string_agg\` does not support fanning out with an order by in ${a}`);const c=this.generateDimFragment(e,r,i,l),f=s?this.generateDimFragment(e,r,s,l):"";return this.parent.dialect.sqlStringAggDistinct(o,c,f)}getParamForArgIndex(e,r){const i=e.slice(0,r).find(s=>s.isVariadic);return i??e[r]}generateFunctionCallExpression(e,r,i,s){var o,u,a;const l=i.overload,c=i.kids.args,f=(o=i.overload.isSymmetric)!==null&&o!==void 0?o:!1,x=(0,ke.expressionIsAggregate)(l.returnType.expressionType)&&!f&&this.generateDistinctKeyIfNecessary(e,r,i.structPath),h=i.limit?`LIMIT ${i.limit}`:void 0;if(i.name==="string_agg"&&x&&!r.dialect.supportsAggDistinct&&r.dialect.name!=="snowflake")return this.generateAsymmetricStringAggExpression(e,r,c[0],c[1],x,i.kids.orderBy,r.dialect.name,s);if(x){if(!r.dialect.supportsAggDistinct)throw new Error(`Function \`${i.name}\` does not support fanning out in ${r.dialect.name}`);const p=c.map(g=>this.generateDimFragment(e,r,g,s)),m=(u=i.kids.orderBy)!==null&&u!==void 0?u:[],y=m.map(g=>{var E;const A=(E=l.dialect[r.dialect.name].defaultOrderByArgIndex)!==null&&E!==void 0?E:0,_=g.node==="functionOrderBy"?g.e:c[A];return this.generateDimFragment(e,r,_,s)});return r.dialect.sqlAggDistinct(x,[...p,...y],g=>{const E=g.map((b,S)=>S<c.length&&this.getParamForArgIndex(l.params,S).allowedTypes.every(O=>(0,ke.isLiteral)(O.evalSpace))?c[S]:(0,Tn.composeSQLExpr)([b])),A=E.slice(0,p.length),_=E.slice(p.length).map((b,S)=>({node:"functionOrderBy",e:b,dir:m[S].dir})),v=this.getFunctionOrderBy(e,r,s,_,A,l),C=this.expandFunctionCall(r.dialect.name,l,A,v,h);return this.exprToSQL(e,r,C,s)})}else{const p=(0,ke.expressionIsAggregate)(l.returnType.expressionType)?c.map((g,E)=>this.getParamForArgIndex(l.params,E).allowedTypes.every(_=>(0,ke.isLiteral)(_.evalSpace))?g:(0,Tn.composeSQLExpr)([this.generateDimFragment(e,r,g,s)])):c,m=i.kids.orderBy?this.getFunctionOrderBy(e,r,s,i.kids.orderBy,c,l):"",y=this.expandFunctionCall(r.dialect.name,l,p,m,h);if((0,ke.expressionIsAnalytic)(l.returnType.expressionType)){const g=((a=i.partitionBy)!==null&&a!==void 0?a:[]).map(E=>`(${e.getField(E).getAnalyticalSQL(!1)})`);return this.generateAnalyticFragment(r.dialect.name,e,r,y,l,s,c,g,m)}return this.exprToSQL(e,r,y,s)}}generateSpread(e,r,i,s){throw new Error("Unexpanded spread encountered during SQL generation")}generateParameterFragment(e,r,i,s){var o;const u=i.path[0];(o=r.eventStream)===null||o===void 0||o.emit("source-argument-compiled",{name:u});const a=r.arguments()[u];if(a.value)return this.exprToSQL(e,r,a.value,s);throw new Error(`Can't generate SQL, no value for ${i.path}`)}generateFilterFragment(e,r,i,s){const o=new Tn.AndChain(s.whereSQL);for(const u of i.kids.filterList)o.add(this.exprToSQL(e,r,u.e,s.withWhere()));return this.exprToSQL(e,r,i.kids.e,s.withWhere(o.sql()))}generateDimFragment(e,r,i,s){let o=this.exprToSQL(e,r,i,s);return s.whereSQL&&(o=`CASE WHEN ${s.whereSQL} THEN ${o} END`),o}generateUngroupedFragment(e,r,i,s){if(s.totalGroupSet!==-1)throw new Error("Already in ALL. Cannot nest within an all calcuation.");let o,u;if(i.fields&&i.fields.length>0){const x=i.fields.sort().join("|")+i.node;if(u=e.ungroupedSets.get(x),u===void 0)throw new Error(`Internal Error, cannot find groupset with key ${x}`);o=u.groupSet}else o=e.parent?e.parent.groupSet:0;const a=this.exprToSQL(e,r,i.e,s.withTotal(o)),l=e.getUngroupPartitions(u);let c="";const f=l.map(x=>x.getAnalyticalSQL(!0)).join(", ");return f.length>0&&(c=`PARTITION BY ${f}`),`MAX(${a}) OVER (${c})`}generateDistinctKeyIfNecessary(e,r,i){let s=r;if(i&&(s=this.parent.root().getStructByName(i)),s.needsSymetricCalculation(e))return s.getDistinctKey().generateExpression(e)}generateSumFragment(e,r,i,s){const o=this.generateDimFragment(e,r,i.e,s),u=this.generateDistinctKeyIfNecessary(e,r,i.structPath);let a;return u?this.parent.dialect.supportsSumDistinctFunction?a=this.parent.dialect.sqlSumDistinct(u,o,"SUM"):a=Tae(this.parent.dialect,o,u):a=`SUM(${o})`,`COALESCE(${a},0)`}generateSymmetricFragment(e,r,i,s){const o=this.generateDimFragment(e,r,i.e,s);return`${i.function==="distinct"?"count(distinct ":i.function+"("}${o})`}generateAvgFragment(e,r,i,s){const o=this.generateDimFragment(e,r,i.e,s),u=this.generateDistinctKeyIfNecessary(e,r,i.structPath);if(u){let a=u;s.whereSQL&&(a=`CASE WHEN ${s.whereSQL} THEN ${u} END`);let l,c;return this.parent.dialect.supportsSumDistinctFunction?c=this.parent.dialect.sqlSumDistinct(u,o,"AVG"):(l=Tae(this.parent.dialect,o,u),c=`(${l})/NULLIF(COUNT(DISTINCT CASE WHEN ${o} IS NOT NULL THEN ${a} END),0)`),c}else return`AVG(${o})`}generateCountFragment(e,r,i,s){let o="COUNT(",u="1",a=r;i.structPath&&(a=this.parent.root().getStructByName(i.structPath));const l=a.getJoinableParent().getIdentifier(),c=e.root().joins.get(l);if(!c)throw new Error(`Join ${l} not found in result set`);return(!c.leafiest||c.makeUniqueKey)&&(o="COUNT(DISTINCT ",u=a.getDistinctKey().generateExpression(e)),s.whereSQL?`${o}CASE WHEN ${s.whereSQL} THEN ${u} END)`:`${o}${u})`}generateSourceReference(e,r,i){return i.path===void 0?r.getSQLIdentifier():r.getFieldByName(i.path).getIdentifier()}getAnalyticPartitions(e,r){const i=[];let s=e.parent;for(;s!==void 0;){const u=s.fields(a=>kr(a.f)&&a.fieldUsage.type==="result").map(a=>a.getAnalyticalSQL(!0));i.push(...u),s=s.parent}return r&&i.push(...r),i}generateAnalyticFragment(e,r,i,s,o,u,a,l,c){const f=r.root().isComplexQuery,x=this.getAnalyticPartitions(r,l),h=[...f?["group_set"]:[],...x],p=h.length>0?`PARTITION BY ${h.join(", ")}`:"";let m=c??"";const y=o.dialect[e];if(!c&&y.needsWindowOrderBy){const _=[];let v;const C=r.firstSegment.orderBy||r.calculateDefaultOrderBy();for(const b of C){typeof b.field=="string"?v={name:b.field,fif:r.getField(b.field)}:v=r.getFieldByNumber(b.field);const S=v.fif.f.fieldDef.expressionType;if(!(0,ke.expressionIsAnalytic)(S))if(r.firstSegment.type==="reduce"){const R=v.fif.getAnalyticalSQL(!1);_.push(` ${R} ${b.dir||"ASC"}`)}else r.firstSegment.type==="project"&&_.push(` ${v.fif.f.generateExpression(r)} ${b.dir||"ASC"}`)}_.length>0&&(m=" "+this.parent.dialect.sqlOrderBy(_,"analytical"))}let g="";if(y.between){const[_,v]=[y.between.preceding,y.between.following].map(C=>{if(C===-1)return"UNBOUNDED";if(typeof C=="number")return C;const b=o.params.findIndex(R=>R.name===C),S=a[b];if(S.node!=="numberLiteral")throw new Error("Invalid number of rows for window spec");return S.literal});g=`ROWS BETWEEN ${_} PRECEDING AND ${v} FOLLOWING`}let A=`${this.exprToSQL(r,i,s,u)} OVER(${p} ${m} ${g})`;return f&&(A=`CASE WHEN group_set=${r.groupSet} THEN ${A} END`),A}generateCaseSQL(e){const r=["CASE"];e.kids.caseValue!==void 0&&r.push(`${e.kids.caseValue.sql}`);for(let i=0;i<e.kids.caseWhen.length;i+=1)r.push(`WHEN ${e.kids.caseWhen[i].sql} THEN ${e.kids.caseThen[i].sql}`);return e.kids.caseElse!==void 0&&r.push(`ELSE ${e.kids.caseElse.sql}`),r.push("END"),r.join(" ")}exprToSQL(e,r,i,s=new by){var o;const u=function(f,x){const h=f.exprToSQL(e,r,x,s);return(0,ke.exprHasKids)(x)?`(${h})`:h};let a=i;if((0,ke.exprHasE)(i)){a={...i};const f=u(this,a.e);a.e={...a.e,sql:f}}else if((0,ke.exprHasKids)(i)){a={...i};const f=i.kids;for(const[x,h]of Object.entries(f))h!==null&&(Array.isArray(h)?a.kids[x]=h.map(p=>({...p,sql:u(this,p)})):a.kids[x]={...f[x],sql:u(this,h)})}const l=e.getQueryInfo(),c=this.parent.dialect.exprToSQL(l,a);if(c)return c;switch(a.node){case"field":return this.generateFieldFragment(e,r,a,s);case"parameter":return this.generateParameterFragment(e,r,a,s);case"filteredExpr":return this.generateFilterFragment(e,r,a,s);case"all":case"exclude":return this.generateUngroupedFragment(e,r,a,s);case"genericSQLExpr":return Array.from(this.stringsFromSQLExpression(e,r,a,s)).join("");case"aggregate":{let f="";if(a.function==="sum")f=this.generateSumFragment(e,r,a,s);else if(a.function==="avg")f=this.generateAvgFragment(e,r,a,s);else if(a.function==="count")f=this.generateCountFragment(e,r,a,s);else if(a.function==="min"||a.function==="max"||a.function==="distinct")f=this.generateSymmetricFragment(e,r,a,s);else throw new Error(`Internal Error: Unknown aggregate function ${a.function}`);if(e.root().isComplexQuery){let x=e.groupSet;return s.totalGroupSet!==-1&&(x=s.totalGroupSet),this.caseGroup([x],f)}return f}case"function_parameter":throw new Error("Internal Error: Function parameter fragment remaining during SQL generation");case"outputField":return this.generateOutputFieldFragment(e,r,a,s);case"function_call":return this.generateFunctionCallExpression(e,r,a,s);case"spread":return this.generateSpread(e,r,a,s);case"source-reference":return this.generateSourceReference(e,r,a);case"+":case"-":case"*":case"%":case"/":case">":case"<":case">=":case"<=":case"=":return`${a.kids.left.sql}${a.node}${a.kids.right.sql}`;case"!=":return`COALESCE(${`${a.kids.left.sql}!=${a.kids.right.sql}`},true)`;case"and":case"or":return`${a.kids.left.sql} ${a.node} ${a.kids.right.sql}`;case"coalesce":return`COALESCE(${a.kids.left.sql},${a.kids.right.sql})`;case"in":{const f=a.kids.oneOf.map(x=>x.sql).join(",");return`${a.kids.e.sql} ${a.not?"NOT IN":"IN"} (${f})`}case"like":case"!like":{const f=a.node==="like"?"LIKE":"NOT LIKE",x=a.kids.right.node==="stringLiteral"?this.parent.dialect.sqlLike(f,(o=a.kids.left.sql)!==null&&o!==void 0?o:"",a.kids.right.literal):`${a.kids.left.sql} ${f} ${a.kids.right.sql}`;return a.node==="like"?x:`COALESCE(${x},true)`}case"()":return`(${a.e.sql})`;case"not":return`COALESCE(NOT ${a.e.sql},TRUE)`;case"unary-":return`-${a.e.sql}`;case"is-null":return`${a.e.sql} IS NULL`;case"is-not-null":return`${a.e.sql} IS NOT NULL`;case"true":case"false":return a.node;case"null":return"NULL";case"case":return this.generateCaseSQL(a);case"":return"";case"filterCondition":return a.e.sql?(a.sql=a.e.sql,a.sql):"";case"functionDefaultOrderBy":case"functionOrderBy":return"";case"compositeField":return"{COMPOSITE_FIELD}";case"filterMatch":if((a.dataType==="string"||a.dataType==="number"||a.dataType==="date"||a.dataType==="timestamp"||a.dataType==="boolean")&&(a.filter===null||(0,dXe.isFilterExpression)(a.filter)))return xXe.FilterCompilers.compile(a.dataType,a.filter,a.e.sql||"",this.parent.dialect);throw new Error(`Internal Error: Filter Compiler Undefined Type '${a.dataType}'`);default:throw new Error(`Internal Error: Unknown expression node '${a.node}' ${JSON.stringify(a,void 0,2)}`)}}isNestedInParent(e){switch(e.type){case"record":case"array":return!0;default:return!1}}isArrayElement(e){return e.type==="array"&&e.elementTypeDef.type!=="record_element"}generateExpression(e){if((0,ke.hasExpression)(this.fieldDef))return this.exprToSQL(e,this.parent,this.fieldDef.e);for(let r=this.parent;r!==void 0;r=r.parent)if(r.structDef.type==="record"&&(0,ke.hasExpression)(r.structDef)&&r.recordAlias===void 0){if(!r.parent)throw new Error("Inconcievable record ancestor with expression but no parent");const i=this.exprToSQL(e,r.parent,r.structDef.e);r.informOfAliasValue(i)}return this.parent.sqlChildReference(this.fieldDef.name,this.parent.structDef.type==="record"?{result:e,field:this}:void 0)}};function j4(t){return t instanceof Bs&&t.isCalculated()}function Sae(t){return t instanceof Bs&&t.isAggregate()}function kr(t){return t instanceof Bs&&!t.isCalculated()&&!t.isAggregate()}class Bs extends oB{constructor(e,r,i){super(e,r,i),this.fieldDef=e}includeInWildcard(){return!0}isCalculated(){return(0,ke.hasExpression)(this.fieldDef)&&(0,ke.expressionIsCalculation)(this.fieldDef.expressionType)}isAggregate(){return(0,ke.hasExpression)(this.fieldDef)&&(0,ke.expressionIsAggregate)(this.fieldDef.expressionType)}getFilterList(){return[]}hasExpression(){return(0,ke.hasExpression)(this.fieldDef)}isAtomic(){return!0}}class gXe extends Bs{}class yXe extends Bs{}class uB extends Bs{}class EXe extends Bs{}class AXe extends Bs{}class aB extends Bs{generateExpression(e){const r=this.fieldDef,i=super.generateExpression(e);if(r.timeframe){const s={node:"trunc",e:(0,ke.mkTemporal)({node:"genericSQLExpr",src:[i],kids:{args:[]}},"date"),units:r.timeframe};return this.exprToSQL(e,this.parent,s)}else return i}getChildByName(e){const r={...this.fieldDef,as:`${this.getIdentifier()}_${e}`,timeframe:e};return new aB(r,this.parent)}}class lB extends Bs{getChildByName(e){const r={...this.fieldDef,as:`${this.getIdentifier()}_${e}`,timeframe:e};return new lB(r,this.parent)}}class _Xe extends Bs{generateExpression(e){var r;if(this.parent.primaryKey())return this.parent.getPrimaryKeyField(this.fieldDef).generateExpression(e);if(this.parent.structDef.type==="array"){const i=(r=this.parent.parent)===null||r===void 0?void 0:r.getDistinctKey().generateExpression(e);return this.parent.dialect.sqlMakeUnnestKey(i||"",this.parent.dialect.sqlFieldReference(this.parent.getIdentifier(),"table","__row_id","string"))}else return this.parent.dialect.sqlFieldReference(this.parent.getIdentifier(),"table","__distinct_key","string")}includeInWildcard(){return!1}}const bae=9;function Tae(t,e,r){const s=t.sqlSumDistinctHashedKey(r),o=10**(9-bae);let a=`(${`
|
|
1054
1054
|
(
|
|
1055
1055
|
SUM(DISTINCT
|
|
1056
1056
|
(CAST(ROUND(COALESCE(${e},0)*(${o}*1.0), ${bae}) AS ${t.defaultDecimalType}) +
|
|
@@ -124685,7 +124685,7 @@ function ett(t) {
|
|
|
124685
124685
|
}
|
|
124686
124686
|
Dn.isTemporalFilter = ett;
|
|
124687
124687
|
function ttt(t) {
|
|
124688
|
-
return t && "operator" in t;
|
|
124688
|
+
return !!t && "operator" in t;
|
|
124689
124689
|
}
|
|
124690
124690
|
Dn.isFilterExpression = ttt;
|
|
124691
124691
|
function ntt(t) {
|
|
@@ -125612,7 +125612,7 @@ function Att(t, e) {
|
|
|
125612
125612
|
try {
|
|
125613
125613
|
e.feed(t);
|
|
125614
125614
|
const i = e.finish()[0];
|
|
125615
|
-
return
|
|
125615
|
+
return (0, Ett.isFilterExpression)(i) ? { parsed: i, log: [] } : { parsed: null, log: [] };
|
|
125616
125616
|
} catch (r) {
|
|
125617
125617
|
let i = r.message, s = 1, o = t.length;
|
|
125618
125618
|
if (r.token) {
|
|
@@ -126951,7 +126951,7 @@ let bk = class extends Ptt {
|
|
|
126951
126951
|
case "compositeField":
|
|
126952
126952
|
return "{COMPOSITE_FIELD}";
|
|
126953
126953
|
case "filterMatch":
|
|
126954
|
-
if ((a.dataType === "string" || a.dataType === "number" || a.dataType === "date" || a.dataType === "timestamp" || a.dataType === "boolean") && (
|
|
126954
|
+
if ((a.dataType === "string" || a.dataType === "number" || a.dataType === "date" || a.dataType === "timestamp" || a.dataType === "boolean") && (a.filter === null || (0, Btt.isFilterExpression)(a.filter)))
|
|
126955
126955
|
return $tt.FilterCompilers.compile(a.dataType, a.filter, a.e.sql || "", this.parent.dialect);
|
|
126956
126956
|
throw new Error(`Internal Error: Filter Compiler Undefined Type '${a.dataType}'`);
|
|
126957
126957
|
default:
|