@malloydata/render 0.0.183-dev240916205710 → 0.0.183
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.
|
@@ -1297,7 +1297,7 @@ ${r} ${s}: [`,o.length>0&&(i+=`
|
|
|
1297
1297
|
`+o.map(u=>u.stringify("",n+4)).join(`
|
|
1298
1298
|
`)+`
|
|
1299
1299
|
${r} `),i+="]")}return i}*walk(){for(const e of Object.keys(this.children)){const n=this.children[e];if(n instanceof lu)yield n;else for(const r of n)yield r}}varInfo(){let e="";for(const[n,r]of Object.entries(this))n!=="elementType"&&(typeof r=="boolean"?e+=r?` ${n}`:` !${n}`:(typeof r=="string"||typeof r=="number")&&(e+=` ${n}=${r}`));return e}internalError(e){return this.log(`INTERNAL ERROR IN TRANSLATION: ${e}`),new Error(e)}needs(e){for(const n of this.walk()){const r=n.needs(e);if(r)return r}}inExperiment(e,n=!1){var r;const i=(r=this.translator())===null||r===void 0?void 0:r.compilerFlags.tag("experimental");return i&&(i.bare()||i.has(e))?!0:(n||this.log(`Experimental flag '${e}' is not set, feature not available`),!1)}}Ge.MalloyElement=lu;class Hpe extends lu{constructor(){super(...arguments),this.elementType="unimplemented",this.reported=!1}}Ge.Unimplemented=Hpe;class hO extends lu{constructor(e){super(),this.name=e,this.elementType="modelEntryReference"}get refString(){return this.name}toString(){return this.refString}getNamed(){var e;return(e=this.modelEntry(this))===null||e===void 0?void 0:e.entry}}Ge.ModelEntryReference=hO;class Qpe extends lu{constructor(e){super(),this.id=e,this.elementType="experimentalExperiment"}execute(e){this.inExperiment(this.id)}}Ge.ExperimentalExperiment=Qpe;function dq(t){return t.execute!==void 0}Ge.isDocStatement=dq;function Gpe(t){return t instanceof Pp||dq(t)}Ge.isDocStatementOrDocStatementList=Gpe;class hq extends lu{constructor(e){super(),this.elements=e,this.newContents()}newContents(){this.has({listOf:this.elements})}get list(){return this.elements}empty(){return this.elements.length===0}notEmpty(){return this.elements.length>0}push(...e){return this.elements.push(...e),this.newContents(),this.elements}needs(e){for(const n of this.elements){const r=n.needs(e);if(r)return r}}}Ge.ListOf=hq;class Pp extends hq{constructor(){super(...arguments),this.elementType="topLevelStatements",this.execCursor=0,this.isNoteableObj=!0,this.extendNote=xq.extendNoteMethod,this.noteCursor=0}executeList(e){for(;this.execCursor<this.elements.length;){const n=this.elements[this.execCursor];if(this.noteCursor===this.execCursor&&(this.note&&(0,xq.isNoteable)(n)&&n.extendNote(this.note),this.noteCursor+=1),n instanceof Pp){const r=n.executeList(e);if(r)return r}else{const r=n.needs(e);if(r)return r;n.execute(e)}this.execCursor+=1}}}Ge.DocStatementList=Pp;const Wpe="5a79a191-06bc-43cf-9b12-58741cd82970";function pq(t){const e=t.inherits?pq(t.inherits):[];return t.blockNotes&&e.push(...t.blockNotes.map(n=>n.text)),t.notes&&e.push(...t.notes.map(n=>n.text)),e}function Vpe(t){const e=pq(t).join("");return(0,zpe.v5)(e,Wpe)}class pO extends lu{constructor(e){super(),this.elementType="document",this.globalNameSpace=new qpe.GlobalNameSpace,this.documentModel={},this.queryList=[],this.sqlBlocks=[],this.didInitModel=!1,this.annotation={},this.experiments=new jpe.Tag({}),this.modelAnnotationTodoList=[],this.dialectNameSpaces=new Map,this.statements=new Pp(e),this.has({statements:e})}initModelDef(e){if(!this.didInitModel){if(this.documentModel={},this.queryList=[],this.sqlBlocks=[],e){e.annotation&&(this.annotation.inherits=e.annotation);for(const[n,r]of Object.entries(e.contents)){const i=structuredClone(r);if(i.type==="struct"||i.type==="query"||i.type==="function"){const s=e.exports.includes(n);this.setEntry(n,{entry:i,exported:s})}}}this.didInitModel=!0}}compile(){const e=this.statements.executeList(this),n=this.modelDef();if(e===void 0){for(const i of this.queryList)i.modelAnnotation===void 0&&n.annotation&&(i.modelAnnotation=n.annotation);for(const i of this.sqlBlocks)i.modelAnnotation===void 0&&n.annotation&&(i.modelAnnotation=n.annotation)}if(n.annotation)for(const i of this.modelAnnotationTodoList)i.modelAnnotation||(i.modelAnnotation=n.annotation);return{modelDef:n,queryList:this.queryList,sqlBlocks:this.sqlBlocks,needs:e}}rememberToAddModelAnnotations(e){this.modelAnnotationTodoList.push(e)}hasAnnotation(){return this.annotation.notes&&this.annotation.notes.length>0||this.annotation.inherits!==void 0}currentModelAnnotation(){if(this.hasAnnotation()){const e={...this.annotation,id:""};return e.id=Vpe(e),e}}modelDef(){const e={name:"",exports:[],contents:{}};this.hasAnnotation()&&(e.annotation=this.currentModelAnnotation());for(const n in this.documentModel){const r=this.documentModel[n].entry;if(r.type==="struct"||r.type==="query"){this.documentModel[n].exported&&e.exports.push(n);const i=structuredClone(r);i.modelAnnotation===void 0&&e.annotation&&(i.modelAnnotation=e.annotation),e.contents[n]=i}}return e}defineSQL(e,n){const r={...e,as:`$${this.sqlBlocks.length}`,declaredSQLBlock:!0};if(n){if(this.getEntry(n))return!1;r.as=n,this.setEntry(n,{entry:r})}return this.sqlBlocks.push(r),!0}getEntry(e){var n;return(n=this.globalNameSpace.getEntry(e))!==null&&n!==void 0?n:this.documentModel[e]}setEntry(e,n){this.globalNameSpace.getEntry(e)!==void 0&&this.log(`Cannot redefine '${e}', which is in global namespace`),n.entry.type==="struct"&&this.checkExperimentalDialect(this,n.entry.dialect),this.documentModel[e]=n}checkExperimentalDialect(e,n){const r=this.translator();r&&r.firstReferenceToDialect(n)&&(0,fq.getDialect)(n).experimental&&!r.experimentalDialectEnabled(n)&&e.log(`Requires compiler flag '##! experimental.dialect.${n}'`,"error")}getDialectNamespace(e){if(this.dialectNameSpaces.has(e))return this.dialectNameSpaces.get(e);const n=(0,fq.getDialect)(e),r=new Upe.DialectNameSpace(n);return this.dialectNameSpaces.set(e,r),r}}Ge.Document=pO;var uv={},_d={},Br={},jl={};Object.defineProperty(jl,"__esModule",{value:!0}),jl.canMakeEntry=jl.SpaceEntry=void 0;class Ype{}jl.SpaceEntry=Ype;function Xpe(t){return"makeEntry"in t}jl.canMakeEntry=Xpe,Object.defineProperty(Br,"__esModule",{value:!0}),Br.SpaceField=void 0;const Kpe=ce,Jpe=jl;class Zpe extends Jpe.SpaceEntry{constructor(){super(...arguments),this.refType="field"}fieldTypeFromFieldDef(e){const n={dataType:e.type,expressionType:"scalar",evalSpace:"input"};return(0,Kpe.isFieldTypeDef)(e)&&e.expressionType&&(n.expressionType=e.expressionType),n.dataType==="sql native"&&e.type==="sql native"&&e.rawType&&(n.rawType=e.rawType),n}getQueryFieldDef(e){}fieldDef(){}}Br.SpaceField=Zpe,Object.defineProperty(_d,"__esModule",{value:!0}),_d.ViewField=void 0;const ege=Br;class tge extends ege.SpaceField{constructor(e){super(),this.inSpace=e}typeDesc(){return{dataType:"turtle",expressionType:"scalar",evalSpace:"input"}}}_d.ViewField=tge,Object.defineProperty(uv,"__esModule",{value:!0}),uv.ASTViewField=void 0;const nge=_d;class rge extends nge.ViewField{constructor(e,n,r){super(e),this.view=n,this.name=r}getQueryFieldDef(e){return this.view.getFieldDef(e)}fieldDef(){return this.view.getFieldDef(this.inSpace)}}uv.ASTViewField=rge,Object.defineProperty(Lp,"__esModule",{value:!0}),Lp.ViewFieldDeclaration=void 0;const ige=Ge,sge=Ir,oge=Ed,uge=uv;class age extends ige.MalloyElement{constructor(e,n){super({view:n}),this.name=e,this.view=n,this.elementType="view-field-declaration",this.isNoteableObj=!0,this.extendNote=sge.extendNoteMethod}makeEntry(e){const n=new uge.ASTViewField(e,this,this.name);e.newEntry(this.name,this,n)}getFieldDef(e){const{pipeline:n,annotation:r}=this.view.pipelineComp(e),i=(0,oge.detectAndRemovePartialStages)(n,this);return{type:"turtle",name:this.name,pipeline:i,annotation:{...this.note,inherits:r},location:this.location}}}Lp.ViewFieldDeclaration=age;var En={};Object.defineProperty(En,"__esModule",{value:!0}),En.LegalRefinementStage=En.QueryClass=void 0;var gq;(function(t){t.Index="index",t.Project="project",t.Grouping="grouping"})(gq||(En.QueryClass=gq={}));var mq;(function(t){t[t.Single=0]="Single",t[t.Head=1]="Head",t[t.Tail=2]="Tail"})(mq||(En.LegalRefinementStage=mq={})),Object.defineProperty(Fp,"__esModule",{value:!0}),Fp.NestFieldDeclaration=void 0;const lge=Ed,cge=Lp,yq=En;class fge extends cge.ViewFieldDeclaration{constructor(){super(...arguments),this.elementType="nest-field-declaration",this.queryRefinementStage=yq.LegalRefinementStage.Single,this.forceQueryClass=yq.QueryClass.Grouping}queryExecute(e){e.resultFS.pushFields(this)}getFieldDef(e){if(e.isQueryFieldSpace()){const{pipeline:n,annotation:r}=this.view.pipelineComp(e,e.outputSpace()),i=(0,lge.detectAndRemovePartialStages)(n,this);return{type:"turtle",name:this.name,pipeline:i,annotation:{...this.note,inherits:r},location:this.location}}throw this.internalError("Unexpected namespace for nest")}}Fp.NestFieldDeclaration=fge;var Cd={},$r={};Object.defineProperty($r,"__esModule",{value:!0}),$r.ErrorFactory=void 0;const Eq={type:"struct",name:"~malformed~",dialect:"~malformed~",structSource:{type:"table",tablePath:"//undefined_error_table_path"},structRelationship:{type:"basetable",connectionName:"//undefined_error_connection"},fields:[]};class gO{static get structDef(){return{...Eq}}static isErrorStructDef(e){return e.name.includes(Eq.name)}static get query(){return{structRef:gO.structDef,pipeline:[]}}static get reduceSegment(){return{type:"reduce",queryFields:[]}}static get projectSegment(){return{type:"project",queryFields:[]}}static get indexSegment(){return{type:"index",indexFields:[]}}}$r.ErrorFactory=gO,Object.defineProperty(Cd,"__esModule",{value:!0}),Cd.DefineSourceList=Cd.DefineSource=void 0;const xge=$r,Aq=Ge,dge=Ir;class hge extends Aq.MalloyElement{constructor(e,n,r,i){super(),this.name=e,this.sourceExpr=n,this.exported=r,this.parameters=i,this.elementType="defineSource",this.isNoteableObj=!0,this.extendNote=dge.extendNoteMethod,n&&this.has({sourceExpr:n}),i&&this.has({parameters:i})}execute(e){var n;if(e.modelEntry(this.name))this.log(`Cannot redefine '${this.name}'`);else{const r=(n=this.sourceExpr)===null||n===void 0?void 0:n.getSource();if(r===void 0)return;const i=this.deduplicatedParameters(),s=r.withParameters(void 0,this.parameters);if(this.validateParameterShadowing(i,s),xge.ErrorFactory.isErrorStructDef(s))return;const o={...s,as:this.name,location:this.location};this.note&&(o.annotation=s.annotation?{...this.note,inherits:s.annotation}:this.note),e.setEntry(this.name,{entry:o,exported:this.exported})}}deduplicatedParameters(){if(this.parameters===void 0)return[];const e={},n=[];for(const r of this.parameters)r.name in e&&r.log(`Cannot redefine parameter \`${r.name}\``),e[r.name]=!0,n.push(r);return n}validateParameterShadowing(e,n){for(const r of e)n.fields.find(i=>{var s;return((s=i.as)!==null&&s!==void 0?s:i.name)===r.name})&&r.log(`Illegal shadowing of field \`${r.name}\` by parameter with the same name`)}}Cd.DefineSource=hge;class pge extends Aq.DocStatementList{constructor(e){super(e),this.elementType="defineSources"}}Cd.DefineSourceList=pge;var bd={};Object.defineProperty(bd,"__esModule",{value:!0}),bd.DefineQueryList=bd.DefineQuery=void 0;const vq=Ge,gge=Ir;class mge extends vq.MalloyElement{constructor(e,n){super({queryExpr:n}),this.name=e,this.queryExpr=n,this.elementType="defineQuery",this.isNoteableObj=!0,this.extendNote=gge.extendNoteMethod}execute(e){if(e.getEntry(this.name)){this.log(`'${this.name}' is already defined, cannot redefine`);return}const r=this.queryExpr.getQuery();if(!r){this.queryExpr.sqLog("Cannot define a query from this expression");return}const i={...r.query(),type:"query",name:this.name,location:this.location};this.note&&(i.annotation=i.annotation?{...this.note,inherits:i.annotation}:this.note),e.setEntry(this.name,{entry:i,exported:!0})}}bd.DefineQuery=mge;class yge extends vq.DocStatementList{constructor(e){super(e),this.elementType="defineQueries"}}bd.DefineQueryList=yge;var uo={};Object.defineProperty(uo,"__esModule",{value:!0}),uo.Source=void 0;const Ege=Ge;class Age extends Ege.MalloyElement{structRef(e){return{structRef:this.structDef(e)}}packParameters(e){if(e===void 0)return;const n={};for(const r of e){const i=r.parameter();n[i.name]=i}return n}withParameters(e,n){return{...this.structDef(e),parameters:this.packParameters(n)}}}uo.Source=Age;var Mp={},Td={},av={},Ul={};Object.defineProperty(Ul,"__esModule",{value:!0}),Ul.mergeFields=Ul.nameFromDef=void 0;function mO(t){var e;return t.type==="fieldref"?t.path[t.path.length-1]:(e=t.as)!==null&&e!==void 0?e:t.name}Ul.nameFromDef=mO;function vge(t,e){if(t===void 0)return e;const n=new Set(e.map(i=>mO(i))),r=t.filter(i=>!n.has(mO(i)));return r.push(...e),r}Ul.mergeFields=vge;var jp={},kr={},cu={};Object.defineProperty(cu,"__esModule",{value:!0}),cu.DefinedParameter=cu.AbstractParameter=cu.SpaceParam=void 0;const Sge=jl;class yO extends Sge.SpaceEntry{constructor(){super(...arguments),this.refType="parameter"}}cu.SpaceParam=yO;class _ge extends yO{constructor(e){super(),this.astParam=e,this._parameter=void 0}parameter(){return this._parameter!==void 0?this._parameter:(this._parameter=this.astParam.parameter(),this._parameter)}typeDesc(){var e;return{dataType:(e=this.parameter().type)!==null&&e!==void 0?e:"error",expressionType:"scalar",evalSpace:"constant"}}}cu.AbstractParameter=_ge;class Cge extends yO{constructor(e){super(),this.paramDef=e}parameter(){return this.paramDef}typeDesc(){return{dataType:this.paramDef.type,expressionType:"scalar",evalSpace:"input"}}}cu.DefinedParameter=Cge;var Jc={};Object.defineProperty(Jc,"__esModule",{value:!0}),Jc.StructSpaceFieldBase=void 0;const bge=Br;class Tge extends bge.SpaceField{constructor(e){super(),this.sourceDef=e}get structRelationship(){return this.sourceDef.structRelationship}fieldDef(){return this.sourceDef}typeDesc(){return{dataType:"struct",expressionType:"scalar",evalSpace:"input"}}}Jc.StructSpaceFieldBase=Tge;var Up={};Object.defineProperty(Up,"__esModule",{value:!0}),Up.ColumnSpaceField=void 0;const Rge=Br;class Oge extends Rge.SpaceField{constructor(e){super(),this.haveFieldDef=e}fieldDef(){return this.haveFieldDef}typeDesc(){return this.fieldTypeFromFieldDef(this.haveFieldDef)}}Up.ColumnSpaceField=Oge;var lv={};Object.defineProperty(lv,"__esModule",{value:!0}),lv.IRViewField=void 0;const Dge=_d;class Nge extends Dge.ViewField{constructor(e,n){super(e),this.turtleDef=n,this.haveFieldDef=n}rename(e){this.turtleDef={...this.turtleDef,as:e}}fieldDef(){return this.turtleDef}getQueryFieldDef(e){return this.fieldDef()}}lv.IRViewField=Nge,Object.defineProperty(kr,"__esModule",{value:!0}),kr.StructSpaceField=kr.StaticSpace=void 0;const wge=zo,Fge=ce,Lge=cu,Ige=Br,cv=Jc,Bge=Up,$ge=lv;class Sq{constructor(e){this.type="fieldSpace",this.fromStruct=e}dialectObj(){try{return(0,wge.getDialect)(this.fromStruct.dialect)}catch{return}}defToSpaceField(e){return e.type==="struct"?new _q(e):(0,Fge.isTurtleDef)(e)?new $ge.IRViewField(this,e):new Bge.ColumnSpaceField(e)}get map(){if(this.memoMap===void 0){this.memoMap={};for(const e of this.fromStruct.fields){const n=e.as||e.name;this.memoMap[n]=this.defToSpaceField(e)}if(this.fromStruct.parameters)for(const[e,n]of Object.entries(this.fromStruct.parameters))e in this.memoMap||(this.memoMap[e]=new Lge.DefinedParameter(n))}return this.memoMap}dropEntries(){this.memoMap={}}dropEntry(e){delete this.map[e]}entry(e){return this.map[e]}setEntry(e,n){this.map[e]=n}entries(){return Object.entries(this.map)}structDef(){return this.fromStruct}emptyStructDef(){return{...this.fromStruct,fields:[],parameters:{}}}lookup(e){const n=e[0],r=e.slice(1),i=this.entry(n.refString);if(!i)return{error:`'${n}' is not defined`,found:i};if(i instanceof Ige.SpaceField){const o=i.fieldDef();o&&n.addReference({type:i instanceof cv.StructSpaceFieldBase?"joinReference":"fieldReference",definition:o,location:n.location,text:n.refString})}const s=i instanceof cv.StructSpaceFieldBase?[{name:n.refString,structRelationship:i.structRelationship}]:[];if(r.length){if(i instanceof cv.StructSpaceFieldBase){const o=i.fieldSpace.lookup(r);return o.found?{...o,relationship:[...s,...o.relationship]}:o}return{error:`'${n}' cannot contain a '${r[0]}'`,found:void 0}}return{found:i,error:void 0,relationship:s,isOutputField:!1}}isQueryFieldSpace(){return!1}}kr.StaticSpace=Sq;class _q extends cv.StructSpaceFieldBase{constructor(e){super(e)}get fieldSpace(){return new Sq(this.sourceDef)}}kr.StructSpaceField=_q,Object.defineProperty(jp,"__esModule",{value:!0}),jp.JoinSpaceField=void 0;const kge=kr;class Pge extends kge.StructSpaceField{constructor(e,n){super(n.structDef(e)),this.parameterSpace=e,this.join=n}}jp.JoinSpaceField=Pge;var qp={};Object.defineProperty(qp,"__esModule",{value:!0}),qp.SpaceSeed=void 0;const Mge=kr;function Cq(t){return t.type==="fieldSpace"}class jge{constructor(e){this.sourceSpec=e,this.spaceSpec=e}get structDef(){return Cq(this.spaceSpec)?(this.asStruct||(this.asStruct=this.spaceSpec.structDef()),this.asStruct):this.spaceSpec}get fieldSpace(){return Cq(this.spaceSpec)?this.spaceSpec:(this.asFS||(this.asFS=new Mge.StaticSpace(this.spaceSpec)),this.asFS)}}qp.SpaceSeed=jge;var Rd={};Object.defineProperty(Rd,"__esModule",{value:!0}),Rd.ParameterSpace=void 0;const Uge=cu;class qge{constructor(e){this.type="fieldSpace",this._map={};for(const n of e)this._map[n.name]=new Uge.AbstractParameter(n)}structDef(){throw new Error("Parameter space does not have a structDef")}emptyStructDef(){throw new Error("Parameter space does not have an emptyStructDef")}entry(e){return this._map[e]}lookup(e){const n=e[0];if(n===void 0)return{error:"Invalid reference",found:void 0};const r=this.entry(n.refString);return r===void 0?{error:`\`${n}\` is not defined`,found:void 0}:e.length>1?{error:`\`${n}\` cannot contain a \`${e.slice(1).join(".")}\``,found:void 0}:{found:r,error:void 0,relationship:[],isOutputField:!1}}entries(){return Object.entries(this._map)}dialectObj(){}isQueryFieldSpace(){return!1}}Rd.ParameterSpace=qge,Object.defineProperty(av,"__esModule",{value:!0}),av.DynamicSpace=void 0;const zge=Ul,Hge=$r,Qge=Br,Gge=jp,Wge=_d,bq=cu,Vge=qp,Yge=kr,Xge=Jc,Kge=Rd;class Jge extends Yge.StaticSpace{constructor(e){const n=new Vge.SpaceSeed(e);super(structuredClone(n.structDef)),this.completions=[],this.complete=!1,this.parameters=[],this.final=void 0,this.source=n}isComplete(){this.complete=!0}setEntry(e,n){if(this.final)throw new Error("Space already final");super.setEntry(e,n)}addParameters(e){for(const n of e)this.entry(n.name)===void 0&&(this.parameters.push(n),this.setEntry(n.name,new bq.AbstractParameter(n)));return this}parameterSpace(){return new Kge.ParameterSpace(this.parameters)}newEntry(e,n,r){if(this.entry(e)){n.log(`Cannot redefine '${e}'`);return}this.setEntry(e,r)}renameEntry(e,n,r){this.dropEntry(e),this.setEntry(n,r)}addFieldDef(e){this.setEntry((0,zge.nameFromDef)(e),this.defToSpaceField(e))}setTimezone(e){this.newTimezone=e}structDef(){if(this.final===void 0){const e={};for(const[a,l]of this.entries())l instanceof bq.SpaceParam&&(e[a]=l.parameter());this.final={...this.fromStruct,fields:[],parameters:e};const n=[],r=[],i=[],s=[];for(const[a,l]of this.entries())l instanceof Xge.StructSpaceFieldBase?r.push([a,l]):l instanceof Wge.ViewField?i.push([a,l]):l instanceof Qge.SpaceField&&n.push([a,l]);const o=[...n,...r,...i],u=this.parameterSpace();for(const[,a]of o)if(a instanceof Gge.JoinSpaceField){const l=a.join.structDef(u);Hge.ErrorFactory.isErrorStructDef(l)||(this.final.fields.push(l),s.push([a.join,l]))}else{const l=a.fieldDef();l&&this.final.fields.push(l)}for(const[a,l]of s)a.fixupJoinOn(this,l)}return this.newTimezone&&(this.final.queryTimezone=this.newTimezone),this.isComplete(),this.final}}av.DynamicSpace=Jge,Object.defineProperty(Td,"__esModule",{value:!0}),Td.RefinedSpace=void 0;const Zge=av,eme=jl;class EO extends Zge.DynamicSpace{static filteredFrom(e,n,r){const i=new EO(e);if(n){const s=n.refs.list,o=i.entries();for(const u of s)o.find(([l])=>l===u.refString)===void 0&&(r!=null&&r.entry(u.refString)?u.log(`Illegal \`${n.edit}:\` of parameter`):u.log(`\`${u.refString}\` is not defined`));i.dropEntries();for(const[u,a]of o){const l=!!s.find(f=>f.refString===u),c=n.edit==="accept";l===c&&i.setEntry(u,a)}}return i}pushFields(...e){for(const n of e)(0,eme.canMakeEntry)(n)?n.makeEntry(this):n.log(`Internal error, ${n.elementType} not expected in this context`)}}Td.RefinedSpace=EO;var ql={},Zi={};Object.defineProperty(Zi,"__esModule",{value:!0}),Zi.DefinitionList=void 0;const tme=Ge,Tq=Ir;class nme extends tme.ListOf{constructor(){super(...arguments),this.isNoteableObj=!0}extendNote(e){(0,Tq.extendNoteHelper)(this,e),this.distributeAnnotation()}distributeAnnotation(){if(this.note)for(const e of this.elements)(0,Tq.isNoteable)(e)&&e.extendNote(this.note)}newContents(){super.newContents(),this.distributeAnnotation()}}Zi.DefinitionList=nme,Object.defineProperty(ql,"__esModule",{value:!0}),ql.DeclareFields=void 0;const rme=Zi,ime=En;class sme extends rme.DefinitionList{constructor(e){super(e),this.elementType="declareFields",this.queryRefinementStage=ime.LegalRefinementStage.Single,this.forceQueryClass=void 0}queryExecute(e){for(const n of this.list)e.inputFS.extendSource(n)}}ql.DeclareFields=sme;var ao={};Object.defineProperty(ao,"__esModule",{value:!0}),ao.Filter=ao.FilterElement=void 0;const Rq=ce,Oq=Ge,AO=En;class ome extends Oq.MalloyElement{constructor(e,n){super({expr:e}),this.expr=e,this.exprSrc=n,this.elementType="filterElement"}filterCondition(e){const n=this.expr.getExpression(e);return n.dataType!=="boolean"?(this.expr.log("Filter expression must have boolean value"),{node:"filterCondition",code:this.exprSrc,e:{node:"false"},expressionType:"scalar"}):{node:"filterCondition",code:this.exprSrc,e:n.value,expressionType:n.expressionType}}}ao.FilterElement=ome;let ume=class extends Oq.ListOf{constructor(){super(...arguments),this.elementType="filter",this.forceQueryClass=void 0,this.queryRefinementStage=AO.LegalRefinementStage.Head}set having(e){this.elementType=e?"having":"where",this.havingClause=e,this.queryRefinementStage=e?AO.LegalRefinementStage.Tail:AO.LegalRefinementStage.Head}getFilterList(e){const n=[];for(const r of this.list){const i=r.filterCondition(e);if(this.havingClause!==void 0){const s=(0,Rq.expressionIsAggregate)(i.expressionType),o=(0,Rq.expressionIsAnalytic)(i.expressionType);if(this.havingClause){if(o){r.log("Analytic expressions are not allowed in `having:`");continue}}else if(o){r.log("Analytic expressions are not allowed in `where:`");continue}else s&&r.log("Aggregate expressions are not allowed in `where:`; use `having:`")}n.push(i)}return n}};ao.Filter=ume;var Ri={};Object.defineProperty(Ri,"__esModule",{value:!0}),Ri.Joins=Ri.ExpressionJoin=Ri.KeyJoin=Ri.Join=void 0;const ame=ce,lme=jp,cme=Zi,fme=Ge,xme=Ir,dme=En,Dq=$r;class vO extends fme.MalloyElement{constructor(){super(...arguments),this.isNoteableObj=!0,this.extendNote=xme.extendNoteMethod}makeEntry(e){e.newEntry(this.name.refString,this,new lme.JoinSpaceField(e.parameterSpace(),this))}getStructDefFromExpr(e){const n=this.sourceExpr.getSource();return n?n.structDef(e):(this.sourceExpr.sqLog("Cannot great a source to join from"),Dq.ErrorFactory.structDef)}}Ri.Join=vO;class hme extends vO{constructor(e,n,r){super({name:e,sourceExpr:n,keyExpr:r}),this.name=e,this.sourceExpr=n,this.keyExpr=r,this.elementType="joinOnKey"}structDef(e){var n;const r=this.getStructDefFromExpr(e),i={...r,structRelationship:{type:"one",matrixOperation:"left",onExpression:{node:"error",message:"('join fixup'='not done yet')"}},location:this.location};return r.structSource.type==="query"?i.name=this.name.refString:i.as=this.name.refString,this.note&&(i.annotation=this.note),(n=this.document())===null||n===void 0||n.rememberToAddModelAnnotations(i),i}fixupJoinOn(e,n){const r=this.keyExpr.getExpression(e);if(n.primaryKey){const i=n.fields.find(s=>(s.as||s.name)===n.primaryKey);if(i)if(i.type===r.dataType){n.structRelationship={type:"one",matrixOperation:"left",onExpression:{node:"=",kids:{left:{node:"field",path:[this.name.refString,n.primaryKey]},right:r.value}}};return}else this.log(`join_one: with type mismatch with primary key: ${r.dataType}/${i.type}`);else this.log(`join_one: Primary key '${i}' not found in source`)}else this.log("join_one: Cannot use with unless source has a primary key")}}Ri.KeyJoin=hme;class pme extends vO{constructor(e,n){super({name:e,sourceExpr:n}),this.name=e,this.sourceExpr=n,this.elementType="joinOnExpr",this.joinType="one",this.matrixOperation="left"}set joinOn(e){this.expr=e,this.has({on:e})}get joinOn(){return this.expr}fixupJoinOn(e,n){if(this.expr===void 0)return;const r=this.expr.getExpression(e);if(r.dataType!=="boolean"){this.log("join conditions must be boolean expressions");return}const i=n.structRelationship;(0,ame.isJoinOn)(i)&&(i.onExpression=r.value)}structDef(e){var n;const r=this.sourceExpr.getSource();if(!r)return this.sourceExpr.sqLog("Cannot create a source to join from"),Dq.ErrorFactory.structDef;const i=r.structDef(e);let s="left";this.inExperiment("join_types",!0)&&(s=this.matrixOperation);const o={...i,structRelationship:{type:this.joinType,matrixOperation:s},location:this.location};return i.structSource.type==="query"?(o.name=this.name.refString,delete o.as):o.as=this.name.refString,this.note&&(o.annotation=this.note),(n=this.document())===null||n===void 0||n.rememberToAddModelAnnotations(o),o}}Ri.ExpressionJoin=pme;class gme extends cme.DefinitionList{constructor(e){super(e),this.elementType="joinList",this.forceQueryClass=void 0,this.queryRefinementStage=dme.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)e.inputFS.extendSource(n)}}Ri.Joins=gme;var Od={};Object.defineProperty(Od,"__esModule",{value:!0}),Od.FieldListEdit=void 0;const mme=Ge;class yme extends mme.MalloyElement{constructor(e,n){super({refs:n}),this.edit=e,this.refs=n,this.elementType="fieldListEdit"}}Od.FieldListEdit=yme;var Dd={};Object.defineProperty(Dd,"__esModule",{value:!0}),Dd.PrimaryKey=void 0;const Eme=Ge;class Ame extends Eme.MalloyElement{constructor(e){super({field:e}),this.field=e,this.elementType="primary key"}}Dd.PrimaryKey=Ame;var Nd={};Object.defineProperty(Nd,"__esModule",{value:!0}),Nd.Views=void 0;const vme=Zi;class Sme extends vme.DefinitionList{constructor(){super(...arguments),this.elementType="turtleDefList"}}Nd.Views=Sme;var wd={};Object.defineProperty(wd,"__esModule",{value:!0}),wd.TimezoneStatement=void 0;const _me=Ge;class Cme extends _me.MalloyElement{constructor(e){super(),this.tz=e,this.elementType="timezone",this.forceQueryClass=void 0,this.queryRefinementStage=void 0}get isValid(){try{return Intl.DateTimeFormat(void 0,{timeZone:this.tz}),!0}catch{return!1}}queryExecute(e){e.resultFS.setTimezone(this.tz)}}wd.TimezoneStatement=Cme;var zl={};Object.defineProperty(zl,"__esModule",{value:!0}),zl.ModelAnnotation=zl.ObjectAnnotation=void 0;const bme=_a,Tme=Ge;class Nq extends Tme.MalloyElement{constructor(e){super(),this.notes=e,this.elementType="annotation",this.forceQueryClass=void 0,this.queryRefinementStage=void 0}queryExecute(){}}zl.ObjectAnnotation=Nq;class Rme extends Nq{constructor(){super(...arguments),this.elementType="modelAnnotation"}getCompilerFlags(e,n){const r=bme.Tag.annotationToTag({notes:this.notes},{prefix:/^##! /,extending:e});return r.log.forEach(i=>n.log(i)),r.tag}execute(e){e.annotation.notes===void 0&&(e.annotation.notes=[]),e.annotation.notes.push(...this.notes)}}zl.ModelAnnotation=Rme;var Hl={},fv={};Object.defineProperty(fv,"__esModule",{value:!0}),fv.RenameSpaceField=void 0;const Ome=Br;class Dme extends Ome.SpaceField{constructor(e,n,r){super(),this.otherField=e,this.newName=n,this.location=r}fieldDef(){const e=this.otherField.fieldDef();if(e!==void 0)return{...e,as:this.newName,location:this.location}}typeDesc(){return this.otherField.typeDesc()}}fv.RenameSpaceField=Dme,Object.defineProperty(Hl,"__esModule",{value:!0}),Hl.Renames=Hl.RenameField=void 0;const Nme=fv,wq=Ge,wme=Br;class Fme extends wq.MalloyElement{constructor(e,n){super(),this.newName=e,this.oldName=n,this.elementType="renameField",this.has({oldName:n})}makeEntry(e){if(this.oldName.refString===this.newName){this.log("Can't rename field to itself");return}const n=this.oldName.getField(e);n.found?n.found instanceof wme.SpaceField?e.renameEntry(this.oldName.refString,this.newName,new Nme.RenameSpaceField(n.found,this.newName,this.location)):this.log(`'${this.oldName}' cannot be renamed`):this.log(`Can't rename '${this.oldName}', no such field`)}}Hl.RenameField=Fme;class Lme extends wq.ListOf{constructor(){super(...arguments),this.elementType="renameFields"}}Hl.Renames=Lme,Object.defineProperty(Mp,"__esModule",{value:!0}),Mp.RefinedSource=void 0;const Ime=ce,Bme=Td,$me=ql,kme=ao,Pme=Ri,Mme=Od,jme=Dd,Ume=Nd,qme=uo,zme=wd,Hme=zl,Qme=Hl,Gme=Rd;class Wme extends qme.Source{constructor(e,n){super({source:e,refinement:n}),this.source=e,this.refinement=n,this.elementType="refinedSource"}structDef(e){return this.withParameters(e,[])}withParameters(e,n){var r;let i,s;const o=[],u=[];let a;for(const m of this.refinement.list){if(m instanceof Hme.ObjectAnnotation)continue;const g=m;m instanceof jme.PrimaryKey?(i&&(i.log("Primary key already defined"),m.log("Primary key redefined")),i=m):m instanceof Mme.FieldListEdit?(s&&(s.log("Too many accept/except statements"),m.log("Too many accept/except statements")),s=m):m instanceof $me.DeclareFields||m instanceof Pme.Joins||m instanceof Ume.Views||m instanceof Qme.Renames?o.push(...m.list):m instanceof kme.Filter?u.push(m):m instanceof zme.TimezoneStatement?a=m.tz:g.log(`Unexpected source property: '${g.elementType}'`)}const l=n?new Gme.ParameterSpace(n):void 0,c=structuredClone(this.source.structDef(l));i&&(c.primaryKey=i.field.name);const f=Bme.RefinedSpace.filteredFrom(c,s,l);if(a&&f.setTimezone(a),n&&f.addParameters(n),f.pushFields(...o),i){const m=i.field.getField(f);m.error&&i.log(m.error)}const x=f.structDef(),h=x.filterList||[];let p=!1;for(const m of u)for(const g of m.list){const y=g.filterCondition(f);(0,Ime.expressionIsCalculation)(y.expressionType)?g.log("Can't use aggregate computations in top level filters"):(h.push(y),p=!0)}return p?{...x,filterList:h}:((r=this.document())===null||r===void 0||r.rememberToAddModelAnnotations(x),x)}}Mp.RefinedSource=Wme;var fu={};Object.defineProperty(fu,"__esModule",{value:!0}),fu.SourceQueryElement=void 0;const Vme=Ge;class SO extends Vme.MalloyElement{constructor(){super(...arguments),this.errored=!1}getSource(){}getQuery(){}isSource(){return!1}sqLog(e){this.isErrorFree()&&this.log(e),this.errored=!0}isErrorFree(){if(this.errored)return!1;let e=!0;for(const n of this.walk())if(n instanceof SO&&n.errored){e=!1;break}return e}}fu.SourceQueryElement=SO;var xv={},Zc={};Object.defineProperty(Zc,"__esModule",{value:!0}),Zc.QuerySource=void 0;const Yme=uo;class Xme extends Yme.Source{constructor(e){super({query:e}),this.query=e,this.elementType="querySource"}structDef(e){return this.withParameters(e,void 0)}withParameters(e,n){var r;const i=this.query.queryComp(!1),s={...i.outputStruct,structSource:{type:"query",query:i.query}};return(r=this.document())===null||r===void 0||r.rememberToAddModelAnnotations(s),{...s,parameters:this.packParameters(n)}}}Zc.QuerySource=Xme;var Fd={},zp={};Object.defineProperty(zp,"__esModule",{value:!0}),zp.QueryBase=void 0;const Kme=Ed,Jme=Ge;class Zme extends Jme.MalloyElement{query(){const e=this.queryComp(!0).query;return{...e,pipeline:(0,Kme.detectAndRemovePartialStages)(e.pipeline,this)}}}zp.QueryBase=Zme,Object.defineProperty(Fd,"__esModule",{value:!0}),Fd.QueryArrow=void 0;const e3e=ce,t3e=uo,Fq=kr,n3e=zp;class r3e extends n3e.QueryBase{constructor(e,n){super({source:e,view:n}),this.source=e,this.view=n,this.elementType="arrow"}queryComp(e){let n,r,i;if(this.source instanceof t3e.Source){const l=e?this.source.structRef(void 0):{structRef:this.source.structDef(void 0)};r={type:"query",...l,pipeline:[],location:this.location},n=(0,e3e.refIsStructDef)(l.structRef)?l.structRef:this.source.structDef(void 0),i=new Fq.StaticSpace(n)}else{const l=this.source.queryComp(e);r=l.query,n=l.outputStruct,i=new Fq.StaticSpace(l.outputStruct)}const{pipeline:s,annotation:o,outputStruct:u,name:a}=this.view.pipelineComp(i);return{query:{...r,name:a,annotation:o,pipeline:[...r.pipeline,...s]},outputStruct:u,inputStruct:n}}}Fd.QueryArrow=r3e,Object.defineProperty(xv,"__esModule",{value:!0}),xv.SQArrow=void 0;const i3e=fu,s3e=Zc,o3e=Fd;class u3e extends i3e.SourceQueryElement{constructor(e,n){super({applyTo:e,operation:n}),this.applyTo=e,this.operation=n,this.elementType="sq-arrow"}getQuery(){const e=this.applyTo.isSource()?this.applyTo.getSource():this.applyTo.getQuery();if(e===void 0){this.sqLog("Could not get LHS of arrow operation");return}const n=new o3e.QueryArrow(e,this.operation);return this.has({query:n}),n}getSource(){const e=this.getQuery();if(!e){this.sqLog("Couldn't comprehend query well enough to make a source");return}const n=new s3e.QuerySource(e);return this.has({asSource:n}),n}}xv.SQArrow=u3e;var dv={},Ld={},es={};Object.defineProperty(es,"__esModule",{value:!0}),es.getStructFieldDef=es.getFinalStruct=es.opOutputStruct=void 0;const a3e=_l,l3e=pc,_O=ce,Lq=$r;function Iq(t,e,n){const r=Lq.ErrorFactory.isErrorStructDef(e)||(0,_O.structHasErrors)(e);(0,_O.isPartialSegment)(n)&&(n={...n,type:"reduce"});const i=(0,_O.segmentHasErrors)(n);if(!r&&!i)try{return l3e.Segment.nextStructDef(e,n)}catch(s){t.log(`INTERNAL ERROR model/Segment.nextStructDef: ${s.message}
|
|
1300
|
-
QUERY: ${(0,a3e.inspect)(n,{breakLength:72,depth:1/0})}`)}return{...Lq.ErrorFactory.structDef,dialect:e.dialect}}es.opOutputStruct=Iq;function c3e(t,e,n){for(const r of n)e=Iq(t,e,r);return e}es.getFinalStruct=c3e;function f3e(t,e){return t.fields.find(n=>(n.as||n.name)===e)}es.getStructFieldDef=f3e,Object.defineProperty(Ld,"__esModule",{value:!0}),Ld.QueryRefine=void 0;const x3e=kr,d3e=es,h3e=zp;class p3e extends h3e.QueryBase{constructor(e,n){super({base:e,refinement:n}),this.base=e,this.refinement=n,this.elementType="query-refine"}queryComp(e){const n=this.base.queryComp(e),r=new x3e.StaticSpace(n.inputStruct),i=this.refinement.refine(r,n.query.pipeline,void 0);return{query:{...n.query,pipeline:i},outputStruct:(0,d3e.getFinalStruct)(this.refinement,n.inputStruct,i),inputStruct:n.inputStruct}}}Ld.QueryRefine=p3e;var Hp={},Id={},Kn={};Object.defineProperty(Kn,"__esModule",{value:!0}),Kn.timeResult=Kn.resolution=Kn.castDateToTimestamp=Kn.castTimestampToDate=Kn.castTo=Kn.timeOffset=void 0;const g3e=ce;function m3e(t,e,n,r,i){return{node:"delta",kids:{base:{...e,dataType:t},delta:r},op:n,units:i}}Kn.timeOffset=m3e;function y3e(t,e,n,r=!1){const i={node:"cast",dstType:t,e,safe:r};return(0,g3e.isAtomicFieldType)(n)&&(i.srcType=n),i}Kn.castTo=y3e;function E3e(t,e=!1){return{node:"cast",dstType:"date",srcType:"timestamp",e:t,safe:e}}Kn.castTimestampToDate=E3e;function A3e(t,e=!1){return{node:"cast",dstType:"timestamp",srcType:"date",e:t,safe:e}}Kn.castDateToTimestamp=A3e;function v3e(t){switch(t){case"hour":case"minute":case"second":case"microsecond":case"millisecond":return"timestamp"}return"date"}Kn.resolution=v3e;function S3e(t,e){return e?{...t,timeframe:e}:t}Kn.timeResult=S3e;var ef={},Jn={};Object.defineProperty(Jn,"__esModule",{value:!0}),Jn.errorFor=void 0;function _3e(t){return{dataType:"error",expressionType:"scalar",value:{node:"error",message:t},evalSpace:"constant"}}Jn.errorFor=_3e;var dt={},sn={};Object.defineProperty(sn,"__esModule",{value:!0}),sn.FT=void 0;const C3e=Ho;function tf(t,e="scalar",n="constant"){return{dataType:t,expressionType:e,evalSpace:n}}class mr{static in(e,n){return e?n.find(i=>mr.eq(i,e))!==void 0:!1}static eq(e,n){return n!==void 0&&e.dataType===n.dataType&&e.expressionType===n.expressionType}static typeIn(e,n){return e?n.find(i=>mr.typeEq(i,e))!==void 0:!1}static typeEq(e,n,r=!1,i=!0){const s=e.dataType===n.dataType,o=r&&(e.dataType==="null"||n.dataType==="null"),u=i&&(e.dataType==="error"||n.dataType==="error");return s||o||u}static inspect(...e){return e.map(r=>{if(r){let i=r.dataType;return(0,C3e.expressionIsScalar)(r.expressionType)||(i=`${r.expressionType} ${i}`),i}return"undefined"}).join(",")}}sn.FT=mr,mr.nullT=tf("null"),mr.numberT=tf("number"),mr.stringT=tf("string"),mr.dateT=tf("date"),mr.timestampT=tf("timestamp"),mr.boolT=tf("boolean"),mr.anyAtomicT=[mr.numberT,mr.stringT,mr.dateT,mr.timestampT,mr.boolT],mr.aggregateBoolT=tf("boolean","aggregate");var Bd={};Object.defineProperty(Bd,"__esModule",{value:!0}),Bd.isGranularResult=void 0;function b3e(t){return t.dataType==="date"||t.dataType==="timestamp"?t.timeframe!==void 0:!1}Bd.isGranularResult=b3e;var xu={};Object.defineProperty(xu,"__esModule",{value:!0}),xu.isComparison=xu.isEquality=xu.getExprNode=void 0;function T3e(t){switch(t){case"~":return"like";case"!~":return"!like"}return t}xu.getExprNode=T3e;function Bq(t){return t==="="||t==="!="||t==="~"||t==="!~"}xu.isEquality=Bq;function R3e(t){return Bq(t)||t===">="||t==="<="||t===">"||t==="<"}xu.isComparison=R3e,Object.defineProperty(dt,"__esModule",{value:!0}),dt.applyBinary=dt.getMorphicValue=dt.ExprDuration=dt.ExpressionDef=void 0;const An=ce,$d=Jn,nf=sn,hv=Kn,$q=Bd,O3e=Ge,Qp=xu;class D3e extends Error{}class kq extends O3e.MalloyElement{constructor(){super(...arguments),this.legalChildTypes=nf.FT.anyAtomicT}granular(){return!1}requestExpression(e){return this.getExpression(e)}defaultFieldName(){}typeCheck(e,n){return n.dataType!=="error"&&!nf.FT.in(n,this.legalChildTypes)?(e.log(n.dataType==="sql native"?`'${this.elementType}' Can't be used with unsupported SQL native type '${n.rawType}'[unsupported-sql-native-type-not-allowed-in-expression]`:`'${this.elementType}' Can't use type ${nf.FT.inspect(n)}`),!1):!0}apply(e,n,r){return Uq(e,r,n,this)}canSupportPartitionBy(){return!1}canSupportOrderBy(){return!1}canSupportLimit(){return!1}supportsWhere(e){return(0,An.expressionIsAggregate)(e.expressionType)}}dt.ExpressionDef=kq;class CO extends kq{constructor(e,n){super({n:e}),this.n=e,this.timeframe=n,this.elementType="duration",this.legalChildTypes=[nf.FT.timestampT,nf.FT.dateT]}apply(e,n,r){const i=r.getExpression(e);if(this.typeCheck(this,i),(0,An.isTimeFieldType)(i.dataType)&&(n==="+"||n==="-")){const s=this.n.getExpression(e);if(!nf.FT.typeEq(s,nf.FT.numberT))return this.log(`Duration units needs number not '${s.dataType}`),(0,$d.errorFor)("illegal unit expression");let o;if((0,$q.isGranularResult)(i)&&i.timeframe===this.timeframe&&(o=i.timeframe),i.dataType==="timestamp"){const u=(0,hv.timeOffset)("timestamp",i.value,n,s.value,this.timeframe);return(0,hv.timeResult)({dataType:"timestamp",expressionType:(0,An.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,An.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:u},o)}return(0,An.isDateUnit)(this.timeframe)?(0,hv.timeResult)({dataType:"date",expressionType:(0,An.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,An.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:(0,hv.timeOffset)("date",i.value,n,s.value,this.timeframe)},o):(this.log(`Cannot offset date by ${this.timeframe}`),(0,$d.errorFor)("ofsset date error"))}return super.apply(e,n,r)}getExpression(e){return{dataType:"duration",expressionType:"scalar",value:{node:"error",message:"Duration is not a value"},evalSpace:"constant"}}}dt.ExprDuration=CO;function Pq(t,e){return t.dataType===e?t.value:t.morphic&&t.morphic[e]}function N3e(t,e){if(t.dataType===e)return t;if(t.morphic&&t.morphic[e])return{...t,dataType:e,value:t.morphic[e]}}dt.getMorphicValue=N3e;function Mq(t,e,n,r){const i=(0,An.isTimeFieldType)(e.dataType),s=(0,An.isTimeFieldType)(r.dataType),o=(0,Qp.getExprNode)(n);if(i&&s)if(e.dataType!==r.dataType){const u=Pq(e,"timestamp"),a=Pq(r,"timestamp");if(u&&a)return{node:o,kids:{left:u,right:u}}}else return{node:o,kids:{left:e.value,right:r.value}};if((i||s)&&e.dataType!=="null"&&r.dataType!=="null")return t.log(`Cannot compare a ${e.dataType} to a ${r.dataType}`),{node:"false"}}function w3e(t,e){if(t.dataType==="string"){if(e.dataType==="regular expression")return{node:"regexpMatch",kids:{expr:t.value,regex:e.value}}}else if(e.dataType==="string"&&t.dataType==="regular expression")return{node:"regexpMatch",kids:{expr:e.value,regex:t.value}}}function F3e(t,e,n){const r=e==="!="||e==="!~",i=r?"is-not-null":"is-null";if(t.dataType==="null"||n.dataType==="null")return t.dataType!=="null"?{node:i,e:t.value}:n.dataType!=="null"?{node:i,e:n.value}:{node:r?"false":"true"}}function L3e(t,e,n,r){var i;const s=e.getExpression(t),o=r.getExpression(t),u=(0,Qp.getExprNode)(n),a=Gp("boolean",s,o);if(a)return a;if(s.dataType==="sql native"||o.dataType==="sql native"){const f=s.dataType==="null"||o.dataType==="null",x=s.rawType&&s.rawType===o.rawType;if(!(f||x)){const h=Wp(e,s,r,o);if(h)return{...h,dataType:"boolean"}}}let c=Mq(e,s,n,o)||{node:u,kids:{left:s.value,right:o.value}};if(s.dataType!=="error"&&o.dataType!=="error")switch(n){case"~":case"!~":{if(s.dataType!=="string"||o.dataType!=="string"){const f=w3e(s,o);if(f===void 0)throw new D3e("Incompatible types for match('~') operator");c=f}break}case"=":case"!=":{c=(i=F3e(s,n,o))!==null&&i!==void 0?i:c;break}}return{dataType:"boolean",expressionType:(0,An.maxExpressionType)(s.expressionType,o.expressionType),evalSpace:(0,An.mergeEvalSpaces)(s.evalSpace,o.evalSpace),value:c}}function I3e(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=Gp("boolean",i,s);if(o)return o;const u=(0,An.maxExpressionType)(i.expressionType,s.expressionType),a=Wp(e,i,r,s);if(a)return{...a,dataType:"boolean"};const l=Mq(e,i,n,s)||{node:(0,Qp.getExprNode)(n),kids:{left:i.value,right:s.value}};return{dataType:"boolean",expressionType:u,evalSpace:(0,An.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:l}}function jq(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=Gp("number",i,s);if(o)return o;const u=Wp(e,i,r,s);if(u)return u;const a=(0,An.maxExpressionType)(i.expressionType,s.expressionType);if(i.dataType!=="number")e.log(`The '${n}' operator requires a number, not a '${i.dataType}'`);else if(s.dataType!=="number")r.log(`The '${n}' operator requires a number, not a '${s.dataType}'`);else return{dataType:"number",expressionType:a,value:{node:n,kids:{left:i.value,right:s.value}},evalSpace:(0,An.mergeEvalSpaces)(i.evalSpace,s.evalSpace)};return(0,$d.errorFor)("numbers required")}function B3e(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=Wp(e,i,r,s);if(o)return o;const u=(0,An.isTimeFieldType)(i.dataType),a=Gp(u?"error":"number",i,s);if(a)return a;if(u){let l=r;if(s.dataType!=="duration")if((0,$q.isGranularResult)(i))l=new CO(r,i.timeframe);else if(i.dataType==="date")l=new CO(r,"day");else return e.log(`Can not offset time by '${s.dataType}'`),(0,$d.errorFor)(`time plus ${s.dataType}`);return l.apply(t,n,e)}return jq(t,e,n,r)}function Uq(t,e,n,r){if((0,Qp.isEquality)(n))return L3e(t,e,n,r);if((0,Qp.isComparison)(n))return I3e(t,e,n,r);if(n==="+"||n==="-")return B3e(t,e,n,r);if(n==="*")return jq(t,e,n,r);if(n==="/"||n==="%"){const i=e.getExpression(t),s=r.getExpression(t),o=Wp(e,i,r,s);if(o)return e.log(`Cannot use '${n}' with sql native type`),o;const u=Gp("number",i,s);if(u)return u;if(i.dataType!=="number")e.log("Numerator must be a number");else if(s.dataType!=="number")r.log("Denominator must be a number");else{const a={node:n,kids:{left:i.value,right:s.value}};return{dataType:"number",expressionType:(0,An.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,An.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:a}}return(0,$d.errorFor)("divide type mismatch")}return e.log(`Cannot use ${n} operator here`),(0,$d.errorFor)("applybinary bad operator")}dt.applyBinary=Uq;function Gp(t,...e){if(e.some(n=>n.dataType==="error"))return{dataType:t,expressionType:(0,An.maxOfExpressionTypes)(e.map(n=>n.expressionType)),value:{node:"error",message:"cascading error"},evalSpace:(0,An.mergeEvalSpaces)(...e.map(n=>n.evalSpace))}}function Wp(t,e,n,r){const i={dataType:e.dataType,expressionType:(0,An.maxExpressionType)(e.expressionType,r.expressionType),value:{node:"error",message:"sql-native unsupported"},evalSpace:(0,An.mergeEvalSpaces)(e.evalSpace,r.evalSpace)};if(e.dataType==="sql native")return t.log(`Unsupported SQL native type '${e.rawType}' not allowed in expression[unsupported-sql-native-type-not-allowed-in-expression]`),i.dataType=r.dataType,i;if(r.dataType==="sql native")return n.log(`Unsupported SQL native type '${r.rawType}' not allowed in expression[unsupported-sql-native-type-not-allowed-in-expression]`),i}Object.defineProperty(ef,"__esModule",{value:!0}),ef.ExprIdReference=void 0;const $3e=ce,k3e=Jn,P3e=dt;class M3e extends P3e.ExpressionDef{constructor(e){super(),this.fieldReference=e,this.elementType="ExpressionIdReference",this.has({fieldPath:e})}get refString(){return this.fieldReference.refString}getExpression(e){const n=this.fieldReference.getField(e);if(n.found){const r=n.found.typeDesc();if(n.isOutputField)return{...r,evalSpace:r.evalSpace==="constant"?"constant":"output",value:{node:"outputField",name:this.refString}};const i={node:n.found.refType,path:this.fieldReference.path},s=(0,$3e.expressionIsAggregate)(r.expressionType)?"output":r.evalSpace;return{...r,value:i,evalSpace:s}}return this.log(n.error),(0,k3e.errorFor)(n.error)}}ef.ExprIdReference=M3e,Object.defineProperty(Id,"__esModule",{value:!0}),Id.NamedSource=void 0;const bO=ce,j3e=uo,U3e=$r,q3e=Kn,TO=Ge,z3e=ef,H3e=Rd;class Q3e extends j3e.Source{constructor(e,n,r){super(),this.ref=e,this.sourceArguments=n,this.args=r,this.elementType="namedSource",r&&this.has({args:r}),e instanceof TO.ModelEntryReference&&this.has({ref:e})}get refName(){return this.ref instanceof TO.ModelEntryReference?this.ref.name:this.ref}structRef(e){const n=this.modelEntry(this.ref);return n&&!n.exported?{structRef:this.structDef(e)}:{structRef:this.refName,sourceArguments:this.evaluateArgumentsForRef(e)}}refLog(e,n){typeof this.ref=="string"?this.log(e,n):this.ref.log(e,n)}modelStruct(){var e;const n=this.modelEntry(this.ref),r=n==null?void 0:n.entry;if(!r){const i=`Undefined source '${this.refName}'`;(this.ref instanceof TO.ModelEntryReference?this.ref:this).log(i);return}if(r.type==="query"){this.log(`Cannot construct a source from a query '${this.refName}'`);return}else if(r.type==="function"){this.log(`Cannot construct a source from a function '${this.refName}'`);return}else if(r.type==="connection"){this.log(`Cannot construct a source from a connection '${this.refName}'`);return}else if((0,bO.isSQLBlockStruct)(r)&&r.declaredSQLBlock){this.log(`Must use 'from_sql()' for sql source '${this.refName}'`);return}else(e=this.document())===null||e===void 0||e.checkExperimentalDialect(this,r.dialect);return{...r}}evaluateArgumentsForRef(e){const n=this.modelStruct();return n===void 0?{}:this.evaluateArguments(e,n.parameters,[])}evaluateArguments(e,n,r){var i,s;const o={...this.sourceArguments},u=new Set;for(const a of(i=this.args)!==null&&i!==void 0?i:[]){const l=(s=a.id)!==null&&s!==void 0?s:a.value instanceof z3e.ExprIdReference?a.value.fieldReference:void 0;if(l===void 0){a.value.log("Parameterized source arguments must be named with `parameter_name is`");continue}const c=l.outputName;if(u.has(c)){a.log(`Cannot pass argument for \`${c}\` more than once`);continue}u.add(c);const f=(n??{})[c];if(!f)l.log(`\`${this.refName}\` has no declared parameter named \`${l.refString}\``);else{const x=e??new H3e.ParameterSpace(r??[]),h=a.value.getExpression(x);let p=h.value;h.dataType!==f.type&&(0,bO.isCastType)(f.type)&&(p=(0,q3e.castTo)(f.type,h.value,h.dataType,!0)),o[c]={...f,value:p}}}for(const a in n)a in o||((0,bO.paramHasValue)(n[a])?o[a]={...n[a]}:this.refLog(`Argument not provided for required parameter \`${a}\``));return o}structDef(e){return this.withParameters(e,[])}withParameters(e,n){var r;const i=this.modelStruct();if(!i){const a=U3e.ErrorFactory.structDef,l=`${this.refName}-undefined`;return a.name=a.name+l,a.dialect=a.dialect+l,a}const s={};for(const a of n??[]){const l=a.parameter();s[l.name]=l}const o=this.evaluateArguments(e,i.parameters,n),u={...i,parameters:s,arguments:o};return(r=this.document())===null||r===void 0||r.rememberToAddModelAnnotations(u),u}}Id.NamedSource=Q3e;var Vp={},pv={};Object.defineProperty(pv,"__esModule",{value:!0}),pv.QueryHeadStruct=void 0;const G3e=ce,W3e=uo,V3e=Id;class Y3e extends W3e.Source{constructor(e,n){super(),this.fromRef=e,this.sourceArguments=n,this.elementType="internalOnlyQueryHead"}structRef(){return{structRef:this.fromRef}}structDef(e){if((0,G3e.refIsStructDef)(this.fromRef))return this.fromRef;const n=new V3e.NamedSource(this.fromRef,this.sourceArguments,void 0);return this.has({exploreReference:n}),n.structDef(e)}}pv.QueryHeadStruct=Y3e,Object.defineProperty(Vp,"__esModule",{value:!0}),Vp.QueryReference=void 0;const RO=$r,X3e=Ge,K3e=pv,J3e=ce,Z3e=es;class eye extends X3e.MalloyElement{constructor(e){super(),this.name=e,this.elementType="query-reference"}queryComp(e){const n=this.modelEntry(this.name),r=n==null?void 0:n.entry,i=function(){return{inputStruct:RO.ErrorFactory.structDef,outputStruct:RO.ErrorFactory.structDef,query:RO.ErrorFactory.query}};if(!r)return this.log(`Reference to undefined query '${this.name.refString}'`),i();if(r.type==="query"){const s=new K3e.QueryHeadStruct(r.structRef,r.sourceArguments);this.has({queryHead:s});const o=s.structDef(void 0),u=(0,Z3e.getFinalStruct)(this,o,r.pipeline);return{query:e||(0,J3e.refIsStructDef)(r.structRef)?r:{...r,structRef:o},outputStruct:u,inputStruct:o}}return this.log(`Illegal reference to '${this.name}', query expected`),i()}query(){return this.queryComp(!0).query}}Vp.QueryReference=eye,Object.defineProperty(Hp,"__esModule",{value:!0}),Hp.SQReference=void 0;const tye=fu,nye=Zc,rye=Id,qq=Vp;class iye extends tye.SourceQueryElement{constructor(e,n){super({ref:e}),this.ref=e,this.args=n,this.elementType="sq-reference",n!==void 0&&this.has({args:n})}getQuery(){const e=this.ref.getNamed();if(e)if(e.type==="query"){const n=new qq.QueryReference(this.ref);return this.has({query:n}),n}else this.sqLog(`Illegal reference to '${e.as||e.name}', query expected`);else this.ref.log(`Reference to undefined object '${this.ref.refString}'`),this.errored=!0}isSource(){var e;return((e=this.ref.getNamed())===null||e===void 0?void 0:e.type)==="struct"}getSource(){if(this.asSource)return this.asSource;const e=this.ref.getNamed();if(!e){this.ref.log(`Reference to undefined object '${this.ref.refString}'`),this.errored=!0;return}if(e.type==="query"){this.args!==void 0&&this.ref.log("Arguments cannot be passed to queries");const n=new qq.QueryReference(this.ref);this.asSource=new nye.QuerySource(n)}else if(e.type==="struct")this.asSource=new rye.NamedSource(this.ref,void 0,this.args);else{this.sqLog(`Expected '${this.ref.refString}' to be of type query or source, not '${e.type}'`);return}return this.has({asSource:this.asSource}),this.asSource}}Hp.SQReference=iye,Object.defineProperty(dv,"__esModule",{value:!0}),dv.SQRefine=void 0;const sye=fu,oye=Zc,uye=Ld,aye=Hp;class lye extends sye.SourceQueryElement{constructor(e,n){super({toRefine:e,refine:n}),this.toRefine=e,this.refine=n,this.elementType="sq-refine"}getQuery(){if(this.toRefine.isSource()){this.toRefine instanceof aye.SQReference?this.sqLog(`Cannot add view refinements to '${this.toRefine.ref.refString}' because it is a source`):this.sqLog("Cannot add view refinements to a source");return}const e=this.toRefine.getQuery();if(e){const n=new uye.QueryRefine(e,this.refine);return this.has({query:n}),n}}getSource(){const e=this.getQuery();if(e){const n=new oye.QuerySource(e);return this.has({queryAsSource:n}),n}}}dv.SQRefine=lye;var gv={},Yp={};Object.defineProperty(Yp,"__esModule",{value:!0}),Yp.QueryRaw=void 0;const cye=ce,fye=Ge;class xye extends fye.MalloyElement{constructor(e){super({source:e}),this.source=e,this.elementType="query-raw"}queryComp(e){const n=e?this.source.structRef(void 0):{structRef:this.source.structDef(void 0)},r=(0,cye.refIsStructDef)(n.structRef)?n.structRef:this.source.structDef(void 0);return{query:{type:"query",...n,pipeline:[{type:"raw",fields:[]}],location:this.location},outputStruct:r,inputStruct:r}}query(){return this.queryComp(!0).query}}Yp.QueryRaw=xye;var Xp={},mv={};Object.defineProperty(mv,"__esModule",{value:!0}),mv.makeSQLBlock=void 0;const dye=ce,hye=Lt;function pye(t,e){const n={name:`md5:/${e||"$default"}//${gye(t)}`,select:t};return e&&(n.connection=e),n}mv.makeSQLBlock=pye;function gye(t){const e=t.map(n=>(0,dye.isSQLFragment)(n)?n.sql:JSON.stringify(n));return(0,hye.generateHash)(e.join(";"))}Object.defineProperty(Xp,"__esModule",{value:!0}),Xp.SQLSource=void 0;const mye=mv,yye=uo,yv=$r;class Eye extends yye.Source{constructor(e,n){super({connectionName:e,select:n}),this.connectionName=e,this.select=n,this.elementType="sqlSource",this.connectionNameInvalid=!1}sqlBlock(){return this.requestBlock||(this.requestBlock=(0,mye.makeSQLBlock)(this.select.sqlPhrases(),this.connectionName.refString)),this.requestBlock}structRef(){return{structRef:this.structDef()}}validateConnectionName(){var e;const n=this.modelEntry(this.connectionName),r=this.connectionName.refString;if(this.connectionNameInvalid)return!1;if(n===void 0)(e=this.namespace())===null||e===void 0||e.setEntry(r,{entry:{type:"connection",name:r},exported:!0},!0);else if(n.entry.type!=="connection")return this.connectionName.log(`${this.connectionName.refString} is not a connection`),this.connectionNameInvalid=!0,!1;return!0}needs(e){var n;if(!this.validateConnectionName())return;const r=super.needs(e);if(r)return r;const i=this.sqlBlock(),s=(n=this.translator())===null||n===void 0?void 0:n.root.sqlQueryZone;if(!s){this.log("Cant't look up schema for sql block");return}s.reference(i.name,this.location);const o=s.getEntry(i.name);if(o.status==="reference")return{compileSQL:i,partialModel:this.select.containsQueries?e.modelDef():void 0};o.status==="present"&&e.checkExperimentalDialect(this,o.value.dialect)}structDef(){var e;if(!this.validateConnectionName())return yv.ErrorFactory.structDef;const n=(e=this.translator())===null||e===void 0?void 0:e.root.sqlQueryZone;if(!n)return this.log("Cant't look up schema for sql block"),yv.ErrorFactory.structDef;const r=this.sqlBlock();n.reference(r.name,this.location);const i=n.getEntry(r.name);if(i.status==="error"){const s=i.message.split(/\r?\n/);return this.select.log("Invalid SQL, "+s.join(`
|
|
1300
|
+
QUERY: ${(0,a3e.inspect)(n,{breakLength:72,depth:1/0})}`)}return{...Lq.ErrorFactory.structDef,dialect:e.dialect}}es.opOutputStruct=Iq;function c3e(t,e,n){for(const r of n)e=Iq(t,e,r);return e}es.getFinalStruct=c3e;function f3e(t,e){return t.fields.find(n=>(n.as||n.name)===e)}es.getStructFieldDef=f3e,Object.defineProperty(Ld,"__esModule",{value:!0}),Ld.QueryRefine=void 0;const x3e=kr,d3e=es,h3e=zp;class p3e extends h3e.QueryBase{constructor(e,n){super({base:e,refinement:n}),this.base=e,this.refinement=n,this.elementType="query-refine"}queryComp(e){const n=this.base.queryComp(e),r=new x3e.StaticSpace(n.inputStruct),i=this.refinement.refine(r,n.query.pipeline,void 0);return{query:{...n.query,pipeline:i},outputStruct:(0,d3e.getFinalStruct)(this.refinement,n.inputStruct,i),inputStruct:n.inputStruct}}}Ld.QueryRefine=p3e;var Hp={},Id={},Kn={};Object.defineProperty(Kn,"__esModule",{value:!0}),Kn.timeResult=Kn.resolution=Kn.castDateToTimestamp=Kn.castTimestampToDate=Kn.castTo=Kn.timeOffset=void 0;const g3e=ce;function m3e(t,e,n,r,i){return{node:"delta",kids:{base:{...e,dataType:t},delta:r},op:n,units:i}}Kn.timeOffset=m3e;function y3e(t,e,n,r=!1){const i={node:"cast",dstType:t,e,safe:r};return(0,g3e.isAtomicFieldType)(n)&&(i.srcType=n),i}Kn.castTo=y3e;function E3e(t,e=!1){return{node:"cast",dstType:"date",srcType:"timestamp",e:t,safe:e}}Kn.castTimestampToDate=E3e;function A3e(t,e=!1){return{node:"cast",dstType:"timestamp",srcType:"date",e:t,safe:e}}Kn.castDateToTimestamp=A3e;function v3e(t){switch(t){case"hour":case"minute":case"second":case"microsecond":case"millisecond":return"timestamp"}return"date"}Kn.resolution=v3e;function S3e(t,e){return e?{...t,timeframe:e}:t}Kn.timeResult=S3e;var ef={},Jn={};Object.defineProperty(Jn,"__esModule",{value:!0}),Jn.errorFor=void 0;function _3e(t){return{dataType:"error",expressionType:"scalar",value:{node:"error",message:t},evalSpace:"constant"}}Jn.errorFor=_3e;var dt={},sn={};Object.defineProperty(sn,"__esModule",{value:!0}),sn.FT=void 0;const C3e=Ho;function tf(t,e="scalar",n="constant"){return{dataType:t,expressionType:e,evalSpace:n}}class mr{static in(e,n){return e?n.find(i=>mr.eq(i,e))!==void 0:!1}static eq(e,n){return n!==void 0&&e.dataType===n.dataType&&e.expressionType===n.expressionType}static typeIn(e,n){return e?n.find(i=>mr.typeEq(i,e))!==void 0:!1}static typeEq(e,n,r=!1,i=!0){const s=e.dataType===n.dataType,o=r&&(e.dataType==="null"||n.dataType==="null"),u=i&&(e.dataType==="error"||n.dataType==="error");return s||o||u}static inspect(...e){return e.map(r=>{if(r){let i=r.dataType;return(0,C3e.expressionIsScalar)(r.expressionType)||(i=`${r.expressionType} ${i}`),i}return"undefined"}).join(",")}}sn.FT=mr,mr.nullT=tf("null"),mr.numberT=tf("number"),mr.stringT=tf("string"),mr.dateT=tf("date"),mr.timestampT=tf("timestamp"),mr.boolT=tf("boolean"),mr.anyAtomicT=[mr.numberT,mr.stringT,mr.dateT,mr.timestampT,mr.boolT],mr.aggregateBoolT=tf("boolean","aggregate");var Bd={};Object.defineProperty(Bd,"__esModule",{value:!0}),Bd.isGranularResult=void 0;function b3e(t){return t.dataType==="date"||t.dataType==="timestamp"?t.timeframe!==void 0:!1}Bd.isGranularResult=b3e;var xu={};Object.defineProperty(xu,"__esModule",{value:!0}),xu.isComparison=xu.isEquality=xu.getExprNode=void 0;function T3e(t){switch(t){case"~":return"like";case"!~":return"!like"}return t}xu.getExprNode=T3e;function Bq(t){return t==="="||t==="!="||t==="~"||t==="!~"}xu.isEquality=Bq;function R3e(t){return Bq(t)||t===">="||t==="<="||t===">"||t==="<"}xu.isComparison=R3e,Object.defineProperty(dt,"__esModule",{value:!0}),dt.applyBinary=dt.getMorphicValue=dt.ExprDuration=dt.ExpressionDef=void 0;const An=ce,$d=Jn,nf=sn,hv=Kn,$q=Bd,O3e=Ge,Qp=xu;class D3e extends Error{}class kq extends O3e.MalloyElement{constructor(){super(...arguments),this.legalChildTypes=nf.FT.anyAtomicT}granular(){return!1}requestExpression(e){return this.getExpression(e)}defaultFieldName(){}typeCheck(e,n){return n.dataType!=="error"&&!nf.FT.in(n,this.legalChildTypes)?(e.log(n.dataType==="sql native"?`'${this.elementType}' Can't be used with unsupported SQL native type '${n.rawType}'[unsupported-sql-native-type-not-allowed-in-expression]`:`'${this.elementType}' Can't use type ${nf.FT.inspect(n)}`),!1):!0}apply(e,n,r){return Uq(e,r,n,this)}canSupportPartitionBy(){return!1}canSupportOrderBy(){return!1}canSupportLimit(){return!1}supportsWhere(e){return(0,An.expressionIsAggregate)(e.expressionType)}}dt.ExpressionDef=kq;class CO extends kq{constructor(e,n){super({n:e}),this.n=e,this.timeframe=n,this.elementType="duration",this.legalChildTypes=[nf.FT.timestampT,nf.FT.dateT]}apply(e,n,r){const i=r.getExpression(e);if(this.typeCheck(this,i),(0,An.isTimeFieldType)(i.dataType)&&(n==="+"||n==="-")){const s=this.n.getExpression(e);if(!nf.FT.typeEq(s,nf.FT.numberT))return this.log(`Duration units needs number not '${s.dataType}`),(0,$d.errorFor)("illegal unit expression");let o;if((0,$q.isGranularResult)(i)&&i.timeframe===this.timeframe&&(o=i.timeframe),i.dataType==="timestamp"){const u=(0,hv.timeOffset)("timestamp",i.value,n,s.value,this.timeframe);return(0,hv.timeResult)({dataType:"timestamp",expressionType:(0,An.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,An.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:u},o)}return(0,An.isDateUnit)(this.timeframe)?(0,hv.timeResult)({dataType:"date",expressionType:(0,An.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,An.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:(0,hv.timeOffset)("date",i.value,n,s.value,this.timeframe)},o):(this.log(`Cannot offset date by ${this.timeframe}`),(0,$d.errorFor)("ofsset date error"))}return super.apply(e,n,r)}getExpression(e){return{dataType:"duration",expressionType:"scalar",value:{node:"error",message:"Duration is not a value"},evalSpace:"constant"}}}dt.ExprDuration=CO;function Pq(t,e){return t.dataType===e?t.value:t.morphic&&t.morphic[e]}function N3e(t,e){if(t.dataType===e)return t;if(t.morphic&&t.morphic[e])return{...t,dataType:e,value:t.morphic[e]}}dt.getMorphicValue=N3e;function Mq(t,e,n,r){const i=(0,An.isTimeFieldType)(e.dataType),s=(0,An.isTimeFieldType)(r.dataType),o=(0,Qp.getExprNode)(n);if(i&&s)if(e.dataType!==r.dataType){const u=Pq(e,"timestamp"),a=Pq(r,"timestamp");if(u&&a)return{node:o,kids:{left:u,right:u}}}else return{node:o,kids:{left:e.value,right:r.value}};if((i||s)&&e.dataType!=="null"&&r.dataType!=="null")return t.log(`Cannot compare a ${e.dataType} to a ${r.dataType}`),{node:"false"}}function w3e(t,e){if(t.dataType==="string"){if(e.dataType==="regular expression")return{node:"regexpMatch",kids:{expr:t.value,regex:e.value}}}else if(e.dataType==="string"&&t.dataType==="regular expression")return{node:"regexpMatch",kids:{expr:e.value,regex:t.value}}}function F3e(t,e,n){const r=e==="!="||e==="!~",i=r?"is-not-null":"is-null";if(t.dataType==="null"||n.dataType==="null")return t.dataType!=="null"?{node:i,e:t.value}:n.dataType!=="null"?{node:i,e:n.value}:{node:r?"false":"true"}}function L3e(t,e,n,r){var i;const s=e.getExpression(t),o=r.getExpression(t),u=(0,Qp.getExprNode)(n),a=Gp("boolean",s,o);if(a)return a;if(s.dataType==="sql native"||o.dataType==="sql native"){const f=s.dataType==="null"||o.dataType==="null",x=s.rawType&&s.rawType===o.rawType;if(!(f||x)){const h=Wp(e,s,r,o);if(h)return{...h,dataType:"boolean"}}}let c=Mq(e,s,n,o)||{node:u,kids:{left:s.value,right:o.value}};if(s.dataType!=="error"&&o.dataType!=="error")switch(n){case"~":case"!~":{if(s.dataType!=="string"||o.dataType!=="string"){let f=w3e(s,o);if(f)n[0]==="!"&&(f={node:"not",e:{...f}});else throw new D3e("Incompatible types for match('~') operator");c=f}break}case"=":case"!=":{c=(i=F3e(s,n,o))!==null&&i!==void 0?i:c;break}}return{dataType:"boolean",expressionType:(0,An.maxExpressionType)(s.expressionType,o.expressionType),evalSpace:(0,An.mergeEvalSpaces)(s.evalSpace,o.evalSpace),value:c}}function I3e(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=Gp("boolean",i,s);if(o)return o;const u=(0,An.maxExpressionType)(i.expressionType,s.expressionType),a=Wp(e,i,r,s);if(a)return{...a,dataType:"boolean"};const l=Mq(e,i,n,s)||{node:(0,Qp.getExprNode)(n),kids:{left:i.value,right:s.value}};return{dataType:"boolean",expressionType:u,evalSpace:(0,An.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:l}}function jq(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=Gp("number",i,s);if(o)return o;const u=Wp(e,i,r,s);if(u)return u;const a=(0,An.maxExpressionType)(i.expressionType,s.expressionType);if(i.dataType!=="number")e.log(`The '${n}' operator requires a number, not a '${i.dataType}'`);else if(s.dataType!=="number")r.log(`The '${n}' operator requires a number, not a '${s.dataType}'`);else return{dataType:"number",expressionType:a,value:{node:n,kids:{left:i.value,right:s.value}},evalSpace:(0,An.mergeEvalSpaces)(i.evalSpace,s.evalSpace)};return(0,$d.errorFor)("numbers required")}function B3e(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=Wp(e,i,r,s);if(o)return o;const u=(0,An.isTimeFieldType)(i.dataType),a=Gp(u?"error":"number",i,s);if(a)return a;if(u){let l=r;if(s.dataType!=="duration")if((0,$q.isGranularResult)(i))l=new CO(r,i.timeframe);else if(i.dataType==="date")l=new CO(r,"day");else return e.log(`Can not offset time by '${s.dataType}'`),(0,$d.errorFor)(`time plus ${s.dataType}`);return l.apply(t,n,e)}return jq(t,e,n,r)}function Uq(t,e,n,r){if((0,Qp.isEquality)(n))return L3e(t,e,n,r);if((0,Qp.isComparison)(n))return I3e(t,e,n,r);if(n==="+"||n==="-")return B3e(t,e,n,r);if(n==="*")return jq(t,e,n,r);if(n==="/"||n==="%"){const i=e.getExpression(t),s=r.getExpression(t),o=Wp(e,i,r,s);if(o)return e.log(`Cannot use '${n}' with sql native type`),o;const u=Gp("number",i,s);if(u)return u;if(i.dataType!=="number")e.log("Numerator must be a number");else if(s.dataType!=="number")r.log("Denominator must be a number");else{const a={node:n,kids:{left:i.value,right:s.value}};return{dataType:"number",expressionType:(0,An.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,An.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:a}}return(0,$d.errorFor)("divide type mismatch")}return e.log(`Cannot use ${n} operator here`),(0,$d.errorFor)("applybinary bad operator")}dt.applyBinary=Uq;function Gp(t,...e){if(e.some(n=>n.dataType==="error"))return{dataType:t,expressionType:(0,An.maxOfExpressionTypes)(e.map(n=>n.expressionType)),value:{node:"error",message:"cascading error"},evalSpace:(0,An.mergeEvalSpaces)(...e.map(n=>n.evalSpace))}}function Wp(t,e,n,r){const i={dataType:e.dataType,expressionType:(0,An.maxExpressionType)(e.expressionType,r.expressionType),value:{node:"error",message:"sql-native unsupported"},evalSpace:(0,An.mergeEvalSpaces)(e.evalSpace,r.evalSpace)};if(e.dataType==="sql native")return t.log(`Unsupported SQL native type '${e.rawType}' not allowed in expression[unsupported-sql-native-type-not-allowed-in-expression]`),i.dataType=r.dataType,i;if(r.dataType==="sql native")return n.log(`Unsupported SQL native type '${r.rawType}' not allowed in expression[unsupported-sql-native-type-not-allowed-in-expression]`),i}Object.defineProperty(ef,"__esModule",{value:!0}),ef.ExprIdReference=void 0;const $3e=ce,k3e=Jn,P3e=dt;class M3e extends P3e.ExpressionDef{constructor(e){super(),this.fieldReference=e,this.elementType="ExpressionIdReference",this.has({fieldPath:e})}get refString(){return this.fieldReference.refString}getExpression(e){const n=this.fieldReference.getField(e);if(n.found){const r=n.found.typeDesc();if(n.isOutputField)return{...r,evalSpace:r.evalSpace==="constant"?"constant":"output",value:{node:"outputField",name:this.refString}};const i={node:n.found.refType,path:this.fieldReference.path},s=(0,$3e.expressionIsAggregate)(r.expressionType)?"output":r.evalSpace;return{...r,value:i,evalSpace:s}}return this.log(n.error),(0,k3e.errorFor)(n.error)}}ef.ExprIdReference=M3e,Object.defineProperty(Id,"__esModule",{value:!0}),Id.NamedSource=void 0;const bO=ce,j3e=uo,U3e=$r,q3e=Kn,TO=Ge,z3e=ef,H3e=Rd;class Q3e extends j3e.Source{constructor(e,n,r){super(),this.ref=e,this.sourceArguments=n,this.args=r,this.elementType="namedSource",r&&this.has({args:r}),e instanceof TO.ModelEntryReference&&this.has({ref:e})}get refName(){return this.ref instanceof TO.ModelEntryReference?this.ref.name:this.ref}structRef(e){const n=this.modelEntry(this.ref);return n&&!n.exported?{structRef:this.structDef(e)}:{structRef:this.refName,sourceArguments:this.evaluateArgumentsForRef(e)}}refLog(e,n){typeof this.ref=="string"?this.log(e,n):this.ref.log(e,n)}modelStruct(){var e;const n=this.modelEntry(this.ref),r=n==null?void 0:n.entry;if(!r){const i=`Undefined source '${this.refName}'`;(this.ref instanceof TO.ModelEntryReference?this.ref:this).log(i);return}if(r.type==="query"){this.log(`Cannot construct a source from a query '${this.refName}'`);return}else if(r.type==="function"){this.log(`Cannot construct a source from a function '${this.refName}'`);return}else if(r.type==="connection"){this.log(`Cannot construct a source from a connection '${this.refName}'`);return}else if((0,bO.isSQLBlockStruct)(r)&&r.declaredSQLBlock){this.log(`Must use 'from_sql()' for sql source '${this.refName}'`);return}else(e=this.document())===null||e===void 0||e.checkExperimentalDialect(this,r.dialect);return{...r}}evaluateArgumentsForRef(e){const n=this.modelStruct();return n===void 0?{}:this.evaluateArguments(e,n.parameters,[])}evaluateArguments(e,n,r){var i,s;const o={...this.sourceArguments},u=new Set;for(const a of(i=this.args)!==null&&i!==void 0?i:[]){const l=(s=a.id)!==null&&s!==void 0?s:a.value instanceof z3e.ExprIdReference?a.value.fieldReference:void 0;if(l===void 0){a.value.log("Parameterized source arguments must be named with `parameter_name is`");continue}const c=l.outputName;if(u.has(c)){a.log(`Cannot pass argument for \`${c}\` more than once`);continue}u.add(c);const f=(n??{})[c];if(!f)l.log(`\`${this.refName}\` has no declared parameter named \`${l.refString}\``);else{const x=e??new H3e.ParameterSpace(r??[]),h=a.value.getExpression(x);let p=h.value;h.dataType!==f.type&&(0,bO.isCastType)(f.type)&&(p=(0,q3e.castTo)(f.type,h.value,h.dataType,!0)),o[c]={...f,value:p}}}for(const a in n)a in o||((0,bO.paramHasValue)(n[a])?o[a]={...n[a]}:this.refLog(`Argument not provided for required parameter \`${a}\``));return o}structDef(e){return this.withParameters(e,[])}withParameters(e,n){var r;const i=this.modelStruct();if(!i){const a=U3e.ErrorFactory.structDef,l=`${this.refName}-undefined`;return a.name=a.name+l,a.dialect=a.dialect+l,a}const s={};for(const a of n??[]){const l=a.parameter();s[l.name]=l}const o=this.evaluateArguments(e,i.parameters,n),u={...i,parameters:s,arguments:o};return(r=this.document())===null||r===void 0||r.rememberToAddModelAnnotations(u),u}}Id.NamedSource=Q3e;var Vp={},pv={};Object.defineProperty(pv,"__esModule",{value:!0}),pv.QueryHeadStruct=void 0;const G3e=ce,W3e=uo,V3e=Id;class Y3e extends W3e.Source{constructor(e,n){super(),this.fromRef=e,this.sourceArguments=n,this.elementType="internalOnlyQueryHead"}structRef(){return{structRef:this.fromRef}}structDef(e){if((0,G3e.refIsStructDef)(this.fromRef))return this.fromRef;const n=new V3e.NamedSource(this.fromRef,this.sourceArguments,void 0);return this.has({exploreReference:n}),n.structDef(e)}}pv.QueryHeadStruct=Y3e,Object.defineProperty(Vp,"__esModule",{value:!0}),Vp.QueryReference=void 0;const RO=$r,X3e=Ge,K3e=pv,J3e=ce,Z3e=es;class eye extends X3e.MalloyElement{constructor(e){super(),this.name=e,this.elementType="query-reference"}queryComp(e){const n=this.modelEntry(this.name),r=n==null?void 0:n.entry,i=function(){return{inputStruct:RO.ErrorFactory.structDef,outputStruct:RO.ErrorFactory.structDef,query:RO.ErrorFactory.query}};if(!r)return this.log(`Reference to undefined query '${this.name.refString}'`),i();if(r.type==="query"){const s=new K3e.QueryHeadStruct(r.structRef,r.sourceArguments);this.has({queryHead:s});const o=s.structDef(void 0),u=(0,Z3e.getFinalStruct)(this,o,r.pipeline);return{query:e||(0,J3e.refIsStructDef)(r.structRef)?r:{...r,structRef:o},outputStruct:u,inputStruct:o}}return this.log(`Illegal reference to '${this.name}', query expected`),i()}query(){return this.queryComp(!0).query}}Vp.QueryReference=eye,Object.defineProperty(Hp,"__esModule",{value:!0}),Hp.SQReference=void 0;const tye=fu,nye=Zc,rye=Id,qq=Vp;class iye extends tye.SourceQueryElement{constructor(e,n){super({ref:e}),this.ref=e,this.args=n,this.elementType="sq-reference",n!==void 0&&this.has({args:n})}getQuery(){const e=this.ref.getNamed();if(e)if(e.type==="query"){const n=new qq.QueryReference(this.ref);return this.has({query:n}),n}else this.sqLog(`Illegal reference to '${e.as||e.name}', query expected`);else this.ref.log(`Reference to undefined object '${this.ref.refString}'`),this.errored=!0}isSource(){var e;return((e=this.ref.getNamed())===null||e===void 0?void 0:e.type)==="struct"}getSource(){if(this.asSource)return this.asSource;const e=this.ref.getNamed();if(!e){this.ref.log(`Reference to undefined object '${this.ref.refString}'`),this.errored=!0;return}if(e.type==="query"){this.args!==void 0&&this.ref.log("Arguments cannot be passed to queries");const n=new qq.QueryReference(this.ref);this.asSource=new nye.QuerySource(n)}else if(e.type==="struct")this.asSource=new rye.NamedSource(this.ref,void 0,this.args);else{this.sqLog(`Expected '${this.ref.refString}' to be of type query or source, not '${e.type}'`);return}return this.has({asSource:this.asSource}),this.asSource}}Hp.SQReference=iye,Object.defineProperty(dv,"__esModule",{value:!0}),dv.SQRefine=void 0;const sye=fu,oye=Zc,uye=Ld,aye=Hp;class lye extends sye.SourceQueryElement{constructor(e,n){super({toRefine:e,refine:n}),this.toRefine=e,this.refine=n,this.elementType="sq-refine"}getQuery(){if(this.toRefine.isSource()){this.toRefine instanceof aye.SQReference?this.sqLog(`Cannot add view refinements to '${this.toRefine.ref.refString}' because it is a source`):this.sqLog("Cannot add view refinements to a source");return}const e=this.toRefine.getQuery();if(e){const n=new uye.QueryRefine(e,this.refine);return this.has({query:n}),n}}getSource(){const e=this.getQuery();if(e){const n=new oye.QuerySource(e);return this.has({queryAsSource:n}),n}}}dv.SQRefine=lye;var gv={},Yp={};Object.defineProperty(Yp,"__esModule",{value:!0}),Yp.QueryRaw=void 0;const cye=ce,fye=Ge;class xye extends fye.MalloyElement{constructor(e){super({source:e}),this.source=e,this.elementType="query-raw"}queryComp(e){const n=e?this.source.structRef(void 0):{structRef:this.source.structDef(void 0)},r=(0,cye.refIsStructDef)(n.structRef)?n.structRef:this.source.structDef(void 0);return{query:{type:"query",...n,pipeline:[{type:"raw",fields:[]}],location:this.location},outputStruct:r,inputStruct:r}}query(){return this.queryComp(!0).query}}Yp.QueryRaw=xye;var Xp={},mv={};Object.defineProperty(mv,"__esModule",{value:!0}),mv.makeSQLBlock=void 0;const dye=ce,hye=Lt;function pye(t,e){const n={name:`md5:/${e||"$default"}//${gye(t)}`,select:t};return e&&(n.connection=e),n}mv.makeSQLBlock=pye;function gye(t){const e=t.map(n=>(0,dye.isSQLFragment)(n)?n.sql:JSON.stringify(n));return(0,hye.generateHash)(e.join(";"))}Object.defineProperty(Xp,"__esModule",{value:!0}),Xp.SQLSource=void 0;const mye=mv,yye=uo,yv=$r;class Eye extends yye.Source{constructor(e,n){super({connectionName:e,select:n}),this.connectionName=e,this.select=n,this.elementType="sqlSource",this.connectionNameInvalid=!1}sqlBlock(){return this.requestBlock||(this.requestBlock=(0,mye.makeSQLBlock)(this.select.sqlPhrases(),this.connectionName.refString)),this.requestBlock}structRef(){return{structRef:this.structDef()}}validateConnectionName(){var e;const n=this.modelEntry(this.connectionName),r=this.connectionName.refString;if(this.connectionNameInvalid)return!1;if(n===void 0)(e=this.namespace())===null||e===void 0||e.setEntry(r,{entry:{type:"connection",name:r},exported:!0},!0);else if(n.entry.type!=="connection")return this.connectionName.log(`${this.connectionName.refString} is not a connection`),this.connectionNameInvalid=!0,!1;return!0}needs(e){var n;if(!this.validateConnectionName())return;const r=super.needs(e);if(r)return r;const i=this.sqlBlock(),s=(n=this.translator())===null||n===void 0?void 0:n.root.sqlQueryZone;if(!s){this.log("Cant't look up schema for sql block");return}s.reference(i.name,this.location);const o=s.getEntry(i.name);if(o.status==="reference")return{compileSQL:i,partialModel:this.select.containsQueries?e.modelDef():void 0};o.status==="present"&&e.checkExperimentalDialect(this,o.value.dialect)}structDef(){var e;if(!this.validateConnectionName())return yv.ErrorFactory.structDef;const n=(e=this.translator())===null||e===void 0?void 0:e.root.sqlQueryZone;if(!n)return this.log("Cant't look up schema for sql block"),yv.ErrorFactory.structDef;const r=this.sqlBlock();n.reference(r.name,this.location);const i=n.getEntry(r.name);if(i.status==="error"){const s=i.message.split(/\r?\n/);return this.select.log("Invalid SQL, "+s.join(`
|
|
1301
1301
|
`)),yv.ErrorFactory.structDef}else if(i.status==="present"){const s=this.select.location,o={...i.value,fields:i.value.fields.map(l=>({...l,location:s})),location:this.location},u=this.document(),a=u==null?void 0:u.currentModelAnnotation();return a&&(o.modelAnnotation=a),o}else return this.log("`connection_name.sql(...)` can currently only be used in top level source/query definitions"),yv.ErrorFactory.structDef}}Xp.SQLSource=Eye,Object.defineProperty(gv,"__esModule",{value:!0}),gv.SQSource=void 0;const Aye=fu,vye=Yp,Sye=Xp;class _ye extends Aye.SourceQueryElement{constructor(e){super({theSource:e}),this.theSource=e,this.elementType="sq-source"}isSource(){return!0}getSource(){return this.theSource}getQuery(){if(this.theSource instanceof Sye.SQLSource){const e=new vye.QueryRaw(this.theSource);return this.has({rawQuery:e}),e}else this.sqLog("This source cannot be used as a query")}}gv.SQSource=_ye;var Ev={};Object.defineProperty(Ev,"__esModule",{value:!0}),Ev.SQExtend=void 0;const Cye=Mp,bye=fu;class Tye extends bye.SourceQueryElement{constructor(e,n){super({sqSrc:e,extend:n}),this.sqSrc=e,this.extend=n,this.elementType="sq-extend"}getSource(){if(this.asSource)return this.asSource;const e=this.sqSrc.getSource();if(e)return this.asSource=new Cye.RefinedSource(e,this.extend),this.has({asSource:this.asSource}),this.asSource;this.sqLog("Could not compute source to extend")}isSource(){return!0}}Ev.SQExtend=Tye;var Av={},Kp={},Jp={};Object.defineProperty(Jp,"__esModule",{value:!0}),Jp.BinaryBoolean=void 0;const zq=ce,Rye=Jn,Oye=sn,Dye=xu,Nye=dt;class wye extends Nye.ExpressionDef{constructor(e,n,r){super({left:e,right:r}),this.left=e,this.op=n,this.right=r,this.elementType="abstract boolean binary",this.legalChildTypes=[Oye.FT.boolT]}getExpression(e){const n=this.left.getExpression(e),r=this.right.getExpression(e);if(this.typeCheck(this.left,n)&&this.typeCheck(this.right,r)){const i=(0,zq.mergeEvalSpaces)(n.evalSpace,r.evalSpace);return{dataType:"boolean",expressionType:(0,zq.maxExpressionType)(n.expressionType,r.expressionType),value:{node:(0,Dye.getExprNode)(this.op),kids:{left:n.value,right:r.value}},evalSpace:i}}return(0,Rye.errorFor)("logial required boolean")}}Jp.BinaryBoolean=wye,Object.defineProperty(Kp,"__esModule",{value:!0}),Kp.ExprCompare=void 0;const Gt=sn,Fye=Jp,Lye={"~":[Gt.FT.stringT],"!~":[Gt.FT.stringT],"<":[Gt.FT.numberT,Gt.FT.stringT,Gt.FT.dateT,Gt.FT.timestampT],"<=":[Gt.FT.numberT,Gt.FT.stringT,Gt.FT.dateT,Gt.FT.timestampT],"=":[Gt.FT.numberT,Gt.FT.stringT,Gt.FT.dateT,Gt.FT.timestampT],"!=":[Gt.FT.numberT,Gt.FT.stringT,Gt.FT.dateT,Gt.FT.timestampT],">=":[Gt.FT.numberT,Gt.FT.stringT,Gt.FT.dateT,Gt.FT.timestampT],">":[Gt.FT.numberT,Gt.FT.stringT,Gt.FT.dateT,Gt.FT.timestampT]};class Iye extends Fye.BinaryBoolean{constructor(e,n,r){super(e,n,r),this.elementType="a<=>b",this.legalChildTypes=Lye[n]}getExpression(e){return this.right.apply(e,this.op,this.left)}}Kp.ExprCompare=Iye;var Zp={},kd={};Object.defineProperty(kd,"__esModule",{value:!0}),kd.ExprTime=void 0;const Bye=ce,$ye=dt;class OO extends $ye.ExpressionDef{constructor(e,n,r="scalar"){super(),this.elementType="timestampOrDate",this.elementType=e,this.translationValue={dataType:e,expressionType:r,value:n,evalSpace:"constant"}}getExpression(e){return this.translationValue}static fromValue(e,n){let r=n.value;if(e!==n.dataType){const i={node:"cast",safe:!1,dstType:e,e:n.value};(0,Bye.isTimeFieldType)(n.dataType)&&(i.srcType=n.dataType),r=i}return new OO(e,r,n.expressionType)}}kd.ExprTime=OO;var Ql={};Object.defineProperty(Ql,"__esModule",{value:!0}),Ql.Range=void 0;const Hq=ce,kye=Jn,Pye=dt;class Mye extends Pye.ExpressionDef{constructor(e,n){super({first:e,last:n}),this.first=e,this.last=n,this.elementType="range"}apply(e,n,r){switch(n){case"=":case"!=":{const i=n==="="?">=":"<",s=n==="="?"and":"or",o=n==="="?"<":">=",u=this.first.apply(e,i,r),a=this.last.apply(e,o,r);return{dataType:"boolean",expressionType:(0,Hq.maxExpressionType)(u.expressionType,a.expressionType),evalSpace:(0,Hq.mergeEvalSpaces)(u.evalSpace,a.evalSpace),value:{node:s,kids:{left:u.value,right:a.value}}}}case">":return this.last.apply(e,">=",r);case">=":return this.first.apply(e,">=",r);case"<":return this.first.apply(e,"<",r);case"<=":return this.last.apply(e,"<",r)}throw new Error("mysterious error in range computation")}requestExpression(e){}getExpression(e){return this.log("A Range is not a value"),(0,kye.errorFor)("a range is not a value")}}Ql.Range=Mye,Object.defineProperty(Zp,"__esModule",{value:!0}),Zp.ExprGranularTime=void 0;const Qq=ce,jye=Jn,Gq=sn,Wq=Kn,Uye=dt,vv=kd,Vq=Ql;class qye extends Uye.ExpressionDef{constructor(e,n,r){super({expr:e}),this.expr=e,this.units=n,this.truncate=r,this.elementType="granularTime",this.legalChildTypes=[Gq.FT.timestampT,Gq.FT.dateT]}granular(){return!0}getExpression(e){const n=this.units,r=this.expr.getExpression(e);if((0,Qq.isTimeFieldType)(r.dataType)){const s={...r,dataType:r.dataType,timeframe:n};return this.truncate&&(s.value={node:"trunc",e:{...r.value,dataType:r.dataType},units:n}),s}r.dataType!=="error"&&this.log(`Cannot do time truncation on type '${r.dataType}'`);const i=r.dataType==="error"?(0,Qq.isDateUnit)(n)?"date":"timestamp":r.dataType;return{...r,dataType:i,value:(0,jye.errorFor)("granularity typecheck").value,evalSpace:"constant"}}toRange(e){const n=this.getExpression(e),r={node:"numberLiteral",literal:"1"};if(n.dataType==="timestamp"){const u=vv.ExprTime.fromValue("timestamp",n),a=new vv.ExprTime("timestamp",(0,Wq.timeOffset)("timestamp",n.value,"+",r,this.units),n.expressionType);return new Vq.Range(u,a)}const i=new vv.ExprTime("date",n.value,n.expressionType),s=(0,Wq.timeOffset)("date",n.value,"+",r,this.units),o=new vv.ExprTime("date",s,n.expressionType);return new Vq.Range(i,o)}}Zp.ExprGranularTime=qye,Object.defineProperty(Av,"__esModule",{value:!0}),Av.Apply=void 0;const zye=Kp,Hye=Bd,Yq=Zp;class Qye extends zye.ExprCompare{constructor(e,n){super(e,"=",n),this.left=e,this.right=n,this.elementType="apply"}getExpression(e){let n=this.right;if(!this.right.granular()){const r=this.right.requestExpression(e);r&&(0,Hye.isGranularResult)(r)&&(n=new Yq.ExprGranularTime(this.right,r.timeframe,!1))}return n instanceof Yq.ExprGranularTime?n.toRange(e).apply(e,this.op,this.left):super.getExpression(e)}}Av.Apply=Qye;var Pd={};Object.defineProperty(Pd,"__esModule",{value:!0}),Pd.BinaryNumeric=void 0;const Gye=sn,Wye=dt;class Vye extends Wye.ExpressionDef{constructor(e,n,r){super({left:e,right:r}),this.left=e,this.op=n,this.right=r,this.elementType="numeric binary abstract",this.legalChildTypes=[Gye.FT.numberT]}getExpression(e){return this.right.apply(e,this.op,this.left)}}Pd.BinaryNumeric=Vye;var Sv={};Object.defineProperty(Sv,"__esModule",{value:!0}),Sv.Boolean=void 0;const Yye=dt,Xye=sn;let Kye=class extends Yye.ExpressionDef{constructor(e){super(),this.value=e,this.elementType="boolean literal"}getExpression(){return{...Xye.FT.boolT,value:{node:this.value}}}};Sv.Boolean=Kye;var Gl={};Object.defineProperty(Gl,"__esModule",{value:!0}),Gl.FunctionOrdering=Gl.FunctionOrderBy=void 0;const DO=ce,Xq=Ge,Jye=ef;class Zye extends Xq.MalloyElement{constructor(e,n){super(),this.field=e,this.dir=n,this.elementType="orderBy",e&&this.has({field:e})}getAnalyticOrderBy(e){if(!this.field)return this.log("analytic `order_by` must specify an aggregate expression or output field reference"),{node:"functionOrderBy",e:{node:"error"},dir:this.dir};const n=this.field.getExpression(e);return(0,DO.expressionIsAggregate)(n.expressionType)||((0,DO.expressionIsScalar)(n.expressionType)?(!(this.field instanceof Jye.ExprIdReference)||n.evalSpace==="input")&&this.field.log("analytic `order_by` must be an aggregate or an output field reference"):this.field.log("analytic `order_by` must be scalar or aggregate")),{node:"functionOrderBy",e:n.value,dir:this.dir}}getAggregateOrderBy(e,n){if(this.field){const r=this.field.getExpression(e);return(0,DO.expressionIsScalar)(r.expressionType)||this.field.log("aggregate `order_by` must be scalar"),n||this.field.log("`order_by` must be only `asc` or `desc` with no expression"),{node:"functionOrderBy",e:r.value,dir:this.dir}}else return this.dir===void 0?(this.log("field or order direction must be specified"),{node:"functionDefaultOrderBy",dir:"asc"}):{node:"functionDefaultOrderBy",dir:this.dir}}}Gl.FunctionOrderBy=Zye;class eEe extends Xq.ListOf{constructor(e){super(e),this.elementType="function-ordering"}getAnalyticOrderBy(e){return this.list.map(n=>n.getAnalyticOrderBy(e))}getAggregateOrderBy(e,n){return this.list.map(r=>r.getAggregateOrderBy(e,n))}}Gl.FunctionOrdering=eEe;var _v={};Object.defineProperty(_v,"__esModule",{value:!0}),_v.ExprAddSub=void 0;const tEe=Pd;class nEe extends tEe.BinaryNumeric{constructor(){super(...arguments),this.elementType="+-"}}_v.ExprAddSub=nEe;var ba={},pt={},eg={};Object.defineProperty(eg,"__esModule",{value:!0}),eg.ReferenceField=void 0;const Kq=Br;class rEe extends Kq.SpaceField{constructor(e,n){super(),this.fieldRef=e,this.inFS=n,this.didLookup=!1}get referenceTo(){return this.didLookup||(this.memoReference=this.inFS.lookup(this.fieldRef.list).found,this.didLookup=!0),this.memoReference}getQueryFieldDef(e){var n;if(!this.queryFieldDef){const r=this.fieldRef.getField(e);r.error&&this.fieldRef.log(r.error);const i=this.fieldRef.list.map(u=>u.name),s=((n=r.found)===null||n===void 0?void 0:n.refType)==="parameter"?{type:r.found.typeDesc().dataType,name:i[0],e:{node:"parameter",path:i}}:{type:"fieldref",path:i};this.queryFieldDef=s;const o=this.referenceTo;if(o instanceof Kq.SpaceField&&o.haveFieldDef){const u=o.haveFieldDef,a=this.fieldRef.note;if(u.annotation||a){const l=a||{};u.annotation&&(l.inherits=u.annotation),this.queryFieldDef.annotation=l}}}return this.queryFieldDef}typeDesc(){if(this.memoTypeDesc)return this.memoTypeDesc;const e=this.referenceTo;return e?(this.memoTypeDesc=e.typeDesc(),this.memoTypeDesc):{dataType:"error",expressionType:"scalar",evalSpace:"input"}}}eg.ReferenceField=rEe;var $n={};Object.defineProperty($n,"__esModule",{value:!0}),$n.typecheckGroupBy=$n.typecheckAggregate=$n.typecheckCalculate=$n.typecheckDeclare=$n.typecheckMeasure=$n.typecheckDimension=$n.typecheckIndex=$n.typecheckProject=void 0;const vn=Ho;function iEe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsScalar)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,vn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic";else if((0,vn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.log(`Cannot use ${r} field in a select operation, did you mean to use ${n} operation instead?`)}}$n.typecheckProject=iEe;function sEe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsScalar)(t.expressionType)){let n;if(t.dataType==="turtle")n="a view";else if((0,vn.expressionIsAnalytic)(t.expressionType))n="an analytic";else if((0,vn.expressionIsAggregate)(t.expressionType))n="an aggregate";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.log(`Cannot use ${n} field in an index operation`)}}$n.typecheckIndex=sEe;function oEe(t,e){if(!(0,vn.expressionIsScalar)(t.expressionType))if((0,vn.expressionIsAggregate)(t.expressionType))e.log("Cannot use an aggregate field in a dimension declaration, did you mean to use a measure declaration instead?");else if((0,vn.expressionIsAnalytic)(t.expressionType))e.log("Cannot use an analytic field in a dimension declaration");else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`)}$n.typecheckDimension=oEe;function uEe(t,e){if(!(0,vn.expressionIsAggregate)(t.expressionType))if((0,vn.expressionIsScalar)(t.expressionType))e.log("Cannot use a scalar field in a measure declaration, did you mean to use a dimension declaration instead?");else if((0,vn.expressionIsAnalytic)(t.expressionType))e.log("Cannot use an analytic field in a measure declaration");else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`)}$n.typecheckMeasure=uEe;function aEe(t,e){t.dataType==="turtle"?e.log("Query fields cannot be used in a declare block"):(0,vn.expressionIsAnalytic)(t.expressionType)&&e.log("Analytic expressions can not be used in a declare block")}$n.typecheckDeclare=aEe;function lEe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsAnalytic)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,vn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate";else if((0,vn.expressionIsScalar)(t.expressionType))n="a group_by or select",r="a scalar";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.log(`Cannot use ${r} field in a calculate operation, did you mean to use ${n} operation instead?`)}}$n.typecheckCalculate=lEe;function cEe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsAggregate)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,vn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic";else if((0,vn.expressionIsScalar)(t.expressionType))n="a group_by or select",r="a scalar";else throw new Error(`Unexpected expression type ${t} not handled here`);e.log(`Cannot use ${r} field in an aggregate operation, did you mean to use ${n} operation instead?`)}}$n.typecheckAggregate=cEe;function fEe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsScalar)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,vn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic";else if((0,vn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.log(`Cannot use ${r} field in a group_by operation, did you mean to use ${n} operation instead?`)}}$n.typecheckGroupBy=fEe,Object.defineProperty(pt,"__esModule",{value:!0}),pt.FieldReferences=pt.WildcardFieldReference=pt.ViewOrScalarFieldReference=pt.DimensionFieldReference=pt.MeasureFieldReference=pt.DeclareFieldReference=pt.ProjectFieldReference=pt.GroupByFieldReference=pt.AggregateFieldReference=pt.IndexFieldReference=pt.CalculateFieldReference=pt.ParameterFieldReference=pt.PartitionByFieldReference=pt.ExpressionFieldReference=pt.AcceptExceptFieldReference=pt.FieldReference=void 0;const xEe=eg,dEe=Zi,Jq=Ge,Zq=Ir,Wl=$n;class Oi extends Jq.ListOf{constructor(e){super(e),this.isNoteableObj=!0,this.extendNote=Zq.extendNoteMethod}makeEntry(e){const n=this.outputName;if(e.entry(n))this.log(`Output already has a field named '${n}'`);else{const r=e.isQueryFieldSpace()?e.inputSpace():e;e.newEntry(n,this,new xEe.ReferenceField(this,r))}}get refToField(){return{type:"fieldref",path:this.list.map(e=>e.refString)}}get refString(){return this.path.join(".")}get path(){return this.list.map(e=>e.refString)}get outputName(){return this.list[this.list.length-1].refString}get sourceString(){if(this.list.length>1)return this.list.slice(0,-1).map(e=>e.refString).join(".")}get nameString(){return this.list[this.list.length-1].refString}getField(e){const n=e.lookup(this.list);if(n.found){const r=n.found.typeDesc();this.typecheck(r)}return n}}pt.FieldReference=Oi;class hEe extends Oi{constructor(){super(...arguments),this.elementType="acceptExceptFieldReference"}typecheck(){}}pt.AcceptExceptFieldReference=hEe;class pEe extends Oi{constructor(){super(...arguments),this.elementType="expressionFieldReference"}typecheck(){}}pt.ExpressionFieldReference=pEe;class gEe extends Oi{constructor(){super(...arguments),this.elementType="partitionByFieldReference"}typecheck(){}}pt.PartitionByFieldReference=gEe;class mEe extends Oi{constructor(){super(...arguments),this.elementType="parameterFieldReference"}typecheck(){}}pt.ParameterFieldReference=mEe;class yEe extends Oi{constructor(){super(...arguments),this.elementType="calculateFieldReference"}typecheck(e){(0,Wl.typecheckCalculate)(e,this)}}pt.CalculateFieldReference=yEe;class NO extends Oi{constructor(){super(...arguments),this.elementType="indexFieldReference"}typecheck(e){(0,Wl.typecheckIndex)(e,this)}static indexOutputName(e){return e.map(n=>encodeURIComponent(n)).join("/")}get outputName(){return NO.indexOutputName(this.path)}}pt.IndexFieldReference=NO;class EEe extends Oi{constructor(){super(...arguments),this.elementType="aggregateFieldReference"}typecheck(e){(0,Wl.typecheckAggregate)(e,this)}}pt.AggregateFieldReference=EEe;class AEe extends Oi{constructor(){super(...arguments),this.elementType="groupByFieldReference"}typecheck(e){(0,Wl.typecheckGroupBy)(e,this)}}pt.GroupByFieldReference=AEe;class vEe extends Oi{constructor(){super(...arguments),this.elementType="projectFieldReference"}typecheck(e){(0,Wl.typecheckProject)(e,this)}}pt.ProjectFieldReference=vEe;class SEe extends Oi{constructor(){super(...arguments),this.elementType="declareFieldReference"}typecheck(e){(0,Wl.typecheckDeclare)(e,this)}}pt.DeclareFieldReference=SEe;class _Ee extends Oi{constructor(){super(...arguments),this.elementType="measureFieldReference"}typecheck(e){(0,Wl.typecheckMeasure)(e,this)}}pt.MeasureFieldReference=_Ee;class CEe extends Oi{constructor(){super(...arguments),this.elementType="dimensionFieldReference"}typecheck(e){(0,Wl.typecheckDimension)(e,this)}}pt.DimensionFieldReference=CEe;class bEe extends Oi{constructor(){super(...arguments),this.elementType="viewOrScalarFieldReference"}typecheck(e){}}pt.ViewOrScalarFieldReference=bEe;class TEe extends Jq.MalloyElement{constructor(e){super(),this.joinPath=e,this.elementType="wildcardFieldReference",this.isNoteableObj=!0,this.extendNote=Zq.extendNoteMethod,this.except=new Set,this.has({joinPath:e})}getFieldDef(){throw this.internalError("fielddef request from wildcard reference")}get refString(){return this.joinPath?`${this.joinPath.refString}.*`:"*"}}pt.WildcardFieldReference=TEe;class REe extends dEe.DefinitionList{constructor(e){super(e),this.elementType="fieldReferenceList"}}pt.FieldReferences=REe,Object.defineProperty(ba,"__esModule",{value:!0}),ba.ExprAggregateFunction=void 0;const ez=ce,OEe=Lt,tg=Jn,DEe=kr,NEe=Jc,wEe=sn,FEe=pt,LEe=dt,IEe=Br,BEe=ef;class $Ee extends LEe.ExpressionDef{constructor(e,n,r){super(),this.func=e,this.legalChildTypes=[wEe.FT.numberT],this.elementType=e,this.explicitSource=r,n&&(this.expr=n,this.has({expr:n}))}returns(e){return"number"}getExpression(e){var n,r;const i=e.isQueryFieldSpace()?e.inputSpace():e;let s=this.expr,o=(n=this.expr)===null||n===void 0?void 0:n.getExpression(i),u=(r=this.source)===null||r===void 0?void 0:r.path,a=[];if(this.source){const c=this.source.getField(i);if(c.found){a=c.relationship;const f=c.found,x=f.typeDesc();if((0,ez.isAtomicFieldType)(x.dataType)){s=this.source,o={dataType:x.dataType,expressionType:x.expressionType,value:x.evalSpace==="output"?{node:"outputField",name:this.source.refString}:{node:"field",path:this.source.path},evalSpace:x.evalSpace},u=this.source.path;const h=this.getJoinUsage(i);(h.length===1||h.length>1&&h.slice(1).every(m=>kEe(m,h[0])))&&(u=h[0].map(m=>m.name),a=h[0])}else if(!(f instanceof NEe.StructSpaceFieldBase))return this.log(`Aggregate source cannot be a ${x.dataType}`),(0,tg.errorFor)(`Aggregate source cannot be a ${x.dataType}`)}else return this.log(`Reference to undefined value ${this.source.refString}`),(0,tg.errorFor)(`Reference to undefined value ${this.source.refString}`)}if(o===void 0)return this.log("Missing expression for aggregate function"),(0,tg.errorFor)("agggregate without expression");if((0,ez.expressionIsAggregate)(o.expressionType))return this.log("Aggregate expression cannot be aggregate"),(0,tg.errorFor)("reagggregate");if(!(o.dataType==="error")){const c=this.getJoinUsage(i),f=this.source!==void 0||this.explicitSource;if(s&&!(!this.source&&c.every(h=>h.length===0))&&!this.isSymmetricFunction()){const h=FO(a,c),p=LO(this.elementType,h),m=f?p:"Join path is required for this calculation";if(m){const g=PEe(m,c,s,this.elementType);this.log(g,p?"error":"warn")}}}if(this.typeCheck(this.expr||this,{...o,expressionType:"scalar"})){const c={node:"aggregate",function:this.func,e:o.value};return u&&u.length>0&&(c.structPath=u),{dataType:this.returns(o),expressionType:"aggregate",value:c,evalSpace:"output"}}return(0,tg.errorFor)("aggregate type check")}isSymmetricFunction(){return!0}getJoinUsage(e){const n=[];if(this.source&&this.source.getField(e).found){const i={node:"field",path:this.source.path};n.push(...wO(e,i))}if(this.expr){const r=this.expr.getExpression(e).value;n.push(...wO(e,r))}return n}}ba.ExprAggregateFunction=$Ee;function kEe(t,e){let n=t.length;if(n!==e.length)return!1;for(;n>0;)if(n-=1,t[n].name!==e[n].name)return!1;return!0}function wO(t,e){const n=[],r=(i,s)=>{const o=s[0],u=s.slice(1),a=i.entry(o);if(a===void 0)throw new Error(`Invalid field lookup ${o}`);if(a instanceof DEe.StructSpaceField&&u.length>0){const l=r(a.fieldSpace,u);return{...l,relationship:[{name:o,structRelationship:a.structRelationship},...l.relationship]}}else if(a instanceof IEe.SpaceField){if(u.length!==0)throw new Error(`${o} cannot contain a ${u.join(".")}`);const l=a.fieldDef();if(l)return{fs:i,def:l,relationship:[]};throw new Error("No field def")}else throw new Error("expected a field def or struct")};for(const i of(0,OEe.exprWalk)(e))if(i.node==="field"){const s=r(t,i.path);if(s.def.type!=="struct"&&s.def.type!=="turtle")if(s.def.e){const o=wO(s.fs,s.def.e);n.push(...o.map(u=>[...s.relationship,...u]))}else n.push(s.relationship)}else if(i.node==="source-reference")if(i.path){const s=r(t,i.path);n.push(s.relationship)}else n.push([]);return n}function FO(t,e){const n=[];for(const r of e){let i=0;for(let a=0;a<t.length&&a<r.length&&t[a].name===r[a].name;a++)i=a+1;const s=t.slice(i),o=r.slice(i),u=[...s.map(a=>({...a,reverse:!0})),...o.map(a=>({...a,reverse:!1}))];n.push(u)}return n}function LO(t,e){for(const n of e)for(const r of n){if(r.structRelationship.type==="cross")return`Cannot compute \`${t}\` across \`join_cross\` relationship \`${r.name}\``;if(r.structRelationship.type==="many"&&!r.reverse)return`Cannot compute \`${t}\` across \`join_many\` relationship \`${r.name}\``;if(r.structRelationship.type==="nested"&&!r.reverse)return`Cannot compute \`${t}\` across repeated relationship \`${r.name}\``}}function PEe(t,e,n,r){if(e.length===0)return t;let i=e[0];for(const p of e.slice(1))for(let m=0;m<i.length;m++){const g=i[m],y=p[m];if(g.name!==y.name){i=i.slice(0,m);break}}const s=FO(i,e),o=LO(r,s),u=i.slice().reverse().findIndex(p=>p.structRelationship.type==="many"||p.structRelationship.type==="cross"),a=u===-1?0:i.length-u,l=i.slice(0,a),c=FO(l,e),f=LO(r,c),x=i.length>0?i.map(p=>p.name).join("."):"source",h=l.length>0?l.map(p=>p.name).join("."):"source";if(o)return"Aggregated dimensional expression contains multiple join paths; rewrite, for example `sum(first_join.field + second_join.field)` as `first_join.field.sum() + second_join.field.sum()`";{const p=n instanceof FEe.FieldReference?`${n.refString}.${r}()`:n instanceof BEe.ExprIdReference?`${n.fieldReference.refString}.${r}()`:`${x}.${r}(${n.code})`,m=`${h}.${r}(${n.code})`;let g=`${t}; use \`${p}\``;return f===void 0&&h!==x&&(g+=` or \`${m}\` to get a result weighted with respect to \`${h}\``),g}}var Cv={};Object.defineProperty(Cv,"__esModule",{value:!0}),Cv.ExprAlternationTree=void 0;const tz=ce,MEe=Jn,jEe=dt;class UEe extends jEe.ExpressionDef{constructor(e,n,r){super({left:e,right:r}),this.left=e,this.op=n,this.right=r,this.elementType="alternation",this.elementType=`${n}alternation${n}`}apply(e,n,r){const i=this.left.apply(e,n,r),s=this.right.apply(e,n,r);return{dataType:"boolean",expressionType:(0,tz.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,tz.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:{node:this.op==="&"?"and":"or",kids:{left:i.value,right:s.value}}}}requestExpression(e){}getExpression(e){return this.log("Alternation tree has no value"),(0,MEe.errorFor)("no value from alternation tree")}}Cv.ExprAlternationTree=UEe;var Md={};Object.defineProperty(Md,"__esModule",{value:!0}),Md.ExprAsymmetric=void 0;const qEe=ba;class zEe extends qEe.ExprAggregateFunction{constructor(e,n,r,i){super(e,n,i),this.func=e,this.expr=n,this.source=r,this.has({source:r})}isSymmetricFunction(){return!1}defaultFieldName(){if(this.source&&this.expr===void 0){const e=this.source.nameString;switch(this.func){case"sum":return`total_${e}`;case"avg":return`avg_${e}`}}}}Md.ExprAsymmetric=zEe;var bv={};Object.defineProperty(bv,"__esModule",{value:!0}),bv.ExprAvg=void 0;const HEe=Md;class QEe extends HEe.ExprAsymmetric{constructor(e,n,r){super("avg",e,n,r),this.has({source:n})}}bv.ExprAvg=QEe;var Tv={};Object.defineProperty(Tv,"__esModule",{value:!0}),Tv.ExprCast=void 0;const GEe=Kn,WEe=dt;class VEe extends WEe.ExpressionDef{constructor(e,n,r=!1){super({expr:e}),this.expr=e,this.castType=n,this.safe=r,this.elementType="cast"}getExpression(e){var n,r,i;const s=this.expr.getExpression(e);let o="sql native";if(typeof this.castType=="string")o=this.castType;else{const u=e.dialectObj();u&&(u.validateTypeName(this.castType.raw)?o=(i=(r=(n=e.dialectObj())===null||n===void 0?void 0:n.sqlTypeToMalloyType(this.castType.raw))===null||r===void 0?void 0:r.type)!==null&&i!==void 0?i:"sql native":this.log(`Cast type \`${this.castType.raw}\` is invalid for ${u.name} dialect`))}return{dataType:o,expressionType:s.expressionType,value:(0,GEe.castTo)(this.castType,s.value,s.dataType,this.safe),evalSpace:s.evalSpace}}}Tv.ExprCast=VEe;var Rv={};Object.defineProperty(Rv,"__esModule",{value:!0}),Rv.ExprCoalesce=void 0;const nz=Ho,rz=sn,YEe=dt;class XEe extends YEe.ExpressionDef{constructor(e,n){super({expr:e,altExpr:n}),this.expr=e,this.altExpr=n,this.elementType="coalesce expression",this.legalChildTypes=rz.FT.anyAtomicT}getExpression(e){const n=this.expr.getExpression(e),r=this.altExpr.getExpression(e);return n.dataType==="null"?r:(rz.FT.typeEq(n,r)||this.log(`Mismatched types for coalesce (${n.dataType}, ${r.dataType})`),{...r,dataType:n.dataType==="error"?r.dataType:n.dataType,expressionType:(0,nz.maxExpressionType)(n.expressionType,r.expressionType),value:{node:"coalesce",kids:{left:n.value,right:r.value}},evalSpace:(0,nz.mergeEvalSpaces)(n.evalSpace,r.evalSpace)})}}Rv.ExprCoalesce=XEe;var Ov={};Object.defineProperty(Ov,"__esModule",{value:!0}),Ov.ExprCount=void 0;const KEe=ba;class JEe extends KEe.ExprAggregateFunction{constructor(e){super("count"),this.source=e,this.elementType="count",this.has({source:e})}defaultFieldName(){if(this.source)return"count_"+this.source.nameString}getExpression(e){const n={node:"aggregate",function:"count",e:{node:""}};return this.source&&(n.structPath=this.source.path),{dataType:"number",expressionType:"aggregate",value:n,evalSpace:"output"}}}Ov.ExprCount=JEe;var Dv={};Object.defineProperty(Dv,"__esModule",{value:!0}),Dv.ExprCountDistinct=void 0;const Nv=sn,ZEe=ba;class eAe extends ZEe.ExprAggregateFunction{constructor(e){super("distinct",e),this.legalChildTypes=[Nv.FT.numberT,Nv.FT.stringT,Nv.FT.dateT,Nv.FT.timestampT]}}Dv.ExprCountDistinct=eAe;var wv={},Vl={};Object.defineProperty(Vl,"__esModule",{value:!0}),Vl.Limit=void 0;const tAe=Ge,nAe=En;class rAe extends tAe.MalloyElement{constructor(e){super(),this.limit=e,this.elementType="limit",this.queryRefinementStage=nAe.LegalRefinementStage.Tail,this.forceQueryClass=void 0}}Vl.Limit=rAe;var jd={};Object.defineProperty(jd,"__esModule",{value:!0}),jd.PartitionBy=void 0;const iAe=Ge;class sAe extends iAe.ListOf{constructor(e){super(e),this.partitionFields=e,this.elementType="partition_by"}}jd.PartitionBy=sAe;var ng={},Yl={};Object.defineProperty(Yl,"__esModule",{value:!0}),Yl.FieldName=void 0;const oAe=Ge;class uAe extends oAe.MalloyElement{constructor(e){super(),this.name=e,this.elementType="fieldName"}get refString(){return this.name}toString(){return this.refString}getField(e){return e.lookup([this])}}Yl.FieldName=uAe,Object.defineProperty(ng,"__esModule",{value:!0}),ng.ExprFunc=void 0;const ts=ce,Ta=Jn,aAe=Jc,lAe=dt,cAe=Yl,iz=Lt;class fAe extends lAe.ExpressionDef{constructor(e,n,r,i,s){super({args:n}),this.name=e,this.args=n,this.isRaw=r,this.rawType=i,this.source=s,this.elementType="function call()",this.has({source:s})}canSupportPartitionBy(){return!0}canSupportOrderBy(){return!0}canSupportLimit(){return!0}getExpression(e){return this.getPropsExpression(e)}findFunctionDef(e){var n,r,i;const s=this.name.toLowerCase(),o=e?(r=(n=this.getDialectNamespace(e))===null||n===void 0?void 0:n.getEntry(s))===null||r===void 0?void 0:r.entry:void 0,u=o??((i=this.modelEntry(s))===null||i===void 0?void 0:i.entry);return u===void 0?(this.log(`Unknown function '${this.name}'. Use '${this.name}!(...)' to call a SQL function directly.`),{found:void 0,error:"unknown function"}):u.type!=="function"?(this.log(`Cannot call '${this.name}', which is of type ${u.type}`),{found:void 0,error:"called non function"}):(u.name!==this.name&&this.log(`Case insensitivity for function names is deprecated, use '${u.name}' instead`,"warn"),{found:u,error:void 0})}getPropsExpression(e,n){var r,i,s,o;const u=this.args.map(R=>R.getExpression(e));if(this.isRaw){let R="scalar",O;const I=[`${this.name}(`];for(const H of u)R=(0,ts.maxExpressionType)(R,H.expressionType),O?I.push(","):O=H.dataType,I.push(H.value);return I.push(")"),{dataType:(i=(r=this.rawType)!==null&&r!==void 0?r:O)!==null&&i!==void 0?i:"number",expressionType:R,value:(0,iz.composeSQLExpr)(I),evalSpace:(0,ts.mergeEvalSpaces)(...u.map(H=>H.evalSpace))}}const a=(s=e.dialectObj())===null||s===void 0?void 0:s.name,{found:l,error:c}=this.findFunctionDef(a);if(l===void 0)return(0,Ta.errorFor)(c);let f,x=(o=this.source)===null||o===void 0?void 0:o.path;if(this.source){const R=this.source.getField(e).found;if(R){const O=R.typeDesc();if((0,ts.isAtomicFieldType)(O.dataType))f={dataType:O.dataType,expressionType:O.expressionType,value:{node:"field",path:this.source.path},evalSpace:O.evalSpace},x=this.source.path.slice(0,-1);else if(!(R instanceof aAe.StructSpaceFieldBase)){const I=`Aggregate source cannot be a ${O.dataType}`;return this.log(I),(0,Ta.errorFor)(I)}}else{const O=`Reference to undefined value ${this.source.refString}`;return this.log(O),(0,Ta.errorFor)(O)}}const h=[...f?[f]:[],...u],p=xAe(l,h);if(p===void 0)return this.log(`No matching overload for function ${this.name}(${h.map(R=>R.dataType).join(", ")})`),(0,Ta.errorFor)("no matching overload");const{overload:m,expressionTypeErrors:g,evalSpaceErrors:y,nullabilityErrors:E}=p;for(const R of g){const O=R.argIndex-(f?1:0),I=(0,ts.expressionIsScalar)(R.maxExpressionType)?"scalar":"scalar or aggregate";this.args[O].log(`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must be ${I}, but received ${R.actualExpressionType}`)}for(const R of y){const O=R.argIndex-(f?1:0),I=R.maxEvalSpace==="literal"?"literal":R.maxEvalSpace==="constant"?"literal or constant":"literal, constant or output";this.args[O].log(`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must be ${I}, but received ${R.actualEvalSpace}`)}for(const R of E){const O=R.argIndex-(f?1:0);this.args[O].log(`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must not be a literal null`)}const A=m.returnType,v=(0,ts.maxOfExpressionTypes)([A.expressionType,...h.map(R=>R.expressionType)]);if(!(0,ts.expressionIsAggregate)(m.returnType.expressionType)&&this.source!==void 0)return this.log(`Cannot call function ${this.name}(${h.map(R=>R.dataType).join(", ")}) with source`),(0,Ta.errorFor)("cannot call with source");const S={node:"function_call",overload:m,name:this.name,kids:{args:h.map(R=>R.value)},expressionType:v,structPath:x};let _=S;if(n!=null&&n.orderBys&&n.orderBys.length>0){const R=(0,ts.expressionIsAnalytic)(m.returnType.expressionType);if(R||this.inExperiment("aggregate_order_by",!0)||n.orderBys[0].log("Enable experiment `aggregate_order_by` to use `order_by` with an aggregate function"),m.supportsOrderBy||R){const O=m.supportsOrderBy!=="only_default",I=n.orderBys.flatMap(M=>R?M.getAnalyticOrderBy(e):M.getAggregateOrderBy(e,O));S.kids.orderBy=I}else n.orderBys[0].log(`Function \`${this.name}\` does not support \`order_by\``)}if((n==null?void 0:n.limit)!==void 0&&(m.supportsLimit?S.limit=n.limit.limit:this.log(`Function ${this.name} does not support limit`)),n!=null&&n.partitionBys&&n.partitionBys.length>0){const R=[];for(const O of n.partitionBys)for(const I of O.partitionFields){const M=I.getField(e);M.found===void 0?I.log(`${I.refString} is not defined`):(0,ts.expressionIsAnalytic)(M.found.typeDesc().expressionType)||(0,ts.expressionIsUngroupedAggregate)(M.found.typeDesc().expressionType)?I.log("Partition expression must be scalar or aggregate"):R.push(I.nameString)}S.partitionBy=R}if(["sql_number","sql_string","sql_date","sql_timestamp","sql_boolean"].includes(l.name)){if(!this.inExperiment("sql_functions",!0)){const O=`Cannot use sql_function \`${l.name}\`; use \`sql_functions\` experiment to enable this behavior`;return this.log(O),(0,Ta.errorFor)("sql_function used without enabling")}const R=h[0].value;if(R.node!=="stringLiteral")this.log(`Invalid string literal for \`${l.name}\``);else{const O=R.literal,I=dAe(O),M=I.filter(W=>W.type==="interpolation"&&W.name.includes(".")).map(W=>W.type==="interpolation"?`\${${W.name}}`:`\${${W.value}}`);if(M.length>0){const W=M.length===1?`'.' paths are not yet supported in sql interpolations, found ${M.at(0)}`:`'.' paths are not yet supported in sql interpolations, found (${M.join(", ")})`;return this.log(W),(0,Ta.errorFor)(`${W}. See LookML \${...} documentation at https://cloud.google.com/looker/docs/reference/param-field-sql#sql_for_dimensions`)}const H=[];for(const W of I)if(W.type==="string")H.push(W.value);else if(W.name==="TABLE")H.push({node:"source-reference"});else{const Q=new cAe.FieldName(W.name);this.has({name:Q});const ee=e.lookup([Q]);if(ee.found===void 0)return this.log(`Invalid interpolation: ${ee.error}`),(0,Ta.errorFor)("invalid interpolated field");ee.found.refType==="parameter"?H.push({node:"parameter",path:[W.name]}):H.push({node:"field",path:[W.name]})}_=(0,iz.composeSQLExpr)(H)}}if(A.dataType==="any")return this.log(`Invalid return type ${A.dataType} for function '${this.name}'`),(0,Ta.errorFor)("invalid return type");const C=(0,ts.mergeEvalSpaces)(...h.map(R=>R.evalSpace)),b=C==="constant"?"constant":(0,ts.expressionIsScalar)(v)?C:"output";return{dataType:A.dataType,expressionType:v,value:_,evalSpace:b}}}ng.ExprFunc=fAe;function xAe(t,e){for(const n of t.overloads){let r=0,i=!0,s=!1;const o=[],u=[],a=[];for(let l=0;l<e.length;l++){const c=e[l],f=n.params[r];if(f===void 0){i=!1;break}if(!f.allowedTypes.some(h=>{const p=h.dataType===c.dataType||h.dataType==="any"||c.dataType==="null"||c.dataType==="error";return h.expressionType&&((0,ts.isExpressionTypeLEQ)(c.expressionType,h.expressionType)||o.push({argIndex:l,maxExpressionType:h.expressionType,actualExpressionType:c.expressionType,param:f})),(h.evalSpace==="literal"&&c.evalSpace!=="literal"||h.evalSpace==="constant"&&(c.evalSpace==="input"||c.evalSpace==="output")||(0,ts.expressionIsAnalytic)(n.returnType.expressionType)&&c.evalSpace==="input")&&u.push({argIndex:l,param:f,maxEvalSpace:h.evalSpace,actualEvalSpace:c.evalSpace}),h.evalSpace==="literal"&&c.dataType==="null"&&a.push({argIndex:l,param:f}),p})){i=!1;break}f.isVariadic?l===e.length-1&&(s=!0):r++}if(!(!s&&(r!==e.length||r!==n.params.length))&&i)return{overload:n,expressionTypeErrors:o,evalSpaceErrors:u,nullabilityErrors:a}}}function dAe(t){const e=[];let n=t;for(;n.length;){const r=n.indexOf("${");if(r===-1){e.push({type:"string",value:n});break}else{const i=n.slice(r).indexOf("}");if(i===-1){e.push({type:"string",value:n});break}r>0&&e.push({type:"string",value:n.slice(0,r)}),e.push({type:"interpolation",name:n.slice(r+2,i+r)}),n=n.slice(i+r+1)}}return e}Object.defineProperty(wv,"__esModule",{value:!0}),wv.ExprProps=void 0;const hAe=ce,pAe=Jn,gAe=sn,mAe=Gl,yAe=Vl,EAe=jd,AAe=dt,vAe=ng;class SAe extends AAe.ExpressionDef{constructor(e,n){super({expr:e,statements:n}),this.expr=e,this.statements=n,this.elementType="expression with props",this.legalChildTypes=gAe.FT.anyAtomicT}getFilteredExpression(e,n,r){if(r.length>0){if(!this.expr.supportsWhere(n))return this.expr.log("Filtered expression requires an aggregate computation"),n;const i=[];for(const s of r){const o=s.getFilterList(e);if(o.find(u=>(0,hAe.expressionIsCalculation)(u.expressionType)))return s.log("Cannot filter an expresion with an aggregate or analytical computation"),n;i.push(...o)}return this.typeCheck(this.expr,{...n,expressionType:"scalar"})?{...n,value:{node:"filteredExpr",kids:{e:n.value,filterList:i}}}:(this.expr.log(`Cannot filter '${n.dataType}' data`),(0,pAe.errorFor)("cannot filter type"))}return n}getExpression(e){const n=[];let r;const i=[],s=[];for(const u of this.statements)u instanceof EAe.PartitionBy?this.expr.canSupportPartitionBy()?n.push(u):u.log("`partition_by` is not supported for this kind of expression"):u instanceof yAe.Limit?r?u.log("limit already specified"):this.expr.canSupportLimit()?r=u:u.log("`limit` is not supported for this kind of expression"):u instanceof mAe.FunctionOrdering?this.expr.canSupportPartitionBy()?i.push(u):u.log("`order_by` is not supported for this kind of expression"):s.push(u);const o=this.expr instanceof vAe.ExprFunc?this.expr.getPropsExpression(e,{partitionBys:n,limit:r,orderBys:i}):this.expr.getExpression(e);return this.getFilteredExpression(e,o,s)}}wv.ExprProps=SAe;var Fv={};Object.defineProperty(Fv,"__esModule",{value:!0}),Fv.ExprLogicalOp=void 0;const _Ae=Jp,sz=sn;class CAe extends _Ae.BinaryBoolean{constructor(){super(...arguments),this.elementType="logical operator",this.legalChildTypes=[sz.FT.boolT,sz.FT.aggregateBoolT]}}Fv.ExprLogicalOp=CAe;var Lv={};Object.defineProperty(Lv,"__esModule",{value:!0}),Lv.ExprMax=void 0;const Iv=sn,bAe=ba;class TAe extends bAe.ExprAggregateFunction{constructor(e){super("max",e),this.legalChildTypes=[Iv.FT.numberT,Iv.FT.stringT,Iv.FT.dateT,Iv.FT.timestampT]}returns(e){return e.dataType}}Lv.ExprMax=TAe;var Bv={};Object.defineProperty(Bv,"__esModule",{value:!0}),Bv.ExprMin=void 0;const $v=sn,RAe=ba;class OAe extends RAe.ExprAggregateFunction{constructor(e){super("min",e),this.legalChildTypes=[$v.FT.numberT,$v.FT.stringT,$v.FT.dateT,$v.FT.timestampT]}returns(e){return e.dataType}}Bv.ExprMin=OAe;var kv={};Object.defineProperty(kv,"__esModule",{value:!0}),kv.ExprMinus=void 0;const DAe=Jn,oz=sn,NAe=dt;class wAe extends NAe.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="unary minus",this.legalChildTypes=[oz.FT.numberT]}getExpression(e){const n=this.expr.getExpression(e);return oz.FT.typeIn(n,this.legalChildTypes)?{...n,dataType:"number",value:{node:"unary-",e:n.value}}:(0,DAe.errorFor)("negate requires number")}}kv.ExprMinus=wAe;var Pv={};Object.defineProperty(Pv,"__esModule",{value:!0}),Pv.ExprMulDiv=void 0;const FAe=Pd;class LAe extends FAe.BinaryNumeric{constructor(){super(...arguments),this.elementType="*/%"}}Pv.ExprMulDiv=LAe;var Mv={},rg={};Object.defineProperty(rg,"__esModule",{value:!0}),rg.Unary=void 0;const IAe=dt;class BAe extends IAe.ExpressionDef{constructor(e){super({expr:e}),this.expr=e}}rg.Unary=BAe,Object.defineProperty(Mv,"__esModule",{value:!0}),Mv.ExprNot=void 0;const uz=sn,$Ae=rg;class kAe extends $Ae.Unary{constructor(e){super(e),this.elementType="not",this.legalChildTypes=[uz.FT.boolT,uz.FT.nullT]}getExpression(e){const n=this.expr.getExpression(e),r=this.typeCheck(this.expr,n);return{...n,dataType:"boolean",value:{node:"not",e:r?n.value:{node:"false"}}}}}Mv.ExprNot=kAe;var jv={};Object.defineProperty(jv,"__esModule",{value:!0}),jv.ExprNow=void 0;const PAe=dt;class MAe extends PAe.ExpressionDef{constructor(){super(...arguments),this.elementType="timestamp"}getExpression(e){return{dataType:"timestamp",expressionType:"scalar",evalSpace:"constant",value:{node:"now"}}}}jv.ExprNow=MAe;var Uv={};Object.defineProperty(Uv,"__esModule",{value:!0}),Uv.ExprNULL=void 0;const jAe=dt;class UAe extends jAe.ExpressionDef{constructor(){super(...arguments),this.elementType="NULL"}getExpression(){return{dataType:"null",value:{node:"null"},expressionType:"scalar",evalSpace:"literal"}}}Uv.ExprNULL=UAe;var qv={};Object.defineProperty(qv,"__esModule",{value:!0}),qv.ExprNumber=void 0;const qAe=sn,zAe=dt;class HAe extends zAe.ExpressionDef{constructor(e){super(),this.n=e,this.elementType="numeric literal"}getExpression(e){return this.constantExpression()}constantExpression(){return{...qAe.FT.numberT,evalSpace:"literal",value:{node:"numberLiteral",literal:this.n}}}}qv.ExprNumber=HAe;var zv={};Object.defineProperty(zv,"__esModule",{value:!0}),zv.ExprParens=void 0;const QAe=dt;class GAe extends QAe.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="(expression)"}requestExpression(e){return this.expr.requestExpression(e)}getExpression(e){const n=this.expr.getExpression(e);return{...n,value:{node:"()",e:n.value}}}}zv.ExprParens=GAe;var Hv={};Object.defineProperty(Hv,"__esModule",{value:!0}),Hv.ExprRegEx=void 0;const WAe=dt;class VAe extends WAe.ExpressionDef{constructor(e){super(),this.regex=e,this.elementType="regular expression literal"}getExpression(){return{dataType:"regular expression",expressionType:"scalar",value:{node:"regexpLiteral",literal:this.regex},evalSpace:"literal"}}}Hv.ExprRegEx=VAe;var Qv={};Object.defineProperty(Qv,"__esModule",{value:!0}),Qv.ExprString=void 0;const YAe=dt,XAe=sn;class KAe extends YAe.ExpressionDef{constructor(e){super(),this.elementType="string literal",this.value=e}getExpression(e){return{...XAe.FT.stringT,value:{node:"stringLiteral",literal:this.value},evalSpace:"literal"}}}Qv.ExprString=KAe;var Gv={};Object.defineProperty(Gv,"__esModule",{value:!0}),Gv.ExprSum=void 0;const JAe=Md;class ZAe extends JAe.ExprAsymmetric{constructor(e,n,r){super("sum",e,n,r),this.has({source:n})}}Gv.ExprSum=ZAe;var Wv={};Object.defineProperty(Wv,"__esModule",{value:!0}),Wv.ExprTimeExtract=void 0;const rf=ce,Xl=Jn,IO=dt,eve=Ql;class ig extends IO.ExpressionDef{static extractor(e){const n=ig.pluralMap[e];if(n)return n;if((0,rf.isExtractUnit)(e))return e}constructor(e,n){super({args:n}),this.extractText=e,this.args=n,this.elementType="timeExtract"}getExpression(e){const n=ig.extractor(this.extractText);if(n){if(this.args.length!==1)return this.log(`Extraction function ${n} requires one argument`),(0,Xl.errorFor)("{this.name} arg count");const r=this.args[0];if(r instanceof eve.Range){let i=r.first.getExpression(e),s=r.last.getExpression(e);const o=(0,rf.maxExpressionType)(i.expressionType,s.expressionType),u=(0,rf.mergeEvalSpaces)(i.evalSpace,s.evalSpace);if(i.dataType==="error"||s.dataType==="error")return{dataType:"number",expressionType:o,evalSpace:u,value:(0,Xl.errorFor)("extract from error").value};if(!(0,rf.isTimeFieldType)(i.dataType))return r.first.log(`Can't extract ${n} from '${i.dataType}'`),(0,Xl.errorFor)(`${n} bad type ${i.dataType}`);if(!(0,rf.isTimeFieldType)(s.dataType))return r.last.log(`Cannot extract ${n} from '${s.dataType}'`),(0,Xl.errorFor)(`${n} bad type ${s.dataType}`);let a=i.dataType;if(i.dataType!==s.dataType){let l=!0;if(a="timestamp",i.dataType==="date"){const c=(0,IO.getMorphicValue)(i,"timestamp");c&&(i=c,l=!1)}else{const c=(0,IO.getMorphicValue)(s,"timestamp");c&&(s=c,l=!1)}if(l)return r.first.log(`Cannot measure from ${i.dataType} to ${s.dataType}`),(0,Xl.errorFor)(`${n} range mismatch`)}return["week","month","quarter","year"].includes(n)?(this.log(`Cannot measure interval using '${n}'`),(0,Xl.errorFor)(`${n} civil extraction`)):(0,rf.isTimestampUnit)(n)?{dataType:"number",expressionType:o,evalSpace:u,value:{node:"timeDiff",units:n,kids:{left:{...i.value,dataType:a},right:{...s.value,dataType:a}}}}:(this.log(`Cannot extract ${n} from a range`),(0,Xl.errorFor)(`${n} bad extraction`))}else{const i=r.getExpression(e);return(0,rf.isTimeFieldType)(i.dataType)?{dataType:"number",expressionType:i.expressionType,evalSpace:i.evalSpace,value:{node:"extract",e:{...i.value,dataType:i.dataType},units:n}}:(i.dataType!=="error"&&this.log(`${this.extractText}() requires time type, not '${i.dataType}'`),{dataType:"number",expressionType:i.expressionType,evalSpace:i.evalSpace,value:(0,Xl.errorFor)(`${this.extractText} bad type ${i.dataType}`).value})}}throw this.internalError(`Illegal extraction unit '${this.extractText}'`)}}Wv.ExprTimeExtract=ig,ig.pluralMap={years:"year",quarters:"quarter",months:"month",weeks:"week",days:"day",hours:"hour",minutes:"minute",seconds:"second"};var Vv={},lo={},Yv={};Object.defineProperty(Yv,"__esModule",{value:!0}),Yv.QueryInputSpace=void 0;const tve=Ri,nve=qp,rve=Td;class ive extends rve.RefinedSpace{constructor(e,n){const r=new nve.SpaceSeed(e);super(r.structDef),this.queryOutput=n,this.extendList=[]}extendSource(e){this.pushFields(e),e instanceof tve.Join?this.extendList.push(e.name.refString):this.extendList.push(e.defineName)}isQueryFieldSpace(){return!0}outputSpace(){return this.queryOutput}inputSpace(){return this}}Yv.QueryInputSpace=ive;var sve=w&&w.__createBinding||(Object.create?function(t,e,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(e,n);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,i)}:function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]}),ove=w&&w.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),uve=w&&w.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var n in t)n!=="default"&&Object.prototype.hasOwnProperty.call(t,n)&&sve(e,t,n);return ove(e,t),e};Object.defineProperty(lo,"__esModule",{value:!0}),lo.ReduceFieldSpace=lo.QuerySpace=lo.QueryOperationSpace=void 0;const Xv=uve(ce),BO=Ul,ave=Yl,lve=Br,cve=pt,fve=Td,xve=Up,dve=kr,hve=Yv;class az extends fve.RefinedSpace{constructor(e,n,r,i){super(e.emptyStructDef()),this.queryInputSpace=e,this.nestParent=r,this.astEl=i,this.expandedWild={},this.exprSpace=new hve.QueryInputSpace(e,this),n&&this.addRefineFromFields(n)}log(e){this.astEl&&this.astEl.log(e)}inputSpace(){return this.exprSpace}outputSpace(){return this}addWild(e){var n;let r=this.exprSpace;const i=[];if(e.joinPath)for(const u of e.joinPath.list){const a=u.refString;i.push(a);const l=r.entry(a);if(l)if(l instanceof dve.StructSpaceField)r=l.fieldSpace;else{u.log(`Field '${a}' does not contain rows and cannot be expanded with '*'`);return}else{u.log(`No such field as '${a}'`);return}}const s=this.dialectObj(),o=[];for(const[u,a]of r.entries())if(!e.except.has(u)&&a.refType!=="parameter")if(this.entry(u)){const l=(n=this.expandedWild[u])===null||n===void 0?void 0:n.join(".");e.log(`Cannot expand '${u}' in '${e.refString}' because a field with that name already exists${l?` (conflicts with ${l})`:""}`)}else{const l=a.typeDesc();Xv.isAtomicFieldType(l.dataType)&&Xv.expressionIsScalar(l.expressionType)&&(s===void 0||!s.ignoreInProject(u))&&(o.push({name:u,entry:a}),this.expandedWild[u]=i.concat(u))}for(const u of o.sort((a,l)=>a.name.localeCompare(l.name)))this.setEntry(u.name,u.entry)}}lo.QueryOperationSpace=az;class lz extends az{addRefineFromFields(e){var n;if(Xv.isQuerySegment(e))for(const r of e.queryFields)if(r.type==="fieldref"){const i=this.exprSpace.lookup(r.path.map(s=>new ave.FieldName(s)));i.found&&this.setEntry(r.path[r.path.length-1],i.found)}else r.type!=="turtle"&&this.setEntry((n=r.as)!==null&&n!==void 0?n:r.name,new xve.ColumnSpaceField(r))}pushFields(...e){for(const n of e)n instanceof cve.WildcardFieldReference?this.addWild(n):super.pushFields(n)}canContain(e){return!0}queryFieldDefs(){const e=[];for(const[n,r]of this.entries())if(r instanceof lve.SpaceField){const i=this.expandedWild[n];if(i){e.push({type:"fieldref",path:i});continue}const s=r.getQueryFieldDef(this.exprSpace);if(s){const o=r.typeDesc();o.dataType!=="error"&&this.canContain(o)&&!gve(s)&&e.push(s)}}return this.isComplete(),e}getQuerySegment(e){const n=this.getPipeSegment(e);if(Xv.isQuerySegment(n))return n;throw new Error("TODO NOT POSSIBLE")}getPipeSegment(e){if(this.segmentType==="index")return this.log("internal error generating index segment from non index query"),{type:"reduce",queryFields:[]};if(e!=null&&e.extendSource)for(const r of e.extendSource)this.exprSpace.addFieldDef(r);const n={type:this.segmentType,queryFields:this.queryFieldDefs()};if(n.queryFields=(0,BO.mergeFields)(e==null?void 0:e.queryFields,n.queryFields),e!=null&&e.extendSource&&(n.extendSource=e.extendSource),this.exprSpace.extendList.length>0){const r=[],i=this.exprSpace.structDef();for(const s of this.exprSpace.extendList){const o=i.fields.find(u=>(0,BO.nameFromDef)(u)===s);o&&r.push(o)}n.extendSource=(0,BO.mergeFields)(n.extendSource,r)}return this.newTimezone&&(n.queryTimezone=this.newTimezone),this.isComplete(),n}lookup(e){const n=super.lookup(e);return n.found?{...n,isOutputField:!0}:this.exprSpace.lookup(e)}isQueryFieldSpace(){return!0}}lo.QuerySpace=lz;class pve extends lz{constructor(){super(...arguments),this.segmentType="reduce"}}lo.ReduceFieldSpace=pve;function gve(t){return typeof t!="string"&&t.type==="turtle"&&t.pipeline.length===0}Object.defineProperty(Vv,"__esModule",{value:!0}),Vv.ExprUngroup=void 0;const cz=ce,$O=Jn,mve=lo,yve=sn,Eve=dt;class Ave extends Eve.ExpressionDef{constructor(e,n,r){super({expr:n,fields:r}),this.control=e,this.expr=n,this.fields=r,this.legalChildTypes=yve.FT.anyAtomicT,this.elementType="ungroup"}returns(e){return"number"}getExpression(e){const n=this.expr.getExpression(e);if(!(0,cz.expressionIsAggregate)(n.expressionType))return this.expr.log(`${this.control}() expression must be an aggregate`),(0,$O.errorFor)("ungrouped scalar");if((0,cz.expressionIsUngroupedAggregate)(n.expressionType))return this.expr.log(`${this.control}() expression must not already be ungrouped`),(0,$O.errorFor)("doubly-ungrouped aggregate");const r={node:this.control,e:n.value};if(this.typeCheck(this.expr,{...n,expressionType:"scalar"})){if(e.isQueryFieldSpace()&&this.fields.length>0){const i=[],s=this.control==="exclude";for(const o of this.fields){let u=e.outputSpace(),a=!0;for(;u;){const l=u.lookup([o]);if(l.found&&l.isOutputField)i.push(o.refString),a=!1;else if(u instanceof mve.QuerySpace){u=u.nestParent;continue}break}if(a){const l=s?"exclude()":"all()";o.log(`${l} '${o.refString}' is missing from query output`)}}r.fields=i}return{dataType:this.returns(n),expressionType:"ungrouped_aggregate",value:r,evalSpace:"output"}}return this.log(`${this.control}() incompatible type`),(0,$O.errorFor)("ungrouped type check")}}Vv.ExprUngroup=Ave;var Kv={};Object.defineProperty(Kv,"__esModule",{value:!0}),Kv.ForRange=void 0;const fz=Ho,kO=Jn,xz=sn,Jv=Kn,vve=dt,Zv=kd,dz=Ql;class Sve extends vve.ExpressionDef{constructor(e,n,r){super({from:e,duration:n,timeframe:r}),this.from=e,this.duration=n,this.timeframe=r,this.elementType="forRange",this.legalChildTypes=[xz.FT.timestampT,xz.FT.dateT]}apply(e,n,r){const i=this.from.getExpression(e),s=r.getExpression(e);if(!this.typeCheck(r,s))return(0,kO.errorFor)("no time for range");const o=this.duration.getExpression(e);if(o.dataType!=="number")return o.dataType!=="error"&&this.log(`FOR duration count must be a number, not '${o.dataType}'`),{dataType:"boolean",evalSpace:(0,fz.mergeEvalSpaces)(i.evalSpace,s.evalSpace),expressionType:(0,fz.maxExpressionType)(i.expressionType,s.expressionType),value:(0,kO.errorFor)("for not number").value};const u=this.timeframe.text;let a=(0,Jv.resolution)(u);if(i.dataType==="timestamp"&&(a="timestamp"),s.dataType==="date"&&a==="date"){const p=this.from,m=(0,Jv.timeOffset)("date",i.value,"+",o.value,u),g=new Zv.ExprTime("date",m);return new dz.Range(p,g).apply(e,n,r)}const l=Zv.ExprTime.fromValue("timestamp",s);let c=this.from,f=i.value;if(i.dataType==="date"){const p=i.morphic&&i.morphic.timestamp;p?f=p:f=(0,Jv.castDateToTimestamp)(f),c=new Zv.ExprTime("timestamp",f,i.expressionType)}const x=(0,Jv.timeOffset)("timestamp",f,"+",o.value,u),h=new Zv.ExprTime("timestamp",x,i.expressionType);return new dz.Range(c,h).apply(e,n,l)}requestExpression(e){}getExpression(e){return this.log("A Range is not a value"),(0,kO.errorFor)("range has no value")}}Kv.ForRange=Sve;var Zn={},Di={};Object.defineProperty(Di,"__esModule",{value:!0});class sf extends Error{}class _ve extends sf{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}}class Cve extends sf{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}}class bve extends sf{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}}class sg extends sf{}class hz extends sf{constructor(e){super(`Invalid unit ${e}`)}}class Os extends sf{}class Kl extends sf{constructor(){super("Zone is an abstract class")}}const ke="numeric",co="short",ns="long",PO={year:ke,month:ke,day:ke},pz={year:ke,month:co,day:ke},Tve={year:ke,month:co,day:ke,weekday:co},gz={year:ke,month:ns,day:ke},mz={year:ke,month:ns,day:ke,weekday:ns},yz={hour:ke,minute:ke},Ez={hour:ke,minute:ke,second:ke},Az={hour:ke,minute:ke,second:ke,timeZoneName:co},vz={hour:ke,minute:ke,second:ke,timeZoneName:ns},Sz={hour:ke,minute:ke,hourCycle:"h23"},_z={hour:ke,minute:ke,second:ke,hourCycle:"h23"},Cz={hour:ke,minute:ke,second:ke,hourCycle:"h23",timeZoneName:co},bz={hour:ke,minute:ke,second:ke,hourCycle:"h23",timeZoneName:ns},Tz={year:ke,month:ke,day:ke,hour:ke,minute:ke},Rz={year:ke,month:ke,day:ke,hour:ke,minute:ke,second:ke},Oz={year:ke,month:co,day:ke,hour:ke,minute:ke},Dz={year:ke,month:co,day:ke,hour:ke,minute:ke,second:ke},Rve={year:ke,month:co,day:ke,weekday:co,hour:ke,minute:ke},Nz={year:ke,month:ns,day:ke,hour:ke,minute:ke,timeZoneName:co},wz={year:ke,month:ns,day:ke,hour:ke,minute:ke,second:ke,timeZoneName:co},Fz={year:ke,month:ns,day:ke,weekday:ns,hour:ke,minute:ke,timeZoneName:ns},Lz={year:ke,month:ns,day:ke,weekday:ns,hour:ke,minute:ke,second:ke,timeZoneName:ns};function St(t){return typeof t>"u"}function of(t){return typeof t=="number"}function e4(t){return typeof t=="number"&&t%1===0}function Ove(t){return typeof t=="string"}function Dve(t){return Object.prototype.toString.call(t)==="[object Date]"}function Iz(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch{return!1}}function Nve(t){return Array.isArray(t)?t:[t]}function Bz(t,e,n){if(t.length!==0)return t.reduce((r,i)=>{const s=[e(i),i];return r&&n(r[0],s[0])===r[0]?r:s},null)[1]}function wve(t,e){return e.reduce((n,r)=>(n[r]=t[r],n),{})}function Ud(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function Ra(t,e,n){return e4(t)&&t>=e&&t<=n}function Fve(t,e){return t-e*Math.floor(t/e)}function wn(t,e=2){const n=t<0;let r;return n?r="-"+(""+-t).padStart(e,"0"):r=(""+t).padStart(e,"0"),r}function Jl(t){if(!(St(t)||t===null||t===""))return parseInt(t,10)}function uf(t){if(!(St(t)||t===null||t===""))return parseFloat(t)}function MO(t){if(!(St(t)||t===null||t==="")){const e=parseFloat("0."+t)*1e3;return Math.floor(e)}}function jO(t,e,n=!1){const r=10**e;return(n?Math.trunc:Math.round)(t*r)/r}function og(t){return t%4===0&&(t%100!==0||t%400===0)}function ug(t){return og(t)?366:365}function t4(t,e){const n=Fve(e-1,12)+1,r=t+(e-n)/12;return n===2?og(r)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][n-1]}function UO(t){let e=Date.UTC(t.year,t.month-1,t.day,t.hour,t.minute,t.second,t.millisecond);return t.year<100&&t.year>=0&&(e=new Date(e),e.setUTCFullYear(e.getUTCFullYear()-1900)),+e}function n4(t){const e=(t+Math.floor(t/4)-Math.floor(t/100)+Math.floor(t/400))%7,n=t-1,r=(n+Math.floor(n/4)-Math.floor(n/100)+Math.floor(n/400))%7;return e===4||r===3?53:52}function qO(t){return t>99?t:t>60?1900+t:2e3+t}function $z(t,e,n,r=null){const i=new Date(t),s={hourCycle:"h23",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"};r&&(s.timeZone=r);const o={timeZoneName:e,...s},u=new Intl.DateTimeFormat(n,o).formatToParts(i).find(a=>a.type.toLowerCase()==="timezonename");return u?u.value:null}function r4(t,e){let n=parseInt(t,10);Number.isNaN(n)&&(n=0);const r=parseInt(e,10)||0,i=n<0||Object.is(n,-0)?-r:r;return n*60+i}function kz(t){const e=Number(t);if(typeof t=="boolean"||t===""||Number.isNaN(e))throw new Os(`Invalid unit value ${t}`);return e}function i4(t,e){const n={};for(const r in t)if(Ud(t,r)){const i=t[r];if(i==null)continue;n[e(r)]=kz(i)}return n}function ag(t,e){const n=Math.trunc(Math.abs(t/60)),r=Math.trunc(Math.abs(t%60)),i=t>=0?"+":"-";switch(e){case"short":return`${i}${wn(n,2)}:${wn(r,2)}`;case"narrow":return`${i}${n}${r>0?`:${r}`:""}`;case"techie":return`${i}${wn(n,2)}${wn(r,2)}`;default:throw new RangeError(`Value format ${e} is out of range for property format`)}}function s4(t){return wve(t,["hour","minute","second","millisecond"])}const Pz=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/,Lve=["January","February","March","April","May","June","July","August","September","October","November","December"],Mz=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],Ive=["J","F","M","A","M","J","J","A","S","O","N","D"];function jz(t){switch(t){case"narrow":return[...Ive];case"short":return[...Mz];case"long":return[...Lve];case"numeric":return["1","2","3","4","5","6","7","8","9","10","11","12"];case"2-digit":return["01","02","03","04","05","06","07","08","09","10","11","12"];default:return null}}const Uz=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],qz=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],Bve=["M","T","W","T","F","S","S"];function zz(t){switch(t){case"narrow":return[...Bve];case"short":return[...qz];case"long":return[...Uz];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}const Hz=["AM","PM"],$ve=["Before Christ","Anno Domini"],kve=["BC","AD"],Pve=["B","A"];function Qz(t){switch(t){case"narrow":return[...Pve];case"short":return[...kve];case"long":return[...$ve];default:return null}}function Mve(t){return Hz[t.hour<12?0:1]}function jve(t,e){return zz(e)[t.weekday-1]}function Uve(t,e){return jz(e)[t.month-1]}function qve(t,e){return Qz(e)[t.year<0?0:1]}function zve(t,e,n="always",r=!1){const i={years:["year","yr."],quarters:["quarter","qtr."],months:["month","mo."],weeks:["week","wk."],days:["day","day","days"],hours:["hour","hr."],minutes:["minute","min."],seconds:["second","sec."]},s=["hours","minutes","seconds"].indexOf(t)===-1;if(n==="auto"&&s){const f=t==="days";switch(e){case 1:return f?"tomorrow":`next ${i[t][0]}`;case-1:return f?"yesterday":`last ${i[t][0]}`;case 0:return f?"today":`this ${i[t][0]}`}}const o=Object.is(e,-0)||e<0,u=Math.abs(e),a=u===1,l=i[t],c=r?a?l[1]:l[2]||l[1]:a?i[t][0]:t;return o?`${u} ${c} ago`:`in ${u} ${c}`}function Gz(t,e){let n="";for(const r of t)r.literal?n+=r.val:n+=e(r.val);return n}const Hve={D:PO,DD:pz,DDD:gz,DDDD:mz,t:yz,tt:Ez,ttt:Az,tttt:vz,T:Sz,TT:_z,TTT:Cz,TTTT:bz,f:Tz,ff:Oz,fff:Nz,ffff:Fz,F:Rz,FF:Dz,FFF:wz,FFFF:Lz};class Ni{static create(e,n={}){return new Ni(e,n)}static parseFormat(e){let n=null,r="",i=!1;const s=[];for(let o=0;o<e.length;o++){const u=e.charAt(o);u==="'"?(r.length>0&&s.push({literal:i,val:r}),n=null,r="",i=!i):i||u===n?r+=u:(r.length>0&&s.push({literal:!1,val:r}),r=u,n=u)}return r.length>0&&s.push({literal:i,val:r}),s}static macroTokenToFormatOpts(e){return Hve[e]}constructor(e,n){this.opts=n,this.loc=e,this.systemLoc=null}formatWithSystemDefault(e,n){return this.systemLoc===null&&(this.systemLoc=this.loc.redefaultToSystem()),this.systemLoc.dtFormatter(e,{...this.opts,...n}).format()}formatDateTime(e,n={}){return this.loc.dtFormatter(e,{...this.opts,...n}).format()}formatDateTimeParts(e,n={}){return this.loc.dtFormatter(e,{...this.opts,...n}).formatToParts()}resolvedOptions(e,n={}){return this.loc.dtFormatter(e,{...this.opts,...n}).resolvedOptions()}num(e,n=0){if(this.opts.forceSimple)return wn(e,n);const r={...this.opts};return n>0&&(r.padTo=n),this.loc.numberFormatter(r).format(e)}formatDateTimeFromString(e,n){const r=this.loc.listingMode()==="en",i=this.loc.outputCalendar&&this.loc.outputCalendar!=="gregory",s=(h,p)=>this.loc.extract(e,h,p),o=h=>e.isOffsetFixed&&e.offset===0&&h.allowZ?"Z":e.isValid?e.zone.formatOffset(e.ts,h.format):"",u=()=>r?Mve(e):s({hour:"numeric",hourCycle:"h12"},"dayperiod"),a=(h,p)=>r?Uve(e,h):s(p?{month:h}:{month:h,day:"numeric"},"month"),l=(h,p)=>r?jve(e,h):s(p?{weekday:h}:{weekday:h,month:"long",day:"numeric"},"weekday"),c=h=>{const p=Ni.macroTokenToFormatOpts(h);return p?this.formatWithSystemDefault(e,p):h},f=h=>r?qve(e,h):s({era:h},"era"),x=h=>{switch(h){case"S":return this.num(e.millisecond);case"u":case"SSS":return this.num(e.millisecond,3);case"s":return this.num(e.second);case"ss":return this.num(e.second,2);case"uu":return this.num(Math.floor(e.millisecond/10),2);case"uuu":return this.num(Math.floor(e.millisecond/100));case"m":return this.num(e.minute);case"mm":return this.num(e.minute,2);case"h":return this.num(e.hour%12===0?12:e.hour%12);case"hh":return this.num(e.hour%12===0?12:e.hour%12,2);case"H":return this.num(e.hour);case"HH":return this.num(e.hour,2);case"Z":return o({format:"narrow",allowZ:this.opts.allowZ});case"ZZ":return o({format:"short",allowZ:this.opts.allowZ});case"ZZZ":return o({format:"techie",allowZ:this.opts.allowZ});case"ZZZZ":return e.zone.offsetName(e.ts,{format:"short",locale:this.loc.locale});case"ZZZZZ":return e.zone.offsetName(e.ts,{format:"long",locale:this.loc.locale});case"z":return e.zoneName;case"a":return u();case"d":return i?s({day:"numeric"},"day"):this.num(e.day);case"dd":return i?s({day:"2-digit"},"day"):this.num(e.day,2);case"c":return this.num(e.weekday);case"ccc":return l("short",!0);case"cccc":return l("long",!0);case"ccccc":return l("narrow",!0);case"E":return this.num(e.weekday);case"EEE":return l("short",!1);case"EEEE":return l("long",!1);case"EEEEE":return l("narrow",!1);case"L":return i?s({month:"numeric",day:"numeric"},"month"):this.num(e.month);case"LL":return i?s({month:"2-digit",day:"numeric"},"month"):this.num(e.month,2);case"LLL":return a("short",!0);case"LLLL":return a("long",!0);case"LLLLL":return a("narrow",!0);case"M":return i?s({month:"numeric"},"month"):this.num(e.month);case"MM":return i?s({month:"2-digit"},"month"):this.num(e.month,2);case"MMM":return a("short",!1);case"MMMM":return a("long",!1);case"MMMMM":return a("narrow",!1);case"y":return i?s({year:"numeric"},"year"):this.num(e.year);case"yy":return i?s({year:"2-digit"},"year"):this.num(e.year.toString().slice(-2),2);case"yyyy":return i?s({year:"numeric"},"year"):this.num(e.year,4);case"yyyyyy":return i?s({year:"numeric"},"year"):this.num(e.year,6);case"G":return f("short");case"GG":return f("long");case"GGGGG":return f("narrow");case"kk":return this.num(e.weekYear.toString().slice(-2),2);case"kkkk":return this.num(e.weekYear,4);case"W":return this.num(e.weekNumber);case"WW":return this.num(e.weekNumber,2);case"o":return this.num(e.ordinal);case"ooo":return this.num(e.ordinal,3);case"q":return this.num(e.quarter);case"qq":return this.num(e.quarter,2);case"X":return this.num(Math.floor(e.ts/1e3));case"x":return this.num(e.ts);default:return c(h)}};return Gz(Ni.parseFormat(n),x)}formatDurationFromString(e,n){const r=a=>{switch(a[0]){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":return"hour";case"d":return"day";case"w":return"week";case"M":return"month";case"y":return"year";default:return null}},i=a=>l=>{const c=r(l);return c?this.num(a.get(c),l.length):l},s=Ni.parseFormat(n),o=s.reduce((a,{literal:l,val:c})=>l?a:a.concat(c),[]),u=e.shiftTo(...o.map(r).filter(a=>a));return Gz(s,i(u))}}class fo{constructor(e,n){this.reason=e,this.explanation=n}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}}let qd=class{get type(){throw new Kl}get name(){throw new Kl}get ianaName(){return this.name}get isUniversal(){throw new Kl}offsetName(e,n){throw new Kl}formatOffset(e,n){throw new Kl}offset(e){throw new Kl}equals(e){throw new Kl}get isValid(){throw new Kl}},zO=null;class o4 extends qd{static get instance(){return zO===null&&(zO=new o4),zO}get type(){return"system"}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return $z(e,n,r)}formatOffset(e,n){return ag(this.offset(e),n)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type==="system"}get isValid(){return!0}}let u4={};function Qve(t){return u4[t]||(u4[t]=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:t,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",era:"short"})),u4[t]}const Gve={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function Wve(t,e){const n=t.format(e).replace(/\u200E/g,""),r=/(\d+)\/(\d+)\/(\d+) (AD|BC),? (\d+):(\d+):(\d+)/.exec(n),[,i,s,o,u,a,l,c]=r;return[o,i,s,u,a,l,c]}function Vve(t,e){const n=t.formatToParts(e),r=[];for(let i=0;i<n.length;i++){const{type:s,value:o}=n[i],u=Gve[s];s==="era"?r[u]=o:St(u)||(r[u]=parseInt(o,10))}return r}let a4={};class du extends qd{static create(e){return a4[e]||(a4[e]=new du(e)),a4[e]}static resetCache(){a4={},u4={}}static isValidSpecifier(e){return this.isValidZone(e)}static isValidZone(e){if(!e)return!1;try{return new Intl.DateTimeFormat("en-US",{timeZone:e}).format(),!0}catch{return!1}}constructor(e){super(),this.zoneName=e,this.valid=du.isValidZone(e)}get type(){return"iana"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return $z(e,n,r,this.name)}formatOffset(e,n){return ag(this.offset(e),n)}offset(e){const n=new Date(e);if(isNaN(n))return NaN;const r=Qve(this.name);let[i,s,o,u,a,l,c]=r.formatToParts?Vve(r,n):Wve(r,n);u==="BC"&&(i=-Math.abs(i)+1);const x=UO({year:i,month:s,day:o,hour:a===24?0:a,minute:l,second:c,millisecond:0});let h=+n;const p=h%1e3;return h-=p>=0?p:1e3+p,(x-h)/(60*1e3)}equals(e){return e.type==="iana"&&e.name===this.name}get isValid(){return this.valid}}let HO=null;class Pr extends qd{static get utcInstance(){return HO===null&&(HO=new Pr(0)),HO}static instance(e){return e===0?Pr.utcInstance:new Pr(e)}static parseSpecifier(e){if(e){const n=e.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(n)return new Pr(r4(n[1],n[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${ag(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${ag(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,n){return ag(this.fixed,n)}get isUniversal(){return!0}offset(){return this.fixed}equals(e){return e.type==="fixed"&&e.fixed===this.fixed}get isValid(){return!0}}class Wz extends qd{constructor(e){super(),this.zoneName=e}get type(){return"invalid"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(){return null}formatOffset(){return""}offset(){return NaN}equals(){return!1}get isValid(){return!1}}function Zl(t,e){if(St(t)||t===null)return e;if(t instanceof qd)return t;if(Ove(t)){const n=t.toLowerCase();return n==="local"||n==="system"?e:n==="utc"||n==="gmt"?Pr.utcInstance:Pr.parseSpecifier(n)||du.create(t)}else return of(t)?Pr.instance(t):typeof t=="object"&&t.offset&&typeof t.offset=="number"?t:new Wz(t)}let Vz=()=>Date.now(),Yz="system",Xz=null,Kz=null,Jz=null,Zz;class Fn{static get now(){return Vz}static set now(e){Vz=e}static set defaultZone(e){Yz=e}static get defaultZone(){return Zl(Yz,o4.instance)}static get defaultLocale(){return Xz}static set defaultLocale(e){Xz=e}static get defaultNumberingSystem(){return Kz}static set defaultNumberingSystem(e){Kz=e}static get defaultOutputCalendar(){return Jz}static set defaultOutputCalendar(e){Jz=e}static get throwOnInvalid(){return Zz}static set throwOnInvalid(e){Zz=e}static resetCaches(){cn.resetCache(),du.resetCache()}}let eH={};function Yve(t,e={}){const n=JSON.stringify([t,e]);let r=eH[n];return r||(r=new Intl.ListFormat(t,e),eH[n]=r),r}let QO={};function GO(t,e={}){const n=JSON.stringify([t,e]);let r=QO[n];return r||(r=new Intl.DateTimeFormat(t,e),QO[n]=r),r}let WO={};function Xve(t,e={}){const n=JSON.stringify([t,e]);let r=WO[n];return r||(r=new Intl.NumberFormat(t,e),WO[n]=r),r}let VO={};function Kve(t,e={}){const{base:n,...r}=e,i=JSON.stringify([t,r]);let s=VO[i];return s||(s=new Intl.RelativeTimeFormat(t,e),VO[i]=s),s}let lg=null;function Jve(){return lg||(lg=new Intl.DateTimeFormat().resolvedOptions().locale,lg)}function Zve(t){const e=t.indexOf("-u-");if(e===-1)return[t];{let n;const r=t.substring(0,e);try{n=GO(t).resolvedOptions()}catch{n=GO(r).resolvedOptions()}const{numberingSystem:i,calendar:s}=n;return[r,i,s]}}function e4e(t,e,n){return(n||e)&&(t+="-u",n&&(t+=`-ca-${n}`),e&&(t+=`-nu-${e}`)),t}function t4e(t){const e=[];for(let n=1;n<=12;n++){const r=ot.utc(2016,n,1);e.push(t(r))}return e}function n4e(t){const e=[];for(let n=1;n<=7;n++){const r=ot.utc(2016,11,13+n);e.push(t(r))}return e}function l4(t,e,n,r,i){const s=t.listingMode(n);return s==="error"?null:s==="en"?r(e):i(e)}function r4e(t){return t.numberingSystem&&t.numberingSystem!=="latn"?!1:t.numberingSystem==="latn"||!t.locale||t.locale.startsWith("en")||new Intl.DateTimeFormat(t.intl).resolvedOptions().numberingSystem==="latn"}class i4e{constructor(e,n,r){this.padTo=r.padTo||0,this.floor=r.floor||!1;const{padTo:i,floor:s,...o}=r;if(!n||Object.keys(o).length>0){const u={useGrouping:!1,...r};r.padTo>0&&(u.minimumIntegerDigits=r.padTo),this.inf=Xve(e,u)}}format(e){if(this.inf){const n=this.floor?Math.floor(e):e;return this.inf.format(n)}else{const n=this.floor?Math.floor(e):jO(e,3);return wn(n,this.padTo)}}}class s4e{constructor(e,n,r){this.opts=r;let i;if(e.zone.isUniversal){const o=-1*(e.offset/60),u=o>=0?`Etc/GMT+${o}`:`Etc/GMT${o}`;e.offset!==0&&du.create(u).valid?(i=u,this.dt=e):(i="UTC",r.timeZoneName?this.dt=e:this.dt=e.offset===0?e:ot.fromMillis(e.ts+e.offset*60*1e3))}else e.zone.type==="system"?this.dt=e:(this.dt=e,i=e.zone.name);const s={...this.opts};i&&(s.timeZone=i),this.dtf=GO(n,s)}format(){return this.dtf.format(this.dt.toJSDate())}formatToParts(){return this.dtf.formatToParts(this.dt.toJSDate())}resolvedOptions(){return this.dtf.resolvedOptions()}}class o4e{constructor(e,n,r){this.opts={style:"long",...r},!n&&Iz()&&(this.rtf=Kve(e,r))}format(e,n){return this.rtf?this.rtf.format(e,n):zve(n,e,this.opts.numeric,this.opts.style!=="long")}formatToParts(e,n){return this.rtf?this.rtf.formatToParts(e,n):[]}}class cn{static fromOpts(e){return cn.create(e.locale,e.numberingSystem,e.outputCalendar,e.defaultToEN)}static create(e,n,r,i=!1){const s=e||Fn.defaultLocale,o=s||(i?"en-US":Jve()),u=n||Fn.defaultNumberingSystem,a=r||Fn.defaultOutputCalendar;return new cn(o,u,a,s)}static resetCache(){lg=null,QO={},WO={},VO={}}static fromObject({locale:e,numberingSystem:n,outputCalendar:r}={}){return cn.create(e,n,r)}constructor(e,n,r,i){const[s,o,u]=Zve(e);this.locale=s,this.numberingSystem=n||o||null,this.outputCalendar=r||u||null,this.intl=e4e(this.locale,this.numberingSystem,this.outputCalendar),this.weekdaysCache={format:{},standalone:{}},this.monthsCache={format:{},standalone:{}},this.meridiemCache=null,this.eraCache={},this.specifiedLocale=i,this.fastNumbersCached=null}get fastNumbers(){return this.fastNumbersCached==null&&(this.fastNumbersCached=r4e(this)),this.fastNumbersCached}listingMode(){const e=this.isEnglish(),n=(this.numberingSystem===null||this.numberingSystem==="latn")&&(this.outputCalendar===null||this.outputCalendar==="gregory");return e&&n?"en":"intl"}clone(e){return!e||Object.getOwnPropertyNames(e).length===0?this:cn.create(e.locale||this.specifiedLocale,e.numberingSystem||this.numberingSystem,e.outputCalendar||this.outputCalendar,e.defaultToEN||!1)}redefaultToEN(e={}){return this.clone({...e,defaultToEN:!0})}redefaultToSystem(e={}){return this.clone({...e,defaultToEN:!1})}months(e,n=!1,r=!0){return l4(this,e,r,jz,()=>{const i=n?{month:e,day:"numeric"}:{month:e},s=n?"format":"standalone";return this.monthsCache[s][e]||(this.monthsCache[s][e]=t4e(o=>this.extract(o,i,"month"))),this.monthsCache[s][e]})}weekdays(e,n=!1,r=!0){return l4(this,e,r,zz,()=>{const i=n?{weekday:e,year:"numeric",month:"long",day:"numeric"}:{weekday:e},s=n?"format":"standalone";return this.weekdaysCache[s][e]||(this.weekdaysCache[s][e]=n4e(o=>this.extract(o,i,"weekday"))),this.weekdaysCache[s][e]})}meridiems(e=!0){return l4(this,void 0,e,()=>Hz,()=>{if(!this.meridiemCache){const n={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[ot.utc(2016,11,13,9),ot.utc(2016,11,13,19)].map(r=>this.extract(r,n,"dayperiod"))}return this.meridiemCache})}eras(e,n=!0){return l4(this,e,n,Qz,()=>{const r={era:e};return this.eraCache[e]||(this.eraCache[e]=[ot.utc(-40,1,1),ot.utc(2017,1,1)].map(i=>this.extract(i,r,"era"))),this.eraCache[e]})}extract(e,n,r){const i=this.dtFormatter(e,n),s=i.formatToParts(),o=s.find(u=>u.type.toLowerCase()===r);return o?o.value:null}numberFormatter(e={}){return new i4e(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,n={}){return new s4e(e,this.intl,n)}relFormatter(e={}){return new o4e(this.intl,this.isEnglish(),e)}listFormatter(e={}){return Yve(this.intl,e)}isEnglish(){return this.locale==="en"||this.locale.toLowerCase()==="en-us"||new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith("en-us")}equals(e){return this.locale===e.locale&&this.numberingSystem===e.numberingSystem&&this.outputCalendar===e.outputCalendar}}function zd(...t){const e=t.reduce((n,r)=>n+r.source,"");return RegExp(`^${e}$`)}function Hd(...t){return e=>t.reduce(([n,r,i],s)=>{const[o,u,a]=s(e,i);return[{...n,...o},u||r,a]},[{},null,1]).slice(0,2)}function Qd(t,...e){if(t==null)return[null,null];for(const[n,r]of e){const i=n.exec(t);if(i)return r(i)}return[null,null]}function tH(...t){return(e,n)=>{const r={};let i;for(i=0;i<t.length;i++)r[t[i]]=Jl(e[n+i]);return[r,null,n+i]}}const nH=/(?:(Z)|([+-]\d\d)(?::?(\d\d))?)/,u4e=`(?:${nH.source}?(?:\\[(${Pz.source})\\])?)?`,YO=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,rH=RegExp(`${YO.source}${u4e}`),XO=RegExp(`(?:T${rH.source})?`),a4e=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,l4e=/(\d{4})-?W(\d\d)(?:-?(\d))?/,c4e=/(\d{4})-?(\d{3})/,f4e=tH("weekYear","weekNumber","weekDay"),x4e=tH("year","ordinal"),d4e=/(\d{4})-(\d\d)-(\d\d)/,iH=RegExp(`${YO.source} ?(?:${nH.source}|(${Pz.source}))?`),h4e=RegExp(`(?: ${iH.source})?`);function Gd(t,e,n){const r=t[e];return St(r)?n:Jl(r)}function p4e(t,e){return[{year:Gd(t,e),month:Gd(t,e+1,1),day:Gd(t,e+2,1)},null,e+3]}function Wd(t,e){return[{hours:Gd(t,e,0),minutes:Gd(t,e+1,0),seconds:Gd(t,e+2,0),milliseconds:MO(t[e+3])},null,e+4]}function cg(t,e){const n=!t[e]&&!t[e+1],r=r4(t[e+1],t[e+2]),i=n?null:Pr.instance(r);return[{},i,e+3]}function fg(t,e){const n=t[e]?du.create(t[e]):null;return[{},n,e+1]}const g4e=RegExp(`^T?${YO.source}$`),m4e=/^-?P(?:(?:(-?\d{1,20}(?:\.\d{1,20})?)Y)?(?:(-?\d{1,20}(?:\.\d{1,20})?)M)?(?:(-?\d{1,20}(?:\.\d{1,20})?)W)?(?:(-?\d{1,20}(?:\.\d{1,20})?)D)?(?:T(?:(-?\d{1,20}(?:\.\d{1,20})?)H)?(?:(-?\d{1,20}(?:\.\d{1,20})?)M)?(?:(-?\d{1,20})(?:[.,](-?\d{1,20}))?S)?)?)$/;function y4e(t){const[e,n,r,i,s,o,u,a,l]=t,c=e[0]==="-",f=a&&a[0]==="-",x=(h,p=!1)=>h!==void 0&&(p||h&&c)?-h:h;return[{years:x(uf(n)),months:x(uf(r)),weeks:x(uf(i)),days:x(uf(s)),hours:x(uf(o)),minutes:x(uf(u)),seconds:x(uf(a),a==="-0"),milliseconds:x(MO(l),f)}]}const E4e={GMT:0,EDT:-4*60,EST:-5*60,CDT:-5*60,CST:-6*60,MDT:-6*60,MST:-7*60,PDT:-7*60,PST:-8*60};function KO(t,e,n,r,i,s,o){const u={year:e.length===2?qO(Jl(e)):Jl(e),month:Mz.indexOf(n)+1,day:Jl(r),hour:Jl(i),minute:Jl(s)};return o&&(u.second=Jl(o)),t&&(u.weekday=t.length>3?Uz.indexOf(t)+1:qz.indexOf(t)+1),u}const A4e=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\d\d)(\d\d)))$/;function v4e(t){const[,e,n,r,i,s,o,u,a,l,c,f]=t,x=KO(e,i,r,n,s,o,u);let h;return a?h=E4e[a]:l?h=0:h=r4(c,f),[x,new Pr(h)]}function S4e(t){return t.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}const _4e=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d\d):(\d\d):(\d\d) GMT$/,C4e=/^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d\d) (\d\d):(\d\d):(\d\d) GMT$/,b4e=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \d|\d\d) (\d\d):(\d\d):(\d\d) (\d{4})$/;function sH(t){const[,e,n,r,i,s,o,u]=t;return[KO(e,i,r,n,s,o,u),Pr.utcInstance]}function T4e(t){const[,e,n,r,i,s,o,u]=t;return[KO(e,u,n,r,i,s,o),Pr.utcInstance]}const R4e=zd(a4e,XO),O4e=zd(l4e,XO),D4e=zd(c4e,XO),N4e=zd(rH),oH=Hd(p4e,Wd,cg,fg),w4e=Hd(f4e,Wd,cg,fg),F4e=Hd(x4e,Wd,cg,fg),L4e=Hd(Wd,cg,fg);function I4e(t){return Qd(t,[R4e,oH],[O4e,w4e],[D4e,F4e],[N4e,L4e])}function B4e(t){return Qd(S4e(t),[A4e,v4e])}function $4e(t){return Qd(t,[_4e,sH],[C4e,sH],[b4e,T4e])}function k4e(t){return Qd(t,[m4e,y4e])}const P4e=Hd(Wd);function M4e(t){return Qd(t,[g4e,P4e])}const j4e=zd(d4e,h4e),U4e=zd(iH),q4e=Hd(Wd,cg,fg);function z4e(t){return Qd(t,[j4e,oH],[U4e,q4e])}const H4e="Invalid Duration",uH={weeks:{days:7,hours:7*24,minutes:7*24*60,seconds:7*24*60*60,milliseconds:7*24*60*60*1e3},days:{hours:24,minutes:24*60,seconds:24*60*60,milliseconds:24*60*60*1e3},hours:{minutes:60,seconds:60*60,milliseconds:60*60*1e3},minutes:{seconds:60,milliseconds:60*1e3},seconds:{milliseconds:1e3}},Q4e={years:{quarters:4,months:12,weeks:52,days:365,hours:365*24,minutes:365*24*60,seconds:365*24*60*60,milliseconds:365*24*60*60*1e3},quarters:{months:3,weeks:13,days:91,hours:91*24,minutes:91*24*60,seconds:91*24*60*60,milliseconds:91*24*60*60*1e3},months:{weeks:4,days:30,hours:30*24,minutes:30*24*60,seconds:30*24*60*60,milliseconds:30*24*60*60*1e3},...uH},Ds=146097/400,Vd=146097/4800,G4e={years:{quarters:4,months:12,weeks:Ds/7,days:Ds,hours:Ds*24,minutes:Ds*24*60,seconds:Ds*24*60*60,milliseconds:Ds*24*60*60*1e3},quarters:{months:3,weeks:Ds/28,days:Ds/4,hours:Ds*24/4,minutes:Ds*24*60/4,seconds:Ds*24*60*60/4,milliseconds:Ds*24*60*60*1e3/4},months:{weeks:Vd/7,days:Vd,hours:Vd*24,minutes:Vd*24*60,seconds:Vd*24*60*60,milliseconds:Vd*24*60*60*1e3},...uH},af=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],W4e=af.slice(0).reverse();function lf(t,e,n=!1){const r={values:n?e.values:{...t.values,...e.values||{}},loc:t.loc.clone(e.loc),conversionAccuracy:e.conversionAccuracy||t.conversionAccuracy};return new _t(r)}function V4e(t){return t<0?Math.floor(t):Math.ceil(t)}function aH(t,e,n,r,i){const s=t[i][n],o=e[n]/s,u=Math.sign(o)===Math.sign(r[i]),a=!u&&r[i]!==0&&Math.abs(o)<=1?V4e(o):Math.trunc(o);r[i]+=a,e[n]-=a*s}function Y4e(t,e){W4e.reduce((n,r)=>St(e[r])?n:(n&&aH(t,e,n,e,r),r),null)}class _t{constructor(e){const n=e.conversionAccuracy==="longterm"||!1;this.values=e.values,this.loc=e.loc||cn.create(),this.conversionAccuracy=n?"longterm":"casual",this.invalid=e.invalid||null,this.matrix=n?G4e:Q4e,this.isLuxonDuration=!0}static fromMillis(e,n){return _t.fromObject({milliseconds:e},n)}static fromObject(e,n={}){if(e==null||typeof e!="object")throw new Os(`Duration.fromObject: argument expected to be an object, got ${e===null?"null":typeof e}`);return new _t({values:i4(e,_t.normalizeUnit),loc:cn.fromObject(n),conversionAccuracy:n.conversionAccuracy})}static fromDurationLike(e){if(of(e))return _t.fromMillis(e);if(_t.isDuration(e))return e;if(typeof e=="object")return _t.fromObject(e);throw new Os(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,n){const[r]=k4e(e);return r?_t.fromObject(r,n):_t.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static fromISOTime(e,n){const[r]=M4e(e);return r?_t.fromObject(r,n):_t.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static invalid(e,n=null){if(!e)throw new Os("need to specify a reason the Duration is invalid");const r=e instanceof fo?e:new fo(e,n);if(Fn.throwOnInvalid)throw new bve(r);return new _t({invalid:r})}static normalizeUnit(e){const n={year:"years",years:"years",quarter:"quarters",quarters:"quarters",month:"months",months:"months",week:"weeks",weeks:"weeks",day:"days",days:"days",hour:"hours",hours:"hours",minute:"minutes",minutes:"minutes",second:"seconds",seconds:"seconds",millisecond:"milliseconds",milliseconds:"milliseconds"}[e&&e.toLowerCase()];if(!n)throw new hz(e);return n}static isDuration(e){return e&&e.isLuxonDuration||!1}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}toFormat(e,n={}){const r={...n,floor:n.round!==!1&&n.floor!==!1};return this.isValid?Ni.create(this.loc,r).formatDurationFromString(this,e):H4e}toHuman(e={}){const n=af.map(r=>{const i=this.values[r];return St(i)?null:this.loc.numberFormatter({style:"unit",unitDisplay:"long",...e,unit:r.slice(0,-1)}).format(i)}).filter(r=>r);return this.loc.listFormatter({type:"conjunction",style:e.listStyle||"narrow",...e}).format(n)}toObject(){return this.isValid?{...this.values}:{}}toISO(){if(!this.isValid)return null;let e="P";return this.years!==0&&(e+=this.years+"Y"),(this.months!==0||this.quarters!==0)&&(e+=this.months+this.quarters*3+"M"),this.weeks!==0&&(e+=this.weeks+"W"),this.days!==0&&(e+=this.days+"D"),(this.hours!==0||this.minutes!==0||this.seconds!==0||this.milliseconds!==0)&&(e+="T"),this.hours!==0&&(e+=this.hours+"H"),this.minutes!==0&&(e+=this.minutes+"M"),(this.seconds!==0||this.milliseconds!==0)&&(e+=jO(this.seconds+this.milliseconds/1e3,3)+"S"),e==="P"&&(e+="T0S"),e}toISOTime(e={}){if(!this.isValid)return null;const n=this.toMillis();if(n<0||n>=864e5)return null;e={suppressMilliseconds:!1,suppressSeconds:!1,includePrefix:!1,format:"extended",...e};const r=this.shiftTo("hours","minutes","seconds","milliseconds");let i=e.format==="basic"?"hhmm":"hh:mm";(!e.suppressSeconds||r.seconds!==0||r.milliseconds!==0)&&(i+=e.format==="basic"?"ss":":ss",(!e.suppressMilliseconds||r.milliseconds!==0)&&(i+=".SSS"));let s=r.toFormat(i);return e.includePrefix&&(s="T"+s),s}toJSON(){return this.toISO()}toString(){return this.toISO()}toMillis(){return this.as("milliseconds")}valueOf(){return this.toMillis()}plus(e){if(!this.isValid)return this;const n=_t.fromDurationLike(e),r={};for(const i of af)(Ud(n.values,i)||Ud(this.values,i))&&(r[i]=n.get(i)+this.get(i));return lf(this,{values:r},!0)}minus(e){if(!this.isValid)return this;const n=_t.fromDurationLike(e);return this.plus(n.negate())}mapUnits(e){if(!this.isValid)return this;const n={};for(const r of Object.keys(this.values))n[r]=kz(e(this.values[r],r));return lf(this,{values:n},!0)}get(e){return this[_t.normalizeUnit(e)]}set(e){if(!this.isValid)return this;const n={...this.values,...i4(e,_t.normalizeUnit)};return lf(this,{values:n})}reconfigure({locale:e,numberingSystem:n,conversionAccuracy:r}={}){const i=this.loc.clone({locale:e,numberingSystem:n}),s={loc:i};return r&&(s.conversionAccuracy=r),lf(this,s)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;const e=this.toObject();return Y4e(this.matrix,e),lf(this,{values:e},!0)}shiftTo(...e){if(!this.isValid)return this;if(e.length===0)return this;e=e.map(o=>_t.normalizeUnit(o));const n={},r={},i=this.toObject();let s;for(const o of af)if(e.indexOf(o)>=0){s=o;let u=0;for(const l in r)u+=this.matrix[l][o]*r[l],r[l]=0;of(i[o])&&(u+=i[o]);const a=Math.trunc(u);n[o]=a,r[o]=(u*1e3-a*1e3)/1e3;for(const l in i)af.indexOf(l)>af.indexOf(o)&&aH(this.matrix,i,l,n,o)}else of(i[o])&&(r[o]=i[o]);for(const o in r)r[o]!==0&&(n[s]+=o===s?r[o]:r[o]/this.matrix[s][o]);return lf(this,{values:n},!0).normalize()}negate(){if(!this.isValid)return this;const e={};for(const n of Object.keys(this.values))e[n]=this.values[n]===0?0:-this.values[n];return lf(this,{values:e},!0)}get years(){return this.isValid?this.values.years||0:NaN}get quarters(){return this.isValid?this.values.quarters||0:NaN}get months(){return this.isValid?this.values.months||0:NaN}get weeks(){return this.isValid?this.values.weeks||0:NaN}get days(){return this.isValid?this.values.days||0:NaN}get hours(){return this.isValid?this.values.hours||0:NaN}get minutes(){return this.isValid?this.values.minutes||0:NaN}get seconds(){return this.isValid?this.values.seconds||0:NaN}get milliseconds(){return this.isValid?this.values.milliseconds||0:NaN}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}equals(e){if(!this.isValid||!e.isValid||!this.loc.equals(e.loc))return!1;function n(r,i){return r===void 0||r===0?i===void 0||i===0:r===i}for(const r of af)if(!n(this.values[r],e.values[r]))return!1;return!0}}const xg="Invalid Interval";function X4e(t,e){return!t||!t.isValid?fn.invalid("missing or invalid start"):!e||!e.isValid?fn.invalid("missing or invalid end"):e<t?fn.invalid("end before start",`The end of an interval must be after its start, but you had start=${t.toISO()} and end=${e.toISO()}`):null}class fn{constructor(e){this.s=e.start,this.e=e.end,this.invalid=e.invalid||null,this.isLuxonInterval=!0}static invalid(e,n=null){if(!e)throw new Os("need to specify a reason the Interval is invalid");const r=e instanceof fo?e:new fo(e,n);if(Fn.throwOnInvalid)throw new Cve(r);return new fn({invalid:r})}static fromDateTimes(e,n){const r=gg(e),i=gg(n),s=X4e(r,i);return s??new fn({start:r,end:i})}static after(e,n){const r=_t.fromDurationLike(n),i=gg(e);return fn.fromDateTimes(i,i.plus(r))}static before(e,n){const r=_t.fromDurationLike(n),i=gg(e);return fn.fromDateTimes(i.minus(r),i)}static fromISO(e,n){const[r,i]=(e||"").split("/",2);if(r&&i){let s,o;try{s=ot.fromISO(r,n),o=s.isValid}catch{o=!1}let u,a;try{u=ot.fromISO(i,n),a=u.isValid}catch{a=!1}if(o&&a)return fn.fromDateTimes(s,u);if(o){const l=_t.fromISO(i,n);if(l.isValid)return fn.after(s,l)}else if(a){const l=_t.fromISO(r,n);if(l.isValid)return fn.before(u,l)}}return fn.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static isInterval(e){return e&&e.isLuxonInterval||!1}get start(){return this.isValid?this.s:null}get end(){return this.isValid?this.e:null}get isValid(){return this.invalidReason===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}length(e="milliseconds"){return this.isValid?this.toDuration(e).get(e):NaN}count(e="milliseconds"){if(!this.isValid)return NaN;const n=this.start.startOf(e),r=this.end.startOf(e);return Math.floor(r.diff(n,e).get(e))+1}hasSame(e){return this.isValid?this.isEmpty()||this.e.minus(1).hasSame(this.s,e):!1}isEmpty(){return this.s.valueOf()===this.e.valueOf()}isAfter(e){return this.isValid?this.s>e:!1}isBefore(e){return this.isValid?this.e<=e:!1}contains(e){return this.isValid?this.s<=e&&this.e>e:!1}set({start:e,end:n}={}){return this.isValid?fn.fromDateTimes(e||this.s,n||this.e):this}splitAt(...e){if(!this.isValid)return[];const n=e.map(gg).filter(o=>this.contains(o)).sort(),r=[];let{s:i}=this,s=0;for(;i<this.e;){const o=n[s]||this.e,u=+o>+this.e?this.e:o;r.push(fn.fromDateTimes(i,u)),i=u,s+=1}return r}splitBy(e){const n=_t.fromDurationLike(e);if(!this.isValid||!n.isValid||n.as("milliseconds")===0)return[];let{s:r}=this,i=1,s;const o=[];for(;r<this.e;){const u=this.start.plus(n.mapUnits(a=>a*i));s=+u>+this.e?this.e:u,o.push(fn.fromDateTimes(r,s)),r=s,i+=1}return o}divideEqually(e){return this.isValid?this.splitBy(this.length()/e).slice(0,e):[]}overlaps(e){return this.e>e.s&&this.s<e.e}abutsStart(e){return this.isValid?+this.e==+e.s:!1}abutsEnd(e){return this.isValid?+e.e==+this.s:!1}engulfs(e){return this.isValid?this.s<=e.s&&this.e>=e.e:!1}equals(e){return!this.isValid||!e.isValid?!1:this.s.equals(e.s)&&this.e.equals(e.e)}intersection(e){if(!this.isValid)return this;const n=this.s>e.s?this.s:e.s,r=this.e<e.e?this.e:e.e;return n>=r?null:fn.fromDateTimes(n,r)}union(e){if(!this.isValid)return this;const n=this.s<e.s?this.s:e.s,r=this.e>e.e?this.e:e.e;return fn.fromDateTimes(n,r)}static merge(e){const[n,r]=e.sort((i,s)=>i.s-s.s).reduce(([i,s],o)=>s?s.overlaps(o)||s.abutsStart(o)?[i,s.union(o)]:[i.concat([s]),o]:[i,o],[[],null]);return r&&n.push(r),n}static xor(e){let n=null,r=0;const i=[],s=e.map(a=>[{time:a.s,type:"s"},{time:a.e,type:"e"}]),o=Array.prototype.concat(...s),u=o.sort((a,l)=>a.time-l.time);for(const a of u)r+=a.type==="s"?1:-1,r===1?n=a.time:(n&&+n!=+a.time&&i.push(fn.fromDateTimes(n,a.time)),n=null);return fn.merge(i)}difference(...e){return fn.xor([this].concat(e)).map(n=>this.intersection(n)).filter(n=>n&&!n.isEmpty())}toString(){return this.isValid?`[${this.s.toISO()} – ${this.e.toISO()})`:xg}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:xg}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:xg}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:xg}toFormat(e,{separator:n=" – "}={}){return this.isValid?`${this.s.toFormat(e)}${n}${this.e.toFormat(e)}`:xg}toDuration(e,n){return this.isValid?this.e.diff(this.s,e,n):_t.invalid(this.invalidReason)}mapEndpoints(e){return fn.fromDateTimes(e(this.s),e(this.e))}}let dg=class{static hasDST(e=Fn.defaultZone){const n=ot.now().setZone(e).set({month:12});return!e.isUniversal&&n.offset!==n.set({month:6}).offset}static isValidIANAZone(e){return du.isValidZone(e)}static normalizeZone(e){return Zl(e,Fn.defaultZone)}static months(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||cn.create(n,r,s)).months(e)}static monthsFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||cn.create(n,r,s)).months(e,!0)}static weekdays(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null}={}){return(i||cn.create(n,r,null)).weekdays(e)}static weekdaysFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null}={}){return(i||cn.create(n,r,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return cn.create(e).meridiems()}static eras(e="short",{locale:n=null}={}){return cn.create(n,null,"gregory").eras(e)}static features(){return{relative:Iz()}}};function lH(t,e){const n=i=>i.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),r=n(e)-n(t);return Math.floor(_t.fromMillis(r).as("days"))}function K4e(t,e,n){const r=[["years",(u,a)=>a.year-u.year],["quarters",(u,a)=>a.quarter-u.quarter],["months",(u,a)=>a.month-u.month+(a.year-u.year)*12],["weeks",(u,a)=>{const l=lH(u,a);return(l-l%7)/7}],["days",lH]],i={};let s,o;for(const[u,a]of r)if(n.indexOf(u)>=0){s=u;let l=a(t,e);o=t.plus({[u]:l}),o>e?(t=t.plus({[u]:l-1}),l-=1):t=o,i[u]=l}return[t,i,o,s]}function J4e(t,e,n,r){let[i,s,o,u]=K4e(t,e,n);const a=e-i,l=n.filter(f=>["hours","minutes","seconds","milliseconds"].indexOf(f)>=0);l.length===0&&(o<e&&(o=i.plus({[u]:1})),o!==i&&(s[u]=(s[u]||0)+a/(o-i)));const c=_t.fromObject(s,r);return l.length>0?_t.fromMillis(a,r).shiftTo(...l).plus(c):c}const JO={arab:"[٠-٩]",arabext:"[۰-۹]",bali:"[᭐-᭙]",beng:"[০-৯]",deva:"[०-९]",fullwide:"[0-9]",gujr:"[૦-૯]",hanidec:"[〇|一|二|三|四|五|六|七|八|九]",khmr:"[០-៩]",knda:"[೦-೯]",laoo:"[໐-໙]",limb:"[᥆-᥏]",mlym:"[൦-൯]",mong:"[᠐-᠙]",mymr:"[၀-၉]",orya:"[୦-୯]",tamldec:"[௦-௯]",telu:"[౦-౯]",thai:"[๐-๙]",tibt:"[༠-༩]",latn:"\\d"},cH={arab:[1632,1641],arabext:[1776,1785],bali:[6992,7001],beng:[2534,2543],deva:[2406,2415],fullwide:[65296,65303],gujr:[2790,2799],khmr:[6112,6121],knda:[3302,3311],laoo:[3792,3801],limb:[6470,6479],mlym:[3430,3439],mong:[6160,6169],mymr:[4160,4169],orya:[2918,2927],tamldec:[3046,3055],telu:[3174,3183],thai:[3664,3673],tibt:[3872,3881]},Z4e=JO.hanidec.replace(/[\[|\]]/g,"").split("");function eSe(t){let e=parseInt(t,10);if(isNaN(e)){e="";for(let n=0;n<t.length;n++){const r=t.charCodeAt(n);if(t[n].search(JO.hanidec)!==-1)e+=Z4e.indexOf(t[n]);else for(const i in cH){const[s,o]=cH[i];r>=s&&r<=o&&(e+=r-s)}}return parseInt(e,10)}else return e}function xo({numberingSystem:t},e=""){return new RegExp(`${JO[t||"latn"]}${e}`)}const tSe="missing Intl.DateTimeFormat.formatToParts support";function It(t,e=n=>n){return{regex:t,deser:([n])=>e(eSe(n))}}const fH="[ ]",xH=new RegExp(fH,"g");function nSe(t){return t.replace(/\./g,"\\.?").replace(xH,fH)}function dH(t){return t.replace(/\./g,"").replace(xH," ").toLowerCase()}function ho(t,e){return t===null?null:{regex:RegExp(t.map(nSe).join("|")),deser:([n])=>t.findIndex(r=>dH(n)===dH(r))+e}}function hH(t,e){return{regex:t,deser:([,n,r])=>r4(n,r),groups:e}}function ZO(t){return{regex:t,deser:([e])=>e}}function rSe(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function iSe(t,e){const n=xo(e),r=xo(e,"{2}"),i=xo(e,"{3}"),s=xo(e,"{4}"),o=xo(e,"{6}"),u=xo(e,"{1,2}"),a=xo(e,"{1,3}"),l=xo(e,"{1,6}"),c=xo(e,"{1,9}"),f=xo(e,"{2,4}"),x=xo(e,"{4,6}"),h=g=>({regex:RegExp(rSe(g.val)),deser:([y])=>y,literal:!0}),m=(g=>{if(t.literal)return h(g);switch(g.val){case"G":return ho(e.eras("short",!1),0);case"GG":return ho(e.eras("long",!1),0);case"y":return It(l);case"yy":return It(f,qO);case"yyyy":return It(s);case"yyyyy":return It(x);case"yyyyyy":return It(o);case"M":return It(u);case"MM":return It(r);case"MMM":return ho(e.months("short",!0,!1),1);case"MMMM":return ho(e.months("long",!0,!1),1);case"L":return It(u);case"LL":return It(r);case"LLL":return ho(e.months("short",!1,!1),1);case"LLLL":return ho(e.months("long",!1,!1),1);case"d":return It(u);case"dd":return It(r);case"o":return It(a);case"ooo":return It(i);case"HH":return It(r);case"H":return It(u);case"hh":return It(r);case"h":return It(u);case"mm":return It(r);case"m":return It(u);case"q":return It(u);case"qq":return It(r);case"s":return It(u);case"ss":return It(r);case"S":return It(a);case"SSS":return It(i);case"u":return ZO(c);case"uu":return ZO(u);case"uuu":return It(n);case"a":return ho(e.meridiems(),0);case"kkkk":return It(s);case"kk":return It(f,qO);case"W":return It(u);case"WW":return It(r);case"E":case"c":return It(n);case"EEE":return ho(e.weekdays("short",!1,!1),1);case"EEEE":return ho(e.weekdays("long",!1,!1),1);case"ccc":return ho(e.weekdays("short",!0,!1),1);case"cccc":return ho(e.weekdays("long",!0,!1),1);case"Z":case"ZZ":return hH(new RegExp(`([+-]${u.source})(?::(${r.source}))?`),2);case"ZZZ":return hH(new RegExp(`([+-]${u.source})(${r.source})?`),2);case"z":return ZO(/[a-z_+-/]{1,256}?/i);default:return h(g)}})(t)||{invalidReason:tSe};return m.token=t,m}const sSe={year:{"2-digit":"yy",numeric:"yyyyy"},month:{numeric:"M","2-digit":"MM",short:"MMM",long:"MMMM"},day:{numeric:"d","2-digit":"dd"},weekday:{short:"EEE",long:"EEEE"},dayperiod:"a",dayPeriod:"a",hour:{numeric:"h","2-digit":"hh"},minute:{numeric:"m","2-digit":"mm"},second:{numeric:"s","2-digit":"ss"}};function oSe(t,e,n){const{type:r,value:i}=t;if(r==="literal")return{literal:!0,val:i};const s=n[r];let o=sSe[r];if(typeof o=="object"&&(o=o[s]),o)return{literal:!1,val:o}}function uSe(t){return[`^${t.map(n=>n.regex).reduce((n,r)=>`${n}(${r.source})`,"")}$`,t]}function aSe(t,e,n){const r=t.match(e);if(r){const i={};let s=1;for(const o in n)if(Ud(n,o)){const u=n[o],a=u.groups?u.groups+1:1;!u.literal&&u.token&&(i[u.token.val[0]]=u.deser(r.slice(s,s+a))),s+=a}return[r,i]}else return[r,{}]}function lSe(t){const e=s=>{switch(s){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":case"H":return"hour";case"d":return"day";case"o":return"ordinal";case"L":case"M":return"month";case"y":return"year";case"E":case"c":return"weekday";case"W":return"weekNumber";case"k":return"weekYear";case"q":return"quarter";default:return null}};let n=null,r;return St(t.z)||(n=du.create(t.z)),St(t.Z)||(n||(n=new Pr(t.Z)),r=t.Z),St(t.q)||(t.M=(t.q-1)*3+1),St(t.h)||(t.h<12&&t.a===1?t.h+=12:t.h===12&&t.a===0&&(t.h=0)),t.G===0&&t.y&&(t.y=-t.y),St(t.u)||(t.S=MO(t.u)),[Object.keys(t).reduce((s,o)=>{const u=e(o);return u&&(s[u]=t[o]),s},{}),n,r]}let e7=null;function cSe(){return e7||(e7=ot.fromMillis(1555555555555)),e7}function fSe(t,e){if(t.literal)return t;const n=Ni.macroTokenToFormatOpts(t.val);if(!n)return t;const s=Ni.create(e,n).formatDateTimeParts(cSe()).map(o=>oSe(o,e,n));return s.includes(void 0)?t:s}function xSe(t,e){return Array.prototype.concat(...t.map(n=>fSe(n,e)))}function pH(t,e,n){const r=xSe(Ni.parseFormat(n),t),i=r.map(o=>iSe(o,t)),s=i.find(o=>o.invalidReason);if(s)return{input:e,tokens:r,invalidReason:s.invalidReason};{const[o,u]=uSe(i),a=RegExp(o,"i"),[l,c]=aSe(e,a,u),[f,x,h]=c?lSe(c):[null,null,void 0];if(Ud(c,"a")&&Ud(c,"H"))throw new sg("Can't include meridiem when specifying 24-hour format");return{input:e,tokens:r,regex:a,rawMatches:l,matches:c,result:f,zone:x,specificOffset:h}}}function dSe(t,e,n){const{result:r,zone:i,specificOffset:s,invalidReason:o}=pH(t,e,n);return[r,i,s,o]}const gH=[0,31,59,90,120,151,181,212,243,273,304,334],mH=[0,31,60,91,121,152,182,213,244,274,305,335];function Ns(t,e){return new fo("unit out of range",`you specified ${e} (of type ${typeof e}) as a ${t}, which is invalid`)}function yH(t,e,n){const r=new Date(Date.UTC(t,e-1,n));t<100&&t>=0&&r.setUTCFullYear(r.getUTCFullYear()-1900);const i=r.getUTCDay();return i===0?7:i}function EH(t,e,n){return n+(og(t)?mH:gH)[e-1]}function AH(t,e){const n=og(t)?mH:gH,r=n.findIndex(s=>s<e),i=e-n[r];return{month:r+1,day:i}}function t7(t){const{year:e,month:n,day:r}=t,i=EH(e,n,r),s=yH(e,n,r);let o=Math.floor((i-s+10)/7),u;return o<1?(u=e-1,o=n4(u)):o>n4(e)?(u=e+1,o=1):u=e,{weekYear:u,weekNumber:o,weekday:s,...s4(t)}}function vH(t){const{weekYear:e,weekNumber:n,weekday:r}=t,i=yH(e,1,4),s=ug(e);let o=n*7+r-i-3,u;o<1?(u=e-1,o+=ug(u)):o>s?(u=e+1,o-=ug(e)):u=e;const{month:a,day:l}=AH(u,o);return{year:u,month:a,day:l,...s4(t)}}function n7(t){const{year:e,month:n,day:r}=t,i=EH(e,n,r);return{year:e,ordinal:i,...s4(t)}}function SH(t){const{year:e,ordinal:n}=t,{month:r,day:i}=AH(e,n);return{year:e,month:r,day:i,...s4(t)}}function hSe(t){const e=e4(t.weekYear),n=Ra(t.weekNumber,1,n4(t.weekYear)),r=Ra(t.weekday,1,7);return e?n?r?!1:Ns("weekday",t.weekday):Ns("week",t.week):Ns("weekYear",t.weekYear)}function pSe(t){const e=e4(t.year),n=Ra(t.ordinal,1,ug(t.year));return e?n?!1:Ns("ordinal",t.ordinal):Ns("year",t.year)}function _H(t){const e=e4(t.year),n=Ra(t.month,1,12),r=Ra(t.day,1,t4(t.year,t.month));return e?n?r?!1:Ns("day",t.day):Ns("month",t.month):Ns("year",t.year)}function CH(t){const{hour:e,minute:n,second:r,millisecond:i}=t,s=Ra(e,0,23)||e===24&&n===0&&r===0&&i===0,o=Ra(n,0,59),u=Ra(r,0,59),a=Ra(i,0,999);return s?o?u?a?!1:Ns("millisecond",i):Ns("second",r):Ns("minute",n):Ns("hour",e)}const r7="Invalid DateTime",bH=864e13;function c4(t){return new fo("unsupported zone",`the zone "${t.name}" is not supported`)}function i7(t){return t.weekData===null&&(t.weekData=t7(t.c)),t.weekData}function hg(t,e){const n={ts:t.ts,zone:t.zone,c:t.c,o:t.o,loc:t.loc,invalid:t.invalid};return new ot({...n,...e,old:n})}function TH(t,e,n){let r=t-e*60*1e3;const i=n.offset(r);if(e===i)return[r,e];r-=(i-e)*60*1e3;const s=n.offset(r);return i===s?[r,i]:[t-Math.min(i,s)*60*1e3,Math.max(i,s)]}function RH(t,e){t+=e*60*1e3;const n=new Date(t);return{year:n.getUTCFullYear(),month:n.getUTCMonth()+1,day:n.getUTCDate(),hour:n.getUTCHours(),minute:n.getUTCMinutes(),second:n.getUTCSeconds(),millisecond:n.getUTCMilliseconds()}}function f4(t,e,n){return TH(UO(t),e,n)}function OH(t,e){const n=t.o,r=t.c.year+Math.trunc(e.years),i=t.c.month+Math.trunc(e.months)+Math.trunc(e.quarters)*3,s={...t.c,year:r,month:i,day:Math.min(t.c.day,t4(r,i))+Math.trunc(e.days)+Math.trunc(e.weeks)*7},o=_t.fromObject({years:e.years-Math.trunc(e.years),quarters:e.quarters-Math.trunc(e.quarters),months:e.months-Math.trunc(e.months),weeks:e.weeks-Math.trunc(e.weeks),days:e.days-Math.trunc(e.days),hours:e.hours,minutes:e.minutes,seconds:e.seconds,milliseconds:e.milliseconds}).as("milliseconds"),u=UO(s);let[a,l]=TH(u,n,t.zone);return o!==0&&(a+=o,l=t.zone.offset(a)),{ts:a,o:l}}function pg(t,e,n,r,i,s){const{setZone:o,zone:u}=n;if(t&&Object.keys(t).length!==0){const a=e||u,l=ot.fromObject(t,{...n,zone:a,specificOffset:s});return o?l:l.setZone(u)}else return ot.invalid(new fo("unparsable",`the input "${i}" can't be parsed as ${r}`))}function x4(t,e,n=!0){return t.isValid?Ni.create(cn.create("en-US"),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(t,e):null}function s7(t,e){const n=t.c.year>9999||t.c.year<0;let r="";return n&&t.c.year>=0&&(r+="+"),r+=wn(t.c.year,n?6:4),e?(r+="-",r+=wn(t.c.month),r+="-",r+=wn(t.c.day)):(r+=wn(t.c.month),r+=wn(t.c.day)),r}function DH(t,e,n,r,i,s){let o=wn(t.c.hour);return e?(o+=":",o+=wn(t.c.minute),(t.c.second!==0||!n)&&(o+=":")):o+=wn(t.c.minute),(t.c.second!==0||!n)&&(o+=wn(t.c.second),(t.c.millisecond!==0||!r)&&(o+=".",o+=wn(t.c.millisecond,3))),i&&(t.isOffsetFixed&&t.offset===0&&!s?o+="Z":t.o<0?(o+="-",o+=wn(Math.trunc(-t.o/60)),o+=":",o+=wn(Math.trunc(-t.o%60))):(o+="+",o+=wn(Math.trunc(t.o/60)),o+=":",o+=wn(Math.trunc(t.o%60)))),s&&(o+="["+t.zone.ianaName+"]"),o}const NH={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},gSe={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},mSe={ordinal:1,hour:0,minute:0,second:0,millisecond:0},wH=["year","month","day","hour","minute","second","millisecond"],ySe=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],ESe=["year","ordinal","hour","minute","second","millisecond"];function FH(t){const e={year:"year",years:"year",month:"month",months:"month",day:"day",days:"day",hour:"hour",hours:"hour",minute:"minute",minutes:"minute",quarter:"quarter",quarters:"quarter",second:"second",seconds:"second",millisecond:"millisecond",milliseconds:"millisecond",weekday:"weekday",weekdays:"weekday",weeknumber:"weekNumber",weeksnumber:"weekNumber",weeknumbers:"weekNumber",weekyear:"weekYear",weekyears:"weekYear",ordinal:"ordinal"}[t.toLowerCase()];if(!e)throw new hz(t);return e}function LH(t,e){const n=Zl(e.zone,Fn.defaultZone),r=cn.fromObject(e),i=Fn.now();let s,o;if(St(t.year))s=i;else{for(const l of wH)St(t[l])&&(t[l]=NH[l]);const u=_H(t)||CH(t);if(u)return ot.invalid(u);const a=n.offset(i);[s,o]=f4(t,a,n)}return new ot({ts:s,zone:n,loc:r,o})}function IH(t,e,n){const r=St(n.round)?!0:n.round,i=(o,u)=>(o=jO(o,r||n.calendary?0:2,!0),e.loc.clone(n).relFormatter(n).format(o,u)),s=o=>n.calendary?e.hasSame(t,o)?0:e.startOf(o).diff(t.startOf(o),o).get(o):e.diff(t,o).get(o);if(n.unit)return i(s(n.unit),n.unit);for(const o of n.units){const u=s(o);if(Math.abs(u)>=1)return i(u,o)}return i(t>e?-0:0,n.units[n.units.length-1])}function BH(t){let e={},n;return t.length>0&&typeof t[t.length-1]=="object"?(e=t[t.length-1],n=Array.from(t).slice(0,t.length-1)):n=Array.from(t),[e,n]}class ot{constructor(e){const n=e.zone||Fn.defaultZone;let r=e.invalid||(Number.isNaN(e.ts)?new fo("invalid input"):null)||(n.isValid?null:c4(n));this.ts=St(e.ts)?Fn.now():e.ts;let i=null,s=null;if(!r)if(e.old&&e.old.ts===this.ts&&e.old.zone.equals(n))[i,s]=[e.old.c,e.old.o];else{const u=n.offset(this.ts);i=RH(this.ts,u),r=Number.isNaN(i.year)?new fo("invalid input"):null,i=r?null:i,s=r?null:u}this._zone=n,this.loc=e.loc||cn.create(),this.invalid=r,this.weekData=null,this.c=i,this.o=s,this.isLuxonDateTime=!0}static now(){return new ot({})}static local(){const[e,n]=BH(arguments),[r,i,s,o,u,a,l]=n;return LH({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static utc(){const[e,n]=BH(arguments),[r,i,s,o,u,a,l]=n;return e.zone=Pr.utcInstance,LH({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static fromJSDate(e,n={}){const r=Dve(e)?e.valueOf():NaN;if(Number.isNaN(r))return ot.invalid("invalid input");const i=Zl(n.zone,Fn.defaultZone);return i.isValid?new ot({ts:r,zone:i,loc:cn.fromObject(n)}):ot.invalid(c4(i))}static fromMillis(e,n={}){if(of(e))return e<-bH||e>bH?ot.invalid("Timestamp out of range"):new ot({ts:e,zone:Zl(n.zone,Fn.defaultZone),loc:cn.fromObject(n)});throw new Os(`fromMillis requires a numerical input, but received a ${typeof e} with value ${e}`)}static fromSeconds(e,n={}){if(of(e))return new ot({ts:e*1e3,zone:Zl(n.zone,Fn.defaultZone),loc:cn.fromObject(n)});throw new Os("fromSeconds requires a numerical input")}static fromObject(e,n={}){e=e||{};const r=Zl(n.zone,Fn.defaultZone);if(!r.isValid)return ot.invalid(c4(r));const i=Fn.now(),s=St(n.specificOffset)?r.offset(i):n.specificOffset,o=i4(e,FH),u=!St(o.ordinal),a=!St(o.year),l=!St(o.month)||!St(o.day),c=a||l,f=o.weekYear||o.weekNumber,x=cn.fromObject(n);if((c||u)&&f)throw new sg("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(l&&u)throw new sg("Can't mix ordinal dates with month/day");const h=f||o.weekday&&!c;let p,m,g=RH(i,s);h?(p=ySe,m=gSe,g=t7(g)):u?(p=ESe,m=mSe,g=n7(g)):(p=wH,m=NH);let y=!1;for(const b of p){const R=o[b];St(R)?y?o[b]=m[b]:o[b]=g[b]:y=!0}const E=h?hSe(o):u?pSe(o):_H(o),A=E||CH(o);if(A)return ot.invalid(A);const v=h?vH(o):u?SH(o):o,[S,_]=f4(v,s,r),C=new ot({ts:S,zone:r,o:_,loc:x});return o.weekday&&c&&e.weekday!==C.weekday?ot.invalid("mismatched weekday",`you can't specify both a weekday of ${o.weekday} and a date of ${C.toISO()}`):C}static fromISO(e,n={}){const[r,i]=I4e(e);return pg(r,i,n,"ISO 8601",e)}static fromRFC2822(e,n={}){const[r,i]=B4e(e);return pg(r,i,n,"RFC 2822",e)}static fromHTTP(e,n={}){const[r,i]=$4e(e);return pg(r,i,n,"HTTP",n)}static fromFormat(e,n,r={}){if(St(e)||St(n))throw new Os("fromFormat requires an input string and a format");const{locale:i=null,numberingSystem:s=null}=r,o=cn.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0}),[u,a,l,c]=dSe(o,e,n);return c?ot.invalid(c):pg(u,a,r,`format ${n}`,e,l)}static fromString(e,n,r={}){return ot.fromFormat(e,n,r)}static fromSQL(e,n={}){const[r,i]=z4e(e);return pg(r,i,n,"SQL",e)}static invalid(e,n=null){if(!e)throw new Os("need to specify a reason the DateTime is invalid");const r=e instanceof fo?e:new fo(e,n);if(Fn.throwOnInvalid)throw new _ve(r);return new ot({invalid:r})}static isDateTime(e){return e&&e.isLuxonDateTime||!1}get(e){return this[e]}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}get outputCalendar(){return this.isValid?this.loc.outputCalendar:null}get zone(){return this._zone}get zoneName(){return this.isValid?this.zone.name:null}get year(){return this.isValid?this.c.year:NaN}get quarter(){return this.isValid?Math.ceil(this.c.month/3):NaN}get month(){return this.isValid?this.c.month:NaN}get day(){return this.isValid?this.c.day:NaN}get hour(){return this.isValid?this.c.hour:NaN}get minute(){return this.isValid?this.c.minute:NaN}get second(){return this.isValid?this.c.second:NaN}get millisecond(){return this.isValid?this.c.millisecond:NaN}get weekYear(){return this.isValid?i7(this).weekYear:NaN}get weekNumber(){return this.isValid?i7(this).weekNumber:NaN}get weekday(){return this.isValid?i7(this).weekday:NaN}get ordinal(){return this.isValid?n7(this.c).ordinal:NaN}get monthShort(){return this.isValid?dg.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?dg.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?dg.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?dg.weekdays("long",{locObj:this.loc})[this.weekday-1]:null}get offset(){return this.isValid?+this.o:NaN}get offsetNameShort(){return this.isValid?this.zone.offsetName(this.ts,{format:"short",locale:this.locale}):null}get offsetNameLong(){return this.isValid?this.zone.offsetName(this.ts,{format:"long",locale:this.locale}):null}get isOffsetFixed(){return this.isValid?this.zone.isUniversal:null}get isInDST(){return this.isOffsetFixed?!1:this.offset>this.set({month:1,day:1}).offset||this.offset>this.set({month:5}).offset}get isInLeapYear(){return og(this.year)}get daysInMonth(){return t4(this.year,this.month)}get daysInYear(){return this.isValid?ug(this.year):NaN}get weeksInWeekYear(){return this.isValid?n4(this.weekYear):NaN}resolvedLocaleOptions(e={}){const{locale:n,numberingSystem:r,calendar:i}=Ni.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:n,numberingSystem:r,outputCalendar:i}}toUTC(e=0,n={}){return this.setZone(Pr.instance(e),n)}toLocal(){return this.setZone(Fn.defaultZone)}setZone(e,{keepLocalTime:n=!1,keepCalendarTime:r=!1}={}){if(e=Zl(e,Fn.defaultZone),e.equals(this.zone))return this;if(e.isValid){let i=this.ts;if(n||r){const s=e.offset(this.ts),o=this.toObject();[i]=f4(o,s,e)}return hg(this,{ts:i,zone:e})}else return ot.invalid(c4(e))}reconfigure({locale:e,numberingSystem:n,outputCalendar:r}={}){const i=this.loc.clone({locale:e,numberingSystem:n,outputCalendar:r});return hg(this,{loc:i})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;const n=i4(e,FH),r=!St(n.weekYear)||!St(n.weekNumber)||!St(n.weekday),i=!St(n.ordinal),s=!St(n.year),o=!St(n.month)||!St(n.day),u=s||o,a=n.weekYear||n.weekNumber;if((u||i)&&a)throw new sg("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(o&&i)throw new sg("Can't mix ordinal dates with month/day");let l;r?l=vH({...t7(this.c),...n}):St(n.ordinal)?(l={...this.toObject(),...n},St(n.day)&&(l.day=Math.min(t4(l.year,l.month),l.day))):l=SH({...n7(this.c),...n});const[c,f]=f4(l,this.o,this.zone);return hg(this,{ts:c,o:f})}plus(e){if(!this.isValid)return this;const n=_t.fromDurationLike(e);return hg(this,OH(this,n))}minus(e){if(!this.isValid)return this;const n=_t.fromDurationLike(e).negate();return hg(this,OH(this,n))}startOf(e){if(!this.isValid)return this;const n={},r=_t.normalizeUnit(e);switch(r){case"years":n.month=1;case"quarters":case"months":n.day=1;case"weeks":case"days":n.hour=0;case"hours":n.minute=0;case"minutes":n.second=0;case"seconds":n.millisecond=0;break}if(r==="weeks"&&(n.weekday=1),r==="quarters"){const i=Math.ceil(this.month/3);n.month=(i-1)*3+1}return this.set(n)}endOf(e){return this.isValid?this.plus({[e]:1}).startOf(e).minus(1):this}toFormat(e,n={}){return this.isValid?Ni.create(this.loc.redefaultToEN(n)).formatDateTimeFromString(this,e):r7}toLocaleString(e=PO,n={}){return this.isValid?Ni.create(this.loc.clone(n),e).formatDateTime(this):r7}toLocaleParts(e={}){return this.isValid?Ni.create(this.loc.clone(e),e).formatDateTimeParts(this):[]}toISO({format:e="extended",suppressSeconds:n=!1,suppressMilliseconds:r=!1,includeOffset:i=!0,extendedZone:s=!1}={}){if(!this.isValid)return null;const o=e==="extended";let u=s7(this,o);return u+="T",u+=DH(this,o,n,r,i,s),u}toISODate({format:e="extended"}={}){return this.isValid?s7(this,e==="extended"):null}toISOWeekDate(){return x4(this,"kkkk-'W'WW-c")}toISOTime({suppressMilliseconds:e=!1,suppressSeconds:n=!1,includeOffset:r=!0,includePrefix:i=!1,extendedZone:s=!1,format:o="extended"}={}){return this.isValid?(i?"T":"")+DH(this,o==="extended",n,e,r,s):null}toRFC2822(){return x4(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return x4(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")}toSQLDate(){return this.isValid?s7(this,!0):null}toSQLTime({includeOffset:e=!0,includeZone:n=!1,includeOffsetSpace:r=!0}={}){let i="HH:mm:ss.SSS";return(n||e)&&(r&&(i+=" "),n?i+="z":e&&(i+="ZZ")),x4(this,i,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():r7}valueOf(){return this.toMillis()}toMillis(){return this.isValid?this.ts:NaN}toSeconds(){return this.isValid?this.ts/1e3:NaN}toUnixInteger(){return this.isValid?Math.floor(this.ts/1e3):NaN}toJSON(){return this.toISO()}toBSON(){return this.toJSDate()}toObject(e={}){if(!this.isValid)return{};const n={...this.c};return e.includeConfig&&(n.outputCalendar=this.outputCalendar,n.numberingSystem=this.loc.numberingSystem,n.locale=this.loc.locale),n}toJSDate(){return new Date(this.isValid?this.ts:NaN)}diff(e,n="milliseconds",r={}){if(!this.isValid||!e.isValid)return _t.invalid("created by diffing an invalid DateTime");const i={locale:this.locale,numberingSystem:this.numberingSystem,...r},s=Nve(n).map(_t.normalizeUnit),o=e.valueOf()>this.valueOf(),u=o?this:e,a=o?e:this,l=J4e(u,a,s,i);return o?l.negate():l}diffNow(e="milliseconds",n={}){return this.diff(ot.now(),e,n)}until(e){return this.isValid?fn.fromDateTimes(this,e):this}hasSame(e,n){if(!this.isValid)return!1;const r=e.valueOf(),i=this.setZone(e.zone,{keepLocalTime:!0});return i.startOf(n)<=r&&r<=i.endOf(n)}equals(e){return this.isValid&&e.isValid&&this.valueOf()===e.valueOf()&&this.zone.equals(e.zone)&&this.loc.equals(e.loc)}toRelative(e={}){if(!this.isValid)return null;const n=e.base||ot.fromObject({},{zone:this.zone}),r=e.padding?this<n?-e.padding:e.padding:0;let i=["years","months","days","hours","minutes","seconds"],s=e.unit;return Array.isArray(e.unit)&&(i=e.unit,s=void 0),IH(n,this.plus(r),{...e,numeric:"always",units:i,unit:s})}toRelativeCalendar(e={}){return this.isValid?IH(e.base||ot.fromObject({},{zone:this.zone}),this,{...e,numeric:"auto",units:["years","months","days"],calendary:!0}):null}static min(...e){if(!e.every(ot.isDateTime))throw new Os("min requires all arguments be DateTimes");return Bz(e,n=>n.valueOf(),Math.min)}static max(...e){if(!e.every(ot.isDateTime))throw new Os("max requires all arguments be DateTimes");return Bz(e,n=>n.valueOf(),Math.max)}static fromFormatExplain(e,n,r={}){const{locale:i=null,numberingSystem:s=null}=r,o=cn.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0});return pH(o,e,n)}static fromStringExplain(e,n,r={}){return ot.fromFormatExplain(e,n,r)}static get DATE_SHORT(){return PO}static get DATE_MED(){return pz}static get DATE_MED_WITH_WEEKDAY(){return Tve}static get DATE_FULL(){return gz}static get DATE_HUGE(){return mz}static get TIME_SIMPLE(){return yz}static get TIME_WITH_SECONDS(){return Ez}static get TIME_WITH_SHORT_OFFSET(){return Az}static get TIME_WITH_LONG_OFFSET(){return vz}static get TIME_24_SIMPLE(){return Sz}static get TIME_24_WITH_SECONDS(){return _z}static get TIME_24_WITH_SHORT_OFFSET(){return Cz}static get TIME_24_WITH_LONG_OFFSET(){return bz}static get DATETIME_SHORT(){return Tz}static get DATETIME_SHORT_WITH_SECONDS(){return Rz}static get DATETIME_MED(){return Oz}static get DATETIME_MED_WITH_SECONDS(){return Dz}static get DATETIME_MED_WITH_WEEKDAY(){return Rve}static get DATETIME_FULL(){return Nz}static get DATETIME_FULL_WITH_SECONDS(){return wz}static get DATETIME_HUGE(){return Fz}static get DATETIME_HUGE_WITH_SECONDS(){return Lz}}function gg(t){if(ot.isDateTime(t))return t;if(t&&t.valueOf&&of(t.valueOf()))return ot.fromJSDate(t);if(t&&typeof t=="object")return ot.fromObject(t);throw new Os(`Unknown datetime argument: ${t}, of type ${typeof t}`)}const ASe="2.5.2";var vSe=Di.DateTime=ot;Di.Duration=_t,Di.FixedOffsetZone=Pr,Di.IANAZone=du,Di.Info=dg,Di.Interval=fn,Di.InvalidZone=Wz,Di.Settings=Fn,Di.SystemZone=o4,Di.VERSION=ASe,Di.Zone=qd,Object.defineProperty(Zn,"__esModule",{value:!0}),Zn.LiteralYear=Zn.LiteralQuarter=Zn.LiteralMonth=Zn.LiteralWeek=Zn.LiteralDay=Zn.LiteralHour=Zn.LiteralTimestamp=Zn.TimeFormatError=void 0;const e0=Di,SSe=ce,_Se=Ql,$H=kd,o7=dt;class CSe extends Error{}Zn.TimeFormatError=CSe;function cf(t,e){const n=t.slice(1);if(e){const r=n.match(/\[[^\]]+]$/);if(r)return{tzSpec:r[0].slice(1,-1),text:n.slice(0,-r[0].length)}}return{text:n}}const kH="yyyy",PH=`${kH}-LL`,ws=`${PH}-dd`,MH=`${ws} HH`,jH=`${MH}:mm`,u7=`${jH}:ss`;class UH extends o7.ExpressionDef{constructor(e,n,r){super(),this.units=n,this.timeType=r,this.literalPart=e.text,e.tzSpec&&(this.timeZone=e.tzSpec)}makeLiteral(e,n){const r={node:"timeLiteral",literal:e,dataType:n};return this.timeZone&&(r.timezone=this.timeZone),r}makeValue(e,n){const r=this.makeLiteral(e,n),i="scalar",s=r;return this.units?{dataType:n,expressionType:i,value:s,timeframe:this.units,evalSpace:"literal"}:{dataType:n,expressionType:i,value:s,evalSpace:"literal"}}getExpression(e){return this.makeValue(this.literalPart,this.timeType)}getNext(){if(this.nextLit)return this.makeValue(this.nextLit,this.timeType)}granular(){return this.nextLit!==void 0}}class a7 extends UH{constructor(e,n){super(e,n,"timestamp"),this.elementType="literal:timestamp"}static parse(e){let n;const r=cf(e,!0);e=r.text,e[10]==="T"&&(e=e.slice(0,10)+" "+e.slice(11),r.text=e);const i=e.match(/^([^.,]+)[,.](\d+)$/);i&&(e=i[1]);let s=e0.DateTime.fromFormat(e,u7);if(s.isValid)return new a7(r,n);if(s=e0.DateTime.fromFormat(e,jH),s.isValid){r.text=r.text+":00",n="minute";const o=s.plus({minute:1}).toFormat(u7);return new l7(r,n,"timestamp",o)}}}Zn.LiteralTimestamp=a7;class l7 extends UH{constructor(e,n,r,i){super(e,n,r),this.nextLit=i,this.elementType="granularTimeLiteral"}apply(e,n,r){let i=this.getExpression(e),s=this.getNext();if(s){const o=r.getExpression(e);if(o.dataType==="timestamp"){const u=(0,o7.getMorphicValue)(i,"timestamp"),a=(0,o7.getMorphicValue)(s,"timestamp");if(u&&a)i=u,s=a;else return super.apply(e,n,r)}if((0,SSe.isTimeFieldType)(o.dataType)){const u=o.dataType;return new _Se.Range(new $H.ExprTime(u,i.value),new $H.ExprTime(u,s.value)).apply(e,n,r)}}return super.apply(e,n,r)}}class c7 extends l7{constructor(e,n){super(e,"hour","timestamp",n),this.elementType="literal:hour"}static parse(e){const n=cf(e,!1);let r=n.text;const i=e0.DateTime.fromFormat(n.text,MH);if(i.isValid)return n.text=n.text+":00:00",r=i.plus({hour:1}).toFormat(u7),new c7(n,r)}}Zn.LiteralHour=c7;class mg extends l7{constructor(e,n,r){super(e,n,"date",r)}getExpression(e){const n=this.makeValue(this.literalPart,"date"),r=this.makeLiteral(`${this.literalPart} 00:00:00`,"timestamp");return{...n,morphic:{timestamp:r},evalSpace:"literal"}}getNext(){const e=this.makeValue(this.nextLit,"date"),n=this.makeLiteral(`${this.nextLit} 00:00:00`,"timestamp");return{...e,morphic:{timestamp:n}}}}class f7 extends mg{constructor(e,n){super(e,"day",n),this.elementType="literal:day"}static parse(e){const n=cf(e,!1);let r=n.text;const i=e0.DateTime.fromFormat(n.text,ws);if(i.isValid)return r=i.plus({day:1}).toFormat(ws),new f7(n,r)}}Zn.LiteralDay=f7;class x7 extends mg{constructor(e,n){super(e,"week",n),this.elementType="literal:week"}static parse(e){const n=cf(e,!1);let r=n.text;const i=n.text.slice(0,10),s=e0.DateTime.fromFormat(i,ws);if(s.isValid&&s.weekday===7){const u=s.plus({days:7});return n.text=s.toFormat(ws),r=u.toFormat(ws),new x7(n,r)}}}Zn.LiteralWeek=x7;class d7 extends mg{constructor(e,n){super(e,"month",n),this.elementType="literal:month"}static parse(e){const n=cf(e,!1);let r=n.text;const i=e0.DateTime.fromFormat(n.text,PH);if(i.isValid){const s=i.plus({months:1});return n.text=i.toFormat(ws),r=s.toFormat(ws),new d7(n,r)}}}Zn.LiteralMonth=d7;class h7 extends mg{constructor(e,n){super(e,"quarter",n),this.elementType="literal:quarter"}static parse(e){const n=cf(e,!1);let r=n.text;const i=n.text.match(/(^\d{4})-[qQ](\d)$/);if(i){const s=Number.parseInt(i[2])-1;let o=e0.DateTime.fromFormat(i[1],"yyyy");s>0&&(o=o.plus({quarters:s}));const u=o.plus({quarter:1});return n.text=o.toFormat(ws),r=u.toFormat(ws),new h7(n,r)}}}Zn.LiteralQuarter=h7;class p7 extends mg{constructor(e,n){super(e,"year",n),this.elementType="literal:year"}static parse(e){const n=cf(e,!1);let r=n.text;const i=e0.DateTime.fromFormat(n.text,kH);if(i.isValid){const s=i.plus({year:1});return n.text=i.toFormat(ws),r=s.toFormat(ws),new p7(n,r)}}}Zn.LiteralYear=p7;var d4={};Object.defineProperty(d4,"__esModule",{value:!0}),d4.PartialCompare=void 0;const bSe=Jn,TSe=dt;class RSe extends TSe.ExpressionDef{constructor(e,n){super({right:n}),this.op=e,this.right=n,this.elementType="<=> a"}granular(){return this.right.granular()}apply(e,n,r){return this.right.apply(e,this.op,r)}requestExpression(e){}getExpression(e){return this.log("Partial comparison does not have a value"),(0,bSe.errorFor)("no value for partial compare")}}d4.PartialCompare=RSe;var Yd={};Object.defineProperty(Yd,"__esModule",{value:!0}),Yd.PickWhen=Yd.Pick=void 0;const hu=ce,t0=Jn,po=sn,OSe=dt,DSe=Ge;function h4(t,e){return t===void 0||t.dataType==="null"||t.dataType==="error"?e:t}class NSe extends OSe.ExpressionDef{constructor(e,n){super({choices:e}),this.choices=e,this.elsePick=n,this.elementType="pick",this.has({elsePick:n})}requestExpression(e){if(this.elsePick!==void 0){for(const n of this.choices){if(n.pick===void 0)return;const r=n.when.requestExpression(e);if(r===void 0||r.dataType!=="boolean")return}return this.getExpression(e)}}apply(e,n,r){const i={node:"pick",kids:{pickWhen:[],pickThen:[],pickElse:{node:"error",message:"pick statement not complete"}}};let s,o="scalar",u="constant";for(const c of this.choices){const f=c.when.apply(e,"=",r),x=c.pick?c.pick.getExpression(e):r.getExpression(e);if(o=(0,hu.maxExpressionType)(o,(0,hu.maxExpressionType)(f.expressionType,x.expressionType)),u=(0,hu.mergeEvalSpaces)(u,f.evalSpace,x.evalSpace),s&&!po.FT.typeEq(s,x,!0)){const h=po.FT.inspect(x);return this.log(`pick type '${h}', expected '${s.dataType}'[pick-values-must-match]`),(0,t0.errorFor)("pick when type")}s=h4(s,x),i.kids.pickWhen.push(f.value),i.kids.pickThen.push(x.value)}const l=(this.elsePick||r).getExpression(e);if(s=h4(s,l),!po.FT.typeEq(s,l,!0)){const c=this.elsePick?"else":"pick default";return this.log(`${c} type '${po.FT.inspect(l)}', expected '${s.dataType}'[pick-values-must-match]`),(0,t0.errorFor)("pick else type")}return i.kids.pickElse=l.value,{dataType:s.dataType,expressionType:(0,hu.maxExpressionType)(o,l.expressionType),evalSpace:(0,hu.mergeEvalSpaces)(u,l.evalSpace),value:i}}getExpression(e){const n={node:"pick",kids:{pickWhen:[],pickThen:[],pickElse:{node:"error",message:"pick statement not complete"}}};if(this.elsePick===void 0)return this.log("pick incomplete, missing 'else'"),(0,t0.errorFor)("no value for partial pick");const r=[];for(const a of this.choices){if(a.pick===void 0)return this.log("pick with no value can only be used with apply"),(0,t0.errorFor)("no value for partial pick");if(a.when.requestExpression(e)===void 0)return this.log("pick with partial when can only be used with apply"),(0,t0.errorFor)("partial when");r.push({pick:a.pick.getExpression(e),when:a.when.getExpression(e)})}let i,s="scalar",o="constant";for(const a of r){if(!po.FT.typeEq(a.when,po.FT.boolT))return this.log(`when expression must be boolean, not '${po.FT.inspect(a.when)}`),(0,t0.errorFor)("pick when type");if(i&&!po.FT.typeEq(i,a.pick,!0)){const l=po.FT.inspect(a.pick);return this.log(`pick type '${l}', expected '${i.dataType}'[pick-values-must-match]`),(0,t0.errorFor)("pick value type")}i=h4(i,a.pick),s=(0,hu.maxExpressionType)(s,(0,hu.maxExpressionType)(a.pick.expressionType,a.when.expressionType)),o=(0,hu.mergeEvalSpaces)(o,a.pick.evalSpace,a.when.evalSpace),n.kids.pickWhen.push(a.when.value),n.kids.pickThen.push(a.pick.value)}const u=this.elsePick.getExpression(e);return s=(0,hu.maxExpressionType)(s,u.expressionType),o=(0,hu.mergeEvalSpaces)(o,u.evalSpace),i=h4(i,u),po.FT.typeEq(i,u,!0)?(n.kids.pickElse=u.value,{dataType:i.dataType,expressionType:s,value:n,evalSpace:o}):(this.elsePick.log(`else type '${po.FT.inspect(u)}', expected '${i.dataType}'[pick-values-must-match]`),(0,t0.errorFor)("pick value type mismatch"))}}Yd.Pick=NSe;class wSe extends DSe.MalloyElement{constructor(e,n){super({when:n}),this.pick=e,this.when=n,this.elementType="pickWhen",this.has({pick:e})}}Yd.PickWhen=wSe;var p4={};Object.defineProperty(p4,"__esModule",{value:!0}),p4.Timeframe=void 0;const FSe=ce,LSe=Ge;class ISe extends LSe.MalloyElement{constructor(e){super(),this.elementType="timeframe";let n=e.toLowerCase();n.endsWith("s")&&(n=n.slice(0,-1)),this.text=(0,FSe.isTimestampUnit)(n)?n:"second"}}p4.Timeframe=ISe;var g4={};Object.defineProperty(g4,"__esModule",{value:!0}),g4.TopBy=void 0;const BSe=ce,qH=dt,$Se=Ge;class kSe extends $Se.MalloyElement{constructor(e){super(),this.by=e,this.elementType="topBy",e instanceof qH.ExpressionDef&&this.has({by:e})}getBy(e){if(this.by instanceof qH.ExpressionDef){const n=this.by.getExpression(e);return(0,BSe.expressionIsAggregate)(n.expressionType)||this.log("top by expression must be an aggregate"),{by:"expression",e:n.value}}return{by:"name",name:this.by}}}g4.TopBy=kSe;var n0={};Object.defineProperty(n0,"__esModule",{value:!0}),n0.ImportStatement=n0.ImportSelect=n0.ImportSourceName=void 0;const g7=Ge;class PSe extends g7.MalloyElement{constructor(e){super(),this.text=e,this.elementType="importSourceName"}}n0.ImportSourceName=PSe;class MSe extends g7.MalloyElement{constructor(e,n){super(),this.text=e,this.from=n,this.elementType="importName",n&&this.has({from:n})}}n0.ImportSelect=MSe;class jSe extends g7.ListOf{constructor(e,n){super([]),this.url=e,this.elementType="import statement";try{this.fullURL=decodeURI(new URL(e,n).toString())}catch{this.log("Invalid URI in import statement")}}needs(){const e=this.translator();if(e&&this.fullURL&&e.root.importZone.getEntry(this.fullURL).status==="present"){const r=e.childRequest(this.fullURL);if(r)return r}}execute(e){const n=this.translator();if(!n)this.log("Cannot import without translation context");else if(this.fullURL){const r=n.root.importZone.getEntry(this.fullURL);if(r.status==="present"){const i=n.getChildExports(this.fullURL);if(this.notEmpty())for(const s of this.list){const o=s.from||s;if(e.getEntry(s.text))s.log(`Cannot redefine '${s.text}'`);else if(i[o.text]){const u={...i[o.text]};s.from&&(u.as=s.text),e.setEntry(s.text,{entry:u,exported:!1})}else o.log(`Cannot find '${o.text}', not imported`)}else for(const[s,o]of Object.entries(n.getChildExports(this.fullURL)))e.getEntry(s)?this.log(`Cannot redefine '${s}'`):e.setEntry(s,{entry:o,exported:!1})}else r.status==="error"?this.log(`import failed: '${r.message}'`):this.log(`import failed with status: '${r.status}'`)}}}n0.ImportStatement=jSe;var yg={};Object.defineProperty(yg,"__esModule",{value:!0}),yg.ExtendBlock=void 0;const USe=Ge,qSe=En;class zSe extends USe.ListOf{constructor(){super(...arguments),this.elementType="extendBlock",this.forceQueryClass=void 0,this.queryRefinementStage=qSe.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)for(const r of n.list)e.inputFS.extendSource(r)}}yg.ExtendBlock=zSe;var m4={};Object.defineProperty(m4,"__esModule",{value:!0}),m4.Argument=void 0;const HSe=Ge;class QSe extends HSe.MalloyElement{constructor(e){super({...e}),this.elementType="Argument",this.id=e.id,this.value=e.value}}m4.Argument=QSe;var y4={};Object.defineProperty(y4,"__esModule",{value:!0}),y4.HasParameter=void 0;const zH=ce,GSe=Ge;class WSe extends GSe.MalloyElement{constructor(e){super(),this.elementType="hasParameter",this.name=e.name,e.type&&(0,zH.isCastType)(e.type)&&(this.type=e.type),e.default&&(this.default=e.default,this.has({default:this.default}))}parameter(){var e;if(this.default!==void 0){const n=this.default.constantValue();return this.type&&this.type!==n.dataType&&n.dataType!=="null"&&n.dataType!=="error"&&this.default.log(`Default value for parameter does not match declared type \`${this.type}\``),n.dataType==="null"?this.type?{value:n.value,name:this.name,type:this.type}:(this.default.log("Default value cannot have type `null` unless parameter type is also specified"),{value:n.value,name:this.name,type:"error"}):!(0,zH.isCastType)(n.dataType)&&n.dataType!=="error"?(this.default.log(`Default value cannot have type \`${n.dataType}\``),{value:n.value,name:this.name,type:"error"}):{value:n.value,name:this.name,type:n.dataType}}return this.type===void 0&&this.log("Parameter must have default value or declared type"),{value:null,name:this.name,type:(e=this.type)!==null&&e!==void 0?e:"error"}}}y4.HasParameter=WSe;var E4={};Object.defineProperty(E4,"__esModule",{value:!0}),E4.AnonymousQuery=void 0;const VSe=Ge,YSe=Ir;class XSe extends VSe.MalloyElement{constructor(e){super(),this.queryExpr=e,this.elementType="anonymousQuery",this.isNoteableObj=!0,this.extendNote=YSe.extendNoteMethod,this.has({queryExpr:e})}execute(e){const n=this.queryExpr.getQuery();if(!n){this.queryExpr.sqLog("Cannot run this object as a query");return}const r={...n.query()},i=this.note||{};r.annotation&&(i.inherits=r.annotation),(i.notes||i.blockNotes||i.inherits)&&(r.annotation=i),e.queryList.push(r)}}E4.AnonymousQuery=XSe;var r0={};Object.defineProperty(r0,"__esModule",{value:!0}),r0.View=void 0;const KSe=Ge;let JSe=class extends KSe.MalloyElement{pipeline(e,n){return this.pipelineComp(e,n).pipeline}};r0.View=JSe;var A4={};Object.defineProperty(A4,"__esModule",{value:!0}),A4.ViewArrow=void 0;const ZSe=kr,e5e=r0;class t5e extends e5e.View{constructor(e,n){super({base:e,operation:n}),this.base=e,this.operation=n,this.elementType="viewArrow"}pipelineComp(e){const n=this.base.pipelineComp(e),r=new ZSe.StaticSpace(n.outputStruct),i=this.operation.pipelineComp(r);return{pipeline:[...n.pipeline,...i.pipeline],outputStruct:i.outputStruct}}refine(e,n,r){return this.log("A multi-segment view cannot be used as a refinement"),[]}getImplicitName(){return this.operation.getImplicitName()}}A4.ViewArrow=t5e;var v4={},Eg={};Object.defineProperty(Eg,"__esModule",{value:!0}),Eg.refine=void 0;const m7=Ho,y7=Ul;function n5e(t,e,n){var r,i;if(e.length!==1)return t.log("Named refinements of multi-stage views are not supported"),e;const s={...e[0]},o=n;if((0,m7.isRawSegment)(s))t.log("Cannot refine raw query, must add an explicit query stage");else if(s.type==="partial"&&o.type!=="index"&&o.type!=="raw"?s.type=o.type:o.type!==s.type&&t.log(`cannot refine ${s.type} view with ${o.type} view`),o.type!=="index"&&s.type!=="index"&&o.type!=="raw"&&((o.orderBy!==void 0||o.by!==void 0)&&(s.orderBy===void 0&&s.by===void 0?o.orderBy?s.orderBy=o.orderBy:o.by&&(s.by=o.by):t.log("refinement cannot override existing ordering")),o.limit!==void 0&&(s.limit===void 0?s.limit=o.limit:t.log("refinement cannot override existing limit"))),s.filterList=s.filterList!==void 0||o.filterList!==void 0?[...(r=s.filterList)!==null&&r!==void 0?r:[],...(i=o.filterList)!==null&&i!==void 0?i:[]]:void 0,(0,m7.isQuerySegment)(o)&&(0,m7.isQuerySegment)(s)){const u=[],a=[],l=new Map(s.queryFields.map(c=>[(0,y7.nameFromDef)(c),c]));for(const c of o.queryFields)l.has((0,y7.nameFromDef)(c))?u.push(c):a.push(c);s.queryFields=[...s.queryFields,...a],u.length>0&&t.log(`overlapping fields in refinement: ${u.map(y7.nameFromDef)}`)}else o.type==="index"&&s.type==="index"&&(s.indexFields=[...o.indexFields,...s.indexFields]);return[s]}Eg.refine=n5e,Object.defineProperty(v4,"__esModule",{value:!0}),v4.ViewRefine=void 0;const r5e=$r,i5e=es,s5e=Eg,o5e=r0;class u5e extends o5e.View{constructor(e,n){super({base:e,refinement:n}),this.base=e,this.refinement=n,this.elementType="refine"}pipelineComp(e,n){const r=this.base.pipelineComp(e),i=this.refinement.refine(e,r.pipeline,n);return{pipeline:i,annotation:r.annotation,outputStruct:i.length>0?(0,i5e.getFinalStruct)(this.refinement,e.structDef(),i):r5e.ErrorFactory.structDef}}refine(e,n,r){const i=this.pipeline(e,r);return i.length!==1?(this.refinement.log("refinement must have exactly one stage"),n):(0,s5e.refine)(this,n,i[0])}getImplicitName(){return this.base.getImplicitName()}}v4.ViewRefine=u5e;var S4={};Object.defineProperty(S4,"__esModule",{value:!0}),S4.ReferenceView=void 0;const HH=ce,QH=$r,a5e=es,l5e=Br,c5e=Eg,f5e=r0;class x5e extends f5e.View{constructor(e){super({reference:e}),this.reference=e,this.elementType="reference-view"}pipelineComp(e,n){return this._pipelineComp(e)}_pipelineComp(e,{forRefinement:n}={forRefinement:!1}){const r=this.reference.getField(e),i=function(){return{inputStruct:QH.ErrorFactory.structDef,outputStruct:QH.ErrorFactory.structDef,pipeline:[],error:!0}};if(!r.found)return this.log(`\`${this.reference.refString}\` is not defined`),i();if(!(r.found instanceof l5e.SpaceField))throw new Error("Expected space field");const s=r.found.fieldDef();if(s===void 0)throw new Error("Expected field to have definition");if((0,HH.isAtomicFieldType)(s.type)){const o={type:"reduce",queryFields:[this.reference.refToField]},{dialect:u,queryTimezone:a,structRelationship:l}=e.structDef(),c=this.reference.nameString;return{pipeline:[o],name:c,outputStruct:{type:"struct",dialect:u,queryTimezone:a,name:c,fields:[s],structRelationship:l,structSource:{type:"query_result"}}}}else return(0,HH.isTurtleDef)(s)?this.reference.list.length>1?(n?this.log("Cannot use view from join as refinement"):this.log("Cannot use view from join"),i()):{pipeline:[...s.pipeline],name:s.name,annotation:s.annotation,outputStruct:(0,a5e.getFinalStruct)(this.reference,e.structDef(),s.pipeline)}:(n?this.reference.log(`named refinement \`${this.reference.refString}\` must be a view, found a ${s.type}`):this.reference.log("This operation is not supported"),i())}getRefinementSegment(e){const{pipeline:n,error:r}=this._pipelineComp(e,{forRefinement:!0});if(!r){if(n.length!==1){this.reference.log(`named refinement \`${this.reference.refString}\` must have exactly one stage`);return}return n[0]}}refine(e,n,r){const i=this.getRefinementSegment(e);return i?(0,c5e.refine)(this,n,i):n}getImplicitName(){return this.reference.nameString}}S4.ReferenceView=x5e;var _4={},Ag={},C4={},vg={};Object.defineProperty(vg,"__esModule",{value:!0}),vg.Index=void 0;const d5e=Ge,h5e=En;let p5e=class extends d5e.MalloyElement{constructor(e){super({fields:e}),this.fields=e,this.elementType="index",this.forceQueryClass=h5e.QueryClass.Index,this.queryRefinementStage=void 0}useWeight(e){this.has({weightBy:e}),this.weightBy=e}};vg.Index=p5e;var Sg={};Object.defineProperty(Sg,"__esModule",{value:!0}),Sg.SampleProperty=void 0;const g5e=Ge,GH=En;class m5e extends g5e.MalloyElement{constructor(e){super(),this.sample=e,this.elementType="sampleProperty",this.queryRefinementStage=GH.LegalRefinementStage.Tail,this.forceQueryClass=GH.QueryClass.Index}sampling(){return this.sample}}Sg.SampleProperty=m5e;var b4={};Object.defineProperty(b4,"__esModule",{value:!0}),b4.IndexFieldSpace=void 0;const WH=ce,E7=pt,y5e=Br,E5e=lo,A5e=eg,v5e=kr;class S5e extends E5e.QueryOperationSpace{constructor(){super(...arguments),this.segmentType="index"}pushFields(...e){for(const n of e)n instanceof E7.FieldReference?super.pushFields(n):n instanceof E7.WildcardFieldReference?this.addWild(n):n.log("Internal error, not expected in index query")}getPipeSegment(e){if(e)return this.log("index query operations cannot be refined"),{type:"index",indexFields:[]};const n=[];for(const[r,i]of this.entries())if(i instanceof y5e.SpaceField){const s=this.expandedWild[r];if(s){n.push({type:"fieldref",path:s});continue}if(i instanceof A5e.ReferenceField){const o=i.fieldRef,u=o.getField(this.exprSpace);u.error?o.log(u.error):n.push(o.refToField)}}return{type:"index",indexFields:n}}addRefineFromFields(e){}addWild(e){var n;let r=this.exprSpace;const i=[];if(e.joinPath)for(const u of e.joinPath.list){const a=u.refString;i.push(a);const l=r.entry(a);if(l)if(l instanceof v5e.StructSpaceField)r=l.fieldSpace;else{u.log(`Field '${a}' does not contain rows and cannot be expanded with '*'`);return}else{u.log(`No such field as '${a}'`);return}}const s=this.dialectObj(),o=[];for(const[u,a]of r.entries()){if(e.except.has(u)||a.refType==="parameter")continue;const l=E7.IndexFieldReference.indexOutputName([...i,u]);if(this.entry(l)){const c=(n=this.expandedWild[l])===null||n===void 0?void 0:n.join(".");e.log(`Cannot expand '${u}' in '${e.refString}' because a field with that name already exists${c?` (conflicts with ${c})`:""}`)}else{const c=a.typeDesc();(0,WH.isAtomicFieldType)(c.dataType)&&(0,WH.expressionIsScalar)(c.expressionType)&&(s===void 0||!s.ignoreInProject(u))&&(o.push({name:l,entry:a}),this.expandedWild[l]=i.concat(u))}}for(const u of o.sort((a,l)=>a.name.localeCompare(l.name)))this.setEntry(u.name,u.entry)}}b4.IndexFieldSpace=S5e,Object.defineProperty(C4,"__esModule",{value:!0}),C4.IndexBuilder=void 0;const A7=ce,_5e=$r,C5e=ao,b5e=vg,T5e=Vl,R5e=Sg,O5e=b4;class D5e{constructor(e,n,r,i){this.filters=[],this.type="index",this.resultFS=new O5e.IndexFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e instanceof C5e.Filter?this.filters.push(...e.getFilterList(this.inputFS)):e instanceof T5e.Limit?(this.limit&&this.limit.log("Ignored, too many limit: statements"),this.limit=e):e instanceof b5e.Index?(this.resultFS.pushFields(...e.fields.list),e.weightBy&&(this.indexOn&&this.indexOn.log("Ignoring previous BY"),this.indexOn=e.weightBy)):e instanceof R5e.SampleProperty?this.sample=e.sampling():e.log("Not legal in an index query operation")}finalize(e){if(e&&!(0,A7.isIndexSegment)(e)&&!(0,A7.isPartialSegment)(e))return this.resultFS.log(`Can't refine index with ${e.type}`),_5e.ErrorFactory.indexSegment;const n=this.resultFS.getPipeSegment(e),r=(e==null?void 0:e.filterList)||[];return this.filters.length>0&&!r?n.filterList=this.filters:r&&(n.filterList=[...r,...this.filters]),e!=null&&e.limit&&(n.limit=e.limit),this.limit&&(n.limit=this.limit.limit),this.indexOn&&(n.weightMeasure=this.indexOn.refString),e&&(0,A7.isIndexSegment)(e)&&(e!=null&&e.sample)&&(n.sample=e.sample),this.sample&&(n.sample=this.sample),n}}C4.IndexBuilder=D5e;var T4={},_g={};Object.defineProperty(_g,"__esModule",{value:!0}),_g.GroupBy=void 0;const N5e=Zi,VH=En;class w5e extends N5e.DefinitionList{constructor(){super(...arguments),this.elementType="groupBy",this.queryRefinementStage=VH.LegalRefinementStage.Single,this.forceQueryClass=VH.QueryClass.Grouping}}_g.GroupBy=w5e;var R4={};Object.defineProperty(R4,"__esModule",{value:!0}),R4.ProjectFieldSpace=void 0;const v7=ce,F5e=lo;class L5e extends F5e.QuerySpace{constructor(){super(...arguments),this.segmentType="project"}canContain(e){return e.dataType==="turtle"||(0,v7.expressionIsAggregate)(e.expressionType)?!1:(0,v7.expressionInvolvesAggregate)(e.expressionType)&&(0,v7.expressionIsAnalytic)(e.expressionType)?(this.log("Cannot add aggregate analyics to project"),!1):!0}}R4.ProjectFieldSpace=L5e;var i0={},ff={};Object.defineProperty(ff,"__esModule",{value:!0}),ff.Ordering=ff.OrderBy=void 0;const I5e=ce,YH=Yl,XH=Ge,B5e=En;class $5e extends XH.MalloyElement{constructor(e,n){super(),this.field=e,this.dir=n,this.elementType="orderBy",e instanceof YH.FieldName&&this.has({field:e})}get modelField(){return typeof this.field=="number"?this.field:this.field.refString}getOrderBy(e){var n;if(this.field instanceof YH.FieldName&&e.isQueryFieldSpace()){const i=e.outputSpace(),s=this.field.getField(i);s.error&&this.field.log(s.error),(!s.found||!s.isOutputField)&&this.log(`Unknown field ${this.field.refString} in output space`),(0,I5e.expressionIsAnalytic)((n=s.found)===null||n===void 0?void 0:n.typeDesc().expressionType)&&this.log(`Illegal order by of analytic field ${this.field.refString}`)}const r={field:this.modelField};return this.dir&&(r.dir=this.dir),r}}ff.OrderBy=$5e;class k5e extends XH.ListOf{constructor(e){super(e),this.elementType="ordering",this.queryRefinementStage=B5e.LegalRefinementStage.Tail,this.forceQueryClass=void 0}getOrderBy(e){return this.list.map(n=>n.getOrderBy(e))}}ff.Ordering=k5e;var Cg={};Object.defineProperty(Cg,"__esModule",{value:!0}),Cg.Top=void 0;const KH=ce,P5e=Yl,M5e=Ge,j5e=En;let U5e=class extends M5e.MalloyElement{constructor(e,n){super(),this.limit=e,this.by=n,this.elementType="top",this.queryRefinementStage=j5e.LegalRefinementStage.Tail,this.forceQueryClass=void 0,this.has({by:n})}getBy(e){var n;if(this.by)if(this.by instanceof P5e.FieldName){if(e.isQueryFieldSpace()){const r=e.outputSpace(),i=this.by.getField(r);i.error&&this.by.log(i.error),(!i.found||!i.isOutputField)&&this.by.log(`Unknown field ${this.by.refString} in output space`),(0,KH.expressionIsAnalytic)((n=i.found)===null||n===void 0?void 0:n.typeDesc().expressionType)&&this.by.log(`Illegal order by of analytic field ${this.by.refString}`)}return{by:"name",name:this.by.refString}}else{const r=this.by.getExpression(e);return(0,KH.expressionIsAggregate)(r.expressionType)&&this.by.log("top by expression must be an aggregate"),r.evalSpace==="output"&&this.by.log("top by expression must be an output expression"),{by:"expression",e:r.value}}}};Cg.Top=U5e,Object.defineProperty(i0,"__esModule",{value:!0}),i0.ReduceBuilder=i0.QuerySegmentBuilder=void 0;const JH=ce,q5e=$r,z5e=ao,H5e=Vl,ZH=ff,eQ=Cg,Q5e=lo,G5e=Zi;class tQ{constructor(){this.filters=[]}execute(e){if(e.queryExecute){e.queryExecute(this);return}if(e instanceof G5e.DefinitionList)this.resultFS.pushFields(...e.list);else if(e instanceof z5e.Filter){const n=e.havingClause?this.resultFS:this.inputFS;this.filters.push(...e.getFilterList(n))}else e instanceof eQ.Top?(this.limit?e.log("Query operation already limited"):this.limit=e.limit,e.by&&(this.order?e.log("Query operation is already sorted"):this.order=e)):e instanceof H5e.Limit?this.limit?e.log("Query operation already limited"):this.limit=e.limit:e instanceof ZH.Ordering&&(this.order?e.log("Query operation already sorted"):this.order=e)}refineFrom(e,n){if(e&&e.type!=="index"&&e.type!=="raw"&&(this.order||(e.orderBy?n.orderBy=e.orderBy:e.by&&(n.by=e.by)),!this.limit&&e.limit&&(n.limit=e.limit)),this.limit&&(n.limit=this.limit),this.order instanceof eQ.Top){const i=this.order.getBy(this.inputFS);i&&(n.by=i)}this.order instanceof ZH.Ordering&&(n.orderBy=this.order.getOrderBy(this.inputFS));const r=(e==null?void 0:e.filterList)||[];this.filters.length>0&&!r?n.filterList=this.filters:r&&(n.filterList=[...r,...this.filters])}}i0.QuerySegmentBuilder=tQ;class W5e extends tQ{constructor(e,n,r,i){super(),this.type="grouping",this.resultFS=new Q5e.ReduceFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}finalize(e){let n;if(e)if((0,JH.isReduceSegment)(e)||(0,JH.isPartialSegment)(e))n=e;else return this.resultFS.log(`Can't refine reduce with ${e.type}`),q5e.ErrorFactory.reduceSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}i0.ReduceBuilder=W5e,Object.defineProperty(T4,"__esModule",{value:!0}),T4.ProjectBuilder=void 0;const nQ=ce,V5e=$r,Y5e=_g,X5e=R4,K5e=i0;class J5e extends K5e.QuerySegmentBuilder{constructor(e,n,r,i){super(),this.type="project",this.resultFS=new X5e.ProjectFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e.elementType==="having"||e instanceof Y5e.GroupBy?e.log("Illegal statement in a select query operation"):super.execute(e)}finalize(e){let n;if(e)if((0,nQ.isProjectSegment)(e)||(0,nQ.isPartialSegment)(e))n=e;else return this.resultFS.log(`Can't refine select with ${e.type}`),V5e.ErrorFactory.projectSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}T4.ProjectBuilder=J5e;var O4={};Object.defineProperty(O4,"__esModule",{value:!0}),O4.PartialBuilder=void 0;const Z5e=Ho,e_e=i0;class t_e extends e_e.ReduceBuilder{finalize(e){const n=super.finalize(e);if((0,Z5e.isQuerySegment)(n))return{...n,type:"partial"};throw new Error(`Partial Builder cannot finalize from ${n.type}`)}}O4.PartialBuilder=t_e,Object.defineProperty(Ag,"__esModule",{value:!0}),Ag.QOpDesc=void 0;const n_e=C4,r_e=T4,i_e=i0,s_e=Ge,o_e=es,u_e=kr,xf=En,a_e=O4;class l_e extends s_e.ListOf{constructor(){super(...arguments),this.elementType="queryOperation"}computeType(){var e;let n,r=!1;this.refineThis&&(this.refineThis.type==="reduce"?n=xf.QueryClass.Grouping:this.refineThis.type==="project"?n=xf.QueryClass.Project:this.refineThis.type==="index"&&(n=xf.QueryClass.Index));for(const i of this.list)i.forceQueryClass&&(n?n!==i.forceQueryClass&&i.log(`Not legal in ${n} query`):n=i.forceQueryClass),r||(r=(e=i.needsExplicitQueryClass)!==null&&e!==void 0?e:!1);return n===void 0&&r&&(this.log("Can't determine view type (`group_by` / `aggregate` / `nest`, `project`, `index`)"),n=xf.QueryClass.Project),this.opClass=n,n}refineFrom(e){this.refineThis=e}getBuilder(e,n,r){switch(this.computeType()){case xf.QueryClass.Grouping:return new i_e.ReduceBuilder(e,this.refineThis,n,r);case xf.QueryClass.Project:return new r_e.ProjectBuilder(e,this.refineThis,n,r);case xf.QueryClass.Index:return new n_e.IndexBuilder(e,this.refineThis,n,r);case void 0:return new a_e.PartialBuilder(e,this.refineThis,n,r)}}getOp(e,n){const r=this.getBuilder(e,n,this);for(const s of this.list)r.execute(s);const i=r.finalize(this.refineThis);return{segment:i,outputSpace:()=>new u_e.StaticSpace((0,o_e.opOutputStruct)(this,e.structDef(),i))}}}Ag.QOpDesc=l_e,Object.defineProperty(_4,"__esModule",{value:!0}),_4.QOpDescView=void 0;const c_e=ce,f_e=kr,rQ=Ag,x_e=es,S7=En,d_e=r0;class h_e extends d_e.View{constructor(e){super({operation:e}),this.operation=e,this.elementType="qopdesc-view"}pipelineComp(e,n){const r=this.operation.getOp(e,n);return{pipeline:[r.segment],outputStruct:r.outputSpace().structDef()}}getOp(e,n,r,i){return(0,c_e.isRawSegment)(i)?(this.log("A raw query cannot be refined"),i):(r.refineFrom(i),r.getOp(e,n).segment)}refine(e,n,r){const i=[...n];if(i.length===0)return i;if(i.length===1)return this.operation.refineFrom(i[0]),[this.getOp(e,r,this.operation,i[0])];const s=new rQ.QOpDesc([]),o=new rQ.QOpDesc([]);for(const u of this.operation.list)switch(u.queryRefinementStage){case S7.LegalRefinementStage.Head:s.push(u);break;case S7.LegalRefinementStage.Single:u.log("Illegal in refinement of a query with more than one stage");break;case S7.LegalRefinementStage.Tail:o.push(u);break;default:u.log("Illegal query refinement")}if(s.notEmpty()&&(this.has({headRefinements:s}),i[0]=this.getOp(e,void 0,s,i[0])),o.notEmpty()){const u=i.length-1;this.has({tailRefinements:o});const a=(0,x_e.getFinalStruct)(this,e.structDef(),i.slice(-1));i[u]=this.getOp(new f_e.StaticSpace(a),void 0,o,i[u])}return i}getImplicitName(){}}_4.QOpDescView=h_e;var xn={};Object.defineProperty(xn,"__esModule",{value:!0}),xn.FieldDefinitionValue=xn.DefSpace=xn.DimensionFieldDeclaration=xn.MeasureFieldDeclaration=xn.DeclareFieldDeclaration=xn.ProjectFieldDeclaration=xn.GroupByFieldDeclaration=xn.AggregateFieldDeclaration=xn.CalculateFieldDeclaration=xn.AtomicFieldDeclaration=void 0;const p_e=ce,g_e=sn,m_e=Bd,y_e=Ge,df=$n,E_e=Ir,A_e=Br;class s0 extends y_e.MalloyElement{constructor(e,n,r){super({expr:e}),this.expr=e,this.defineName=n,this.exprSrc=r,this.isNoteableObj=!0,this.extendNote=E_e.extendNoteMethod}fieldDef(e,n){return this.queryFieldDef(new _7(e,this),n)}executesInOutputSpace(){return!1}queryFieldDef(e,n){let r;function i(){if(e.isQueryFieldSpace())return e.outputSpace();throw new Error("must be in a query -- weird internal error")}try{const u=this.executesInOutputSpace()?i():e;r=this.expr.getExpression(u)}catch(u){return this.log(`Cannot define '${n}', ${u.message}`),{name:n,type:"error"}}let s=r.dataType;if(s==="null"&&(this.expr.log('null value defaults to type number, use "null::TYPE" to specify correct type',"warn"),s="number"),(0,p_e.isAtomicFieldType)(s)&&s!=="error"){const u={name:n,type:s,location:this.location};return u.e=r.value,r.expressionType&&(u.expressionType=r.expressionType),this.typecheckExprValue(r),this.exprSrc&&(u.code=this.exprSrc),(0,m_e.isGranularResult)(r)&&(u.type==="timestamp"||u.type==="date")&&(u.timeframe=r.timeframe),this.note&&(u.annotation=this.note),u}if(!(e instanceof _7&&e.foundCircle)&&r.dataType!=="error"){const u=g_e.FT.inspect(r);this.log(`Cannot define '${n}', unexpected type: ${u}`)}return{name:n,type:"error"}}makeEntry(e){e.newEntry(this.defineName,this,new iQ(e,this))}}xn.AtomicFieldDeclaration=s0;class v_e extends s0{constructor(){super(...arguments),this.elementType="calculateFieldDeclaration"}typecheckExprValue(e){(0,df.typecheckCalculate)(e,this)}executesInOutputSpace(){return!0}}xn.CalculateFieldDeclaration=v_e;class S_e extends s0{constructor(){super(...arguments),this.elementType="aggregateFieldDeclaration"}typecheckExprValue(e){(0,df.typecheckAggregate)(e,this)}}xn.AggregateFieldDeclaration=S_e;class __e extends s0{constructor(){super(...arguments),this.elementType="groupByFieldDeclaration"}typecheckExprValue(e){(0,df.typecheckGroupBy)(e,this)}}xn.GroupByFieldDeclaration=__e;class C_e extends s0{constructor(){super(...arguments),this.elementType="projectFieldDeclaration"}typecheckExprValue(e){(0,df.typecheckProject)(e,this)}}xn.ProjectFieldDeclaration=C_e;class b_e extends s0{constructor(){super(...arguments),this.elementType="declareFieldDeclaration"}typecheckExprValue(e){(0,df.typecheckDeclare)(e,this)}}xn.DeclareFieldDeclaration=b_e;class T_e extends s0{constructor(){super(...arguments),this.elementType="measureFieldDeclaration"}typecheckExprValue(e){(0,df.typecheckMeasure)(e,this)}}xn.MeasureFieldDeclaration=T_e;class R_e extends s0{constructor(){super(...arguments),this.elementType="dimensionFieldDeclaration"}typecheckExprValue(e){(0,df.typecheckDimension)(e,this)}}xn.DimensionFieldDeclaration=R_e;class _7{constructor(e,n){this.realFS=e,this.circular=n,this.type="fieldSpace",this.foundCircle=!1}structDef(){return this.realFS.structDef()}emptyStructDef(){return this.realFS.emptyStructDef()}entry(e){return this.realFS.entry(e)}lookup(e){return e[0]&&e[0].refString===this.circular.defineName?(this.foundCircle=!0,{error:`Circular reference to '${this.circular.defineName}' in definition`,found:void 0}):this.realFS.lookup(e)}entries(){return this.realFS.entries()}dialectObj(){return this.realFS.dialectObj()}isQueryFieldSpace(){return this.realFS.isQueryFieldSpace()}outputSpace(){if(this.realFS.isQueryFieldSpace())return this.realFS.outputSpace();throw new Error("Not a query field space")}inputSpace(){if(this.realFS.isQueryFieldSpace())return this.realFS.inputSpace();throw new Error("Not a query field space")}}xn.DefSpace=_7;class iQ extends A_e.SpaceField{constructor(e,n){super(),this.space=e,this.exprDef=n,this.fieldName=n.defineName}get name(){return this.fieldName}fieldDef(){return this.haveFieldDef||(this.haveFieldDef=this.exprDef.fieldDef(this.space,this.name)),this.haveFieldDef}getQueryFieldDef(e){if(!this.qfd){const n=this.exprDef.queryFieldDef(e,this.name);this.qfd=n}return this.qfd}typeDesc(){const e=this.qfd||this.fieldDef();return this.fieldTypeFromFieldDef(e)}}xn.FieldDefinitionValue=iQ;var D4={};Object.defineProperty(D4,"__esModule",{value:!0}),D4.Aggregate=void 0;const O_e=Zi,sQ=En;let D_e=class extends O_e.DefinitionList{constructor(){super(...arguments),this.elementType="aggregateList",this.queryRefinementStage=sQ.LegalRefinementStage.Single,this.forceQueryClass=sQ.QueryClass.Grouping}};D4.Aggregate=D_e;var N4={};Object.defineProperty(N4,"__esModule",{value:!0}),N4.Calculate=void 0;const N_e=Zi,w_e=En;class F_e extends N_e.DefinitionList{constructor(){super(...arguments),this.elementType="calculate",this.forceQueryClass=void 0,this.needsExplicitQueryClass=!0,this.queryRefinementStage=w_e.LegalRefinementStage.Single}}N4.Calculate=F_e;var bg={};Object.defineProperty(bg,"__esModule",{value:!0}),bg.Dimensions=void 0;const L_e=ql;class I_e extends L_e.DeclareFields{constructor(){super(...arguments),this.elementType="dimensionList"}}bg.Dimensions=I_e;var Tg={};Object.defineProperty(Tg,"__esModule",{value:!0}),Tg.Measures=void 0;const B_e=ql;class $_e extends B_e.DeclareFields{constructor(){super(...arguments),this.elementType="measureList"}}Tg.Measures=$_e;var w4={};Object.defineProperty(w4,"__esModule",{value:!0}),w4.Nests=void 0;const k_e=Zi,oQ=En;class P_e extends k_e.DefinitionList{constructor(e){super(e),this.elementType="nestedQueries",this.queryRefinementStage=oQ.LegalRefinementStage.Single,this.forceQueryClass=oQ.QueryClass.Grouping}}w4.Nests=P_e;var F4={};Object.defineProperty(F4,"__esModule",{value:!0}),F4.ProjectStatement=void 0;const M_e=Zi,uQ=En;class j_e extends M_e.DefinitionList{constructor(){super(...arguments),this.elementType="projectStatement",this.forceQueryClass=uQ.QueryClass.Project,this.queryRefinementStage=uQ.LegalRefinementStage.Single}queryExecute(e){e.type==="project"&&e.resultFS.pushFields(...this.list)}}F4.ProjectStatement=j_e;var o0={},Oa={};Object.defineProperty(Oa,"__esModule",{value:!0}),Oa.findReferences=Oa.deprecatedParseTableURI=Oa.constructTableKey=void 0;const U_e=Ml,C7=rn;function b7(t){const e=(0,C7.getStringIfShort)(t);if(e)return e;const n=[],r=t.string().sqlString();if(r){for(const i of(0,C7.getStringParts)(r))typeof i=="string"&&n.push(i);return n.join("")}return""}class q_e{constructor(e,n){this.trans=e,this.tokens=n,this.needTables={},this.needImports={}}registerTableReference(e,n,r){const i=aQ(e,n);this.needTables[i]||(this.needTables[i]={connectionName:e,tablePath:n,firstReference:r})}enterTableMethod(e){const n=(0,C7.getId)(e.connectionId()),r=b7(e.tablePath()),i=this.trans.rangeFromContext(e);this.registerTableReference(n,r,i)}enterTableFunction(e){const n=b7(e.tableURI()),{connectionName:r,tablePath:i}=lQ(n),s=this.trans.rangeFromContext(e);this.registerTableReference(r,i,s)}enterImportURL(e){const n=b7(e);this.needImports[n]||(this.needImports[n]=this.trans.rangeFromContext(e))}}function aQ(t,e){return t===void 0?e:`${t}:${e}`}Oa.constructTableKey=aQ;function lQ(t){const e=t.match(/^([^:]*):(.*)$/);if(e){const[,n,r]=e;return{connectionName:n,tablePath:r}}else return{tablePath:t}}Oa.deprecatedParseTableURI=lQ;function z_e(t,e,n){const r=new q_e(t,e),i=r;return U_e.ParseTreeWalker.DEFAULT.walk(i,n),{tables:r.needTables,urls:r.needImports}}Oa.findReferences=z_e,Object.defineProperty(o0,"__esModule",{value:!0}),o0.TableFunctionSource=o0.TableMethodSource=o0.TableSource=void 0;const cQ=Oa,H_e=uo,fQ=$r;class T7 extends H_e.Source{structDef(){var e,n,r;const i=this.getTableInfo();if(i===void 0)return fQ.ErrorFactory.structDef;const{tablePath:s,connectionName:o}=i,u=(0,cQ.constructTableKey)(o,s),a=(e=this.translator())===null||e===void 0?void 0:e.root.schemaZone.getEntry(u);let l=`Schema read failure for table '${s}' for connection '${o}'`;if(a){if(a.status==="present"){(n=this.document())===null||n===void 0||n.checkExperimentalDialect(this,a.value.dialect),a.value.location=this.location,a.value.fields.forEach(f=>{f.location=this.location});const c={...a.value,fields:a.value.fields.map(f=>({...f,location:this.location})),location:this.location};return(r=this.document())===null||r===void 0||r.rememberToAddModelAnnotations(c),c}a.status==="error"&&(l=a.message)}return this.log(l),fQ.ErrorFactory.structDef}}o0.TableSource=T7;class Q_e extends T7{constructor(e,n){super(),this.connectionName=e,this.tablePath=n,this.elementType="tableMethodSource",this.has({connectionName:e})}getTableInfo(){var e;const n=this.modelEntry(this.connectionName),r=this.connectionName.refString;if(n===void 0)(e=this.namespace())===null||e===void 0||e.setEntry(r,{entry:{type:"connection",name:r},exported:!0},!0);else if(n.entry.type!=="connection"){this.connectionName.log(`${this.connectionName.refString} is not a connection`);return}return{tablePath:this.tablePath,connectionName:this.connectionName.refString}}}o0.TableMethodSource=Q_e;class G_e extends T7{constructor(e){super(),this.tableURI=e,this.elementType="tableFunctionSource"}getTableInfo(){return(0,cQ.deprecatedParseTableURI)(this.tableURI)}}o0.TableFunctionSource=G_e;var L4={};Object.defineProperty(L4,"__esModule",{value:!0}),L4.SQLString=void 0;const W_e=Ge,xQ=fu;class V_e extends W_e.MalloyElement{constructor(){super(...arguments),this.elementType="sqlString",this.elements=[],this.containsQueries=!1}complete(){this.has({queries:this.elements.filter(Y_e)})}push(e){typeof e=="string"?e.length>0&&this.elements.push(e):e instanceof xQ.SourceQueryElement?(this.elements.push(e),this.containsQueries=!0,e.parent=this):e.log("This element is not legal inside an SQL string")}sqlPhrases(){const e=[];for(const n of this.elements)if(typeof n=="string")e.push({sql:n});else{const r=n.getQuery();r?e.push(r.query()):n.sqLog("Cannot expand into a query")}return e}}L4.SQLString=V_e;function Y_e(t){return t instanceof xQ.SourceQueryElement}var I4={};Object.defineProperty(I4,"__esModule",{value:!0}),I4.SourceDesc=void 0;const X_e=Ge;class K_e extends X_e.ListOf{constructor(){super(...arguments),this.elementType="sourceDescription"}}I4.SourceDesc=K_e;var B4={};Object.defineProperty(B4,"__esModule",{value:!0}),B4.isSourceProperty=void 0;const J_e=ao,Z_e=Ri,eCe=ql,tCe=Od,nCe=Hl,rCe=Dd,iCe=Nd,sCe=wd,oCe=zl;function uCe(t){return t instanceof J_e.Filter||t instanceof Z_e.Joins||t instanceof eCe.DeclareFields||t instanceof tCe.FieldListEdit||t instanceof nCe.Renames||t instanceof rCe.PrimaryKey||t instanceof oCe.ObjectAnnotation||t instanceof iCe.Views||t instanceof sCe.TimezoneStatement}B4.isSourceProperty=uCe;var $4={};Object.defineProperty($4,"__esModule",{value:!0}),$4.isFieldCollectionMember=void 0;const aCe=xn,dQ=pt;function lCe(t){return t instanceof dQ.FieldReference||t instanceof dQ.WildcardFieldReference||t instanceof aCe.AtomicFieldDeclaration}$4.isFieldCollectionMember=lCe;var k4={};Object.defineProperty(k4,"__esModule",{value:!0}),k4.isQueryElement=void 0;const cCe=Fd,fCe=Ld,xCe=Vp,dCe=Yp;function hCe(t){return t instanceof cCe.QueryArrow||t instanceof fCe.QueryRefine||t instanceof xCe.QueryReference||t instanceof dCe.QueryRaw}k4.isQueryElement=hCe;var hQ={};Object.defineProperty(hQ,"__esModule",{value:!0});var P4={};Object.defineProperty(P4,"__esModule",{value:!0}),P4.isQueryProperty=void 0;function pCe(t){return"queryRefinementStage"in t&&"forceQueryClass"in t}P4.isQueryProperty=pCe;var M4={};Object.defineProperty(M4,"__esModule",{value:!0}),M4.isQueryExtendProperty=void 0;const gCe=bg,mCe=Ri,yCe=Tg;function ECe(t){return t instanceof gCe.Dimensions||t instanceof yCe.Measures||t instanceof mCe.Joins}M4.isQueryExtendProperty=ECe;var j4={};Object.defineProperty(j4,"__esModule",{value:!0}),j4.isFieldPropStatement=void 0;const ACe=Gl,vCe=ao,SCe=Vl,_Ce=jd;function CCe(t){return t instanceof vCe.Filter||t instanceof SCe.Limit||t instanceof _Ce.PartitionBy||t instanceof ACe.FunctionOrdering}j4.isFieldPropStatement=CCe,function(t){var e=w&&w.__createBinding||(Object.create?function(r,i,s,o){o===void 0&&(o=s);var u=Object.getOwnPropertyDescriptor(i,s);(!u||("get"in u?!i.__esModule:u.writable||u.configurable))&&(u={enumerable:!0,get:function(){return i[s]}}),Object.defineProperty(r,o,u)}:function(r,i,s,o){o===void 0&&(o=s),r[o]=i[s]}),n=w&&w.__exportStar||function(r,i){for(var s in r)s!=="default"&&!Object.prototype.hasOwnProperty.call(i,s)&&e(i,r,s)};Object.defineProperty(t,"__esModule",{value:!0}),n(Fp,t),n(Cd,t),n(bd,t),n(uo,t),n(Mp,t),n(fu,t),n(xv,t),n(dv,t),n(gv,t),n(Hp,t),n(Ev,t),n(Od,t),n(Dd,t),n(Hl,t),n(Nd,t),n(wd,t),n(Av,t),n(Pd,t),n(Sv,t),n(Gl,t),n(_v,t),n(ba,t),n(Cv,t),n(Md,t),n(bv,t),n(Tv,t),n(Rv,t),n(Kp,t),n(Ov,t),n(Dv,t),n(wv,t),n(ng,t),n(Zp,t),n(ef,t),n(Fv,t),n(Lv,t),n(Bv,t),n(kv,t),n(Pv,t),n(Mv,t),n(jv,t),n(Uv,t),n(qv,t),n(zv,t),n(Hv,t),n(Qv,t),n(Gv,t),n(Wv,t),n(Vv,t),n(Kv,t),n(Zn,t),n(d4,t),n(jd,t),n(Yd,t),n(Ql,t),n(p4,t),n(g4,t),n(rg,t),n(n0,t),n(yg,t),n(m4,t),n(y4,t),n(E4,t),n(Ld,t),n(Fd,t),n(r0,t),n(A4,t),n(v4,t),n(S4,t),n(_4,t),n(xn,t),n(pt,t),n(D4,t),n(N4,t),n(ql,t),n(bg,t),n(yg,t),n(ao,t),n(_g,t),n(vg,t),n(Ri,t),n(Lp,t),n(Vl,t),n(Tg,t),n(Fp,t),n(w4,t),n(ff,t),n(F4,t),n(Ag,t),n(Sg,t),n(Cg,t),n(Id,t),n(Zc,t),n(Xp,t),n(o0,t),n(L4,t),n(zl,t),n(xu,t),n(I4,t),n(B4,t),n(dt,t),n($4,t),n(Yl,t),n(Ge,t),n(k4,t),n(hQ,t),n(P4,t),n(M4,t),n(j4,t)}(KA);var U4={},Xd={};Object.defineProperty(Xd,"__esModule",{value:!0}),Xd.ConstantExpression=Xd.ConstantFieldSpace=void 0;const bCe=dt;class pQ{constructor(){this.type="fieldSpace"}structDef(){throw new Error("ConstantFieldSpace cannot generate a structDef")}emptyStructDef(){throw new Error("ConstantFieldSpace cannot generate a structDef")}lookup(e){return{error:"Only constants allowed in parameter default values",found:void 0}}entries(){return[]}entry(){}dialectObj(){}isQueryFieldSpace(){return!1}}Xd.ConstantFieldSpace=pQ;class TCe extends bCe.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="constantExpression"}getExpression(e){return this.constantValue()}get constantFs(){return this.cfs||(this.cfs=new pQ),this.cfs}constantValue(){return this.expr.getExpression(this.constantFs)}apply(e,n,r){return this.expr.apply(e,n,r)}requestExpression(e){return this.expr.requestExpression(e)}}Xd.ConstantExpression=TCe;var RCe=w&&w.__createBinding||(Object.create?function(t,e,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(e,n);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,i)}:function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]}),OCe=w&&w.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),DCe=w&&w.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var n in t)n!=="default"&&Object.prototype.hasOwnProperty.call(t,n)&&RCe(e,t,n);return OCe(e,t),e};Object.defineProperty(U4,"__esModule",{value:!0}),U4.MalloyToAST=void 0;const gQ=Zy,NCe=Ip,ie=DCe(KA),wCe=Yn,FCe=KA,kn=rn,R7=ce,LCe=_a,ICe=Xd;class mQ extends ie.SourceQueryElement{constructor(){super(...arguments),this.elementType="parseErrorSourceQuery"}}class O7 extends ie.MalloyElement{constructor(e){super(),this.elementType="ignoredByParser",this.malloySrc=e}}const BCe=["##! m4warnings=error"];class $Ce extends NCe.AbstractParseTreeVisitor{constructor(e,n,r){super(),this.parseInfo=e,this.msgLog=n,this.compilerFlags=r;for(const i of BCe){const s=LCe.Tag.fromTagline(i,this.compilerFlags);this.compilerFlags=s.tag}}internalError(e,n){const r=`Internal Translator Error: ${n}`;return this.contextError(e,r),new Error(r)}astError(e,n,r="error"){this.msgLog.log({message:n,at:e.location,severity:r})}getLocation(e){return{url:this.parseInfo.sourceURL,range:this.parseInfo.rangeFromContext(e)}}contextError(e,n,r="error"){this.msgLog.log({message:n,at:this.getLocation(e),severity:r})}warnWithReplacement(e,n,r){this.msgLog.log({message:e,at:{url:this.parseInfo.sourceURL,range:n},severity:"warn",replacement:r})}inExperiment(e,n){const r=this.compilerFlags.tag("experimental");return r&&(r.bare()||r.has(e))?!0:(this.contextError(n,`Experimental flag '${e}' required to enable this feature`),!1)}m4Severity(){const e=this.compilerFlags.tag("m4warnings");return e?e.text()==="warn"?"warn":"error":!1}m4advisory(e,n){const r=this.m4Severity();r&&this.contextError(e,n,r)}only(e,n,r){const i=[];for(const s of e){const o=n(s);o?i.push(o):s instanceof O7||this.astError(s,`Parser enountered unexpected statement type '${s.elementType}' when it needed '${r}'`)}return i}getNumber(e){return Number.parseInt(e.text)}getFieldName(e){return this.astAt(new ie.FieldName((0,kn.getId)(e)),e.id())}getModelEntryName(e){return this.astAt(new ie.ModelEntryReference((0,kn.getId)(e)),e.id())}defaultResult(){return new ie.Unimplemented}astAt(e,n){return e.location={url:this.parseInfo.sourceURL,range:this.parseInfo.rangeFromContext(n)},e}getSourceCode(e){const n=e.start.startIndex,r=e.stop||e.start,i=new wCe.Interval(n,r.stopIndex);return this.parseInfo.sourceStream.getText(i)}getFilterElement(e){const n=this.getFieldExpr(e),r=new ie.FilterElement(n,this.getSourceCode(e));return this.astAt(r,e)}getFieldDefs(e,n){return e.map(r=>this.getFieldDef(r,n))}getFieldExpr(e){const n=this.visit(e);if(n instanceof ie.ExpressionDef)return this.astAt(n,e);throw this.internalError(e,`expression node unknown type '${n.elementType}'`)}getFilterShortcut(e){const n=this.getFilterElement(e.fieldExpr());return this.m4advisory(e,"Filter shortcut `{? condition }` is deprecated; use `{ where: condition } instead"),new ie.Filter([n])}getPlainStringFrom(e){const[n,r]=(0,kn.getPlainString)(e);for(const i of r)i instanceof gQ.ParserRuleContext&&this.contextError(i,"%{ query } illegal in this string");return n||""}makeSqlString(e,n){for(const r of e.sqlInterpolation())r.CLOSE_CODE()&&this.m4advisory(r,"Use %{ ... } instead of %{ ... }%");for(const r of(0,kn.getStringParts)(e))r instanceof gQ.ParserRuleContext?n.push(this.visit(r)):n.push(r);n.complete(),this.astAt(n,e)}parseTime(e,n){let r=n(e.text);return r||(this.contextError(e,"Time data parse error"),r=new ie.LiteralTimestamp({text:e.text})),this.astAt(r,e)}getNotes(e){return e.ANNOTATION().map(n=>({text:n.text,at:this.getLocation(e)}))}getIsNotes(e){return this.getNotes(e._beforeIs).concat(this.getNotes(e._afterIs))}visitMalloyDocument(e){const n=this.only(e.malloyStatement().map(r=>this.visit(r)),r=>ie.isDocStatementOrDocStatementList(r)&&r,"statement");return new ie.Document(n)}visitDefineSourceStatement(e){const r=e.sourcePropertyList().sourceDefinition().map(o=>this.visitSourceDefinition(o)),i=this.getNotes(e.tags()),s=new ie.DefineSourceList(r);return s.extendNote({blockNotes:i}),s}getSourceParameter(e){const n=e.fieldExpr(),r=n?this.astAt(new ICe.ConstantExpression(this.getFieldExpr(n)),n):void 0,i=e.malloyType(),s=i?this.getMalloyType(i):void 0;return this.astAt(new ie.HasParameter({name:(0,kn.getId)(e.parameterNameDef()),type:s,default:r}),e)}getSourceParameters(e){return e===void 0?[]:(this.inExperiment("parameters",e),e.sourceParameter().map(n=>this.getSourceParameter(n)))}visitSourceDefinition(e){const n=this.visit(e.sqExplore()),r=this.getSourceParameters(e.sourceParameters()),i=new ie.DefineSource((0,kn.getId)(e.sourceNameDef()),n instanceof ie.SourceQueryElement?n:void 0,!0,r),s=this.getNotes(e.tags()).concat(this.getIsNotes(e.isDefine()));return i.extendNote({notes:s}),this.astAt(i,e)}getSourceExtensions(e){return this.astAt(this.visitExploreProperties(e),e)}visitExploreProperties(e){const n=e.filterShortcut(),r=this.only(e.exploreStatement().map(s=>this.visit(s)),s=>ie.isSourceProperty(s)&&s,"source property"),i=new ie.SourceDesc(r);return n&&i.push(this.getFilterShortcut(n)),i}visitTableFunction(e){const n=this.getPlainStringFrom(e.tableURI()),r=this.astAt(new ie.TableFunctionSource(n),e);return this.m4advisory(e,"`table('connection_name:table_path')` is deprecated; use `connection_name.table('table_path')`"),r}visitTableMethod(e){const n=e.connectionId(),r=this.astAt(this.getModelEntryName(n),n),i=this.getPlainStringFrom(e.tablePath());return this.astAt(new ie.TableMethodSource(r,i),e)}visitSqlSource(e){const n=e.connectionId(),r=this.astAt(this.getModelEntryName(n),n),i=new ie.SQLString,s=e.sqlString();s&&this.makeSqlString(s,i);const o=e.shortString();o&&i.push((0,kn.getShortString)(o));const u=new ie.SQLSource(r,i);return this.astAt(u,e)}visitDefJoinMany(e){const n=[];for(const i of e.joinList().joinDef()){const s=this.visit(i);s instanceof ie.Join&&(n.push(s),s instanceof ie.ExpressionJoin?(s.joinType="many",s.joinOn===void 0&&this.contextError(e,"join_many: requires ON expression")):s instanceof ie.KeyJoin&&this.contextError(e,"Foreign key join not legal in join_many:"))}const r=new ie.Joins(n);return r.extendNote({blockNotes:this.getNotes(e.tags())}),r}visitDefJoinOne(e){const n=this.getJoinList(e.joinList()),r=[];for(const s of n)s instanceof ie.Join&&(r.push(s),s instanceof ie.ExpressionJoin&&(s.joinType="one"));const i=new ie.Joins(r);return i.extendNote({blockNotes:this.getNotes(e.tags())}),i}visitDefJoinCross(e){const n=this.getJoinList(e.joinList()),r=[];for(const s of n)s instanceof ie.Join&&(r.push(s),s instanceof ie.ExpressionJoin?s.joinType="cross":s.log("Foreign key join not legal in join_cross:"));const i=new ie.Joins(r);return i.extendNote({blockNotes:this.getNotes(e.tags())}),i}getJoinList(e){return e.joinDef().map(n=>this.visit(n))}getJoinFrom(e){const n=e.isExplore(),r=this.getModelEntryName(e.joinNameDef());if(n){const s=this.getSqExpr(n.sqExpr()),o=this.getNotes(n._before_is).concat(this.getNotes(n._after_is));return{joinFrom:s,notes:o,joinAs:r}}const i=e.sourceArguments();return i?{joinFrom:this.astAt(new ie.SQReference(r,this.getSQArguments(i)),e),notes:[],joinAs:r}:{joinAs:r,joinFrom:new ie.SQReference(r),notes:[]}}visitQueryJoinStatement(e){const n=this.astAt(this.visit(e.joinStatement()),e);return this.m4advisory(e,"Joins in queries are deprecated, move into an `extend:` block."),n}visitJoinOn(e){var n;const{joinAs:r,joinFrom:i,notes:s}=this.getJoinFrom(e.joinFrom()),o=new ie.ExpressionJoin(r,i),u=e.joinExpression(),a=((n=e.matrixOperation())===null||n===void 0?void 0:n.text.toLocaleLowerCase())||"left";return(0,R7.isMatrixOperation)(a)?o.matrixOperation=a:this.contextError(e,"Internal Error: Unknown matrixOperation"),u&&(o.joinOn=this.getFieldExpr(u)),o.extendNote({notes:this.getNotes(e).concat(s)}),this.astAt(o,e)}visitJoinWith(e){const{joinAs:n,joinFrom:r,notes:i}=this.getJoinFrom(e.joinFrom()),s=this.getFieldExpr(e.fieldExpr()),o=new ie.KeyJoin(n,r,s);return o.extendNote({notes:this.getNotes(e).concat(i)}),this.astAt(o,e)}getFieldDef(e,n){const r=e.fieldExpr(),i=(0,kn.getId)(e.fieldNameDef()),s=this.getFieldExpr(r),o=new n(s,i,this.getSourceCode(r)),u=this.getNotes(e.tags()).concat(this.getIsNotes(e.isDefine()));return o.extendNote({notes:u}),this.astAt(o,e)}visitDefDimensions(e){const n=this.getFieldDefs(e.defList().fieldDef(),ie.DimensionFieldDeclaration),r=new ie.Dimensions(n);return r.extendNote({blockNotes:this.getNotes(e.tags())}),this.astAt(r,e)}visitDefMeasures(e){const n=this.getFieldDefs(e.defList().fieldDef(),ie.MeasureFieldDeclaration),r=new ie.Measures(n);return r.extendNote({blockNotes:this.getNotes(e.tags())}),this.astAt(r,e)}visitQueryExtend(e){const n=[],r=e.queryExtendStatementList().queryExtendStatement().map(s=>this.visit(s));for(const s of r)if(ie.isQueryExtendProperty(s))n.push(s);else throw this.internalError(e,`Query extend matched, but ${s.elementType} found`);const i=new ie.ExtendBlock(n);return this.astAt(i,e)}visitDeclareStatement(e){const n=this.getFieldDefs(e.defList().fieldDef(),ie.DeclareFieldDeclaration),r=new ie.DeclareFields(n),i=this.astAt(r,e);return this.m4advisory(e,"`declare:` is deprecated; use `dimension:` or `measure:` inside a source or `extend:` block"),i}visitExploreRenameDef(e){const n=e.fieldName(0),r=e.fieldName(1),i=new ie.RenameField((0,kn.getId)(n),this.getFieldName(r));return this.astAt(i,e)}visitDefExploreRename(e){const r=e.renameList().exploreRenameDef().map(s=>this.visitExploreRenameDef(s)),i=new ie.Renames(r);return this.astAt(i,e)}visitFilterClauseList(e){return new ie.Filter(e.fieldExpr().map(n=>this.getFilterElement(n)))}visitWhereStatement(e){const n=this.visitFilterClauseList(e.filterClauseList());return n.having=!1,this.astAt(n,e)}visitHavingStatement(e){const n=this.visitFilterClauseList(e.filterClauseList());return n.having=!0,this.astAt(n,e)}visitSubQueryDefList(e){const n=e.exploreQueryDef().map(r=>this.visitExploreQueryDef(r));return new ie.Views(n)}visitDefExploreQuery(e){const n=this.visitSubQueryDefList(e.subQueryDefList()),r=this.getNotes(e.tags());return n.extendNote({blockNotes:r}),e.QUERY()&&this.m4advisory(e,"Use view: inside of a source instead of query:"),n}visitDefExplorePrimaryKey(e){const n=new ie.PrimaryKey(this.getFieldName(e.fieldName()));return this.astAt(n,e)}visitFieldNameList(e){const n=e.fieldName().map(r=>new ie.AcceptExceptFieldReference([this.getFieldName(r)]));return new ie.FieldReferences(n)}visitDefExploreEditField(e){const n=e.ACCEPT()?"accept":"except";return new ie.FieldListEdit(n,this.visitFieldNameList(e.fieldNameList()))}visitDefExploreTimezone(e){return this.visitTimezoneStatement(e.timezoneStatement())}visitTimezoneStatement(e){const n=this.getPlainStringFrom(e),r=this.astAt(new ie.TimezoneStatement(n),e.string());return r.isValid||this.astError(r,`Invalid timezone: ${r.tz}`),this.astAt(r,e)}visitQueryProperties(e){const n=this.only(e.queryStatement().map(i=>this.astAt(this.visit(i),i)),i=>ie.isQueryProperty(i)&&i,"query statement"),r=e.filterShortcut();return r&&n.push(this.getFilterShortcut(r)),new ie.QOpDesc(n)}getFieldPath(e,n){const r=e.fieldName().map(i=>this.getFieldName(i));return this.astAt(new n(r),e)}getQueryFieldDef(e,n){const r=this.getFieldDef(e,n);return this.astAt(r,e)}getQueryFieldEntry(e,n,r){const i=e.taggedRef();if(i)return this.getTaggedRef(i,n,r);const s=e.fieldDef();if(s)return this.getQueryFieldDef(s,n);throw new Error("Expected query field entry to be a field reference or definition")}getQueryItems(e,n,r){return this.only(e.queryFieldEntry().map(i=>this.getQueryFieldEntry(i,n,r)),i=>i instanceof ie.FieldReference||i instanceof ie.AtomicFieldDeclaration?i:!1,"view field")}visitAggregateStatement(e){const n=new ie.Aggregate(this.getQueryItems(e.queryFieldList(),ie.AggregateFieldDeclaration,ie.AggregateFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitGroupByStatement(e){const n=new ie.GroupBy(this.getQueryItems(e.queryFieldList(),ie.GroupByFieldDeclaration,ie.GroupByFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitCalculateStatement(e){const n=new ie.Calculate(this.getQueryItems(e.queryFieldList(),ie.CalculateFieldDeclaration,ie.CalculateFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}getTaggedRef(e,n,r){const i=e.refExpr();if(i){const o=this.getFieldPath(e.fieldPath(),ie.ExpressionFieldReference);let u;const a=i.timeframe();a&&(u=new ie.ExprGranularTime(new ie.ExprIdReference(o),this.visitTimeframe(a).text,!0));const l=i.aggregate();if(l){const f=l.text.toLowerCase();if(f==="sum")u=new ie.ExprSum(void 0,o);else return this.contextError(l,`\`${f}\` is not legal in a reference-only aggregation`),o}const c=new n(u,o.outputName);return c.extendNote({notes:this.getNotes(e.tags())}),c}const s=this.getFieldPath(e.fieldPath(),r);return s.extendNote({notes:this.getNotes(e.tags())}),s}getFieldCollectionMember(e,n,r){const i=e.fieldDef();if(i)return this.getFieldDef(i,n);const s=e.taggedRef();if(s)return this.getTaggedRef(s,n,r);const o=e.collectionWildCard();if(o)return this.visitCollectionWildCard(o);throw this.internalError(e,"Unexpected element in fieldCollectionMember")}visitFieldCollection(e){const n=e.collectionMember().map(r=>this.getFieldCollectionMember(r,ie.ProjectFieldDeclaration,ie.ProjectFieldReference));return this.astAt(new ie.ProjectStatement(n),e)}visitProjectStatement(e){e.PROJECT()&&this.m4advisory(e,"project: keyword is deprecated, use select:");const n=this.visitFieldCollection(e.fieldCollection());return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitCollectionWildCard(e){var n;const r=e.fieldPath(),i=r?this.getFieldPath(r,ie.ProjectFieldReference):void 0,s=this.astAt(new ie.WildcardFieldReference(i),e),o=((n=e.starQualified())===null||n===void 0?void 0:n.fieldNameList())||[];for(const u of o)for(const a of u.fieldName())s.except.add((0,kn.getId)(a));return s}visitIndexFields(e){const n=e.indexElement().map(r=>{const i=r.fieldPath();if(!i)return this.astAt(new ie.WildcardFieldReference(void 0),e);const s=this.getFieldPath(i,ie.IndexFieldReference);return r.STAR()?this.astAt(new ie.WildcardFieldReference(s),e):this.astAt(s,e)});return new ie.FieldReferences(n)}visitIndexStatement(e){const n=this.visitIndexFields(e.indexFields()),r=new ie.Index(n),i=e.fieldName();return i&&r.useWeight(this.getFieldName(i)),this.astAt(r,e)}visitFieldPropertyLimitStatement(e){return this.inExperiment("aggregate_limit",e),this.visitLimitStatement(e.limitStatement())}visitLimitStatement(e){return new ie.Limit(this.getNumber(e.INTEGER_LITERAL()))}visitAggregateOrderBySpec(e){const n=e.ASC()?"asc":e.DESC()?"desc":void 0,r=e.fieldExpr(),i=r?this.getFieldExpr(r):void 0;return this.astAt(new ie.FunctionOrderBy(i,n),e)}visitAggregateOrderByStatement(e){return this.visitAggregateOrdering(e.aggregateOrdering())}visitAggregateOrdering(e){const n=e.aggregateOrderBySpec().map(r=>this.visitAggregateOrderBySpec(r));return this.astAt(new ie.FunctionOrdering(n),e)}visitOrderBySpec(e){const n=e.ASC()?"asc":e.DESC()?"desc":void 0,r=e.INTEGER_LITERAL();if(r)return new ie.OrderBy(this.getNumber(r),n);const i=e.fieldName();if(i)return new ie.OrderBy(this.getFieldName(i),n);throw this.internalError(e,"can't parse order_by specification")}visitOrdering(e){const n=e.orderBySpec().map(r=>this.visitOrderBySpec(r));return this.astAt(new ie.Ordering(n),e)}visitTopStatement(e){const n=e.bySpec(),r=this.getNumber(e.INTEGER_LITERAL());let i;if(n){this.m4advisory(n,"by clause of top statement unupported. Use order_by instead");const s=n.fieldName();if(s){const u=this.getFieldName(s);i=new ie.Top(r,u)}const o=n.fieldExpr();o&&(i=new ie.Top(r,this.getFieldExpr(o)))}return i||(i=new ie.Top(r,void 0)),this.astAt(i,e)}visitTopLevelQueryDefs(e){const n=e.topLevelQueryDef().map(s=>this.visitTopLevelQueryDef(s)),r=this.getNotes(e.tags()),i=new ie.DefineQueryList(n);return i.extendNote({blockNotes:r}),i}visitTopLevelQueryDef(e){const n=(0,kn.getId)(e.queryName()),r=this.visit(e.sqExpr()),i=this.getNotes(e.tags()).concat(this.getIsNotes(e.isDefine()));if(r instanceof ie.SourceQueryElement){const s=new ie.DefineQuery(n,r);return s.extendNote({notes:i}),this.astAt(s,e)}throw this.internalError(e,`Expected query definition, got a '${r.elementType}'`)}visitAnonymousQuery(e){const n=e.topLevelAnonQueryDef(),r=this.getSqExpr(n.sqExpr()),i=this.astAt(new ie.AnonymousQuery(r),n),s=this.getNotes(e.topLevelAnonQueryDef().tags()),o=this.getNotes(e.tags());return i.extendNote({notes:s,blockNotes:o}),this.m4advisory(n,"Anonymous `query:` statements are deprecated, use `run:` instead"),this.astAt(i,e)}visitRunStatement(e){const n=e.topLevelAnonQueryDef(),r=this.getSqExpr(n.sqExpr()),i=this.astAt(new ie.AnonymousQuery(r),n),s=this.getNotes(e.topLevelAnonQueryDef().tags()),o=this.getNotes(e.tags());return i.extendNote({notes:s,blockNotes:o}),this.astAt(i,e)}visitNestStatement(e){const n=this.visitNestedQueryList(e.nestedQueryList());return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitNestedQueryList(e){return new ie.Nests(this.only(e.nestEntry().map(n=>this.visit(n)),n=>n instanceof ie.NestFieldDeclaration&&n,"query"))}visitNestDef(e){const n=e.queryName();let r;const i=this.getVExpr(e.vExpr());if(n)r=(0,kn.getId)(n);else{const u=i.getImplicitName();u===void 0&&this.contextError(e,"`nest:` view requires a name (add `nest_name is ...`)"),r=u??"__unnamed__"}const s=new ie.NestFieldDeclaration(r,i),o=e.isDefine();return s.extendNote({notes:this.getNotes(e.tags()).concat(o?this.getIsNotes(o):[])}),this.astAt(s,e)}visitExploreQueryDef(e){const n=(0,kn.getId)(e.exploreQueryNameDef()),r=new ie.ViewFieldDeclaration(n,this.getVExpr(e.vExpr())),i=this.getNotes(e).concat(this.getIsNotes(e.isDefine()));return r.extendNote({notes:i}),this.astAt(r,e)}visitExprNot(e){return new ie.ExprNot(this.getFieldExpr(e.fieldExpr()))}visitExprBool(e){return new ie.Boolean(e.TRUE()?"true":"false")}allFieldExpressions(e){return e.map(n=>this.getFieldExpr(n))}visitExprLogicalOr(e){const n=this.getFieldExpr(e.fieldExpr(0)),r=this.getFieldExpr(e.fieldExpr(1));return new ie.ExprLogicalOp(n,"or",r)}visitExprLogicalAnd(e){const n=this.getFieldExpr(e.fieldExpr(0)),r=this.getFieldExpr(e.fieldExpr(1));return new ie.ExprLogicalOp(n,"and",r)}visitExprOrTree(e){const n=this.getFieldExpr(e.fieldExpr()),r=this.getFieldExpr(e.partialAllowedFieldExpr());return this.astAt(new ie.ExprAlternationTree(n,"|",r),e)}visitExprAndTree(e){const n=this.getFieldExpr(e.fieldExpr()),r=this.getFieldExpr(e.partialAllowedFieldExpr());return this.astAt(new ie.ExprAlternationTree(n,"&",r),e)}visitExprCoalesce(e){const n=this.getFieldExpr(e.fieldExpr()[0]),r=this.getFieldExpr(e.fieldExpr()[1]);return this.astAt(new ie.ExprCoalesce(n,r),e)}visitPartialAllowedFieldExpr(e){var n;const r=this.getFieldExpr(e.fieldExpr()),i=(n=e.compareOp())===null||n===void 0?void 0:n.text;if(i){if(ie.isComparison(i))return this.astAt(new ie.PartialCompare(i,r),e);throw this.internalError(e,`partial comparison '${i}' not recognized`)}return r}visitExprString(e){const n=this.getPlainStringFrom(e);return new ie.ExprString(n)}visitExprRegex(e){const n=e.HACKY_REGEX().text;return new ie.ExprRegEx(n.slice(2,-1))}visitExprNow(e){return new ie.ExprNow}visitExprNumber(e){return new ie.ExprNumber(e.text)}visitExprFieldPath(e){const n=new ie.ExprIdReference(this.getFieldPath(e.fieldPath(),ie.ExpressionFieldReference));return this.astAt(n,e)}visitExprNULL(e){return new ie.ExprNULL}visitExprExpr(e){return new ie.ExprParens(this.getFieldExpr(e.partialAllowedFieldExpr()))}visitExprMinus(e){return new ie.ExprMinus(this.getFieldExpr(e.fieldExpr()))}visitExprAddSub(e){const n=this.getFieldExpr(e.fieldExpr(0)),r=this.getFieldExpr(e.fieldExpr(1)),i=e.PLUS()?"+":"-";return new ie.ExprAddSub(n,i,r)}visitExprMulDiv(e){const n=e.STAR()?"*":e.SLASH()?"/":"%";return new ie.ExprMulDiv(this.getFieldExpr(e.fieldExpr(0)),n,this.getFieldExpr(e.fieldExpr(1)))}visitExprCompare(e){const n=e.compareOp().text;if(ie.isComparison(n))return new ie.ExprCompare(this.getFieldExpr(e.fieldExpr(0)),n,this.getFieldExpr(e.fieldExpr(1)));throw this.internalError(e,`untranslatable comparison operator '${n}'`)}visitExprUngroup(e){const n=e.fieldName().map(i=>this.getFieldName(i)),r=e.ungroup().text.toLowerCase();return this.astAt(new ie.ExprUngroup(r==="all"?r:"exclude",this.getFieldExpr(e.fieldExpr()),n),e)}symmetricAggregateUsageError(e){return`Symmetric aggregate function \`${e}\` must be written as \`${e}(expression)\` or \`path.to.field.${e}()\``}asymmetricAggregateUsageError(e){return`Asymmetric aggregate function \`${e}\` must be written as \`path.to.field.${e}()\`, \`path.to.join.${e}(expression)\`, or \`${e}(expression)\``}visitExprAggregate(e){const n=e.fieldPath(),r=this.getFieldPath(n,ie.ExpressionFieldReference),i=n&&r?this.astAt(r,n):void 0,s=e.aggregate().text.toLowerCase(),o=e.fieldExpr();if(e.aggregate().COUNT())return o&&this.contextError(o,"Expression illegal inside path.count()"),new ie.ExprCount(i);const u=o?this.getFieldExpr(o):void 0;if(s==="min"||s==="max")if(u)this.contextError(e,this.symmetricAggregateUsageError(s));else{const a=this.astAt(new ie.ExprIdReference(r),n);return s==="min"?new ie.ExprMin(a):new ie.ExprMax(a)}else{if(s==="avg")return new ie.ExprAvg(u,i);if(s==="sum")return new ie.ExprSum(u,i);this.contextError(e,`Cannot parse aggregate function ${s}`)}return new ie.ExprNULL}visitExprPathlessAggregate(e){const n=e.fieldExpr(),r=n?this.getFieldExpr(n):void 0,i=void 0,s=e.aggregate().text.toLowerCase();if(e.STAR()&&this.m4advisory(e,`* illegal inside ${s}()`),s==="count")return this.astAt(r?new ie.ExprCountDistinct(r):new ie.ExprCount,e);if(s==="min"){if(r)return new ie.ExprMin(r);this.contextError(e,this.symmetricAggregateUsageError(s))}else if(s==="max"){if(r)return new ie.ExprMax(r);this.contextError(e,this.symmetricAggregateUsageError(s))}else{if(r===void 0)return this.contextError(e,this.asymmetricAggregateUsageError(s)),new ie.ExprNULL;const o=e.SOURCE_KW()!==void 0;if(s==="avg")return new ie.ExprAvg(r,i,o);if(s==="sum")return new ie.ExprSum(r,i,o)}return new ie.ExprNULL}visitExprApply(e){return new ie.Apply(this.getFieldExpr(e.fieldExpr()),this.getFieldExpr(e.partialAllowedFieldExpr()))}visitExprRange(e){return new ie.Range(this.getFieldExpr(e.fieldExpr(0)),this.getFieldExpr(e.fieldExpr(1)))}visitExprCast(e){const n=this.getMalloyOrSQLType(e.malloyOrSQLType());return new ie.ExprCast(this.getFieldExpr(e.fieldExpr()),n)}getMalloyType(e){const n=e.text;if((0,R7.isCastType)(n))return n;throw this.internalError(e,`unknown type '${n}'`)}getMalloyOrSQLType(e){const n=e.malloyType();if(n)return this.getMalloyType(n);const r=e.string();if(r)return{raw:this.getPlainStringFrom({string:()=>r})};throw this.internalError(e,"Expected Malloy or SQL type to either be a Malloy type or a string")}visitExprSafeCast(e){const n=this.getMalloyOrSQLType(e.malloyOrSQLType());return new ie.ExprCast(this.getFieldExpr(e.fieldExpr()),n,!0)}visitExprTimeTrunc(e){return new ie.ExprGranularTime(this.getFieldExpr(e.fieldExpr()),this.visitTimeframe(e.timeframe()).text,!0)}visitTimeframe(e){return new ie.Timeframe(e.text)}visitExprForRange(e){const n=this.getFieldExpr(e._startAt),r=this.getFieldExpr(e._duration),i=this.visitTimeframe(e.timeframe());return new ie.ForRange(n,r,i)}visitExprAggFunc(e){const n=e.argumentList(),r=n?this.allFieldExpressions(n.fieldExpr()):[],i=(0,kn.getId)(e),s=e.fieldPath(),o=s?this.getFieldPath(s,ie.ExpressionFieldReference):void 0,u=s&&o?this.astAt(o,s):void 0;return ie.ExprTimeExtract.extractor(i)?this.astAt(new ie.ExprTimeExtract(i,r),e):this.astAt(new ie.ExprFunc(i,r,!1,void 0,u),e)}visitExprFunc(e){var n,r;const i=e.argumentList(),s=i?this.allFieldExpressions(i.fieldExpr()):[],o=e.EXCLAM()!==void 0,u=(n=e.malloyType())===null||n===void 0?void 0:n.text;let a;u&&((0,R7.isCastType)(u)?a=u:(this.contextError(e,`'#' assertion for unknown type '${u}'`),a=void 0));let l=(0,kn.getOptionalId)(e)||((r=e.timeframe())===null||r===void 0?void 0:r.text);return l===void 0&&(this.contextError(e,"Function name error"),l="FUNCTION_NAME_ERROR"),ie.ExprTimeExtract.extractor(l)?this.astAt(new ie.ExprTimeExtract(l,s),e):this.astAt(new ie.ExprFunc(l,s,o,a),e)}visitExprDuration(e){return new ie.ExprDuration(this.getFieldExpr(e.fieldExpr()),this.visitTimeframe(e.timeframe()).text)}visitPickStatement(e){const n=e.pick().map(r=>{let i;return r._pickValue&&(i=this.getFieldExpr(r._pickValue)),new ie.PickWhen(i,this.getFieldExpr(r._pickWhen))});return e.ELSE()?new ie.Pick(n,this.getFieldExpr(e._pickElse)):new ie.Pick(n)}visitExprFieldProps(e){const n=this.only(e.fieldProperties().fieldPropertyStatement().map(r=>this.visit(r)),r=>ie.isFieldPropStatement(r)&&r,"field property statement");return new ie.ExprProps(this.getFieldExpr(e.fieldExpr()),n)}visitPartitionByStatement(e){return this.astAt(new ie.PartitionBy(e.id().map(n=>this.astAt(new ie.PartitionByFieldReference([this.astAt(new ie.FieldName((0,kn.idToStr)(n)),n)]),n))),e)}visitLiteralTimestamp(e){return this.parseTime(e,ie.LiteralTimestamp.parse)}visitLiteralHour(e){return this.parseTime(e,ie.LiteralHour.parse)}visitLiteralDay(e){return this.parseTime(e,ie.LiteralDay.parse)}visitLiteralWeek(e){return this.parseTime(e,ie.LiteralWeek.parse)}visitLiteralMonth(e){return this.parseTime(e,ie.LiteralMonth.parse)}visitLiteralQuarter(e){return this.parseTime(e,ie.LiteralQuarter.parse)}visitLiteralYear(e){return this.parseTime(e,ie.LiteralYear.parse)}visitImportStatement(e){const n=this.getPlainStringFrom(e.importURL()),r=this.astAt(new ie.ImportStatement(n,this.parseInfo.importBaseURL),e),i=e.importSelect();if(i)for(const s of i.importItem()){const o=s.id(),u=o[1]?this.astAt(new ie.ImportSourceName((0,kn.idToStr)(o[1])),o[1]):void 0;r.push(this.astAt(new ie.ImportSelect((0,kn.idToStr)(o[0]),u),o[0]))}return r}visitJustExpr(e){return this.getFieldExpr(e.fieldExpr())}visitSampleStatement(e){const n=e.sampleSpec().INTEGER_LITERAL();if(n)return new ie.SampleProperty({rows:this.getNumber(n)});const r=e.sampleSpec().PERCENT_LITERAL();if(r)return new ie.SampleProperty({percent:this.getNumber(r)});const i=e.sampleSpec().TRUE()!==void 0;return new ie.SampleProperty({enable:i})}visitDocAnnotations(e){const n=e.DOC_ANNOTATION().map(i=>({text:i.text,at:this.getLocation(e)})),r=new ie.ModelAnnotation(n);return this.compilerFlags=r.getCompilerFlags(this.compilerFlags,this.msgLog),r}visitIgnoredObjectAnnotations(e){return this.contextError(e,"Object annotation not connected to any object"),new O7(e.text)}visitIgnoredModelAnnotations(e){return this.contextError(e,"Model annotations not allowed at this scope"),new O7(e.text)}visitDefExploreAnnotation(e){const n=this.getNotes(e);return new ie.ObjectAnnotation(n)}getSQArgument(e){const n=e.argumentId(),r=n?this.astAt(new ie.PartitionByFieldReference([this.astAt(new ie.FieldName((0,kn.idToStr)(n.id())),n)]),n):void 0;return this.astAt(new ie.Argument({id:r,value:this.getFieldExpr(e.fieldExpr())}),e)}getSQArguments(e){if(e!==void 0)return this.inExperiment("parameters",e),e.sourceArgument().map(n=>this.getSQArgument(n))}visitSQID(e){const n=this.getModelEntryName(e),r=this.getSQArguments(e.sourceArguments());return this.astAt(new ie.SQReference(n,r),e.id())}getSqExpr(e){const n=this.visit(e);return n instanceof ie.SourceQueryElement?n:(this.contextError(e,`Expected a source/query expression, not '${n.elementType}'`),new mQ)}visitSQExtendedSource(e){const n=this.getSqExpr(e.sqExpr()),r=new ie.SQExtend(n,this.getSourceExtensions(e.exploreProperties()));return this.astAt(r,e)}visitSQParens(e){const n=this.getSqExpr(e.sqExpr());return this.astAt(n,e)}visitSQArrow(e){const n=this.getSqExpr(e.sqExpr()),r=e.segExpr(),i=new ie.SQArrow(n,this.getVExpr(r));return this.astAt(i,e)}getVExpr(e){const n=this.visit(e);if(n instanceof ie.View)return n;throw this.internalError(e,`Expected view, got a '${n.elementType}'`)}visitSegField(e){return new ie.ReferenceView(this.getFieldPath(e.fieldPath(),ie.ViewOrScalarFieldReference))}visitSegOps(e){return new ie.QOpDescView(this.visitQueryProperties(e.queryProperties()))}visitSegParen(e){return this.visit(e.vExpr())}visitVSeg(e){return this.visit(e.segExpr())}visitSegRefine(e){return new ie.ViewRefine(this.getVExpr(e._lhs),this.getVExpr(e._rhs))}visitVArrow(e){return new ie.ViewArrow(this.getVExpr(e._lhs),this.getVExpr(e._rhs))}visitSQRefinedQuery(e){const n=this.getSqExpr(e.sqExpr()),r=e.segExpr(),i=new ie.SQRefine(n,this.getVExpr(r));return this.astAt(i,e)}visitSQTable(e){const n=this.visit(e.exploreTable());if(n instanceof FCe.TableSource){const r=new ie.SQSource(n);return this.astAt(r,e)}return new mQ}visitSQSQL(e){const n=new ie.SQSource(this.visitSqlSource(e.sqlSource()));return this.astAt(n,e)}visitExperimentalStatementForTesting(e){return this.inExperiment("compilerTestExperimentParse",e),this.astAt(new ie.ExperimentalExperiment("compilerTestExperimentTranslate"),e)}visitExprWarnLike(e){let n="~";const r=e.fieldExpr(0),i=e.fieldExpr(1),s=this.parseInfo.rangeFromContext(e);return e.NOT()?(n="!~",this.warnWithReplacement("Use Malloy operator '!~' instead of 'NOT LIKE'",s,`${r.text} !~ ${i.text}`)):this.warnWithReplacement("Use Malloy operator '~' instead of 'LIKE'",s,`${r.text} ~ ${i.text}`),this.astAt(new ie.ExprCompare(this.getFieldExpr(r),n,this.getFieldExpr(i)),e)}visitExprWarnNullCmp(e){let n="=";const r=e.fieldExpr(),i=this.parseInfo.rangeFromContext(e);e.NOT()?(n="!=",this.warnWithReplacement("Use '!= NULL' to check for NULL instead of 'IS NOT NULL'",i,`${r.text} != null`)):this.warnWithReplacement("Use '= NULL' to check for NULL instead of 'IS NULL'",i,`${r.text} = null`);const s=new ie.ExprNULL;return this.astAt(new ie.ExprCompare(this.getFieldExpr(r),n,s),e)}}U4.MalloyToAST=$Ce;var q4={};Object.defineProperty(q4,"__esModule",{value:!0}),q4.MessageLog=void 0;class kCe{constructor(){this.rawLog=[]}getLog(){return this.rawLog}log(e){const n=e.message;if(n.endsWith("]")){const r=n.lastIndexOf("[");r>0&&(e.message=n.slice(0,r),e.errorTag=n.slice(r+1,-1))}this.rawLog.push(e)}reset(){this.rawLog.length=0}noErrors(){return!this.hasErrors()}hasErrors(){return this.rawLog.find(n=>n.severity!=="warn")!==void 0}empty(){return this.rawLog.length===0}}q4.MessageLog=kCe;var z4={};Object.defineProperty(z4,"__esModule",{value:!0}),z4.Zone=void 0;class PCe{constructor(){this.location={},this.zone=new Map}get(e){const n=this.zone.get(e);if((n==null?void 0:n.status)==="present")return n.value}getEntry(e){const n=this.zone.get(e);return n?n.firstReference||!this.location[e]?n:{...n,firstReference:this.location[e]}:{status:"error",message:"import reference failure"}}define(e,n){this.zone.set(e,{status:"present",value:n})}reference(e,n){const r=this.zone.get(e);(r==null?void 0:r.status)===void 0&&(this.zone.set(e,{status:"reference",firstReference:n}),this.location[e]=n)}getUndefined(){const e=[];for(const[n,r]of this.zone)r.status==="reference"&&e.push(n);return e.length>0?e:void 0}updateFrom(e,n){if(e)for(const[r,i]of Object.entries(e))i!==void 0&&this.define(r,i);if(n)for(const[r,i]of Object.entries(n))this.zone.set(r,{status:"error",message:i})}}z4.Zone=PCe;var H4={};Object.defineProperty(H4,"__esModule",{value:!0}),H4.walkForDocumentSymbols=void 0;const MCe=Ml,jCe=rn;class UCe{constructor(e,n,r,i){this.translator=e,this.tokens=n,this.scopes=r,this.symbols=i}popScope(){return this.scopes.pop()}peekScope(){return this.scopes[this.scopes.length-1]}enterTopLevelQueryDefs(e){const n=this.translator.rangeFromContext(e);e.topLevelQueryDef().length===1&&(this.blockRange=n)}enterTopLevelQueryDef(e){this.symbols.push({range:this.translator.rangeFromContext(e),name:e.queryName().text,type:"query",children:[],lensRange:this.blockRange}),this.blockRange=void 0}enterRunStatement(e){this.symbols.push({range:this.translator.rangeFromContext(e.topLevelAnonQueryDef()),name:"unnamed_query",type:"unnamed_query",children:[],lensRange:this.translator.rangeFromContext(e)})}enterAnonymousQuery(e){this.symbols.push({range:this.translator.rangeFromContext(e.topLevelAnonQueryDef().sqExpr()),name:"unnamed_query",type:"unnamed_query",children:[],lensRange:this.translator.rangeFromContext(e)})}enterDefineSourceStatement(e){const n=this.translator.rangeFromContext(e);e.sourcePropertyList().sourceDefinition().length===1&&(this.blockRange=n)}enterSourceDefinition(e){const n=this.translator.rangeFromContext(e);this.scopes.push({range:n,name:e.sourceNameDef().id().text,type:"explore",children:[],lensRange:this.blockRange}),this.blockRange=void 0}exitSourceDefinition(e){const n=this.popScope();n&&this.symbols.push(n)}enterDefExploreQuery(e){const n=this.translator.rangeFromContext(e);e.subQueryDefList().exploreQueryDef().length===1&&(this.blockRange=n)}enterExploreQueryDef(e){const n={range:this.translator.rangeFromContext(e),name:e.exploreQueryNameDef().id().text,type:"query",children:[],lensRange:this.blockRange},r=this.peekScope();r&&r.children.push(n),this.scopes.push(n),this.blockRange=void 0}exitExploreQueryDef(e){this.popScope()}getNestDefName(e){const n=e.queryName();if(n)return n.id().text;let r,i=!1;const s={enterVArrow(u){u.vExpr().enterRule(s)},enterVSeg(u){u.segExpr().enterRule(o)}},o={enterSegField(u){const a=u.fieldPath().fieldName();i||(r??(r=a[a.length-1].id().text))},enterSegParen(u){u.vExpr().enterRule(s)},enterSegRefine(u){u._lhs.enterRule(o)},enterSegOps(){r=void 0,i=!0}};return e.vExpr().enterRule(s),r}handleNestEntry(e){const n=this.getNestDefName(e);if(n===void 0)return;const r={range:this.translator.rangeFromContext(e),name:n,type:"query",children:[]},i=this.peekScope();return i&&i.children.push(r),r}enterNestDef(e){const n=this.handleNestEntry(e);n&&this.scopes.push(n)}exitNestDef(e){this.popScope()}enterFieldDef(e){const n={range:this.translator.rangeFromContext(e),name:e.fieldNameDef().id().text,type:"field",children:[]},r=this.peekScope();r&&r.children.push(n)}enterQueryFieldEntry(e){var n;const r=(n=e.taggedRef())===null||n===void 0?void 0:n.fieldPath();if(r===void 0)return;const i={range:this.translator.rangeFromContext(e),name:r.text,type:"field",children:[]},s=this.peekScope();s&&s.children.push(i)}enterExploreRenameDef(e){const n={range:this.translator.rangeFromContext(e),name:e.fieldName()[0].text,type:"field",children:[]},r=this.peekScope();r&&r.children.push(n)}enterJoinWith(e){this.handleJoinDef(e)}enterJoinOn(e){this.handleJoinDef(e)}handleJoinDef(e){const n={range:this.translator.rangeFromContext(e),name:e.joinFrom().joinNameDef().id().text,type:"join",children:[]},r=this.peekScope();r&&r.children.push(n)}enterImportStatement(e){const n=(0,jCe.getStringIfShort)(e.importURL());n&&this.scopes.push({range:this.translator.rangeFromContext(e),name:n,type:"import",children:[]})}exitImportStatement(){const e=this.popScope();e&&this.symbols.push(e)}enterImportSelect(e){const n=this.peekScope();if(n)for(const r of e.importItem()){const i={range:this.translator.rangeFromContext(e),name:r.text,type:"import_item",children:[]};n.children.push(i)}}}function qCe(t,e,n){const r=new UCe(t,e,[],[]),i=r;return MCe.ParseTreeWalker.DEFAULT.walk(i,n),r.symbols}H4.walkForDocumentSymbols=qCe;var Q4={};Object.defineProperty(Q4,"__esModule",{value:!0}),Q4.walkForDocumentCompletions=void 0;const zCe=Ml,HCe=["dimension","measure","join_one","join_many","join_cross","where","primary_key","rename","accept","except","query","declare"],QCe=["group_by","project","index","aggregate","top","limit","order_by","where","having","nest","declare"],GCe=["source","explore","query","sql"];class WCe{constructor(e,n,r){this.tokens=e,this.completions=n,this.position=r}rangeOf(e){const n=e.stop||e.start;return{start:{line:e.start.line-1,character:e.start.charPositionInLine},end:{line:n.line-1,character:n.stopIndex-(n.startIndex-n.charPositionInLine)+1}}}inRange(e){const{start:n,end:r}=e,i=this.position.line>n.line||this.position.line===n.line&&this.position.character>=n.character,s=this.position.line<r.line||this.position.line===r.line&&this.position.character<=r.character;return i&&s}enterExploreProperties(e){if(this.inRange(this.rangeOf(e))){let n=!1;for(const r of e.exploreStatement())this.inRange(this.rangeOf(r))&&(n=!0);if(!n)for(const r of HCe)this.completions.push({type:"explore_property",text:`${r}: `})}}enterQueryProperties(e){if(this.inRange(this.rangeOf(e))){let n=!1;for(const r of e.queryStatement())this.inRange(this.rangeOf(r))&&(n=!0);if(!n)for(const r of QCe)this.completions.push({type:"query_property",text:`${r}: `})}}enterMalloyDocument(e){if(this.inRange(this.rangeOf(e))){let n=!1;for(const r of e.malloyStatement())this.inRange(this.rangeOf(r))&&(n=!0);if(!n)for(const r of GCe)this.completions.push({type:"model_property",text:`${r}: `})}}}function VCe(t,e,n){const r=new WCe(t,[],n),i=r;return zCe.ParseTreeWalker.DEFAULT.walk(i,e),r.completions}Q4.walkForDocumentCompletions=VCe;var G4={};Object.defineProperty(G4,"__esModule",{value:!0}),G4.walkForDocumentHelpContext=void 0;const YCe=cO;class XCe extends YCe.AbstractParseTreeVisitor{constructor(e){super(),this.position=e,this.type=""}rangeOf(e){const n=e.stop||e.start;return{start:{line:e.start.line-1,character:e.start.charPositionInLine},end:{line:n.line-1,character:n.stopIndex-(n.startIndex-n.charPositionInLine)+1}}}inRange(e){return e.start.line<=this.position.line&&e.end.line>=this.position.line&&(this.position.line!==e.start.line||this.position.character>=e.start.character)&&(this.position.line!==e.end.line||this.position.character<=e.end.character)}defaultResult(){}visitChildren(e){let n=this.defaultResult();if(this.inRange(this.rangeOf(e))){n={type:this.type,token:e.start.text};const r=e.childCount;for(let i=0;i<r;i++){const o=e.getChild(i).accept(this);o&&(n=this.aggregateResult(n,o))}}return n}visitMalloyDocument(e){return this.inRange(this.rangeOf(e))?(this.type="model_property",this.visitChildren(e)):this.defaultResult()}visitExploreProperties(e){return this.inRange(this.rangeOf(e))?(this.type="explore_property",this.visitChildren(e)):this.defaultResult()}visitQueryProperties(e){return this.inRange(this.rangeOf(e))?(this.type="query_property",this.visitChildren(e)):this.defaultResult()}aggregateResult(e,n){return n}}function KCe(t,e){return new XCe(e).visit(t)}G4.walkForDocumentHelpContext=KCe;var W4={},Rg={};Object.defineProperty(Rg,"__esModule",{value:!0}),Rg.locationContainsPosition=void 0;function JCe(t,e){return t.range.start.line<=e.line&&t.range.end.line>=e.line&&(e.line!==t.range.start.line||e.character>=t.range.start.character)&&(e.line!==t.range.end.line||e.character<=t.range.end.character)}Rg.locationContainsPosition=JCe,Object.defineProperty(W4,"__esModule",{value:!0}),W4.ReferenceList=void 0;const ZCe=Rg;class ebe{constructor(e){this.sourceURL=e,this.references=[]}findIndexBefore(e){let n=0,r=this.references.length;for(;n<r;){const i=Math.floor((n+r)/2),s=this.references[i].location.range.end;s.line<e.line||s.line===e.line&&s.character<e.character?n=i+1:r=i}return n}add(e){if(e.location.url!==this.sourceURL)return;const n=this.findIndexBefore(e.location.range.end);n<this.references.length&&this.isPositionEqual(e,this.references[n])||this.references.splice(n,0,e)}isPositionEqual(e,n){const r=e.location.range,i=n.location.range;return r.start.line===i.start.line&&r.start.character===i.start.character&&r.end.line===i.end.line&&r.end.character===i.end.character}find(e){const n=this.findIndexBefore(e);if(n===this.references.length)return;const r=this.references[n];if((0,ZCe.locationContainsPosition)(r.location,e))return r}}W4.ReferenceList=ebe;var V4={};Object.defineProperty(V4,"__esModule",{value:!0}),V4.isNeedResponse=void 0;function tbe(t){return!!t&&(t.tables||t.urls||t.compileSQL)!==void 0}V4.isNeedResponse=tbe;var Y4={};Object.defineProperty(Y4,"__esModule",{value:!0}),Y4.walkForModelAnnotation=void 0;const nbe=Ml;class rbe{constructor(e,n,r){this.translator=e,this.tokens=n,this.parseInfo=r,this.notes=[]}getLocation(e){return{url:this.parseInfo.sourceURL,range:this.parseInfo.rangeFromContext(e)}}enterDocAnnotations(e){const n=e.DOC_ANNOTATION().map(r=>({text:r.text,at:this.getLocation(e)}));this.notes.push(...n)}get annotation(){return{notes:this.notes}}}function ibe(t,e,n){const r=new rbe(t,e,n),i=r;return nbe.ParseTreeWalker.DEFAULT.walk(i,n.root),r.annotation}Y4.walkForModelAnnotation=ibe;var X4={};Object.defineProperty(X4,"__esModule",{value:!0}),X4.walkForTablePath=void 0;const yQ=rn,sbe=Ml;class obe{constructor(e,n){this.translator=e,this.tokens=n,this.pathInfos=[]}enterTableMethod(e){const n=(0,yQ.getId)(e.connectionId()),[r,i]=(0,yQ.getPlainString)(e.tablePath(),!0);r!==void 0&&this.pathInfos.push({connectionId:n,tablePath:r,range:this.translator.rangeFromContext(e)})}}function ube(t,e,n){const r=new obe(t,e),i=r;return sbe.ParseTreeWalker.DEFAULT.walk(i,n.root),r.pathInfos}X4.walkForTablePath=ube;var abe=w&&w.__createBinding||(Object.create?function(t,e,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(e,n);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,i)}:function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]}),lbe=w&&w.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),cbe=w&&w.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var n in t)n!=="default"&&Object.prototype.hasOwnProperty.call(t,n)&&abe(e,t,n);return lbe(e,t),e};Object.defineProperty(Go,"__esModule",{value:!0}),Go.MalloyParserErrorHandler=Go.MalloyTranslator=Go.MalloyChildTranslator=Go.MalloyTranslation=void 0;const EQ=Zy,fbe=xA,xbe=F,AQ=cbe(KA),dbe=U4,hbe=q4,pbe=Oa,D7=z4,gbe=H4,mbe=Q4,ybe=G4,Ebe=W4,K4=V4,Abe=Rg,vQ=_a,vbe=Y4,Sbe=X4;class _be extends fbe.MalloyLexer{popMode(){return this._modeStack.isEmpty?this._mode:super.popMode()}}class Cbe{step(e){if(this.response)return this.response;if(e.urlIsFullPath===void 0)try{const s=new URL(e.sourceURL);e.urlIsFullPath=!0}catch(s){const o=s instanceof Error?s.message:"";e.urlIsFullPath=!1,e.root.logger.log({message:`Could not compute full path URL: ${o}`,severity:"error"})}if(!e.urlIsFullPath)return e.fatalResponse();const n=e.root.importZone.getEntry(e.sourceURL);if(n.status!=="present"){if(n.status==="error"){const s=n.message.includes(e.sourceURL)?`import error: ${n.message}`:`import '${e.sourceURL}' error: ${n.message}`,o=n.firstReference||e.defaultLocation();return e.root.logger.log({message:s,at:o,severity:"error"}),this.response=e.fatalResponse(),this.response}return{urls:[e.sourceURL]}}const r=n.value===""?`
|
|
1302
1302
|
`:n.value;this.sourceInfo=this.getSourceInfo(r);let i;try{i=this.runParser(r,e)}catch(s){e.root.logger.log({message:`Malloy internal parser exception [${s.message}]`,severity:"error"}),i=void 0}return e.root.logger.hasErrors()?this.response={parse:i,...e.fatalResponse()}:this.response={parse:i},this.response}getSourceInfo(e){const n=/\r?\n/,r={at:[],lines:[],length:e.length};let i=e,s=0;for(;i!=="";){const o=i.match(n);if(o&&o.index!==void 0){r.lines.push(i.slice(0,o.index));const u=o.index+o[0].length;r.at.push({begin:s,end:s+u}),s+=u,i=i.slice(u)}else{r.lines.push(i),r.at.push({begin:s,end:s+i.length});break}}return r}runParser(e,n){const r=EQ.CharStreams.fromString(e),i=new _be(r),s=new EQ.CommonTokenStream(i),o=new xbe.MalloyParser(s);o.removeErrorListeners(),o.addErrorListener(new _Q(n,n.root.logger));const u=o[n.grammarRule];if(!u)throw new Error(`No such parse rule as ${n.grammarRule}`);return{root:u.call(o),tokenStream:s,sourceStream:r,sourceURL:n.sourceURL,importBaseURL:n.importBaseURL||n.sourceURL,rangeFromContext:a=>n.rangeFromContext(a),malloyVersion:"4.0.0"}}}class bbe{constructor(e){this.parseStep=e,this.parseReferences=void 0}step(e){const n=this.parseStep.step(e);if(n.parse===void 0)return n;if(!this.parseReferences){this.parseReferences=(0,pbe.findReferences)(e,n.parse.tokenStream,n.parse.root);for(const o in this.parseReferences.tables)e.root.schemaZone.reference(o,{url:e.sourceURL,range:this.parseReferences.tables[o].firstReference});for(const o in this.parseReferences.urls){const u=this.parseReferences.urls[o];try{const a=decodeURI(new URL(o,e.importBaseURL||e.sourceURL).toString());e.addChild(a),e.imports.push({importURL:a,location:{url:e.sourceURL,range:u}}),e.root.importZone.reference(a,{url:e.sourceURL,range:u})}catch{e.root.logger.log({message:`Malformed URL '${o}'"`,at:{url:e.sourceURL,range:u},severity:"error"})}}}if(e.root.logger.hasErrors())return null;let r={};const i=e.root.schemaZone.getUndefined();if(i){const o={};for(const u of i){const a=this.parseReferences.tables[u];o[u]={connectionName:a.connectionName,tablePath:a.tablePath}}r={tables:o}}const s=e.root.importZone.getUndefined();if(s&&(r={...r,urls:s}),(0,K4.isNeedResponse)(r))return r;for(const o of e.childTranslators.values()){const u=o.importsAndTablesStep.step(o);if((0,K4.isNeedResponse)(u))return u}return null}}class Tbe{constructor(e){this.importStep=e,this.walked=!1}step(e){if(this.response)return this.response;const n=this.importStep.step(e);if(n)return n;const r=e.parseStep.response;if(e.root.logger.hasErrors())return this.response=e.fatalResponse(),this.response;const i=r==null?void 0:r.parse;if(!i)throw new Error("TRANSLATOR INTERNAL ERROR: Translator parse response had no errors, but also no parser");const s=new dbe.MalloyToAST(i,e.root.logger,e.compilerFlags),o=s.visit(i.root);if(e.compilerFlags=s.compilerFlags,o.elementType==="unimplemented"&&o.log("INTERNAL COMPILER ERROR: Untranslated parse node"),!this.walked){for(const u of o.walk())u instanceof AQ.Unimplemented&&u.log("INTERNAL COMPILER ERROR: Untranslated parse node");this.walked=!0}if(e.root.logger.hasErrors())return this.response=e.fatalResponse(),this.response;for(const u of e.childTranslators.values()){const a=u.astStep.step(u);if((0,K4.isNeedResponse)(a))return a}return o.setTranslator(e),this.response={...e.problemResponse(),ast:o,final:!0},this.response}}class Rbe{constructor(e){this.parseStep=e}step(e){if(!this.response){const n=this.parseStep.step(e);if(n.parse){let r;try{r=(0,gbe.walkForDocumentSymbols)(e,n.parse.tokenStream,n.parse.root)}catch{}this.response={symbols:r,final:!0}}else return n}return this.response}}class Obe{constructor(e){this.parseStep=e}step(e,n){const r=this.parseStep.step(e);if(r.parse){let i=[];if(n!==void 0)try{i=(0,mbe.walkForDocumentCompletions)(r.parse.tokenStream,r.parse.root,n)}catch{}return{...r,completions:i}}else return r}}class Dbe{constructor(e){this.parseStep=e}step(e,n){const r=this.parseStep.step(e);if(r.parse){let i;if(n!==void 0)try{i=(0,ybe.walkForDocumentHelpContext)(r.parse.root,n)}catch{}return{...r,helpContext:i}}else return r}}class Nbe{constructor(e){this.parseStep=e}step(e,n){if(!this.response){const r=this.parseStep.step(e);if(!r.parse||r.final)return r;{const i=(0,vbe.walkForModelAnnotation)(e,r.parse.tokenStream,r.parse);this.response={modelAnnotation:{...i,inherits:n==null?void 0:n.annotation}}}}return this.response}}class wbe{constructor(e){this.parseStep=e}step(e){if(!this.response){const n=this.parseStep.step(e);if(n.parse){const r=(0,Sbe.walkForTablePath)(e,n.parse.tokenStream,n.parse);this.response={pathInfo:r}}else return n}return this.response}}class Fbe{constructor(e){this.astStep=e,this.importedAnnotations=!1}step(e,n){if(this.response)return this.response;if(n&&!this.importedAnnotations){const i=vQ.Tag.annotationToTag(n.annotation,{prefix:/^##! /});e.compilerFlags=i.tag,this.importedAnnotations=!0}const r=this.astStep.step(e);if((0,K4.isNeedResponse)(r))return r;if(!r.ast)return this.response=r,this.response;if(e.grammarRule==="malloyDocument")if(r.ast instanceof AQ.Document){const i=r.ast;for(i.initModelDef(n);;){const s=i.compile();if(s.needs)return s.needs;e.modelDef=s.modelDef,e.queryList=s.queryList,e.sqlBlocks=s.sqlBlocks;break}}else e.root.logger.log({message:`'${e.sourceURL}' did not parse to malloy document`,at:e.defaultLocation(),severity:"error"});return e.root.logger.hasErrors()?this.response={fromSources:e.getDependencies(),...e.fatalResponse()}:this.response={translated:{modelDef:e.modelDef,queryList:e.queryList,sqlBlocks:e.sqlBlocks},fromSources:e.getDependencies(),...e.problemResponse(),final:!0},this.response}}class N7{constructor(e,n=null,r="malloyDocument"){this.sourceURL=e,this.importBaseURL=n,this.grammarRule=r,this.queryList=[],this.sqlBlocks=[],this.imports=[],this.compilerFlags=new vQ.Tag,this.dialectAlreadyChecked={},this.allDialectsEnabled=!1,this.childTranslators=new Map,this.modelDef={name:e,exports:[],contents:{}},this.parseStep=new Cbe,this.modelAnnotationStep=new Nbe(this.parseStep),this.metadataStep=new Rbe(this.parseStep),this.completionsStep=new Obe(this.parseStep),this.helpContextStep=new Dbe(this.parseStep),this.importsAndTablesStep=new bbe(this.parseStep),this.astStep=new Tbe(this.importsAndTablesStep),this.tablePathInfoStep=new wbe(this.parseStep),this.translateStep=new Fbe(this.astStep),this.references=new Ebe.ReferenceList(e)}addChild(e){this.childTranslators.get(e)||this.childTranslators.set(e,new SQ(e,this.root))}getDependencies(){const e=[this.sourceURL];for(const[n,r]of this.childTranslators)e.push(...r.getDependencies());return e}addReference(e){this.references.add(e)}referenceAt(e){return this.references.find(e)}fatalResponse(){return{final:!0,...this.problemResponse()}}problemResponse(){return{problems:this.problems()}}problems(){return[...this.root.logger.getLog()]}getLineMap(e){var n,r;if(e===this.sourceURL)return(n=this.parseStep.sourceInfo)===null||n===void 0?void 0:n.lines;const i=this.childTranslators.get(e);if(i)return(r=i.parseStep.sourceInfo)===null||r===void 0?void 0:r.lines}codeAtLocation(e){const n=this.getLineMap(e.url)||[];if(e.range.start.line===e.range.end.line)return n[e.range.start.line].slice(e.range.start.character,e.range.end.character);let r="";r+=n[e.range.start.line].slice(e.range.start.character);for(let i=e.range.start.line+1;i<e.range.end.line;i++)r+=n[i];return r+=n[e.range.end.line].slice(0,e.range.end.character),r}prettyErrors(){let e="",n="";for(const r of this.root.logger.getLog()){let i=r.message,s=this.sourceURL;if(r.at){s=r.at.url;const o=r.at.range.start.line,u=r.at.range.start.character,a=this.getLineMap(r.at.url);if(a){const l=a[o];i=`line ${o+1}: ${r.message}
|
|
1303
1303
|
| ${l}`,u>0&&(i=i+`
|