@malloydata/render 0.0.164 → 0.0.165-dev240813190247
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.
|
@@ -1294,7 +1294,7 @@ ${JSON.stringify(r,null,2)}`)}logger(){var e;return(e=this.translator())===null|
|
|
|
1294
1294
|
${r} ${s}: [`,o.length>0&&(i+=`
|
|
1295
1295
|
`+o.map(u=>u.stringify("",n+4)).join(`
|
|
1296
1296
|
`)+`
|
|
1297
|
-
${r} `),i+="]")}return i}*walk(){for(const e of Object.keys(this.children)){const n=this.children[e];if(n instanceof Vu)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)}}Ve.MalloyElement=Vu;class aEe extends Vu{constructor(){super(...arguments),this.elementType="unimplemented",this.reported=!1}}Ve.Unimplemented=aEe;class $4 extends Vu{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}}Ve.ModelEntryReference=$4;class lEe extends Vu{constructor(e){super(),this.id=e,this.elementType="experimentalExperiment"}execute(e){this.inExperiment(this.id)}}Ve.ExperimentalExperiment=lEe;function dz(t){return t.execute!==void 0}Ve.isDocStatement=dz;function cEe(t){return t instanceof v1||dz(t)}Ve.isDocStatementOrDocStatementList=cEe;class hz extends Vu{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}}}Ve.ListOf=hz;class v1 extends hz{constructor(){super(...arguments),this.elementType="topLevelStatements",this.execCursor=0,this.isNoteableObj=!0,this.extendNote=xz.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,xz.isNoteable)(n)&&n.extendNote(this.note),this.noteCursor+=1),n instanceof v1){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}}}Ve.DocStatementList=v1;const fEe="5a79a191-06bc-43cf-9b12-58741cd82970";function pz(t){const e=t.inherits?pz(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 xEe(t){const e=pz(t).join("");return(0,uEe.v5)(e,fEe)}class B4 extends Vu{constructor(e){super(),this.elementType="document",this.globalNameSpace=new oEe.GlobalNameSpace,this.documentModel={},this.queryList=[],this.sqlBlocks=[],this.didInitModel=!1,this.annotation={},this.experiments=new sEe.Tag({}),this.modelAnnotationTodoList=[],this.statements=new v1(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=xEe(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,rEe.getDialect)(n).experimental&&!r.experimentalDialectEnabled(n)&&e.log(`Requires compiler flag '##! experimental.dialect.${n}'`,"error")}}Ve.Document=B4;var z_={},Jh={},Xr={},F0={};Object.defineProperty(F0,"__esModule",{value:!0}),F0.canMakeEntry=F0.SpaceEntry=void 0;class dEe{}F0.SpaceEntry=dEe;function hEe(t){return"makeEntry"in t}F0.canMakeEntry=hEe,Object.defineProperty(Xr,"__esModule",{value:!0}),Xr.SpaceField=void 0;const pEe=Z,gEe=F0;class mEe extends gEe.SpaceEntry{constructor(){super(...arguments),this.refType="field"}fieldTypeFromFieldDef(e){const n={dataType:e.type,expressionType:"scalar",evalSpace:"input"};return(0,pEe.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(){}}Xr.SpaceField=mEe,Object.defineProperty(Jh,"__esModule",{value:!0}),Jh.ViewField=void 0;const yEe=Xr;class EEe extends yEe.SpaceField{constructor(e){super(),this.inSpace=e}typeDesc(){return{dataType:"turtle",expressionType:"scalar",evalSpace:"input"}}}Jh.ViewField=EEe,Object.defineProperty(z_,"__esModule",{value:!0}),z_.ASTViewField=void 0;const AEe=Jh;class SEe extends AEe.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)}}z_.ASTViewField=SEe,Object.defineProperty(m1,"__esModule",{value:!0}),m1.ViewFieldDeclaration=void 0;const vEe=Ve,_Ee=Yr,CEe=Yh,bEe=z_;class TEe extends vEe.MalloyElement{constructor(e,n){super({view:n}),this.name=e,this.view=n,this.elementType="view-field-declaration",this.isNoteableObj=!0,this.extendNote=_Ee.extendNoteMethod}makeEntry(e){const n=new bEe.ASTViewField(e,this,this.name);e.newEntry(this.name,this,n)}getFieldDef(e){const{pipeline:n,annotation:r}=this.view.pipelineComp(e),i=(0,CEe.detectAndRemovePartialStages)(n,this);return{type:"turtle",name:this.name,pipeline:i,annotation:{...this.note,inherits:r},location:this.location}}}m1.ViewFieldDeclaration=TEe;var Rn={};Object.defineProperty(Rn,"__esModule",{value:!0}),Rn.LegalRefinementStage=Rn.QueryClass=void 0;var gz;(function(t){t.Index="index",t.Project="project",t.Grouping="grouping"})(gz||(Rn.QueryClass=gz={}));var mz;(function(t){t[t.Single=0]="Single",t[t.Head=1]="Head",t[t.Tail=2]="Tail"})(mz||(Rn.LegalRefinementStage=mz={})),Object.defineProperty(g1,"__esModule",{value:!0}),g1.NestFieldDeclaration=void 0;const REe=Yh,OEe=m1,yz=Rn;class NEe extends OEe.ViewFieldDeclaration{constructor(){super(...arguments),this.elementType="nest-field-declaration",this.queryRefinementStage=yz.LegalRefinementStage.Single,this.forceQueryClass=yz.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,REe.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")}}g1.NestFieldDeclaration=NEe;var Zh={},Kr={};Object.defineProperty(Kr,"__esModule",{value:!0}),Kr.ErrorFactory=void 0;const Ez={type:"struct",name:"~malformed~",dialect:"~malformed~",structSource:{type:"table",tablePath:"//undefined_error_table_path"},structRelationship:{type:"basetable",connectionName:"//undefined_error_connection"},fields:[]};class k4{static get structDef(){return{...Ez}}static isErrorStructDef(e){return e.name.includes(Ez.name)}static get query(){return{structRef:k4.structDef,pipeline:[]}}static get reduceSegment(){return{type:"reduce",queryFields:[]}}static get projectSegment(){return{type:"project",queryFields:[]}}static get indexSegment(){return{type:"index",indexFields:[]}}}Kr.ErrorFactory=k4,Object.defineProperty(Zh,"__esModule",{value:!0}),Zh.DefineSourceList=Zh.DefineSource=void 0;const DEe=Kr,Az=Ve,FEe=Yr;class wEe extends Az.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=FEe.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),DEe.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`)}}Zh.DefineSource=wEe;class LEe extends Az.DocStatementList{constructor(e){super(e),this.elementType="defineSources"}}Zh.DefineSourceList=LEe;var ep={};Object.defineProperty(ep,"__esModule",{value:!0}),ep.DefineQueryList=ep.DefineQuery=void 0;const Sz=Ve,IEe=Yr;class $Ee extends Sz.MalloyElement{constructor(e,n){super({queryExpr:n}),this.name=e,this.queryExpr=n,this.elementType="defineQuery",this.isNoteableObj=!0,this.extendNote=IEe.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})}}ep.DefineQuery=$Ee;class BEe extends Sz.DocStatementList{constructor(e){super(e),this.elementType="defineQueries"}}ep.DefineQueryList=BEe;var zo={};Object.defineProperty(zo,"__esModule",{value:!0}),zo.Source=void 0;const kEe=Ve;class PEe extends kEe.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)}}}zo.Source=PEe;var _1={},tp={},Q_={},w0={};Object.defineProperty(w0,"__esModule",{value:!0}),w0.mergeFields=w0.nameFromDef=void 0;function P4(t){var e;return t.type==="fieldref"?t.path[t.path.length-1]:(e=t.as)!==null&&e!==void 0?e:t.name}w0.nameFromDef=P4;function MEe(t,e){if(t===void 0)return e;const n=new Set(e.map(i=>P4(i))),r=t.filter(i=>!n.has(P4(i)));return r.push(...e),r}w0.mergeFields=MEe;var C1={},Jr={},Yu={};Object.defineProperty(Yu,"__esModule",{value:!0}),Yu.DefinedParameter=Yu.AbstractParameter=Yu.SpaceParam=void 0;const jEe=F0;class M4 extends jEe.SpaceEntry{constructor(){super(...arguments),this.refType="parameter"}}Yu.SpaceParam=M4;class UEe extends M4{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"}}}Yu.AbstractParameter=UEe;class qEe extends M4{constructor(e){super(),this.paramDef=e}parameter(){return this.paramDef}typeDesc(){return{dataType:this.paramDef.type,expressionType:"scalar",evalSpace:"input"}}}Yu.DefinedParameter=qEe;var lx={};Object.defineProperty(lx,"__esModule",{value:!0}),lx.StructSpaceFieldBase=void 0;const HEe=Xr;class zEe extends HEe.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"}}}lx.StructSpaceFieldBase=zEe;var b1={};Object.defineProperty(b1,"__esModule",{value:!0}),b1.ColumnSpaceField=void 0;const QEe=Xr;class GEe extends QEe.SpaceField{constructor(e){super(),this.haveFieldDef=e}fieldDef(){return this.haveFieldDef}typeDesc(){return this.fieldTypeFromFieldDef(this.haveFieldDef)}}b1.ColumnSpaceField=GEe;var G_={};Object.defineProperty(G_,"__esModule",{value:!0}),G_.IRViewField=void 0;const WEe=Jh;class VEe extends WEe.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()}}G_.IRViewField=VEe,Object.defineProperty(Jr,"__esModule",{value:!0}),Jr.StructSpaceField=Jr.StaticSpace=void 0;const YEe=Ou,XEe=Z,KEe=Yu,JEe=Xr,W_=lx,ZEe=b1,e3e=G_;class vz{constructor(e){this.type="fieldSpace",this.fromStruct=e}dialectObj(){try{return(0,YEe.getDialect)(this.fromStruct.dialect)}catch{return}}defToSpaceField(e){return e.type==="struct"?new _z(e):(0,XEe.isTurtleDef)(e)?new e3e.IRViewField(this,e):new ZEe.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 KEe.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 JEe.SpaceField){const o=i.fieldDef();o&&n.addReference({type:i instanceof W_.StructSpaceFieldBase?"joinReference":"fieldReference",definition:o,location:n.location,text:n.refString})}const s=i instanceof W_.StructSpaceFieldBase?[{name:n.refString,structRelationship:i.structRelationship}]:[];if(r.length){if(i instanceof W_.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}}Jr.StaticSpace=vz;class _z extends W_.StructSpaceFieldBase{constructor(e){super(e)}get fieldSpace(){return new vz(this.sourceDef)}}Jr.StructSpaceField=_z,Object.defineProperty(C1,"__esModule",{value:!0}),C1.JoinSpaceField=void 0;const t3e=Jr;class n3e extends t3e.StructSpaceField{constructor(e,n){super(n.structDef(e)),this.parameterSpace=e,this.join=n}}C1.JoinSpaceField=n3e;var T1={};Object.defineProperty(T1,"__esModule",{value:!0}),T1.SpaceSeed=void 0;const r3e=Jr;function Cz(t){return t.type==="fieldSpace"}class i3e{constructor(e){this.sourceSpec=e,this.spaceSpec=e}get structDef(){return Cz(this.spaceSpec)?(this.asStruct||(this.asStruct=this.spaceSpec.structDef()),this.asStruct):this.spaceSpec}get fieldSpace(){return Cz(this.spaceSpec)?this.spaceSpec:(this.asFS||(this.asFS=new r3e.StaticSpace(this.spaceSpec)),this.asFS)}}T1.SpaceSeed=i3e;var np={};Object.defineProperty(np,"__esModule",{value:!0}),np.ParameterSpace=void 0;const s3e=Yu;class o3e{constructor(e){this.type="fieldSpace",this._map={};for(const n of e)this._map[n.name]=new s3e.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}}np.ParameterSpace=o3e,Object.defineProperty(Q_,"__esModule",{value:!0}),Q_.DynamicSpace=void 0;const u3e=w0,a3e=Kr,l3e=Xr,c3e=C1,f3e=Jh,bz=Yu,x3e=T1,d3e=Jr,h3e=lx,p3e=np;class g3e extends d3e.StaticSpace{constructor(e){const n=new x3e.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 bz.AbstractParameter(n)));return this}parameterSpace(){return new p3e.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,u3e.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 bz.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 h3e.StructSpaceFieldBase?r.push([a,l]):l instanceof f3e.ViewField?i.push([a,l]):l instanceof l3e.SpaceField&&n.push([a,l]);const o=[...n,...r,...i],u=this.parameterSpace();for(const[,a]of o)if(a instanceof c3e.JoinSpaceField){const l=a.join.structDef(u);a3e.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}}Q_.DynamicSpace=g3e,Object.defineProperty(tp,"__esModule",{value:!0}),tp.RefinedSpace=void 0;const m3e=Q_,y3e=F0;class j4 extends m3e.DynamicSpace{static filteredFrom(e,n,r){const i=new j4(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,y3e.canMakeEntry)(n)?n.makeEntry(this):n.log(`Internal error, ${n.elementType} not expected in this context`)}}tp.RefinedSpace=j4;var L0={},Ds={};Object.defineProperty(Ds,"__esModule",{value:!0}),Ds.DefinitionList=void 0;const E3e=Ve,Tz=Yr;class A3e extends E3e.ListOf{constructor(){super(...arguments),this.isNoteableObj=!0}extendNote(e){(0,Tz.extendNoteHelper)(this,e),this.distributeAnnotation()}distributeAnnotation(){if(this.note)for(const e of this.elements)(0,Tz.isNoteable)(e)&&e.extendNote(this.note)}newContents(){super.newContents(),this.distributeAnnotation()}}Ds.DefinitionList=A3e,Object.defineProperty(L0,"__esModule",{value:!0}),L0.DeclareFields=void 0;const S3e=Ds,v3e=Rn;class _3e extends S3e.DefinitionList{constructor(e){super(e),this.elementType="declareFields",this.queryRefinementStage=v3e.LegalRefinementStage.Single,this.forceQueryClass=void 0}queryExecute(e){for(const n of this.list)e.inputFS.extendSource(n)}}L0.DeclareFields=_3e;var Qo={},an={};Object.defineProperty(an,"__esModule",{value:!0}),an.nullsafeNot=an.compressExpr=an.compose=void 0;const C3e=Z;function Rz(t){return t.length>1?["(",...t,")"]:t.length===0?["__MISSING_VALUE__"]:t}function b3e(t,e,n){const r=e.match(/^[A-Za-z]/),i=t.length===1&&r?" ":"",s=n.length===1&&r?" ":"",o=i+e+s;return[...Rz(t),o,...Rz(n)]}an.compose=b3e;function T3e(t){const e=[];let n;for(const r of t.flat())typeof r=="string"?n=n?n+r:r:(n&&(e.push(n),n=void 0),e.push(r));return n&&e.push(n),e}an.compressExpr=T3e;function R3e(t,e){return e===void 0||e==="!="||e==="!~"?(0,C3e.mkExpr)`COALESCE(NOT(${t}),FALSE)`:t}an.nullsafeNot=R3e,Object.defineProperty(Qo,"__esModule",{value:!0}),Qo.Filter=Qo.FilterElement=void 0;const Oz=Z,O3e=an,Nz=Ve,U4=Rn;class N3e extends Nz.MalloyElement{constructor(e,n){super({expr:e}),this.expr=e,this.exprSrc=n,this.elementType="filterElement"}filterExpression(e){const n=this.expr.getExpression(e);return n.dataType!=="boolean"?(this.expr.log("Filter expression must have boolean value"),{code:this.exprSrc,expression:["_FILTER_MUST_RETURN_BOOLEAN_"],expressionType:"scalar"}):{code:this.exprSrc,expression:(0,O3e.compressExpr)(n.value),expressionType:n.expressionType}}}Qo.FilterElement=N3e;let D3e=class extends Nz.ListOf{constructor(){super(...arguments),this.elementType="filter",this.forceQueryClass=void 0,this.queryRefinementStage=U4.LegalRefinementStage.Head}set having(e){this.elementType=e?"having":"where",this.havingClause=e,this.queryRefinementStage=e?U4.LegalRefinementStage.Tail:U4.LegalRefinementStage.Head}getFilterList(e){const n=[];for(const r of this.list){const i=r.filterExpression(e);if(this.havingClause!==void 0){const s=(0,Oz.expressionIsAggregate)(i.expressionType),o=(0,Oz.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}};Qo.Filter=D3e;var rs={};Object.defineProperty(rs,"__esModule",{value:!0}),rs.Joins=rs.ExpressionJoin=rs.KeyJoin=rs.Join=void 0;const F3e=Z,w3e=an,L3e=C1,I3e=Ds,$3e=Ve,B3e=Yr,k3e=Rn,Dz=Kr;class q4 extends $3e.MalloyElement{constructor(){super(...arguments),this.isNoteableObj=!0,this.extendNote=B3e.extendNoteMethod}makeEntry(e){e.newEntry(this.name.refString,this,new L3e.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"),Dz.ErrorFactory.structDef)}}rs.Join=q4;class P3e extends q4{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:["('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:[{type:"field",path:[this.name.refString,n.primaryKey]},"=",...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")}}rs.KeyJoin=P3e;class M3e extends q4{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,F3e.isJoinOn)(i)&&(i.onExpression=(0,w3e.compressExpr)(r.value))}structDef(e){var n;const r=this.sourceExpr.getSource();if(!r)return this.sourceExpr.sqLog("Cannot create a source to join from"),Dz.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}}rs.ExpressionJoin=M3e;class j3e extends I3e.DefinitionList{constructor(e){super(e),this.elementType="joinList",this.forceQueryClass=void 0,this.queryRefinementStage=k3e.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)e.inputFS.extendSource(n)}}rs.Joins=j3e;var rp={};Object.defineProperty(rp,"__esModule",{value:!0}),rp.FieldListEdit=void 0;const U3e=Ve;class q3e extends U3e.MalloyElement{constructor(e,n){super({refs:n}),this.edit=e,this.refs=n,this.elementType="fieldListEdit"}}rp.FieldListEdit=q3e;var ip={};Object.defineProperty(ip,"__esModule",{value:!0}),ip.PrimaryKey=void 0;const H3e=Ve;class z3e extends H3e.MalloyElement{constructor(e){super({field:e}),this.field=e,this.elementType="primary key"}}ip.PrimaryKey=z3e;var sp={};Object.defineProperty(sp,"__esModule",{value:!0}),sp.Views=void 0;const Q3e=Ds;class G3e extends Q3e.DefinitionList{constructor(){super(...arguments),this.elementType="turtleDefList"}}sp.Views=G3e;var op={};Object.defineProperty(op,"__esModule",{value:!0}),op.TimezoneStatement=void 0;const W3e=Ve;class V3e extends W3e.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)}}op.TimezoneStatement=V3e;var I0={};Object.defineProperty(I0,"__esModule",{value:!0}),I0.ModelAnnotation=I0.ObjectAnnotation=void 0;const Y3e=dl,X3e=Ve;class Fz extends X3e.MalloyElement{constructor(e){super(),this.notes=e,this.elementType="annotation",this.forceQueryClass=void 0,this.queryRefinementStage=void 0}queryExecute(){}}I0.ObjectAnnotation=Fz;class K3e extends Fz{constructor(){super(...arguments),this.elementType="modelAnnotation"}getCompilerFlags(e,n){const r=Y3e.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)}}I0.ModelAnnotation=K3e;var $0={},V_={};Object.defineProperty(V_,"__esModule",{value:!0}),V_.RenameSpaceField=void 0;const J3e=Xr;class Z3e extends J3e.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()}}V_.RenameSpaceField=Z3e,Object.defineProperty($0,"__esModule",{value:!0}),$0.Renames=$0.RenameField=void 0;const eAe=V_,wz=Ve,tAe=Xr;class nAe extends wz.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 tAe.SpaceField?e.renameEntry(this.oldName.refString,this.newName,new eAe.RenameSpaceField(n.found,this.newName,this.location)):this.log(`'${this.oldName}' cannot be renamed`):this.log(`Can't rename '${this.oldName}', no such field`)}}$0.RenameField=nAe;class rAe extends wz.ListOf{constructor(){super(...arguments),this.elementType="renameFields"}}$0.Renames=rAe,Object.defineProperty(_1,"__esModule",{value:!0}),_1.RefinedSource=void 0;const iAe=Z,sAe=tp,oAe=L0,uAe=Qo,aAe=rs,lAe=rp,cAe=ip,fAe=sp,xAe=zo,dAe=op,hAe=I0,pAe=$0,gAe=np;class mAe extends xAe.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 hAe.ObjectAnnotation)continue;const g=m;m instanceof cAe.PrimaryKey?(i&&(i.log("Primary key already defined"),m.log("Primary key redefined")),i=m):m instanceof lAe.FieldListEdit?(s&&(s.log("Too many accept/except statements"),m.log("Too many accept/except statements")),s=m):m instanceof oAe.DeclareFields||m instanceof aAe.Joins||m instanceof fAe.Views||m instanceof pAe.Renames?o.push(...m.list):m instanceof uAe.Filter?u.push(m):m instanceof dAe.TimezoneStatement?a=m.tz:g.log(`Unexpected source property: '${g.elementType}'`)}const l=n?new gAe.ParameterSpace(n):void 0,c=structuredClone(this.source.structDef(l));i&&(c.primaryKey=i.field.name);const f=sAe.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.filterExpression(f);(0,iAe.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)}}_1.RefinedSource=mAe;var Xu={};Object.defineProperty(Xu,"__esModule",{value:!0}),Xu.SourceQueryElement=void 0;const yAe=Ve;class H4 extends yAe.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 H4&&n.errored){e=!1;break}return e}}Xu.SourceQueryElement=H4;var Y_={},cx={};Object.defineProperty(cx,"__esModule",{value:!0}),cx.QuerySource=void 0;const EAe=zo;class AAe extends EAe.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)}}}cx.QuerySource=AAe;var up={},R1={};Object.defineProperty(R1,"__esModule",{value:!0}),R1.QueryBase=void 0;const SAe=Yh,vAe=Ve;class _Ae extends vAe.MalloyElement{query(){const e=this.queryComp(!0).query;return{...e,pipeline:(0,SAe.detectAndRemovePartialStages)(e.pipeline,this)}}}R1.QueryBase=_Ae,Object.defineProperty(up,"__esModule",{value:!0}),up.QueryArrow=void 0;const CAe=Z,bAe=zo,Lz=Jr,TAe=R1;class RAe extends TAe.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 bAe.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,CAe.refIsStructDef)(l.structRef)?l.structRef:this.source.structDef(void 0),i=new Lz.StaticSpace(n)}else{const l=this.source.queryComp(e);r=l.query,n=l.outputStruct,i=new Lz.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}}}up.QueryArrow=RAe,Object.defineProperty(Y_,"__esModule",{value:!0}),Y_.SQArrow=void 0;const OAe=Xu,NAe=cx,DAe=up;class FAe extends OAe.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 DAe.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 NAe.QuerySource(e);return this.has({asSource:n}),n}}Y_.SQArrow=FAe;var X_={},ap={},Fs={};Object.defineProperty(Fs,"__esModule",{value:!0}),Fs.getStructFieldDef=Fs.getFinalStruct=Fs.opOutputStruct=void 0;const wAe=p0,LAe=bf,z4=Z,Iz=Kr;function $z(t,e,n){const r=Iz.ErrorFactory.isErrorStructDef(e)||(0,z4.structHasErrors)(e);(0,z4.isPartialSegment)(n)&&(n={...n,type:"reduce"});const i=(0,z4.segmentHasErrors)(n);if(!r&&!i)try{return LAe.Segment.nextStructDef(e,n)}catch(s){t.log(`INTERNAL ERROR model/Segment.nextStructDef: ${s.message}
|
|
1297
|
+
${r} `),i+="]")}return i}*walk(){for(const e of Object.keys(this.children)){const n=this.children[e];if(n instanceof Vu)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)}}Ve.MalloyElement=Vu;class aEe extends Vu{constructor(){super(...arguments),this.elementType="unimplemented",this.reported=!1}}Ve.Unimplemented=aEe;class $4 extends Vu{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}}Ve.ModelEntryReference=$4;class lEe extends Vu{constructor(e){super(),this.id=e,this.elementType="experimentalExperiment"}execute(e){this.inExperiment(this.id)}}Ve.ExperimentalExperiment=lEe;function dz(t){return t.execute!==void 0}Ve.isDocStatement=dz;function cEe(t){return t instanceof v1||dz(t)}Ve.isDocStatementOrDocStatementList=cEe;class hz extends Vu{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}}}Ve.ListOf=hz;class v1 extends hz{constructor(){super(...arguments),this.elementType="topLevelStatements",this.execCursor=0,this.isNoteableObj=!0,this.extendNote=xz.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,xz.isNoteable)(n)&&n.extendNote(this.note),this.noteCursor+=1),n instanceof v1){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}}}Ve.DocStatementList=v1;const fEe="5a79a191-06bc-43cf-9b12-58741cd82970";function pz(t){const e=t.inherits?pz(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 xEe(t){const e=pz(t).join("");return(0,uEe.v5)(e,fEe)}class B4 extends Vu{constructor(e){super(),this.elementType="document",this.globalNameSpace=new oEe.GlobalNameSpace,this.documentModel={},this.queryList=[],this.sqlBlocks=[],this.didInitModel=!1,this.annotation={},this.experiments=new sEe.Tag({}),this.modelAnnotationTodoList=[],this.statements=new v1(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=xEe(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,rEe.getDialect)(n).experimental&&!r.experimentalDialectEnabled(n)&&e.log(`Requires compiler flag '##! experimental.dialect.${n}'`,"error")}}Ve.Document=B4;var z_={},Jh={},Xr={},F0={};Object.defineProperty(F0,"__esModule",{value:!0}),F0.canMakeEntry=F0.SpaceEntry=void 0;class dEe{}F0.SpaceEntry=dEe;function hEe(t){return"makeEntry"in t}F0.canMakeEntry=hEe,Object.defineProperty(Xr,"__esModule",{value:!0}),Xr.SpaceField=void 0;const pEe=Z,gEe=F0;class mEe extends gEe.SpaceEntry{constructor(){super(...arguments),this.refType="field"}fieldTypeFromFieldDef(e){const n={dataType:e.type,expressionType:"scalar",evalSpace:"input"};return(0,pEe.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(){}}Xr.SpaceField=mEe,Object.defineProperty(Jh,"__esModule",{value:!0}),Jh.ViewField=void 0;const yEe=Xr;class EEe extends yEe.SpaceField{constructor(e){super(),this.inSpace=e}typeDesc(){return{dataType:"turtle",expressionType:"scalar",evalSpace:"input"}}}Jh.ViewField=EEe,Object.defineProperty(z_,"__esModule",{value:!0}),z_.ASTViewField=void 0;const AEe=Jh;class SEe extends AEe.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)}}z_.ASTViewField=SEe,Object.defineProperty(m1,"__esModule",{value:!0}),m1.ViewFieldDeclaration=void 0;const vEe=Ve,_Ee=Yr,CEe=Yh,bEe=z_;class TEe extends vEe.MalloyElement{constructor(e,n){super({view:n}),this.name=e,this.view=n,this.elementType="view-field-declaration",this.isNoteableObj=!0,this.extendNote=_Ee.extendNoteMethod}makeEntry(e){const n=new bEe.ASTViewField(e,this,this.name);e.newEntry(this.name,this,n)}getFieldDef(e){const{pipeline:n,annotation:r}=this.view.pipelineComp(e),i=(0,CEe.detectAndRemovePartialStages)(n,this);return{type:"turtle",name:this.name,pipeline:i,annotation:{...this.note,inherits:r},location:this.location}}}m1.ViewFieldDeclaration=TEe;var Rn={};Object.defineProperty(Rn,"__esModule",{value:!0}),Rn.LegalRefinementStage=Rn.QueryClass=void 0;var gz;(function(t){t.Index="index",t.Project="project",t.Grouping="grouping"})(gz||(Rn.QueryClass=gz={}));var mz;(function(t){t[t.Single=0]="Single",t[t.Head=1]="Head",t[t.Tail=2]="Tail"})(mz||(Rn.LegalRefinementStage=mz={})),Object.defineProperty(g1,"__esModule",{value:!0}),g1.NestFieldDeclaration=void 0;const REe=Yh,OEe=m1,yz=Rn;class NEe extends OEe.ViewFieldDeclaration{constructor(){super(...arguments),this.elementType="nest-field-declaration",this.queryRefinementStage=yz.LegalRefinementStage.Single,this.forceQueryClass=yz.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,REe.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")}}g1.NestFieldDeclaration=NEe;var Zh={},Kr={};Object.defineProperty(Kr,"__esModule",{value:!0}),Kr.ErrorFactory=void 0;const Ez={type:"struct",name:"~malformed~",dialect:"~malformed~",structSource:{type:"table",tablePath:"//undefined_error_table_path"},structRelationship:{type:"basetable",connectionName:"//undefined_error_connection"},fields:[]};class k4{static get structDef(){return{...Ez}}static isErrorStructDef(e){return e.name.includes(Ez.name)}static get query(){return{structRef:k4.structDef,pipeline:[]}}static get reduceSegment(){return{type:"reduce",queryFields:[]}}static get projectSegment(){return{type:"project",queryFields:[]}}static get indexSegment(){return{type:"index",indexFields:[]}}}Kr.ErrorFactory=k4,Object.defineProperty(Zh,"__esModule",{value:!0}),Zh.DefineSourceList=Zh.DefineSource=void 0;const DEe=Kr,Az=Ve,FEe=Yr;class wEe extends Az.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=FEe.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),DEe.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`)}}Zh.DefineSource=wEe;class LEe extends Az.DocStatementList{constructor(e){super(e),this.elementType="defineSources"}}Zh.DefineSourceList=LEe;var ep={};Object.defineProperty(ep,"__esModule",{value:!0}),ep.DefineQueryList=ep.DefineQuery=void 0;const Sz=Ve,IEe=Yr;class $Ee extends Sz.MalloyElement{constructor(e,n){super({queryExpr:n}),this.name=e,this.queryExpr=n,this.elementType="defineQuery",this.isNoteableObj=!0,this.extendNote=IEe.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})}}ep.DefineQuery=$Ee;class BEe extends Sz.DocStatementList{constructor(e){super(e),this.elementType="defineQueries"}}ep.DefineQueryList=BEe;var zo={};Object.defineProperty(zo,"__esModule",{value:!0}),zo.Source=void 0;const kEe=Ve;class PEe extends kEe.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)}}}zo.Source=PEe;var _1={},tp={},Q_={},w0={};Object.defineProperty(w0,"__esModule",{value:!0}),w0.mergeFields=w0.nameFromDef=void 0;function P4(t){var e;return t.type==="fieldref"?t.path[t.path.length-1]:(e=t.as)!==null&&e!==void 0?e:t.name}w0.nameFromDef=P4;function MEe(t,e){if(t===void 0)return e;const n=new Set(e.map(i=>P4(i))),r=t.filter(i=>!n.has(P4(i)));return r.push(...e),r}w0.mergeFields=MEe;var C1={},Jr={},Yu={};Object.defineProperty(Yu,"__esModule",{value:!0}),Yu.DefinedParameter=Yu.AbstractParameter=Yu.SpaceParam=void 0;const jEe=F0;class M4 extends jEe.SpaceEntry{constructor(){super(...arguments),this.refType="parameter"}}Yu.SpaceParam=M4;class UEe extends M4{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"}}}Yu.AbstractParameter=UEe;class qEe extends M4{constructor(e){super(),this.paramDef=e}parameter(){return this.paramDef}typeDesc(){return{dataType:this.paramDef.type,expressionType:"scalar",evalSpace:"input"}}}Yu.DefinedParameter=qEe;var lx={};Object.defineProperty(lx,"__esModule",{value:!0}),lx.StructSpaceFieldBase=void 0;const HEe=Xr;class zEe extends HEe.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"}}}lx.StructSpaceFieldBase=zEe;var b1={};Object.defineProperty(b1,"__esModule",{value:!0}),b1.ColumnSpaceField=void 0;const QEe=Xr;class GEe extends QEe.SpaceField{constructor(e){super(),this.haveFieldDef=e}fieldDef(){return this.haveFieldDef}typeDesc(){return this.fieldTypeFromFieldDef(this.haveFieldDef)}}b1.ColumnSpaceField=GEe;var G_={};Object.defineProperty(G_,"__esModule",{value:!0}),G_.IRViewField=void 0;const WEe=Jh;class VEe extends WEe.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()}}G_.IRViewField=VEe,Object.defineProperty(Jr,"__esModule",{value:!0}),Jr.StructSpaceField=Jr.StaticSpace=void 0;const YEe=Ou,XEe=Z,KEe=Yu,JEe=Xr,W_=lx,ZEe=b1,e3e=G_;class vz{constructor(e){this.type="fieldSpace",this.fromStruct=e}dialectObj(){try{return(0,YEe.getDialect)(this.fromStruct.dialect)}catch{return}}defToSpaceField(e){return e.type==="struct"?new _z(e):(0,XEe.isTurtleDef)(e)?new e3e.IRViewField(this,e):new ZEe.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 KEe.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 JEe.SpaceField){const o=i.fieldDef();o&&n.addReference({type:i instanceof W_.StructSpaceFieldBase?"joinReference":"fieldReference",definition:o,location:n.location,text:n.refString})}const s=i instanceof W_.StructSpaceFieldBase?[{name:n.refString,structRelationship:i.structRelationship}]:[];if(r.length){if(i instanceof W_.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}}Jr.StaticSpace=vz;class _z extends W_.StructSpaceFieldBase{constructor(e){super(e)}get fieldSpace(){return new vz(this.sourceDef)}}Jr.StructSpaceField=_z,Object.defineProperty(C1,"__esModule",{value:!0}),C1.JoinSpaceField=void 0;const t3e=Jr;class n3e extends t3e.StructSpaceField{constructor(e,n){super(n.structDef(e)),this.parameterSpace=e,this.join=n}}C1.JoinSpaceField=n3e;var T1={};Object.defineProperty(T1,"__esModule",{value:!0}),T1.SpaceSeed=void 0;const r3e=Jr;function Cz(t){return t.type==="fieldSpace"}class i3e{constructor(e){this.sourceSpec=e,this.spaceSpec=e}get structDef(){return Cz(this.spaceSpec)?(this.asStruct||(this.asStruct=this.spaceSpec.structDef()),this.asStruct):this.spaceSpec}get fieldSpace(){return Cz(this.spaceSpec)?this.spaceSpec:(this.asFS||(this.asFS=new r3e.StaticSpace(this.spaceSpec)),this.asFS)}}T1.SpaceSeed=i3e;var np={};Object.defineProperty(np,"__esModule",{value:!0}),np.ParameterSpace=void 0;const s3e=Yu;class o3e{constructor(e){this.type="fieldSpace",this._map={};for(const n of e)this._map[n.name]=new s3e.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}}np.ParameterSpace=o3e,Object.defineProperty(Q_,"__esModule",{value:!0}),Q_.DynamicSpace=void 0;const u3e=w0,a3e=Kr,l3e=Xr,c3e=C1,f3e=Jh,bz=Yu,x3e=T1,d3e=Jr,h3e=lx,p3e=np;class g3e extends d3e.StaticSpace{constructor(e){const n=new x3e.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 bz.AbstractParameter(n)));return this}parameterSpace(){return new p3e.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,u3e.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 bz.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 h3e.StructSpaceFieldBase?r.push([a,l]):l instanceof f3e.ViewField?i.push([a,l]):l instanceof l3e.SpaceField&&n.push([a,l]);const o=[...n,...r,...i],u=this.parameterSpace();for(const[,a]of o)if(a instanceof c3e.JoinSpaceField){const l=a.join.structDef(u);a3e.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}}Q_.DynamicSpace=g3e,Object.defineProperty(tp,"__esModule",{value:!0}),tp.RefinedSpace=void 0;const m3e=Q_,y3e=F0;class j4 extends m3e.DynamicSpace{static filteredFrom(e,n,r){const i=new j4(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,y3e.canMakeEntry)(n)?n.makeEntry(this):n.log(`Internal error, ${n.elementType} not expected in this context`)}}tp.RefinedSpace=j4;var L0={},Ds={};Object.defineProperty(Ds,"__esModule",{value:!0}),Ds.DefinitionList=void 0;const E3e=Ve,Tz=Yr;class A3e extends E3e.ListOf{constructor(){super(...arguments),this.isNoteableObj=!0}extendNote(e){(0,Tz.extendNoteHelper)(this,e),this.distributeAnnotation()}distributeAnnotation(){if(this.note)for(const e of this.elements)(0,Tz.isNoteable)(e)&&e.extendNote(this.note)}newContents(){super.newContents(),this.distributeAnnotation()}}Ds.DefinitionList=A3e,Object.defineProperty(L0,"__esModule",{value:!0}),L0.DeclareFields=void 0;const S3e=Ds,v3e=Rn;class _3e extends S3e.DefinitionList{constructor(e){super(e),this.elementType="declareFields",this.queryRefinementStage=v3e.LegalRefinementStage.Single,this.forceQueryClass=void 0}queryExecute(e){for(const n of this.list)e.inputFS.extendSource(n)}}L0.DeclareFields=_3e;var Qo={},an={};Object.defineProperty(an,"__esModule",{value:!0}),an.nullsafeNot=an.compressExpr=an.compose=void 0;const C3e=Z;function Rz(t){return t.length>1?["(",...t,")"]:t.length===0?["__MISSING_VALUE__"]:t}function b3e(t,e,n){const r=e.match(/^[A-Za-z]/),i=t.length===1&&r?" ":"",s=n.length===1&&r?" ":"",o=i+e+s;return[...Rz(t),o,...Rz(n)]}an.compose=b3e;function T3e(t){const e=[];let n;for(const r of t.flat())typeof r=="string"?n=n?n+r:r:(n&&(e.push(n),n=void 0),e.push(r));return n&&e.push(n),e}an.compressExpr=T3e;function R3e(t,e){return e===void 0||e==="!="||e==="!~"?(0,C3e.mkExpr)`NOT(COALESCE(${t}, FALSE))`:t}an.nullsafeNot=R3e,Object.defineProperty(Qo,"__esModule",{value:!0}),Qo.Filter=Qo.FilterElement=void 0;const Oz=Z,O3e=an,Nz=Ve,U4=Rn;class N3e extends Nz.MalloyElement{constructor(e,n){super({expr:e}),this.expr=e,this.exprSrc=n,this.elementType="filterElement"}filterExpression(e){const n=this.expr.getExpression(e);return n.dataType!=="boolean"?(this.expr.log("Filter expression must have boolean value"),{code:this.exprSrc,expression:["_FILTER_MUST_RETURN_BOOLEAN_"],expressionType:"scalar"}):{code:this.exprSrc,expression:(0,O3e.compressExpr)(n.value),expressionType:n.expressionType}}}Qo.FilterElement=N3e;let D3e=class extends Nz.ListOf{constructor(){super(...arguments),this.elementType="filter",this.forceQueryClass=void 0,this.queryRefinementStage=U4.LegalRefinementStage.Head}set having(e){this.elementType=e?"having":"where",this.havingClause=e,this.queryRefinementStage=e?U4.LegalRefinementStage.Tail:U4.LegalRefinementStage.Head}getFilterList(e){const n=[];for(const r of this.list){const i=r.filterExpression(e);if(this.havingClause!==void 0){const s=(0,Oz.expressionIsAggregate)(i.expressionType),o=(0,Oz.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}};Qo.Filter=D3e;var rs={};Object.defineProperty(rs,"__esModule",{value:!0}),rs.Joins=rs.ExpressionJoin=rs.KeyJoin=rs.Join=void 0;const F3e=Z,w3e=an,L3e=C1,I3e=Ds,$3e=Ve,B3e=Yr,k3e=Rn,Dz=Kr;class q4 extends $3e.MalloyElement{constructor(){super(...arguments),this.isNoteableObj=!0,this.extendNote=B3e.extendNoteMethod}makeEntry(e){e.newEntry(this.name.refString,this,new L3e.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"),Dz.ErrorFactory.structDef)}}rs.Join=q4;class P3e extends q4{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:["('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:[{type:"field",path:[this.name.refString,n.primaryKey]},"=",...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")}}rs.KeyJoin=P3e;class M3e extends q4{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,F3e.isJoinOn)(i)&&(i.onExpression=(0,w3e.compressExpr)(r.value))}structDef(e){var n;const r=this.sourceExpr.getSource();if(!r)return this.sourceExpr.sqLog("Cannot create a source to join from"),Dz.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}}rs.ExpressionJoin=M3e;class j3e extends I3e.DefinitionList{constructor(e){super(e),this.elementType="joinList",this.forceQueryClass=void 0,this.queryRefinementStage=k3e.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)e.inputFS.extendSource(n)}}rs.Joins=j3e;var rp={};Object.defineProperty(rp,"__esModule",{value:!0}),rp.FieldListEdit=void 0;const U3e=Ve;class q3e extends U3e.MalloyElement{constructor(e,n){super({refs:n}),this.edit=e,this.refs=n,this.elementType="fieldListEdit"}}rp.FieldListEdit=q3e;var ip={};Object.defineProperty(ip,"__esModule",{value:!0}),ip.PrimaryKey=void 0;const H3e=Ve;class z3e extends H3e.MalloyElement{constructor(e){super({field:e}),this.field=e,this.elementType="primary key"}}ip.PrimaryKey=z3e;var sp={};Object.defineProperty(sp,"__esModule",{value:!0}),sp.Views=void 0;const Q3e=Ds;class G3e extends Q3e.DefinitionList{constructor(){super(...arguments),this.elementType="turtleDefList"}}sp.Views=G3e;var op={};Object.defineProperty(op,"__esModule",{value:!0}),op.TimezoneStatement=void 0;const W3e=Ve;class V3e extends W3e.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)}}op.TimezoneStatement=V3e;var I0={};Object.defineProperty(I0,"__esModule",{value:!0}),I0.ModelAnnotation=I0.ObjectAnnotation=void 0;const Y3e=dl,X3e=Ve;class Fz extends X3e.MalloyElement{constructor(e){super(),this.notes=e,this.elementType="annotation",this.forceQueryClass=void 0,this.queryRefinementStage=void 0}queryExecute(){}}I0.ObjectAnnotation=Fz;class K3e extends Fz{constructor(){super(...arguments),this.elementType="modelAnnotation"}getCompilerFlags(e,n){const r=Y3e.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)}}I0.ModelAnnotation=K3e;var $0={},V_={};Object.defineProperty(V_,"__esModule",{value:!0}),V_.RenameSpaceField=void 0;const J3e=Xr;class Z3e extends J3e.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()}}V_.RenameSpaceField=Z3e,Object.defineProperty($0,"__esModule",{value:!0}),$0.Renames=$0.RenameField=void 0;const eAe=V_,wz=Ve,tAe=Xr;class nAe extends wz.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 tAe.SpaceField?e.renameEntry(this.oldName.refString,this.newName,new eAe.RenameSpaceField(n.found,this.newName,this.location)):this.log(`'${this.oldName}' cannot be renamed`):this.log(`Can't rename '${this.oldName}', no such field`)}}$0.RenameField=nAe;class rAe extends wz.ListOf{constructor(){super(...arguments),this.elementType="renameFields"}}$0.Renames=rAe,Object.defineProperty(_1,"__esModule",{value:!0}),_1.RefinedSource=void 0;const iAe=Z,sAe=tp,oAe=L0,uAe=Qo,aAe=rs,lAe=rp,cAe=ip,fAe=sp,xAe=zo,dAe=op,hAe=I0,pAe=$0,gAe=np;class mAe extends xAe.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 hAe.ObjectAnnotation)continue;const g=m;m instanceof cAe.PrimaryKey?(i&&(i.log("Primary key already defined"),m.log("Primary key redefined")),i=m):m instanceof lAe.FieldListEdit?(s&&(s.log("Too many accept/except statements"),m.log("Too many accept/except statements")),s=m):m instanceof oAe.DeclareFields||m instanceof aAe.Joins||m instanceof fAe.Views||m instanceof pAe.Renames?o.push(...m.list):m instanceof uAe.Filter?u.push(m):m instanceof dAe.TimezoneStatement?a=m.tz:g.log(`Unexpected source property: '${g.elementType}'`)}const l=n?new gAe.ParameterSpace(n):void 0,c=structuredClone(this.source.structDef(l));i&&(c.primaryKey=i.field.name);const f=sAe.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.filterExpression(f);(0,iAe.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)}}_1.RefinedSource=mAe;var Xu={};Object.defineProperty(Xu,"__esModule",{value:!0}),Xu.SourceQueryElement=void 0;const yAe=Ve;class H4 extends yAe.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 H4&&n.errored){e=!1;break}return e}}Xu.SourceQueryElement=H4;var Y_={},cx={};Object.defineProperty(cx,"__esModule",{value:!0}),cx.QuerySource=void 0;const EAe=zo;class AAe extends EAe.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)}}}cx.QuerySource=AAe;var up={},R1={};Object.defineProperty(R1,"__esModule",{value:!0}),R1.QueryBase=void 0;const SAe=Yh,vAe=Ve;class _Ae extends vAe.MalloyElement{query(){const e=this.queryComp(!0).query;return{...e,pipeline:(0,SAe.detectAndRemovePartialStages)(e.pipeline,this)}}}R1.QueryBase=_Ae,Object.defineProperty(up,"__esModule",{value:!0}),up.QueryArrow=void 0;const CAe=Z,bAe=zo,Lz=Jr,TAe=R1;class RAe extends TAe.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 bAe.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,CAe.refIsStructDef)(l.structRef)?l.structRef:this.source.structDef(void 0),i=new Lz.StaticSpace(n)}else{const l=this.source.queryComp(e);r=l.query,n=l.outputStruct,i=new Lz.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}}}up.QueryArrow=RAe,Object.defineProperty(Y_,"__esModule",{value:!0}),Y_.SQArrow=void 0;const OAe=Xu,NAe=cx,DAe=up;class FAe extends OAe.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 DAe.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 NAe.QuerySource(e);return this.has({asSource:n}),n}}Y_.SQArrow=FAe;var X_={},ap={},Fs={};Object.defineProperty(Fs,"__esModule",{value:!0}),Fs.getStructFieldDef=Fs.getFinalStruct=Fs.opOutputStruct=void 0;const wAe=p0,LAe=bf,z4=Z,Iz=Kr;function $z(t,e,n){const r=Iz.ErrorFactory.isErrorStructDef(e)||(0,z4.structHasErrors)(e);(0,z4.isPartialSegment)(n)&&(n={...n,type:"reduce"});const i=(0,z4.segmentHasErrors)(n);if(!r&&!i)try{return LAe.Segment.nextStructDef(e,n)}catch(s){t.log(`INTERNAL ERROR model/Segment.nextStructDef: ${s.message}
|
|
1298
1298
|
QUERY: ${(0,wAe.inspect)(n,{breakLength:72,depth:1/0})}`)}return{...Iz.ErrorFactory.structDef,dialect:e.dialect}}Fs.opOutputStruct=$z;function IAe(t,e,n){for(const r of n)e=$z(t,e,r);return e}Fs.getFinalStruct=IAe;function $Ae(t,e){return t.fields.find(n=>(n.as||n.name)===e)}Fs.getStructFieldDef=$Ae,Object.defineProperty(ap,"__esModule",{value:!0}),ap.QueryRefine=void 0;const BAe=Jr,kAe=Fs,PAe=R1;class MAe extends PAe.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 BAe.StaticSpace(n.inputStruct),i=this.refinement.refine(r,n.query.pipeline,void 0);return{query:{...n.query,pipeline:i},outputStruct:(0,kAe.getFinalStruct)(this.refinement,n.inputStruct,i),inputStruct:n.inputStruct}}}ap.QueryRefine=MAe;var O1={},lp={},On={};Object.defineProperty(On,"__esModule",{value:!0}),On.dateOffset=On.timestampOffset=On.timeResult=On.resolution=On.castDateToTimestamp=On.castTimestampToDate=On.castTo=On.timeOffset=void 0;const jAe=Z,Bz=an;function UAe(t,e,n,r,i){return[{type:"dialect",function:"delta",base:{valueType:t,value:e},op:n,delta:r,units:i}]}On.timeOffset=UAe;function qAe(t,e,n,r=!1){const i={type:"dialect",function:"cast",dstType:t,expr:e,safe:r};return(0,jAe.isAtomicFieldType)(n)&&(i.srcType=n),[i]}On.castTo=qAe;function HAe(t,e=!1){return[{type:"dialect",function:"cast",dstType:"date",srcType:"timestamp",expr:t,safe:e}]}On.castTimestampToDate=HAe;function zAe(t,e=!1){return[{type:"dialect",function:"cast",dstType:"timestamp",srcType:"date",expr:t,safe:e}]}On.castDateToTimestamp=zAe;function QAe(t){switch(t){case"hour":case"minute":case"second":case"microsecond":case"millisecond":return"timestamp"}return"date"}On.resolution=QAe;function GAe(t,e){return e?{...t,timeframe:e}:t}On.timeResult=GAe;function WAe(t,e,n,r,i=!1){const s=["week","month","quarter","year"].includes(r),o=e==="+"?"_ADD":"_SUB",u=r.toUpperCase();if(s)return[`TIMESTAMP(DATETIME${o}(DATETIME(`,...t,"),INTERVAL ",...n,` ${u}))`];const a=i?["TIMESTAMP(",...t,")"]:t;return(0,Bz.compressExpr)([`TIMESTAMP${o}(`,...a,",INTERVAL ",...n,` ${u})`])}On.timestampOffset=WAe;function VAe(t,e,n,r){const i=e==="+"?"_ADD":"_SUB",s=r.toUpperCase();return(0,Bz.compressExpr)([`DATE${i}(`,...t,",INTERVAL ",...n,` ${s})`])}On.dateOffset=VAe;var fx={},hr={};Object.defineProperty(hr,"__esModule",{value:!0}),hr.errorFor=void 0;function YAe(t){return{dataType:"error",expressionType:"scalar",value:[`_ERROR_${t.replace(/ /g,"_")}`],evalSpace:"constant"}}hr.errorFor=YAe;var dt={},ln={};Object.defineProperty(ln,"__esModule",{value:!0}),ln.FT=void 0;const XAe=Nu;function xx(t,e="scalar",n="constant"){return{dataType:t,expressionType:e,evalSpace:n}}class wr{static in(e,n){return e?n.find(i=>wr.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=>wr.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,XAe.expressionIsScalar)(r.expressionType)||(i=`${r.expressionType} ${i}`),i}return"undefined"}).join(",")}}ln.FT=wr,wr.nullT=xx("null"),wr.numberT=xx("number"),wr.stringT=xx("string"),wr.dateT=xx("date"),wr.timestampT=xx("timestamp"),wr.boolT=xx("boolean"),wr.anyAtomicT=[wr.numberT,wr.stringT,wr.dateT,wr.timestampT,wr.boolT],wr.aggregateBoolT=xx("boolean","aggregate");var pl={};Object.defineProperty(pl,"__esModule",{value:!0}),pl.isComparison=pl.Comparison=void 0;var Q4;(function(t){t.Like="~",t.NotLike="!~",t.LessThan="<",t.LessThanOrEqualTo="<=",t.EqualTo="=",t.GreaterThan=">",t.GreaterThanOrEqualTo=">=",t.NotEqualTo="!="})(Q4||(pl.Comparison=Q4={}));function KAe(t){return Object.values(Q4).includes(t)}pl.isComparison=KAe;var cp={};Object.defineProperty(cp,"__esModule",{value:!0}),cp.isEquality=cp.Equality=void 0;var G4;(function(t){t.Like="~",t.NotLike="!~",t.Equals="=",t.NotEquals="!="})(G4||(cp.Equality=G4={}));function JAe(t){return Object.values(G4).includes(t)}cp.isEquality=JAe;var fp={};Object.defineProperty(fp,"__esModule",{value:!0}),fp.isGranularResult=void 0;function ZAe(t){return t.dataType==="date"||t.dataType==="timestamp"?t.timeframe!==void 0:!1}fp.isGranularResult=ZAe,Object.defineProperty(dt,"__esModule",{value:!0}),dt.applyBinary=dt.getMorphicValue=dt.ExprDuration=dt.ExpressionDef=void 0;const Nn=Z,xp=hr,gl=an,dx=ln,K_=On,eSe=pl,tSe=cp,kz=fp,nSe=Ve;class rSe extends Error{}class Pz extends nSe.MalloyElement{constructor(){super(...arguments),this.legalChildTypes=dx.FT.anyAtomicT}granular(){return!1}requestExpression(e){return this.getExpression(e)}defaultFieldName(){}typeCheck(e,n){return n.dataType!=="error"&&!dx.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 ${dx.FT.inspect(n)}`),!1):!0}apply(e,n,r){return zz(e,r,n,this)}canSupportPartitionBy(){return!1}canSupportOrderBy(){return!1}canSupportLimit(){return!1}supportsWhere(e){return(0,Nn.expressionIsAggregate)(e.expressionType)}}dt.ExpressionDef=Pz;class W4 extends Pz{constructor(e,n){super({n:e}),this.n=e,this.timeframe=n,this.elementType="duration",this.legalChildTypes=[dx.FT.timestampT,dx.FT.dateT]}apply(e,n,r){const i=r.getExpression(e);if(this.typeCheck(this,i),(0,Nn.isTimeFieldType)(i.dataType)&&(n==="+"||n==="-")){const s=this.n.getExpression(e);if(!dx.FT.typeEq(s,dx.FT.numberT))return this.log(`Duration units needs number not '${s.dataType}`),(0,xp.errorFor)("illegal unit expression");let o;if((0,kz.isGranularResult)(i)&&i.timeframe===this.timeframe&&(o=i.timeframe),i.dataType==="timestamp"){const u=(0,K_.timeOffset)("timestamp",i.value,n,s.value,this.timeframe);return(0,K_.timeResult)({dataType:"timestamp",expressionType:(0,Nn.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,Nn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:u},o)}return(0,Nn.isDateUnit)(this.timeframe)?(0,K_.timeResult)({dataType:"date",expressionType:(0,Nn.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,Nn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:(0,K_.timeOffset)("date",i.value,n,s.value,this.timeframe)},o):(this.log(`Cannot offset date by ${this.timeframe}`),(0,xp.errorFor)("ofsset date error"))}return super.apply(e,n,r)}getExpression(e){return{dataType:"duration",expressionType:"scalar",value:["__ERROR_DURATION_IS_NOT_A_VALUE__"],evalSpace:"constant"}}}dt.ExprDuration=W4;function Mz(t,e){return t.dataType===e?t.value:t.morphic&&t.morphic[e]}function iSe(t,e){if(t.dataType===e)return t;if(t.morphic&&t.morphic[e])return{...t,dataType:e,value:t.morphic[e]}}dt.getMorphicValue=iSe;function jz(t,e,n,r){const i=(0,Nn.isTimeFieldType)(e.dataType),s=(0,Nn.isTimeFieldType)(r.dataType);if(i&&s)if(e.dataType!==r.dataType){const o=Mz(e,"timestamp"),u=Mz(r,"timestamp");if(o&&u)return(0,gl.compose)(o,n,u)}else return(0,gl.compose)(e.value,n,r.value);if((i||s)&&e.dataType!=="null"&&r.dataType!=="null")return t.log(`Cannot compare a ${e.dataType} to a ${r.dataType}`),["false"]}function Uz(t,e){if(t.dataType==="string"){if(e.dataType==="regular expression")return[{type:"dialect",function:"regexpMatch",expr:t.value,regexp:e.value}]}else if(e.dataType==="string"&&t.dataType==="regular expression")return[{type:"dialect",function:"regexpMatch",expr:e.value,regexp:t.value}]}function sSe(t,e,n){const r=e==="!="||e==="!~";if(t.dataType==="null"||n.dataType==="null"){const i=r?" NOT":"";return t.dataType!=="null"?[...t.value,` IS${i} NULL`]:n.dataType!=="null"?[...n.value,`IS${i} NULL`]:[r?"false":"true"]}}function oSe(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=N1("boolean",i,s);if(o)return o;if(i.dataType==="sql native"||s.dataType==="sql native"){const l=i.dataType==="null"||s.dataType==="null",c=i.rawType&&i.rawType===s.rawType;if(!(l||c)){const f=D1(e,i,r,s);if(f)return{...f,dataType:"boolean"}}}let a=jz(e,i,n,s)||(0,gl.compose)(i.value,n,s.value);if(i.dataType!=="error"&&s.dataType!=="error")switch(n){case"~":case"!~":{if(i.dataType==="string"&&s.dataType==="string")a=(0,gl.compose)(i.value,"LIKE",s.value);else{const l=Uz(i,s);if(l===void 0)throw new rSe("Incompatible types for match('~') operator");a=l}a=(0,gl.nullsafeNot)(a,n);break}case"=":case"!=":{const l=sSe(i,n,s);l?a=l:a=(0,gl.nullsafeNot)(Uz(i,s)||(0,gl.compose)(i.value,"=",s.value),n);break}}return{dataType:"boolean",expressionType:(0,Nn.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,Nn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:a}}function uSe(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=N1("boolean",i,s);if(o)return o;const u=(0,Nn.maxExpressionType)(i.expressionType,s.expressionType),a=D1(e,i,r,s);if(a)return{...a,dataType:"boolean"};const l=jz(e,i,n,s)||(0,gl.compose)(i.value,n,s.value);return{dataType:"boolean",expressionType:u,evalSpace:(0,Nn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:l}}function qz(t,...e){return e.includes(t)}function Hz(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=N1("number",i,s);if(o)return o;const u=D1(e,i,r,s);if(u)return u;const a=(0,Nn.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:(0,gl.compose)(i.value,n,s.value),evalSpace:(0,Nn.mergeEvalSpaces)(i.evalSpace,s.evalSpace)};return(0,xp.errorFor)("numbers required")}function aSe(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=D1(e,i,r,s);if(o)return o;const u=(0,Nn.isTimeFieldType)(i.dataType),a=N1(u?"error":"number",i,s);if(a)return a;if(u){let l=r;if(s.dataType!=="duration")if((0,kz.isGranularResult)(i))l=new W4(r,i.timeframe);else if(i.dataType==="date")l=new W4(r,"day");else return e.log(`Can not offset time by '${s.dataType}'`),(0,xp.errorFor)(`time plus ${s.dataType}`);return l.apply(t,n,e)}return Hz(t,e,n,r)}function zz(t,e,n,r){if((0,tSe.isEquality)(n))return oSe(t,e,n,r);if((0,eSe.isComparison)(n))return uSe(t,e,n,r);if(qz(n,"+","-"))return aSe(t,e,n,r);if(n==="*")return Hz(t,e,n,r);if(qz(n,"/","%")){const i=e.getExpression(t),s=r.getExpression(t),o=D1(e,i,r,s);if(o)return e.log(`Cannot use '${n}' with sql native type`),o;const u=N1("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={type:"dialect",function:n==="/"?"div":"mod",numerator:i.value,denominator:s.value};return{dataType:"number",expressionType:(0,Nn.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,Nn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:[a]}}return(0,xp.errorFor)("divide type mismatch")}return e.log(`Cannot use ${n} operator here`),(0,xp.errorFor)("applybinary bad operator")}dt.applyBinary=zz;function N1(t,...e){if(e.some(n=>n.dataType==="error"))return{dataType:t,expressionType:(0,Nn.maxOfExpressionTypes)(e.map(n=>n.expressionType)),value:["'cascading error'"],evalSpace:(0,Nn.mergeEvalSpaces)(...e.map(n=>n.evalSpace))}}function D1(t,e,n,r){const i={dataType:e.dataType,expressionType:(0,Nn.maxExpressionType)(e.expressionType,r.expressionType),value:["'unsupported operation'"],evalSpace:(0,Nn.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};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(fx,"__esModule",{value:!0}),fx.ExprIdReference=void 0;const lSe=Z,cSe=hr,fSe=dt;class xSe extends fSe.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:[{type:"outputField",name:this.refString}]};const i=[{type:n.found.refType,path:this.fieldReference.path}],s=(0,lSe.expressionIsAggregate)(r.expressionType)?"output":r.evalSpace;return{...r,value:i,evalSpace:s}}return this.log(n.error),(0,cSe.errorFor)(n.error)}}fx.ExprIdReference=xSe,Object.defineProperty(lp,"__esModule",{value:!0}),lp.NamedSource=void 0;const V4=Z,dSe=zo,hSe=Kr,pSe=On,Y4=Ve,gSe=fx,mSe=np;class ySe extends dSe.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 Y4.ModelEntryReference&&this.has({ref:e})}get refName(){return this.ref instanceof Y4.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 Y4.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,V4.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 gSe.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 mSe.ParameterSpace(r??[]),h=a.value.getExpression(x);let p=h.value;h.dataType!==f.type&&(0,V4.isCastType)(f.type)&&(p=(0,pSe.castTo)(f.type,h.value,h.dataType,!0)),o[c]={...f,value:p}}}for(const a in n)a in o||((0,V4.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=hSe.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}}lp.NamedSource=ySe;var F1={},J_={};Object.defineProperty(J_,"__esModule",{value:!0}),J_.QueryHeadStruct=void 0;const ESe=Z,ASe=zo,SSe=lp;class vSe extends ASe.Source{constructor(e,n){super(),this.fromRef=e,this.sourceArguments=n,this.elementType="internalOnlyQueryHead"}structRef(){return{structRef:this.fromRef}}structDef(e){if((0,ESe.refIsStructDef)(this.fromRef))return this.fromRef;const n=new SSe.NamedSource(this.fromRef,this.sourceArguments,void 0);return this.has({exploreReference:n}),n.structDef(e)}}J_.QueryHeadStruct=vSe,Object.defineProperty(F1,"__esModule",{value:!0}),F1.QueryReference=void 0;const X4=Kr,_Se=Ve,CSe=J_,bSe=Z,TSe=Fs;class RSe extends _Se.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:X4.ErrorFactory.structDef,outputStruct:X4.ErrorFactory.structDef,query:X4.ErrorFactory.query}};if(!r)return this.log(`Reference to undefined query '${this.name.refString}'`),i();if(r.type==="query"){const s=new CSe.QueryHeadStruct(r.structRef,r.sourceArguments);this.has({queryHead:s});const o=s.structDef(void 0),u=(0,TSe.getFinalStruct)(this,o,r.pipeline);return{query:e||(0,bSe.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}}F1.QueryReference=RSe,Object.defineProperty(O1,"__esModule",{value:!0}),O1.SQReference=void 0;const OSe=Xu,NSe=cx,DSe=lp,Qz=F1;class FSe extends OSe.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 Qz.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 Qz.QueryReference(this.ref);this.asSource=new NSe.QuerySource(n)}else if(e.type==="struct")this.asSource=new DSe.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}}O1.SQReference=FSe,Object.defineProperty(X_,"__esModule",{value:!0}),X_.SQRefine=void 0;const wSe=Xu,LSe=cx,ISe=ap,$Se=O1;class BSe extends wSe.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 $Se.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 ISe.QueryRefine(e,this.refine);return this.has({query:n}),n}}getSource(){const e=this.getQuery();if(e){const n=new LSe.QuerySource(e);return this.has({queryAsSource:n}),n}}}X_.SQRefine=BSe;var Z_={},w1={};Object.defineProperty(w1,"__esModule",{value:!0}),w1.QueryRaw=void 0;const kSe=Z,PSe=Ve;class MSe extends PSe.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,kSe.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}}w1.QueryRaw=MSe;var L1={},eC={};Object.defineProperty(eC,"__esModule",{value:!0}),eC.makeSQLBlock=void 0;const jSe=Z,USe=Vt;function qSe(t,e){const n={name:`md5:/${e||"$default"}//${HSe(t)}`,select:t};return e&&(n.connection=e),n}eC.makeSQLBlock=qSe;function HSe(t){const e=t.map(n=>(0,jSe.isSQLFragment)(n)?n.sql:JSON.stringify(n));return(0,USe.generateHash)(e.join(";"))}Object.defineProperty(L1,"__esModule",{value:!0}),L1.SQLSource=void 0;const zSe=eC,QSe=zo,tC=Kr;class GSe extends QSe.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,zSe.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 tC.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"),tC.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(`
|
|
1299
1299
|
`)),tC.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"),tC.ErrorFactory.structDef}}L1.SQLSource=GSe,Object.defineProperty(Z_,"__esModule",{value:!0}),Z_.SQSource=void 0;const WSe=Xu,VSe=w1,YSe=L1;class XSe extends WSe.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 YSe.SQLSource){const e=new VSe.QueryRaw(this.theSource);return this.has({rawQuery:e}),e}else this.sqLog("This source cannot be used as a query")}}Z_.SQSource=XSe;var nC={};Object.defineProperty(nC,"__esModule",{value:!0}),nC.SQExtend=void 0;const KSe=_1,JSe=Xu;class ZSe extends JSe.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 KSe.RefinedSource(e,this.extend),this.has({asSource:this.asSource}),this.asSource;this.sqLog("Could not compute source to extend")}isSource(){return!0}}nC.SQExtend=ZSe;var rC={},dp={},hp={};Object.defineProperty(hp,"__esModule",{value:!0}),hp.BinaryBoolean=void 0;const Gz=Z,eve=hr,tve=ln,nve=dt,rve=an;class ive extends nve.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=[tve.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,Gz.mergeEvalSpaces)(n.evalSpace,r.evalSpace);return{dataType:"boolean",expressionType:(0,Gz.maxExpressionType)(n.expressionType,r.expressionType),evalSpace:i,value:(0,rve.compose)(n.value,this.op,r.value)}}return(0,eve.errorFor)("logial required boolean")}}hp.BinaryBoolean=ive,Object.defineProperty(dp,"__esModule",{value:!0}),dp.ExprCompare=void 0;const Yt=ln,sve=hp,ove={"~":[Yt.FT.stringT],"!~":[Yt.FT.stringT],"<":[Yt.FT.numberT,Yt.FT.stringT,Yt.FT.dateT,Yt.FT.timestampT],"<=":[Yt.FT.numberT,Yt.FT.stringT,Yt.FT.dateT,Yt.FT.timestampT],"=":[Yt.FT.numberT,Yt.FT.stringT,Yt.FT.dateT,Yt.FT.timestampT],"!=":[Yt.FT.numberT,Yt.FT.stringT,Yt.FT.dateT,Yt.FT.timestampT],">=":[Yt.FT.numberT,Yt.FT.stringT,Yt.FT.dateT,Yt.FT.timestampT],">":[Yt.FT.numberT,Yt.FT.stringT,Yt.FT.dateT,Yt.FT.timestampT]};class uve extends sve.BinaryBoolean{constructor(e,n,r){super(e,n,r),this.elementType="a<=>b",this.legalChildTypes=ove[n]}getExpression(e){return this.right.apply(e,this.op,this.left)}}dp.ExprCompare=uve;var I1={},pp={};Object.defineProperty(pp,"__esModule",{value:!0}),pp.ExprTime=void 0;const ave=Z,lve=an,cve=dt;class K4 extends cve.ExpressionDef{constructor(e,n,r="scalar"){super(),this.elementType="timestampOrDate",this.elementType=e,this.translationValue={dataType:e,expressionType:r,value:typeof n=="string"?[n]:n,evalSpace:"constant"}}getExpression(e){return this.translationValue}static fromValue(e,n){let r=n.value;if(e!==n.dataType){const i={type:"dialect",function:"cast",safe:!1,dstType:e,expr:n.value};(0,ave.isTimeFieldType)(n.dataType)&&(i.srcType=n.dataType),r=(0,lve.compressExpr)([i])}return new K4(e,r,n.expressionType)}}pp.ExprTime=K4;var B0={};Object.defineProperty(B0,"__esModule",{value:!0}),B0.Range=void 0;const Wz=Z,fve=hr,xve=dt,dve=an;class hve extends xve.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,Wz.maxExpressionType)(u.expressionType,a.expressionType),evalSpace:(0,Wz.mergeEvalSpaces)(u.evalSpace,a.evalSpace),value:(0,dve.compose)(u.value,s,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,fve.errorFor)("a range is not a value")}}B0.Range=hve,Object.defineProperty(I1,"__esModule",{value:!0}),I1.ExprGranularTime=void 0;const J4=Z,pve=hr,Vz=ln,Yz=On,gve=dt,iC=pp,Xz=B0;class mve extends gve.ExpressionDef{constructor(e,n,r){super({expr:e}),this.expr=e,this.units=n,this.truncate=r,this.elementType="granularTime",this.legalChildTypes=[Vz.FT.timestampT,Vz.FT.dateT]}granular(){return!0}getExpression(e){const n=this.units,r=this.expr.getExpression(e);if((0,J4.isTimeFieldType)(r.dataType)){const s={...r,dataType:r.dataType,timeframe:n};return this.truncate&&(s.value=[{type:"dialect",function:"trunc",expr:{value:r.value,valueType:r.dataType},units:n}]),s}r.dataType!=="error"&&this.log(`Cannot do time truncation on type '${r.dataType}'`);const i=r.dataType==="error"?(0,J4.isDateUnit)(n)?"date":"timestamp":r.dataType;return{...r,dataType:i,value:(0,pve.errorFor)("granularity typecheck").value,evalSpace:"constant"}}toRange(e){const n=this.getExpression(e);if(n.dataType==="timestamp"){const o=iC.ExprTime.fromValue("timestamp",n),u=new iC.ExprTime("timestamp",(0,Yz.timeOffset)("timestamp",n.value,"+",(0,J4.mkExpr)`1`,this.units),n.expressionType);return new Xz.Range(o,u)}const r=new iC.ExprTime("date",n.value,n.expressionType),i=(0,Yz.timeOffset)("date",n.value,"+",["1"],this.units),s=new iC.ExprTime("date",i,n.expressionType);return new Xz.Range(r,s)}}I1.ExprGranularTime=mve,Object.defineProperty(rC,"__esModule",{value:!0}),rC.Apply=void 0;const yve=pl,Eve=dp,Ave=fp,Kz=I1;class Sve extends Eve.ExprCompare{constructor(e,n){super(e,yve.Comparison.EqualTo,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,Ave.isGranularResult)(r)&&(n=new Kz.ExprGranularTime(this.right,r.timeframe,!1))}return n instanceof Kz.ExprGranularTime?n.toRange(e).apply(e,this.op,this.left):super.getExpression(e)}}rC.Apply=Sve;var gp={};Object.defineProperty(gp,"__esModule",{value:!0}),gp.BinaryNumeric=void 0;const vve=ln,_ve=dt;class Cve extends _ve.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=[vve.FT.numberT]}getExpression(e){return this.right.apply(e,this.op,this.left)}}gp.BinaryNumeric=Cve;var sC={};Object.defineProperty(sC,"__esModule",{value:!0}),sC.Boolean=void 0;const bve=dt,Tve=ln;let Rve=class extends bve.ExpressionDef{constructor(e){super(),this.value=e,this.elementType="boolean literal"}getExpression(){return{...Tve.FT.boolT,value:[this.value]}}};sC.Boolean=Rve;var k0={};Object.defineProperty(k0,"__esModule",{value:!0}),k0.FunctionOrdering=k0.FunctionOrderBy=void 0;const Z4=Z,Jz=Ve,Ove=fx;class Nve extends Jz.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"),{e:["error"],dir:this.dir};const n=this.field.getExpression(e);return(0,Z4.expressionIsAggregate)(n.expressionType)||((0,Z4.expressionIsScalar)(n.expressionType)?(!(this.field instanceof Ove.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")),{e:n.value,dir:this.dir}}getAggregateOrderBy(e,n){if(this.field){const r=this.field.getExpression(e);return(0,Z4.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"),{e:r.value,dir:this.dir}}else return this.dir===void 0?(this.log("field or order direction must be specified"),{e:void 0,dir:"asc"}):{e:void 0,dir:this.dir}}}k0.FunctionOrderBy=Nve;class Dve extends Jz.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))}}k0.FunctionOrdering=Dve;var oC={};Object.defineProperty(oC,"__esModule",{value:!0}),oC.ExprAddSub=void 0;const Fve=gp;class wve extends Fve.BinaryNumeric{constructor(){super(...arguments),this.elementType="+-"}}oC.ExprAddSub=wve;var ml={},ht={},$1={};Object.defineProperty($1,"__esModule",{value:!0}),$1.ReferenceField=void 0;const Zz=Xr;class Lve extends Zz.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:[{type:"parameter",path:i}]}:{type:"fieldref",path:i};this.queryFieldDef=s;const o=this.referenceTo;if(o instanceof Zz.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"}}}$1.ReferenceField=Lve;var Xn={};Object.defineProperty(Xn,"__esModule",{value:!0}),Xn.typecheckGroupBy=Xn.typecheckAggregate=Xn.typecheckCalculate=Xn.typecheckDeclare=Xn.typecheckMeasure=Xn.typecheckDimension=Xn.typecheckIndex=Xn.typecheckProject=void 0;const Dn=Nu;function Ive(t,e){if(t.dataType==="turtle"||!(0,Dn.expressionIsScalar)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,Dn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic";else if((0,Dn.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?`)}}Xn.typecheckProject=Ive;function $ve(t,e){if(t.dataType==="turtle"||!(0,Dn.expressionIsScalar)(t.expressionType)){let n;if(t.dataType==="turtle")n="a view";else if((0,Dn.expressionIsAnalytic)(t.expressionType))n="an analytic";else if((0,Dn.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`)}}Xn.typecheckIndex=$ve;function Bve(t,e){if(!(0,Dn.expressionIsScalar)(t.expressionType))if((0,Dn.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,Dn.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`)}Xn.typecheckDimension=Bve;function kve(t,e){if(!(0,Dn.expressionIsAggregate)(t.expressionType))if((0,Dn.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,Dn.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`)}Xn.typecheckMeasure=kve;function Pve(t,e){t.dataType==="turtle"?e.log("Query fields cannot be used in a declare block"):(0,Dn.expressionIsAnalytic)(t.expressionType)&&e.log("Analytic expressions can not be used in a declare block")}Xn.typecheckDeclare=Pve;function Mve(t,e){if(t.dataType==="turtle"||!(0,Dn.expressionIsAnalytic)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,Dn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate";else if((0,Dn.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?`)}}Xn.typecheckCalculate=Mve;function jve(t,e){if(t.dataType==="turtle"||!(0,Dn.expressionIsAggregate)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,Dn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic";else if((0,Dn.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?`)}}Xn.typecheckAggregate=jve;function Uve(t,e){if(t.dataType==="turtle"||!(0,Dn.expressionIsScalar)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,Dn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic";else if((0,Dn.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?`)}}Xn.typecheckGroupBy=Uve,Object.defineProperty(ht,"__esModule",{value:!0}),ht.FieldReferences=ht.WildcardFieldReference=ht.ViewOrScalarFieldReference=ht.DimensionFieldReference=ht.MeasureFieldReference=ht.DeclareFieldReference=ht.ProjectFieldReference=ht.GroupByFieldReference=ht.AggregateFieldReference=ht.IndexFieldReference=ht.CalculateFieldReference=ht.ParameterFieldReference=ht.PartitionByFieldReference=ht.ExpressionFieldReference=ht.AcceptExceptFieldReference=ht.FieldReference=void 0;const qve=$1,Hve=Ds,eQ=Ve,tQ=Yr,P0=Xn;class is extends eQ.ListOf{constructor(e){super(e),this.isNoteableObj=!0,this.extendNote=tQ.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 qve.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}}ht.FieldReference=is;class zve extends is{constructor(){super(...arguments),this.elementType="acceptExceptFieldReference"}typecheck(){}}ht.AcceptExceptFieldReference=zve;class Qve extends is{constructor(){super(...arguments),this.elementType="expressionFieldReference"}typecheck(){}}ht.ExpressionFieldReference=Qve;class Gve extends is{constructor(){super(...arguments),this.elementType="partitionByFieldReference"}typecheck(){}}ht.PartitionByFieldReference=Gve;class Wve extends is{constructor(){super(...arguments),this.elementType="parameterFieldReference"}typecheck(){}}ht.ParameterFieldReference=Wve;class Vve extends is{constructor(){super(...arguments),this.elementType="calculateFieldReference"}typecheck(e){(0,P0.typecheckCalculate)(e,this)}}ht.CalculateFieldReference=Vve;class eL extends is{constructor(){super(...arguments),this.elementType="indexFieldReference"}typecheck(e){(0,P0.typecheckIndex)(e,this)}static indexOutputName(e){return e.map(n=>encodeURIComponent(n)).join("/")}get outputName(){return eL.indexOutputName(this.path)}}ht.IndexFieldReference=eL;class Yve extends is{constructor(){super(...arguments),this.elementType="aggregateFieldReference"}typecheck(e){(0,P0.typecheckAggregate)(e,this)}}ht.AggregateFieldReference=Yve;class Xve extends is{constructor(){super(...arguments),this.elementType="groupByFieldReference"}typecheck(e){(0,P0.typecheckGroupBy)(e,this)}}ht.GroupByFieldReference=Xve;class Kve extends is{constructor(){super(...arguments),this.elementType="projectFieldReference"}typecheck(e){(0,P0.typecheckProject)(e,this)}}ht.ProjectFieldReference=Kve;class Jve extends is{constructor(){super(...arguments),this.elementType="declareFieldReference"}typecheck(e){(0,P0.typecheckDeclare)(e,this)}}ht.DeclareFieldReference=Jve;class Zve extends is{constructor(){super(...arguments),this.elementType="measureFieldReference"}typecheck(e){(0,P0.typecheckMeasure)(e,this)}}ht.MeasureFieldReference=Zve;class e_e extends is{constructor(){super(...arguments),this.elementType="dimensionFieldReference"}typecheck(e){(0,P0.typecheckDimension)(e,this)}}ht.DimensionFieldReference=e_e;class t_e extends is{constructor(){super(...arguments),this.elementType="viewOrScalarFieldReference"}typecheck(e){}}ht.ViewOrScalarFieldReference=t_e;class n_e extends eQ.MalloyElement{constructor(e){super(),this.joinPath=e,this.elementType="wildcardFieldReference",this.isNoteableObj=!0,this.extendNote=tQ.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}.*`:"*"}}ht.WildcardFieldReference=n_e;class r_e extends Hve.DefinitionList{constructor(e){super(e),this.elementType="fieldReferenceList"}}ht.FieldReferences=r_e,Object.defineProperty(ml,"__esModule",{value:!0}),ml.ExprAggregateFunction=void 0;const nQ=Z,i_e=Vt,B1=hr,s_e=Jr,o_e=lx,u_e=ln,a_e=ht,l_e=dt,c_e=Xr,f_e=fx;class x_e extends l_e.ExpressionDef{constructor(e,n,r){super(),this.func=e,this.legalChildTypes=[u_e.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,nQ.isAtomicFieldType)(x.dataType)){s=this.source,o={dataType:x.dataType,expressionType:x.expressionType,value:[x.evalSpace==="output"?{type:"outputField",name:this.source.refString}:{type:"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=>d_e(m,h[0])))&&(u=h[0].map(m=>m.name),a=h[0])}else if(!(f instanceof o_e.StructSpaceFieldBase))return this.log(`Aggregate source cannot be a ${x.dataType}`),(0,B1.errorFor)(`Aggregate source cannot be a ${x.dataType}`)}else return this.log(`Reference to undefined value ${this.source.refString}`),(0,B1.errorFor)(`Reference to undefined value ${this.source.refString}`)}if(o===void 0)return this.log("Missing expression for aggregate function"),(0,B1.errorFor)("agggregate without expression");if((0,nQ.expressionIsAggregate)(o.expressionType))return this.log("Aggregate expression cannot be aggregate"),(0,B1.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=nL(a,c),p=rL(this.elementType,h),m=f?p:"Join path is required for this calculation";if(m){const g=h_e(m,c,s,this.elementType);this.log(g,p?"error":"warn")}}}if(this.typeCheck(this.expr||this,{...o,expressionType:"scalar"})){const c={type:"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,B1.errorFor)("aggregate type check")}isSymmetricFunction(){return!0}getJoinUsage(e){const n=[];if(this.source&&this.source.getField(e).found){const i=[{type:"field",path:this.source.path}];n.push(...tL(e,i))}if(this.expr){const r=this.expr.getExpression(e).value;n.push(...tL(e,r))}return n}}ml.ExprAggregateFunction=x_e;function d_e(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 tL(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 s_e.StructSpaceField&&u.length>0){const l=r(a.fieldSpace,u);return{...l,relationship:[{name:o,structRelationship:a.structRelationship},...l.relationship]}}else if(a instanceof c_e.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")};return(0,i_e.exprWalk)(e,i=>{if(typeof i!="string"){if(i.type==="field"){const s=r(t,i.path);if(s.def.type!=="struct"&&s.def.type!=="turtle")if(s.def.e){const o=tL(s.fs,s.def.e);n.push(...o.map(u=>[...s.relationship,...u]))}else n.push(s.relationship)}else if(i.type==="source-reference")if(i.path){const s=r(t,i.path);n.push(s.relationship)}else n.push([])}}),n}function nL(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 rL(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 h_e(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=nL(i,e),o=rL(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=nL(l,e),f=rL(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 a_e.FieldReference?`${n.refString}.${r}()`:n instanceof f_e.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 uC={};Object.defineProperty(uC,"__esModule",{value:!0}),uC.ExprAlternationTree=void 0;const rQ=Z,p_e=hr,g_e=hp,m_e=an;class y_e extends g_e.BinaryBoolean{constructor(e,n,r){super(e,n,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,rQ.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,rQ.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:(0,m_e.compose)(i.value,this.op==="&"?"and":"or",s.value)}}requestExpression(e){}getExpression(e){return this.log("Alternation tree has no value"),(0,p_e.errorFor)("no value from alternation tree")}}uC.ExprAlternationTree=y_e;var mp={};Object.defineProperty(mp,"__esModule",{value:!0}),mp.ExprAsymmetric=void 0;const E_e=ml;class A_e extends E_e.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}`}}}}mp.ExprAsymmetric=A_e;var aC={};Object.defineProperty(aC,"__esModule",{value:!0}),aC.ExprAvg=void 0;const S_e=mp;class v_e extends S_e.ExprAsymmetric{constructor(e,n,r){super("avg",e,n,r),this.has({source:n})}}aC.ExprAvg=v_e;var lC={};Object.defineProperty(lC,"__esModule",{value:!0}),lC.ExprCast=void 0;const __e=On,C_e=dt,b_e=an;class T_e extends C_e.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,b_e.compressExpr)((0,__e.castTo)(this.castType,s.value,s.dataType,this.safe)),evalSpace:s.evalSpace}}}lC.ExprCast=T_e;var cC={};Object.defineProperty(cC,"__esModule",{value:!0}),cC.ExprCoalesce=void 0;const iL=Nu,iQ=ln,R_e=dt;class O_e extends R_e.ExpressionDef{constructor(e,n){super({expr:e,altExpr:n}),this.expr=e,this.altExpr=n,this.elementType="coalesce expression",this.legalChildTypes=iQ.FT.anyAtomicT}getExpression(e){const n=this.expr.getExpression(e),r=this.altExpr.getExpression(e);return n.dataType==="null"?r:(iQ.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,iL.maxExpressionType)(n.expressionType,r.expressionType),value:(0,iL.mkExpr)`COALESCE(${n.value},${r.value})`,evalSpace:(0,iL.mergeEvalSpaces)(n.evalSpace,r.evalSpace)})}}cC.ExprCoalesce=O_e;var fC={};Object.defineProperty(fC,"__esModule",{value:!0}),fC.ExprCount=void 0;const N_e=ml;class D_e extends N_e.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={type:"aggregate",function:"count",e:[]};return this.source&&(n.structPath=this.source.path),{dataType:"number",expressionType:"aggregate",value:[n],evalSpace:"output"}}}fC.ExprCount=D_e;var xC={};Object.defineProperty(xC,"__esModule",{value:!0}),xC.ExprCountDistinct=void 0;const dC=ln,F_e=ml;class w_e extends F_e.ExprAggregateFunction{constructor(e){super("count_distinct",e),this.legalChildTypes=[dC.FT.numberT,dC.FT.stringT,dC.FT.dateT,dC.FT.timestampT]}}xC.ExprCountDistinct=w_e;var hC={},M0={};Object.defineProperty(M0,"__esModule",{value:!0}),M0.Limit=void 0;const L_e=Ve,I_e=Rn;class $_e extends L_e.MalloyElement{constructor(e){super(),this.limit=e,this.elementType="limit",this.queryRefinementStage=I_e.LegalRefinementStage.Tail,this.forceQueryClass=void 0}}M0.Limit=$_e;var yp={};Object.defineProperty(yp,"__esModule",{value:!0}),yp.PartitionBy=void 0;const B_e=Ve;class k_e extends B_e.ListOf{constructor(e){super(e),this.partitionFields=e,this.elementType="partition_by"}}yp.PartitionBy=k_e;var k1={},j0={};Object.defineProperty(j0,"__esModule",{value:!0}),j0.FieldName=void 0;const P_e=Ve;class M_e extends P_e.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])}}j0.FieldName=M_e,Object.defineProperty(k1,"__esModule",{value:!0}),k1.ExprFunc=void 0;const oo=Z,Ku=hr,j_e=lx,U_e=dt,q_e=j0,sQ=an;class H_e extends U_e.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)}getPropsExpression(e,n){var r,i,s,o,u;const a=this.args.map(R=>R.getExpression(e));if(this.isRaw){let R="scalar",I;const M=[`${this.name}(`];for(const Y of a)R=(0,oo.maxExpressionType)(R,Y.expressionType),I?M.push(","):I=Y.dataType,M.push(...Y.value);return M.push(")"),{dataType:(i=(r=this.rawType)!==null&&r!==void 0?r:I)!==null&&i!==void 0?i:"number",expressionType:R,value:(0,sQ.compressExpr)(M),evalSpace:(0,oo.mergeEvalSpaces)(...a.map(Y=>Y.evalSpace))}}const l=(s=this.modelEntry(this.name.toLowerCase()))===null||s===void 0?void 0:s.entry;if(l===void 0)return this.log(`Unknown function '${this.name}'. Use '${this.name}!(...)' to call a SQL function directly.`),(0,Ku.errorFor)("unknown function");if(l.type!=="function")return this.log(`Cannot call '${this.name}', which is of type ${l.type}`),(0,Ku.errorFor)("called non function");l.name!==this.name&&this.log(`Case insensitivity for function names is deprecated, use '${l.name}' instead`,"warn");let c,f=(o=this.source)===null||o===void 0?void 0:o.path;if(this.source){const R=this.source.getField(e).found;if(R){const I=R.typeDesc();if((0,oo.isAtomicFieldType)(I.dataType))c={dataType:I.dataType,expressionType:I.expressionType,value:[{type:"field",path:this.source.path}],evalSpace:I.evalSpace},f=this.source.path.slice(0,-1);else if(!(R instanceof j_e.StructSpaceFieldBase)){const M=`Aggregate source cannot be a ${I.dataType}`;return this.log(M),(0,Ku.errorFor)(M)}}else{const I=`Reference to undefined value ${this.source.refString}`;return this.log(I),(0,Ku.errorFor)(I)}}const x=[...c?[c]:[],...a],h=z_e(l,x);if(h===void 0)return this.log(`No matching overload for function ${this.name}(${x.map(R=>R.dataType).join(", ")})`),(0,Ku.errorFor)("no matching overload");const{overload:p,expressionTypeErrors:m,evalSpaceErrors:g,nullabilityErrors:y}=h;for(const R of m){const I=R.argIndex-(c?1:0),M=(0,oo.expressionIsScalar)(R.maxExpressionType)?"scalar":"scalar or aggregate";this.args[I].log(`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must be ${M}, but received ${R.actualExpressionType}`)}for(const R of g){const I=R.argIndex-(c?1:0),M=R.maxEvalSpace==="literal"?"literal":R.maxEvalSpace==="constant"?"literal or constant":"literal, constant or output";this.args[I].log(`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must be ${M}, but received ${R.actualEvalSpace}`)}for(const R of y){const I=R.argIndex-(c?1:0);this.args[I].log(`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must not be a literal null`)}const E=p.returnType,A=(0,oo.maxOfExpressionTypes)([E.expressionType,...x.map(R=>R.expressionType)]);if(!(0,oo.expressionIsAggregate)(p.returnType.expressionType)&&this.source!==void 0)return this.log(`Cannot call function ${this.name}(${x.map(R=>R.dataType).join(", ")}) with source`),(0,Ku.errorFor)("cannot call with source");const S={type:"function_call",overload:p,name:this.name,args:x.map(R=>R.value),expressionType:A,structPath:f};let v=[S];const _=(u=e.dialectObj())===null||u===void 0?void 0:u.name,C=_?p.dialect[_]:void 0;if(C===void 0)this.log(`Function ${this.name} is not defined in dialect ${_}`);else{if(n!=null&&n.orderBys&&n.orderBys.length>0){const R=(0,oo.expressionIsAnalytic)(p.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"),C.supportsOrderBy||R){const I=C.supportsOrderBy!=="only_default",M=n.orderBys.flatMap(z=>R?z.getAnalyticOrderBy(e):z.getAggregateOrderBy(e,I));S.orderBy=M}else n.orderBys[0].log(`Function \`${this.name}\` does not support \`order_by\``)}(n==null?void 0:n.limit)!==void 0&&(C.supportsLimit?S.limit=n.limit.limit:this.log(`Function ${this.name} does not support limit`))}if(n!=null&&n.partitionBys&&n.partitionBys.length>0){const R=[];for(const I of n.partitionBys)for(const M of I.partitionFields){const z=M.getField(e);z.found===void 0?M.log(`${M.refString} is not defined`):(0,oo.expressionIsAnalytic)(z.found.typeDesc().expressionType)||(0,oo.expressionIsUngroupedAggregate)(z.found.typeDesc().expressionType)?M.log("Partition expression must be scalar or aggregate"):R.push(M.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 I=`Cannot use sql_function \`${l.name}\`; use \`sql_functions\` experiment to enable this behavior`;return this.log(I),(0,Ku.errorFor)("sql_function used without enabling")}const R=x[0].value;if(R.length!==1||typeof R[0]=="string"||R[0].type!=="dialect"||R[0].function!=="stringLiteral")this.log(`Invalid string literal for \`${l.name}\``);else{const I=R[0].literal,M=Q_e(I),z=M.filter(Q=>Q.type==="interpolation"&&Q.name.includes(".")).map(Q=>Q.type==="interpolation"?`\${${Q.name}}`:`\${${Q.value}}`);if(z.length>0){const Q=z.length===1?`'.' paths are not yet supported in sql interpolations, found ${z.at(0)}`:`'.' paths are not yet supported in sql interpolations, found (${z.join(", ")})`;return this.log(Q),(0,Ku.errorFor)(`${Q}. See LookML \${...} documentation at https://cloud.google.com/looker/docs/reference/param-field-sql#sql_for_dimensions`)}const Y=[];for(const Q of M)if(Q.type==="string")Y.push(Q.value);else if(Q.name==="TABLE")Y.push({type:"source-reference"});else{const oe=new q_e.FieldName(Q.name);this.has({name:oe});const de=e.lookup([oe]);if(de.found===void 0)return this.log(`Invalid interpolation: ${de.error}`),(0,Ku.errorFor)("invalid interpolated field");de.found.refType==="parameter"?Y.push({type:"parameter",path:[Q.name]}):Y.push({type:"field",path:[Q.name]})}v=[{type:"sql-string",e:Y}]}}if(E.dataType==="any")return this.log(`Invalid return type ${E.dataType} for function '${this.name}'`),(0,Ku.errorFor)("invalid return type");const b=(0,oo.mergeEvalSpaces)(...x.map(R=>R.evalSpace)),O=b==="constant"?"constant":(0,oo.expressionIsScalar)(A)?b:"output";return{dataType:E.dataType,expressionType:A,value:(0,sQ.compressExpr)(v),evalSpace:O}}}k1.ExprFunc=H_e;function z_e(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,oo.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")||h.evalSpace==="output"&&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 Q_e(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(hC,"__esModule",{value:!0}),hC.ExprProps=void 0;const G_e=Z,W_e=hr,V_e=ln,Y_e=k0,X_e=M0,K_e=yp,J_e=dt,Z_e=k1;class eCe extends J_e.ExpressionDef{constructor(e,n){super({expr:e,statements:n}),this.expr=e,this.statements=n,this.elementType="expression with props",this.legalChildTypes=V_e.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,G_e.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:[{type:"filterExpression",e:n.value,filterList:i}]}:(this.expr.log(`Cannot filter '${n.dataType}' data`),(0,W_e.errorFor)("cannot filter type"))}return n}getExpression(e){const n=[];let r;const i=[],s=[];for(const u of this.statements)u instanceof K_e.PartitionBy?this.expr.canSupportPartitionBy()?n.push(u):u.log("`partition_by` is not supported for this kind of expression"):u instanceof X_e.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 Y_e.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 Z_e.ExprFunc?this.expr.getPropsExpression(e,{partitionBys:n,limit:r,orderBys:i}):this.expr.getExpression(e);return this.getFilteredExpression(e,o,s)}}hC.ExprProps=eCe;var pC={};Object.defineProperty(pC,"__esModule",{value:!0}),pC.ExprLogicalOp=void 0;const tCe=hp,oQ=ln;class nCe extends tCe.BinaryBoolean{constructor(){super(...arguments),this.elementType="logical operator",this.legalChildTypes=[oQ.FT.boolT,oQ.FT.aggregateBoolT]}}pC.ExprLogicalOp=nCe;var gC={};Object.defineProperty(gC,"__esModule",{value:!0}),gC.ExprMax=void 0;const mC=ln,rCe=ml;class iCe extends rCe.ExprAggregateFunction{constructor(e){super("max",e),this.legalChildTypes=[mC.FT.numberT,mC.FT.stringT,mC.FT.dateT,mC.FT.timestampT]}returns(e){return e.dataType}}gC.ExprMax=iCe;var yC={};Object.defineProperty(yC,"__esModule",{value:!0}),yC.ExprMin=void 0;const EC=ln,sCe=ml;class oCe extends sCe.ExprAggregateFunction{constructor(e){super("min",e),this.legalChildTypes=[EC.FT.numberT,EC.FT.stringT,EC.FT.dateT,EC.FT.timestampT]}returns(e){return e.dataType}}yC.ExprMin=oCe;var AC={};Object.defineProperty(AC,"__esModule",{value:!0}),AC.ExprMinus=void 0;const uCe=hr,uQ=ln,aCe=dt;class lCe extends aCe.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="unary minus",this.legalChildTypes=[uQ.FT.numberT]}getExpression(e){const n=this.expr.getExpression(e);return uQ.FT.typeIn(n,this.legalChildTypes)?n.value.length>1?{...n,dataType:"number",value:["-(",...n.value,")"]}:{...n,dataType:"number",value:["-",...n.value]}:(0,uCe.errorFor)("negate requires number")}}AC.ExprMinus=lCe;var SC={};Object.defineProperty(SC,"__esModule",{value:!0}),SC.ExprMulDiv=void 0;const cCe=gp;class fCe extends cCe.BinaryNumeric{constructor(){super(...arguments),this.elementType="*/%"}}SC.ExprMulDiv=fCe;var vC={},P1={};Object.defineProperty(P1,"__esModule",{value:!0}),P1.Unary=void 0;const xCe=dt;class dCe extends xCe.ExpressionDef{constructor(e){super({expr:e}),this.expr=e}}P1.Unary=dCe,Object.defineProperty(vC,"__esModule",{value:!0}),vC.ExprNot=void 0;const aQ=ln,hCe=P1,pCe=an;class gCe extends hCe.Unary{constructor(e){super(e),this.elementType="not",this.legalChildTypes=[aQ.FT.boolT,aQ.FT.nullT]}getExpression(e){const n=this.expr.getExpression(e),r=this.typeCheck(this.expr,n);return{...n,dataType:"boolean",value:r?(0,pCe.nullsafeNot)(n.value):["false"]}}}vC.ExprNot=gCe;var _C={};Object.defineProperty(_C,"__esModule",{value:!0}),_C.ExprNow=void 0;const mCe=dt;class yCe extends mCe.ExpressionDef{constructor(){super(...arguments),this.elementType="timestamp"}getExpression(e){return{dataType:"timestamp",expressionType:"scalar",evalSpace:"constant",value:[{type:"dialect",function:"now"}]}}}_C.ExprNow=yCe;var CC={};Object.defineProperty(CC,"__esModule",{value:!0}),CC.ExprNULL=void 0;const ECe=dt;class ACe extends ECe.ExpressionDef{constructor(){super(...arguments),this.elementType="NULL"}getExpression(){return{dataType:"null",value:["NULL"],expressionType:"scalar",evalSpace:"literal"}}}CC.ExprNULL=ACe;var bC={};Object.defineProperty(bC,"__esModule",{value:!0}),bC.ExprNumber=void 0;const SCe=ln,vCe=dt;class _Ce extends vCe.ExpressionDef{constructor(e){super(),this.n=e,this.elementType="numeric literal"}getExpression(e){return this.constantExpression()}constantExpression(){return{...SCe.FT.numberT,evalSpace:"literal",value:[{type:"dialect",function:"numberLiteral",literal:this.n}]}}}bC.ExprNumber=_Ce;var TC={};Object.defineProperty(TC,"__esModule",{value:!0}),TC.ExprParens=void 0;const CCe=dt;class bCe extends CCe.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:["(",...n.value,")"]}}}TC.ExprParens=bCe;var RC={};Object.defineProperty(RC,"__esModule",{value:!0}),RC.ExprRegEx=void 0;const TCe=dt;class RCe extends TCe.ExpressionDef{constructor(e){super(),this.regex=e,this.elementType="regular expression literal"}getExpression(){return{dataType:"regular expression",expressionType:"scalar",value:[{type:"dialect",function:"regexpLiteral",literal:this.regex}],evalSpace:"literal"}}}RC.ExprRegEx=RCe;var OC={};Object.defineProperty(OC,"__esModule",{value:!0}),OC.ExprString=void 0;const OCe=dt,NCe=ln;class DCe extends OCe.ExpressionDef{constructor(e){super(),this.elementType="string literal",this.value=e}getExpression(e){return{...NCe.FT.stringT,value:[{type:"dialect",function:"stringLiteral",literal:this.value}],evalSpace:"literal"}}}OC.ExprString=DCe;var NC={};Object.defineProperty(NC,"__esModule",{value:!0}),NC.ExprSum=void 0;const FCe=mp;class wCe extends FCe.ExprAsymmetric{constructor(e,n,r){super("sum",e,n,r),this.has({source:n})}}NC.ExprSum=wCe;var DC={};Object.defineProperty(DC,"__esModule",{value:!0}),DC.ExprTimeExtract=void 0;const hx=Z,U0=hr,sL=dt,LCe=B0;class M1 extends sL.ExpressionDef{static extractor(e){const n=M1.pluralMap[e];if(n)return n;if((0,hx.isExtractUnit)(e))return e}constructor(e,n){super({args:n}),this.extractText=e,this.args=n,this.elementType="timeExtract"}getExpression(e){const n=M1.extractor(this.extractText);if(n){if(this.args.length!==1)return this.log(`Extraction function ${n} requires one argument`),(0,U0.errorFor)("{this.name} arg count");const r=this.args[0];if(r instanceof LCe.Range){let i=r.first.getExpression(e),s=r.last.getExpression(e);const o=(0,hx.maxExpressionType)(i.expressionType,s.expressionType),u=(0,hx.mergeEvalSpaces)(i.evalSpace,s.evalSpace);if(i.dataType==="error"||s.dataType==="error")return{dataType:"number",expressionType:o,evalSpace:u,value:(0,U0.errorFor)("extract from error").value};if(!(0,hx.isTimeFieldType)(i.dataType))return r.first.log(`Can't extract ${n} from '${i.dataType}'`),(0,U0.errorFor)(`${n} bad type ${i.dataType}`);if(!(0,hx.isTimeFieldType)(s.dataType))return r.last.log(`Cannot extract ${n} from '${s.dataType}'`),(0,U0.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,sL.getMorphicValue)(i,"timestamp");c&&(i=c,l=!1)}else{const c=(0,sL.getMorphicValue)(s,"timestamp");c&&(s=c,l=!1)}if(l)return r.first.log(`Cannot measure from ${i.dataType} to ${s.dataType}`),(0,U0.errorFor)(`${n} range mismatch`)}return["week","month","quarter","year"].includes(n)?(this.log(`Cannot measure interval using '${n}'`),(0,U0.errorFor)(`${n} civil extraction`)):(0,hx.isTimestampUnit)(n)?{dataType:"number",expressionType:o,evalSpace:u,value:[{type:"dialect",function:"timeDiff",units:n,left:{valueType:a,value:i.value},right:{valueType:a,value:s.value}}]}:(this.log(`Cannot extract ${n} from a range`),(0,U0.errorFor)(`${n} bad extraction`))}else{const i=r.getExpression(e);return(0,hx.isTimeFieldType)(i.dataType)?{dataType:"number",expressionType:i.expressionType,evalSpace:i.evalSpace,value:[{type:"dialect",function:"extract",expr:{value:i.value,valueType: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,U0.errorFor)(`${this.extractText} bad type ${i.dataType}`).value})}}throw this.internalError(`Illegal extraction unit '${this.extractText}'`)}}DC.ExprTimeExtract=M1,M1.pluralMap={years:"year",quarters:"quarter",months:"month",weeks:"week",days:"day",hours:"hour",minutes:"minute",seconds:"second"};var FC={},Go={},wC={};Object.defineProperty(wC,"__esModule",{value:!0}),wC.QueryInputSpace=void 0;const ICe=rs,$Ce=T1,BCe=tp;class kCe extends BCe.RefinedSpace{constructor(e,n){const r=new $Ce.SpaceSeed(e);super(r.structDef),this.queryOutput=n,this.extendList=[]}extendSource(e){this.pushFields(e),e instanceof ICe.Join?this.extendList.push(e.name.refString):this.extendList.push(e.defineName)}isQueryFieldSpace(){return!0}outputSpace(){return this.queryOutput}inputSpace(){return this}}wC.QueryInputSpace=kCe;var PCe=F&&F.__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]}),MCe=F&&F.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),jCe=F&&F.__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)&&PCe(e,t,n);return MCe(e,t),e};Object.defineProperty(Go,"__esModule",{value:!0}),Go.ReduceFieldSpace=Go.QuerySpace=Go.QueryOperationSpace=void 0;const LC=jCe(Z),oL=w0,UCe=j0,qCe=Xr,HCe=ht,zCe=tp,QCe=b1,GCe=Jr,WCe=wC;class lQ extends zCe.RefinedSpace{constructor(e,n,r,i){super(e.emptyStructDef()),this.queryInputSpace=e,this.nestParent=r,this.astEl=i,this.expandedWild={},this.exprSpace=new WCe.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 GCe.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();LC.isAtomicFieldType(l.dataType)&&LC.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)}}Go.QueryOperationSpace=lQ;class cQ extends lQ{addRefineFromFields(e){var n;if(LC.isQuerySegment(e))for(const r of e.queryFields)if(r.type==="fieldref"){const i=this.exprSpace.lookup(r.path.map(s=>new UCe.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 QCe.ColumnSpaceField(r))}pushFields(...e){for(const n of e)n instanceof HCe.WildcardFieldReference?this.addWild(n):super.pushFields(n)}canContain(e){return!0}queryFieldDefs(){const e=[];for(const[n,r]of this.entries())if(r instanceof qCe.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)&&!YCe(s)&&e.push(s)}}return this.isComplete(),e}getQuerySegment(e){const n=this.getPipeSegment(e);if(LC.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,oL.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,oL.nameFromDef)(u)===s);o&&r.push(o)}n.extendSource=(0,oL.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}}Go.QuerySpace=cQ;class VCe extends cQ{constructor(){super(...arguments),this.segmentType="reduce"}}Go.ReduceFieldSpace=VCe;function YCe(t){return typeof t!="string"&&t.type==="turtle"&&t.pipeline.length===0}Object.defineProperty(FC,"__esModule",{value:!0}),FC.ExprUngroup=void 0;const fQ=Z,uL=hr,XCe=Go,KCe=ln,JCe=dt;class ZCe extends JCe.ExpressionDef{constructor(e,n,r){super({expr:n,fields:r}),this.control=e,this.expr=n,this.fields=r,this.legalChildTypes=KCe.FT.anyAtomicT,this.elementType="ungroup"}returns(e){return"number"}getExpression(e){const n=this.expr.getExpression(e);if(!(0,fQ.expressionIsAggregate)(n.expressionType))return this.expr.log(`${this.control}() expression must be an aggregate`),(0,uL.errorFor)("ungrouped scalar");if((0,fQ.expressionIsUngroupedAggregate)(n.expressionType))return this.expr.log(`${this.control}() expression must not already be ungrouped`),(0,uL.errorFor)("doubly-ungrouped aggregate");const r={type: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 XCe.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,uL.errorFor)("ungrouped type check")}}FC.ExprUngroup=ZCe;var IC={};Object.defineProperty(IC,"__esModule",{value:!0}),IC.ForRange=void 0;const xQ=Nu,aL=hr,dQ=ln,$C=On,ebe=dt,BC=pp,hQ=B0;class tbe extends ebe.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=[dQ.FT.timestampT,dQ.FT.dateT]}apply(e,n,r){const i=this.from.getExpression(e),s=r.getExpression(e);if(!this.typeCheck(r,s))return(0,aL.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,xQ.mergeEvalSpaces)(i.evalSpace,s.evalSpace),expressionType:(0,xQ.maxExpressionType)(i.expressionType,s.expressionType),value:(0,aL.errorFor)("for not number").value};const u=this.timeframe.text;let a=(0,$C.resolution)(u);if(i.dataType==="timestamp"&&(a="timestamp"),s.dataType==="date"&&a==="date"){const p=this.from,m=(0,$C.timeOffset)("date",i.value,"+",o.value,u),g=new BC.ExprTime("date",m);return new hQ.Range(p,g).apply(e,n,r)}const l=BC.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,$C.castDateToTimestamp)(f),c=new BC.ExprTime("timestamp",f,i.expressionType)}const x=(0,$C.timeOffset)("timestamp",f,"+",o.value,u),h=new BC.ExprTime("timestamp",x,i.expressionType);return new hQ.Range(c,h).apply(e,n,l)}requestExpression(e){}getExpression(e){return this.log("A Range is not a value"),(0,aL.errorFor)("range has no value")}}IC.ForRange=tbe;var pr={},ss={};Object.defineProperty(ss,"__esModule",{value:!0});class px extends Error{}class nbe extends px{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}}class rbe extends px{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}}class ibe extends px{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}}class j1 extends px{}class pQ extends px{constructor(e){super(`Invalid unit ${e}`)}}class uo extends px{}class q0 extends px{constructor(){super("Zone is an abstract class")}}const ke="numeric",Wo="short",ws="long",lL={year:ke,month:ke,day:ke},gQ={year:ke,month:Wo,day:ke},sbe={year:ke,month:Wo,day:ke,weekday:Wo},mQ={year:ke,month:ws,day:ke},yQ={year:ke,month:ws,day:ke,weekday:ws},EQ={hour:ke,minute:ke},AQ={hour:ke,minute:ke,second:ke},SQ={hour:ke,minute:ke,second:ke,timeZoneName:Wo},vQ={hour:ke,minute:ke,second:ke,timeZoneName:ws},_Q={hour:ke,minute:ke,hourCycle:"h23"},CQ={hour:ke,minute:ke,second:ke,hourCycle:"h23"},bQ={hour:ke,minute:ke,second:ke,hourCycle:"h23",timeZoneName:Wo},TQ={hour:ke,minute:ke,second:ke,hourCycle:"h23",timeZoneName:ws},RQ={year:ke,month:ke,day:ke,hour:ke,minute:ke},OQ={year:ke,month:ke,day:ke,hour:ke,minute:ke,second:ke},NQ={year:ke,month:Wo,day:ke,hour:ke,minute:ke},DQ={year:ke,month:Wo,day:ke,hour:ke,minute:ke,second:ke},obe={year:ke,month:Wo,day:ke,weekday:Wo,hour:ke,minute:ke},FQ={year:ke,month:ws,day:ke,hour:ke,minute:ke,timeZoneName:Wo},wQ={year:ke,month:ws,day:ke,hour:ke,minute:ke,second:ke,timeZoneName:Wo},LQ={year:ke,month:ws,day:ke,weekday:ws,hour:ke,minute:ke,timeZoneName:ws},IQ={year:ke,month:ws,day:ke,weekday:ws,hour:ke,minute:ke,second:ke,timeZoneName:ws};function St(t){return typeof t>"u"}function gx(t){return typeof t=="number"}function kC(t){return typeof t=="number"&&t%1===0}function ube(t){return typeof t=="string"}function abe(t){return Object.prototype.toString.call(t)==="[object Date]"}function $Q(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch{return!1}}function lbe(t){return Array.isArray(t)?t:[t]}function BQ(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 cbe(t,e){return e.reduce((n,r)=>(n[r]=t[r],n),{})}function Ep(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function yl(t,e,n){return kC(t)&&t>=e&&t<=n}function fbe(t,e){return t-e*Math.floor(t/e)}function Hn(t,e=2){const n=t<0;let r;return n?r="-"+(""+-t).padStart(e,"0"):r=(""+t).padStart(e,"0"),r}function H0(t){if(!(St(t)||t===null||t===""))return parseInt(t,10)}function mx(t){if(!(St(t)||t===null||t===""))return parseFloat(t)}function cL(t){if(!(St(t)||t===null||t==="")){const e=parseFloat("0."+t)*1e3;return Math.floor(e)}}function fL(t,e,n=!1){const r=10**e;return(n?Math.trunc:Math.round)(t*r)/r}function U1(t){return t%4===0&&(t%100!==0||t%400===0)}function q1(t){return U1(t)?366:365}function PC(t,e){const n=fbe(e-1,12)+1,r=t+(e-n)/12;return n===2?U1(r)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][n-1]}function xL(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 MC(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 dL(t){return t>99?t:t>60?1900+t:2e3+t}function kQ(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 jC(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 PQ(t){const e=Number(t);if(typeof t=="boolean"||t===""||Number.isNaN(e))throw new uo(`Invalid unit value ${t}`);return e}function UC(t,e){const n={};for(const r in t)if(Ep(t,r)){const i=t[r];if(i==null)continue;n[e(r)]=PQ(i)}return n}function H1(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}${Hn(n,2)}:${Hn(r,2)}`;case"narrow":return`${i}${n}${r>0?`:${r}`:""}`;case"techie":return`${i}${Hn(n,2)}${Hn(r,2)}`;default:throw new RangeError(`Value format ${e} is out of range for property format`)}}function qC(t){return cbe(t,["hour","minute","second","millisecond"])}const MQ=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/,xbe=["January","February","March","April","May","June","July","August","September","October","November","December"],jQ=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dbe=["J","F","M","A","M","J","J","A","S","O","N","D"];function UQ(t){switch(t){case"narrow":return[...dbe];case"short":return[...jQ];case"long":return[...xbe];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 qQ=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],HQ=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],hbe=["M","T","W","T","F","S","S"];function zQ(t){switch(t){case"narrow":return[...hbe];case"short":return[...HQ];case"long":return[...qQ];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}const QQ=["AM","PM"],pbe=["Before Christ","Anno Domini"],gbe=["BC","AD"],mbe=["B","A"];function GQ(t){switch(t){case"narrow":return[...mbe];case"short":return[...gbe];case"long":return[...pbe];default:return null}}function ybe(t){return QQ[t.hour<12?0:1]}function Ebe(t,e){return zQ(e)[t.weekday-1]}function Abe(t,e){return UQ(e)[t.month-1]}function Sbe(t,e){return GQ(e)[t.year<0?0:1]}function vbe(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 WQ(t,e){let n="";for(const r of t)r.literal?n+=r.val:n+=e(r.val);return n}const _be={D:lL,DD:gQ,DDD:mQ,DDDD:yQ,t:EQ,tt:AQ,ttt:SQ,tttt:vQ,T:_Q,TT:CQ,TTT:bQ,TTTT:TQ,f:RQ,ff:NQ,fff:FQ,ffff:LQ,F:OQ,FF:DQ,FFF:wQ,FFFF:IQ};class os{static create(e,n={}){return new os(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 _be[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 Hn(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?ybe(e):s({hour:"numeric",hourCycle:"h12"},"dayperiod"),a=(h,p)=>r?Abe(e,h):s(p?{month:h}:{month:h,day:"numeric"},"month"),l=(h,p)=>r?Ebe(e,h):s(p?{weekday:h}:{weekday:h,month:"long",day:"numeric"},"weekday"),c=h=>{const p=os.macroTokenToFormatOpts(h);return p?this.formatWithSystemDefault(e,p):h},f=h=>r?Sbe(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 WQ(os.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=os.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 WQ(s,i(u))}}class Vo{constructor(e,n){this.reason=e,this.explanation=n}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}}let Ap=class{get type(){throw new q0}get name(){throw new q0}get ianaName(){return this.name}get isUniversal(){throw new q0}offsetName(e,n){throw new q0}formatOffset(e,n){throw new q0}offset(e){throw new q0}equals(e){throw new q0}get isValid(){throw new q0}},hL=null;class HC extends Ap{static get instance(){return hL===null&&(hL=new HC),hL}get type(){return"system"}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return kQ(e,n,r)}formatOffset(e,n){return H1(this.offset(e),n)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type==="system"}get isValid(){return!0}}let zC={};function Cbe(t){return zC[t]||(zC[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"})),zC[t]}const bbe={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function Tbe(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 Rbe(t,e){const n=t.formatToParts(e),r=[];for(let i=0;i<n.length;i++){const{type:s,value:o}=n[i],u=bbe[s];s==="era"?r[u]=o:St(u)||(r[u]=parseInt(o,10))}return r}let QC={};class Ju extends Ap{static create(e){return QC[e]||(QC[e]=new Ju(e)),QC[e]}static resetCache(){QC={},zC={}}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=Ju.isValidZone(e)}get type(){return"iana"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return kQ(e,n,r,this.name)}formatOffset(e,n){return H1(this.offset(e),n)}offset(e){const n=new Date(e);if(isNaN(n))return NaN;const r=Cbe(this.name);let[i,s,o,u,a,l,c]=r.formatToParts?Rbe(r,n):Tbe(r,n);u==="BC"&&(i=-Math.abs(i)+1);const x=xL({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 pL=null;class Zr extends Ap{static get utcInstance(){return pL===null&&(pL=new Zr(0)),pL}static instance(e){return e===0?Zr.utcInstance:new Zr(e)}static parseSpecifier(e){if(e){const n=e.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(n)return new Zr(jC(n[1],n[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${H1(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${H1(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,n){return H1(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 VQ extends Ap{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 z0(t,e){if(St(t)||t===null)return e;if(t instanceof Ap)return t;if(ube(t)){const n=t.toLowerCase();return n==="local"||n==="system"?e:n==="utc"||n==="gmt"?Zr.utcInstance:Zr.parseSpecifier(n)||Ju.create(t)}else return gx(t)?Zr.instance(t):typeof t=="object"&&t.offset&&typeof t.offset=="number"?t:new VQ(t)}let YQ=()=>Date.now(),XQ="system",KQ=null,JQ=null,ZQ=null,eG;class zn{static get now(){return YQ}static set now(e){YQ=e}static set defaultZone(e){XQ=e}static get defaultZone(){return z0(XQ,HC.instance)}static get defaultLocale(){return KQ}static set defaultLocale(e){KQ=e}static get defaultNumberingSystem(){return JQ}static set defaultNumberingSystem(e){JQ=e}static get defaultOutputCalendar(){return ZQ}static set defaultOutputCalendar(e){ZQ=e}static get throwOnInvalid(){return eG}static set throwOnInvalid(e){eG=e}static resetCaches(){hn.resetCache(),Ju.resetCache()}}let tG={};function Obe(t,e={}){const n=JSON.stringify([t,e]);let r=tG[n];return r||(r=new Intl.ListFormat(t,e),tG[n]=r),r}let gL={};function mL(t,e={}){const n=JSON.stringify([t,e]);let r=gL[n];return r||(r=new Intl.DateTimeFormat(t,e),gL[n]=r),r}let yL={};function Nbe(t,e={}){const n=JSON.stringify([t,e]);let r=yL[n];return r||(r=new Intl.NumberFormat(t,e),yL[n]=r),r}let EL={};function Dbe(t,e={}){const{base:n,...r}=e,i=JSON.stringify([t,r]);let s=EL[i];return s||(s=new Intl.RelativeTimeFormat(t,e),EL[i]=s),s}let z1=null;function Fbe(){return z1||(z1=new Intl.DateTimeFormat().resolvedOptions().locale,z1)}function wbe(t){const e=t.indexOf("-u-");if(e===-1)return[t];{let n;const r=t.substring(0,e);try{n=mL(t).resolvedOptions()}catch{n=mL(r).resolvedOptions()}const{numberingSystem:i,calendar:s}=n;return[r,i,s]}}function Lbe(t,e,n){return(n||e)&&(t+="-u",n&&(t+=`-ca-${n}`),e&&(t+=`-nu-${e}`)),t}function Ibe(t){const e=[];for(let n=1;n<=12;n++){const r=st.utc(2016,n,1);e.push(t(r))}return e}function $be(t){const e=[];for(let n=1;n<=7;n++){const r=st.utc(2016,11,13+n);e.push(t(r))}return e}function GC(t,e,n,r,i){const s=t.listingMode(n);return s==="error"?null:s==="en"?r(e):i(e)}function Bbe(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 kbe{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=Nbe(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):fL(e,3);return Hn(n,this.padTo)}}}class Pbe{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&&Ju.create(u).valid?(i=u,this.dt=e):(i="UTC",r.timeZoneName?this.dt=e:this.dt=e.offset===0?e:st.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=mL(n,s)}format(){return this.dtf.format(this.dt.toJSDate())}formatToParts(){return this.dtf.formatToParts(this.dt.toJSDate())}resolvedOptions(){return this.dtf.resolvedOptions()}}class Mbe{constructor(e,n,r){this.opts={style:"long",...r},!n&&$Q()&&(this.rtf=Dbe(e,r))}format(e,n){return this.rtf?this.rtf.format(e,n):vbe(n,e,this.opts.numeric,this.opts.style!=="long")}formatToParts(e,n){return this.rtf?this.rtf.formatToParts(e,n):[]}}class hn{static fromOpts(e){return hn.create(e.locale,e.numberingSystem,e.outputCalendar,e.defaultToEN)}static create(e,n,r,i=!1){const s=e||zn.defaultLocale,o=s||(i?"en-US":Fbe()),u=n||zn.defaultNumberingSystem,a=r||zn.defaultOutputCalendar;return new hn(o,u,a,s)}static resetCache(){z1=null,gL={},yL={},EL={}}static fromObject({locale:e,numberingSystem:n,outputCalendar:r}={}){return hn.create(e,n,r)}constructor(e,n,r,i){const[s,o,u]=wbe(e);this.locale=s,this.numberingSystem=n||o||null,this.outputCalendar=r||u||null,this.intl=Lbe(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=Bbe(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:hn.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 GC(this,e,r,UQ,()=>{const i=n?{month:e,day:"numeric"}:{month:e},s=n?"format":"standalone";return this.monthsCache[s][e]||(this.monthsCache[s][e]=Ibe(o=>this.extract(o,i,"month"))),this.monthsCache[s][e]})}weekdays(e,n=!1,r=!0){return GC(this,e,r,zQ,()=>{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]=$be(o=>this.extract(o,i,"weekday"))),this.weekdaysCache[s][e]})}meridiems(e=!0){return GC(this,void 0,e,()=>QQ,()=>{if(!this.meridiemCache){const n={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[st.utc(2016,11,13,9),st.utc(2016,11,13,19)].map(r=>this.extract(r,n,"dayperiod"))}return this.meridiemCache})}eras(e,n=!0){return GC(this,e,n,GQ,()=>{const r={era:e};return this.eraCache[e]||(this.eraCache[e]=[st.utc(-40,1,1),st.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 kbe(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,n={}){return new Pbe(e,this.intl,n)}relFormatter(e={}){return new Mbe(this.intl,this.isEnglish(),e)}listFormatter(e={}){return Obe(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 Sp(...t){const e=t.reduce((n,r)=>n+r.source,"");return RegExp(`^${e}$`)}function vp(...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 _p(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 nG(...t){return(e,n)=>{const r={};let i;for(i=0;i<t.length;i++)r[t[i]]=H0(e[n+i]);return[r,null,n+i]}}const rG=/(?:(Z)|([+-]\d\d)(?::?(\d\d))?)/,jbe=`(?:${rG.source}?(?:\\[(${MQ.source})\\])?)?`,AL=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,iG=RegExp(`${AL.source}${jbe}`),SL=RegExp(`(?:T${iG.source})?`),Ube=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,qbe=/(\d{4})-?W(\d\d)(?:-?(\d))?/,Hbe=/(\d{4})-?(\d{3})/,zbe=nG("weekYear","weekNumber","weekDay"),Qbe=nG("year","ordinal"),Gbe=/(\d{4})-(\d\d)-(\d\d)/,sG=RegExp(`${AL.source} ?(?:${rG.source}|(${MQ.source}))?`),Wbe=RegExp(`(?: ${sG.source})?`);function Cp(t,e,n){const r=t[e];return St(r)?n:H0(r)}function Vbe(t,e){return[{year:Cp(t,e),month:Cp(t,e+1,1),day:Cp(t,e+2,1)},null,e+3]}function bp(t,e){return[{hours:Cp(t,e,0),minutes:Cp(t,e+1,0),seconds:Cp(t,e+2,0),milliseconds:cL(t[e+3])},null,e+4]}function Q1(t,e){const n=!t[e]&&!t[e+1],r=jC(t[e+1],t[e+2]),i=n?null:Zr.instance(r);return[{},i,e+3]}function G1(t,e){const n=t[e]?Ju.create(t[e]):null;return[{},n,e+1]}const Ybe=RegExp(`^T?${AL.source}$`),Xbe=/^-?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 Kbe(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(mx(n)),months:x(mx(r)),weeks:x(mx(i)),days:x(mx(s)),hours:x(mx(o)),minutes:x(mx(u)),seconds:x(mx(a),a==="-0"),milliseconds:x(cL(l),f)}]}const Jbe={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 vL(t,e,n,r,i,s,o){const u={year:e.length===2?dL(H0(e)):H0(e),month:jQ.indexOf(n)+1,day:H0(r),hour:H0(i),minute:H0(s)};return o&&(u.second=H0(o)),t&&(u.weekday=t.length>3?qQ.indexOf(t)+1:HQ.indexOf(t)+1),u}const Zbe=/^(?:(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 eTe(t){const[,e,n,r,i,s,o,u,a,l,c,f]=t,x=vL(e,i,r,n,s,o,u);let h;return a?h=Jbe[a]:l?h=0:h=jC(c,f),[x,new Zr(h)]}function tTe(t){return t.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}const nTe=/^(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$/,rTe=/^(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$/,iTe=/^(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 oG(t){const[,e,n,r,i,s,o,u]=t;return[vL(e,i,r,n,s,o,u),Zr.utcInstance]}function sTe(t){const[,e,n,r,i,s,o,u]=t;return[vL(e,u,n,r,i,s,o),Zr.utcInstance]}const oTe=Sp(Ube,SL),uTe=Sp(qbe,SL),aTe=Sp(Hbe,SL),lTe=Sp(iG),uG=vp(Vbe,bp,Q1,G1),cTe=vp(zbe,bp,Q1,G1),fTe=vp(Qbe,bp,Q1,G1),xTe=vp(bp,Q1,G1);function dTe(t){return _p(t,[oTe,uG],[uTe,cTe],[aTe,fTe],[lTe,xTe])}function hTe(t){return _p(tTe(t),[Zbe,eTe])}function pTe(t){return _p(t,[nTe,oG],[rTe,oG],[iTe,sTe])}function gTe(t){return _p(t,[Xbe,Kbe])}const mTe=vp(bp);function yTe(t){return _p(t,[Ybe,mTe])}const ETe=Sp(Gbe,Wbe),ATe=Sp(sG),STe=vp(bp,Q1,G1);function vTe(t){return _p(t,[ETe,uG],[ATe,STe])}const _Te="Invalid Duration",aG={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}},CTe={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},...aG},ao=146097/400,Tp=146097/4800,bTe={years:{quarters:4,months:12,weeks:ao/7,days:ao,hours:ao*24,minutes:ao*24*60,seconds:ao*24*60*60,milliseconds:ao*24*60*60*1e3},quarters:{months:3,weeks:ao/28,days:ao/4,hours:ao*24/4,minutes:ao*24*60/4,seconds:ao*24*60*60/4,milliseconds:ao*24*60*60*1e3/4},months:{weeks:Tp/7,days:Tp,hours:Tp*24,minutes:Tp*24*60,seconds:Tp*24*60*60,milliseconds:Tp*24*60*60*1e3},...aG},yx=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],TTe=yx.slice(0).reverse();function Ex(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 vt(r)}function RTe(t){return t<0?Math.floor(t):Math.ceil(t)}function lG(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?RTe(o):Math.trunc(o);r[i]+=a,e[n]-=a*s}function OTe(t,e){TTe.reduce((n,r)=>St(e[r])?n:(n&&lG(t,e,n,e,r),r),null)}class vt{constructor(e){const n=e.conversionAccuracy==="longterm"||!1;this.values=e.values,this.loc=e.loc||hn.create(),this.conversionAccuracy=n?"longterm":"casual",this.invalid=e.invalid||null,this.matrix=n?bTe:CTe,this.isLuxonDuration=!0}static fromMillis(e,n){return vt.fromObject({milliseconds:e},n)}static fromObject(e,n={}){if(e==null||typeof e!="object")throw new uo(`Duration.fromObject: argument expected to be an object, got ${e===null?"null":typeof e}`);return new vt({values:UC(e,vt.normalizeUnit),loc:hn.fromObject(n),conversionAccuracy:n.conversionAccuracy})}static fromDurationLike(e){if(gx(e))return vt.fromMillis(e);if(vt.isDuration(e))return e;if(typeof e=="object")return vt.fromObject(e);throw new uo(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,n){const[r]=gTe(e);return r?vt.fromObject(r,n):vt.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static fromISOTime(e,n){const[r]=yTe(e);return r?vt.fromObject(r,n):vt.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static invalid(e,n=null){if(!e)throw new uo("need to specify a reason the Duration is invalid");const r=e instanceof Vo?e:new Vo(e,n);if(zn.throwOnInvalid)throw new ibe(r);return new vt({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 pQ(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?os.create(this.loc,r).formatDurationFromString(this,e):_Te}toHuman(e={}){const n=yx.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+=fL(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=vt.fromDurationLike(e),r={};for(const i of yx)(Ep(n.values,i)||Ep(this.values,i))&&(r[i]=n.get(i)+this.get(i));return Ex(this,{values:r},!0)}minus(e){if(!this.isValid)return this;const n=vt.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]=PQ(e(this.values[r],r));return Ex(this,{values:n},!0)}get(e){return this[vt.normalizeUnit(e)]}set(e){if(!this.isValid)return this;const n={...this.values,...UC(e,vt.normalizeUnit)};return Ex(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),Ex(this,s)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;const e=this.toObject();return OTe(this.matrix,e),Ex(this,{values:e},!0)}shiftTo(...e){if(!this.isValid)return this;if(e.length===0)return this;e=e.map(o=>vt.normalizeUnit(o));const n={},r={},i=this.toObject();let s;for(const o of yx)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;gx(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)yx.indexOf(l)>yx.indexOf(o)&&lG(this.matrix,i,l,n,o)}else gx(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 Ex(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 Ex(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 yx)if(!n(this.values[r],e.values[r]))return!1;return!0}}const W1="Invalid Interval";function NTe(t,e){return!t||!t.isValid?pn.invalid("missing or invalid start"):!e||!e.isValid?pn.invalid("missing or invalid end"):e<t?pn.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 pn{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 uo("need to specify a reason the Interval is invalid");const r=e instanceof Vo?e:new Vo(e,n);if(zn.throwOnInvalid)throw new rbe(r);return new pn({invalid:r})}static fromDateTimes(e,n){const r=K1(e),i=K1(n),s=NTe(r,i);return s??new pn({start:r,end:i})}static after(e,n){const r=vt.fromDurationLike(n),i=K1(e);return pn.fromDateTimes(i,i.plus(r))}static before(e,n){const r=vt.fromDurationLike(n),i=K1(e);return pn.fromDateTimes(i.minus(r),i)}static fromISO(e,n){const[r,i]=(e||"").split("/",2);if(r&&i){let s,o;try{s=st.fromISO(r,n),o=s.isValid}catch{o=!1}let u,a;try{u=st.fromISO(i,n),a=u.isValid}catch{a=!1}if(o&&a)return pn.fromDateTimes(s,u);if(o){const l=vt.fromISO(i,n);if(l.isValid)return pn.after(s,l)}else if(a){const l=vt.fromISO(r,n);if(l.isValid)return pn.before(u,l)}}return pn.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?pn.fromDateTimes(e||this.s,n||this.e):this}splitAt(...e){if(!this.isValid)return[];const n=e.map(K1).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(pn.fromDateTimes(i,u)),i=u,s+=1}return r}splitBy(e){const n=vt.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(pn.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:pn.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 pn.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(pn.fromDateTimes(n,a.time)),n=null);return pn.merge(i)}difference(...e){return pn.xor([this].concat(e)).map(n=>this.intersection(n)).filter(n=>n&&!n.isEmpty())}toString(){return this.isValid?`[${this.s.toISO()} – ${this.e.toISO()})`:W1}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:W1}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:W1}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:W1}toFormat(e,{separator:n=" – "}={}){return this.isValid?`${this.s.toFormat(e)}${n}${this.e.toFormat(e)}`:W1}toDuration(e,n){return this.isValid?this.e.diff(this.s,e,n):vt.invalid(this.invalidReason)}mapEndpoints(e){return pn.fromDateTimes(e(this.s),e(this.e))}}let V1=class{static hasDST(e=zn.defaultZone){const n=st.now().setZone(e).set({month:12});return!e.isUniversal&&n.offset!==n.set({month:6}).offset}static isValidIANAZone(e){return Ju.isValidZone(e)}static normalizeZone(e){return z0(e,zn.defaultZone)}static months(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||hn.create(n,r,s)).months(e)}static monthsFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||hn.create(n,r,s)).months(e,!0)}static weekdays(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null}={}){return(i||hn.create(n,r,null)).weekdays(e)}static weekdaysFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null}={}){return(i||hn.create(n,r,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return hn.create(e).meridiems()}static eras(e="short",{locale:n=null}={}){return hn.create(n,null,"gregory").eras(e)}static features(){return{relative:$Q()}}};function cG(t,e){const n=i=>i.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),r=n(e)-n(t);return Math.floor(vt.fromMillis(r).as("days"))}function DTe(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=cG(u,a);return(l-l%7)/7}],["days",cG]],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 FTe(t,e,n,r){let[i,s,o,u]=DTe(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=vt.fromObject(s,r);return l.length>0?vt.fromMillis(a,r).shiftTo(...l).plus(c):c}const _L={arab:"[٠-٩]",arabext:"[۰-۹]",bali:"[᭐-᭙]",beng:"[০-৯]",deva:"[०-९]",fullwide:"[0-9]",gujr:"[૦-૯]",hanidec:"[〇|一|二|三|四|五|六|七|八|九]",khmr:"[០-៩]",knda:"[೦-೯]",laoo:"[໐-໙]",limb:"[᥆-᥏]",mlym:"[൦-൯]",mong:"[᠐-᠙]",mymr:"[၀-၉]",orya:"[୦-୯]",tamldec:"[௦-௯]",telu:"[౦-౯]",thai:"[๐-๙]",tibt:"[༠-༩]",latn:"\\d"},fG={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]},wTe=_L.hanidec.replace(/[\[|\]]/g,"").split("");function LTe(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(_L.hanidec)!==-1)e+=wTe.indexOf(t[n]);else for(const i in fG){const[s,o]=fG[i];r>=s&&r<=o&&(e+=r-s)}}return parseInt(e,10)}else return e}function Yo({numberingSystem:t},e=""){return new RegExp(`${_L[t||"latn"]}${e}`)}const ITe="missing Intl.DateTimeFormat.formatToParts support";function Lt(t,e=n=>n){return{regex:t,deser:([n])=>e(LTe(n))}}const xG="[ ]",dG=new RegExp(xG,"g");function $Te(t){return t.replace(/\./g,"\\.?").replace(dG,xG)}function hG(t){return t.replace(/\./g,"").replace(dG," ").toLowerCase()}function Xo(t,e){return t===null?null:{regex:RegExp(t.map($Te).join("|")),deser:([n])=>t.findIndex(r=>hG(n)===hG(r))+e}}function pG(t,e){return{regex:t,deser:([,n,r])=>jC(n,r),groups:e}}function CL(t){return{regex:t,deser:([e])=>e}}function BTe(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function kTe(t,e){const n=Yo(e),r=Yo(e,"{2}"),i=Yo(e,"{3}"),s=Yo(e,"{4}"),o=Yo(e,"{6}"),u=Yo(e,"{1,2}"),a=Yo(e,"{1,3}"),l=Yo(e,"{1,6}"),c=Yo(e,"{1,9}"),f=Yo(e,"{2,4}"),x=Yo(e,"{4,6}"),h=g=>({regex:RegExp(BTe(g.val)),deser:([y])=>y,literal:!0}),m=(g=>{if(t.literal)return h(g);switch(g.val){case"G":return Xo(e.eras("short",!1),0);case"GG":return Xo(e.eras("long",!1),0);case"y":return Lt(l);case"yy":return Lt(f,dL);case"yyyy":return Lt(s);case"yyyyy":return Lt(x);case"yyyyyy":return Lt(o);case"M":return Lt(u);case"MM":return Lt(r);case"MMM":return Xo(e.months("short",!0,!1),1);case"MMMM":return Xo(e.months("long",!0,!1),1);case"L":return Lt(u);case"LL":return Lt(r);case"LLL":return Xo(e.months("short",!1,!1),1);case"LLLL":return Xo(e.months("long",!1,!1),1);case"d":return Lt(u);case"dd":return Lt(r);case"o":return Lt(a);case"ooo":return Lt(i);case"HH":return Lt(r);case"H":return Lt(u);case"hh":return Lt(r);case"h":return Lt(u);case"mm":return Lt(r);case"m":return Lt(u);case"q":return Lt(u);case"qq":return Lt(r);case"s":return Lt(u);case"ss":return Lt(r);case"S":return Lt(a);case"SSS":return Lt(i);case"u":return CL(c);case"uu":return CL(u);case"uuu":return Lt(n);case"a":return Xo(e.meridiems(),0);case"kkkk":return Lt(s);case"kk":return Lt(f,dL);case"W":return Lt(u);case"WW":return Lt(r);case"E":case"c":return Lt(n);case"EEE":return Xo(e.weekdays("short",!1,!1),1);case"EEEE":return Xo(e.weekdays("long",!1,!1),1);case"ccc":return Xo(e.weekdays("short",!0,!1),1);case"cccc":return Xo(e.weekdays("long",!0,!1),1);case"Z":case"ZZ":return pG(new RegExp(`([+-]${u.source})(?::(${r.source}))?`),2);case"ZZZ":return pG(new RegExp(`([+-]${u.source})(${r.source})?`),2);case"z":return CL(/[a-z_+-/]{1,256}?/i);default:return h(g)}})(t)||{invalidReason:ITe};return m.token=t,m}const PTe={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 MTe(t,e,n){const{type:r,value:i}=t;if(r==="literal")return{literal:!0,val:i};const s=n[r];let o=PTe[r];if(typeof o=="object"&&(o=o[s]),o)return{literal:!1,val:o}}function jTe(t){return[`^${t.map(n=>n.regex).reduce((n,r)=>`${n}(${r.source})`,"")}$`,t]}function UTe(t,e,n){const r=t.match(e);if(r){const i={};let s=1;for(const o in n)if(Ep(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 qTe(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=Ju.create(t.z)),St(t.Z)||(n||(n=new Zr(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=cL(t.u)),[Object.keys(t).reduce((s,o)=>{const u=e(o);return u&&(s[u]=t[o]),s},{}),n,r]}let bL=null;function HTe(){return bL||(bL=st.fromMillis(1555555555555)),bL}function zTe(t,e){if(t.literal)return t;const n=os.macroTokenToFormatOpts(t.val);if(!n)return t;const s=os.create(e,n).formatDateTimeParts(HTe()).map(o=>MTe(o,e,n));return s.includes(void 0)?t:s}function QTe(t,e){return Array.prototype.concat(...t.map(n=>zTe(n,e)))}function gG(t,e,n){const r=QTe(os.parseFormat(n),t),i=r.map(o=>kTe(o,t)),s=i.find(o=>o.invalidReason);if(s)return{input:e,tokens:r,invalidReason:s.invalidReason};{const[o,u]=jTe(i),a=RegExp(o,"i"),[l,c]=UTe(e,a,u),[f,x,h]=c?qTe(c):[null,null,void 0];if(Ep(c,"a")&&Ep(c,"H"))throw new j1("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 GTe(t,e,n){const{result:r,zone:i,specificOffset:s,invalidReason:o}=gG(t,e,n);return[r,i,s,o]}const mG=[0,31,59,90,120,151,181,212,243,273,304,334],yG=[0,31,60,91,121,152,182,213,244,274,305,335];function lo(t,e){return new Vo("unit out of range",`you specified ${e} (of type ${typeof e}) as a ${t}, which is invalid`)}function EG(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 AG(t,e,n){return n+(U1(t)?yG:mG)[e-1]}function SG(t,e){const n=U1(t)?yG:mG,r=n.findIndex(s=>s<e),i=e-n[r];return{month:r+1,day:i}}function TL(t){const{year:e,month:n,day:r}=t,i=AG(e,n,r),s=EG(e,n,r);let o=Math.floor((i-s+10)/7),u;return o<1?(u=e-1,o=MC(u)):o>MC(e)?(u=e+1,o=1):u=e,{weekYear:u,weekNumber:o,weekday:s,...qC(t)}}function vG(t){const{weekYear:e,weekNumber:n,weekday:r}=t,i=EG(e,1,4),s=q1(e);let o=n*7+r-i-3,u;o<1?(u=e-1,o+=q1(u)):o>s?(u=e+1,o-=q1(e)):u=e;const{month:a,day:l}=SG(u,o);return{year:u,month:a,day:l,...qC(t)}}function RL(t){const{year:e,month:n,day:r}=t,i=AG(e,n,r);return{year:e,ordinal:i,...qC(t)}}function _G(t){const{year:e,ordinal:n}=t,{month:r,day:i}=SG(e,n);return{year:e,month:r,day:i,...qC(t)}}function WTe(t){const e=kC(t.weekYear),n=yl(t.weekNumber,1,MC(t.weekYear)),r=yl(t.weekday,1,7);return e?n?r?!1:lo("weekday",t.weekday):lo("week",t.week):lo("weekYear",t.weekYear)}function VTe(t){const e=kC(t.year),n=yl(t.ordinal,1,q1(t.year));return e?n?!1:lo("ordinal",t.ordinal):lo("year",t.year)}function CG(t){const e=kC(t.year),n=yl(t.month,1,12),r=yl(t.day,1,PC(t.year,t.month));return e?n?r?!1:lo("day",t.day):lo("month",t.month):lo("year",t.year)}function bG(t){const{hour:e,minute:n,second:r,millisecond:i}=t,s=yl(e,0,23)||e===24&&n===0&&r===0&&i===0,o=yl(n,0,59),u=yl(r,0,59),a=yl(i,0,999);return s?o?u?a?!1:lo("millisecond",i):lo("second",r):lo("minute",n):lo("hour",e)}const OL="Invalid DateTime",TG=864e13;function WC(t){return new Vo("unsupported zone",`the zone "${t.name}" is not supported`)}function NL(t){return t.weekData===null&&(t.weekData=TL(t.c)),t.weekData}function Y1(t,e){const n={ts:t.ts,zone:t.zone,c:t.c,o:t.o,loc:t.loc,invalid:t.invalid};return new st({...n,...e,old:n})}function RG(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 OG(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 VC(t,e,n){return RG(xL(t),e,n)}function NG(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,PC(r,i))+Math.trunc(e.days)+Math.trunc(e.weeks)*7},o=vt.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=xL(s);let[a,l]=RG(u,n,t.zone);return o!==0&&(a+=o,l=t.zone.offset(a)),{ts:a,o:l}}function X1(t,e,n,r,i,s){const{setZone:o,zone:u}=n;if(t&&Object.keys(t).length!==0){const a=e||u,l=st.fromObject(t,{...n,zone:a,specificOffset:s});return o?l:l.setZone(u)}else return st.invalid(new Vo("unparsable",`the input "${i}" can't be parsed as ${r}`))}function YC(t,e,n=!0){return t.isValid?os.create(hn.create("en-US"),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(t,e):null}function DL(t,e){const n=t.c.year>9999||t.c.year<0;let r="";return n&&t.c.year>=0&&(r+="+"),r+=Hn(t.c.year,n?6:4),e?(r+="-",r+=Hn(t.c.month),r+="-",r+=Hn(t.c.day)):(r+=Hn(t.c.month),r+=Hn(t.c.day)),r}function DG(t,e,n,r,i,s){let o=Hn(t.c.hour);return e?(o+=":",o+=Hn(t.c.minute),(t.c.second!==0||!n)&&(o+=":")):o+=Hn(t.c.minute),(t.c.second!==0||!n)&&(o+=Hn(t.c.second),(t.c.millisecond!==0||!r)&&(o+=".",o+=Hn(t.c.millisecond,3))),i&&(t.isOffsetFixed&&t.offset===0&&!s?o+="Z":t.o<0?(o+="-",o+=Hn(Math.trunc(-t.o/60)),o+=":",o+=Hn(Math.trunc(-t.o%60))):(o+="+",o+=Hn(Math.trunc(t.o/60)),o+=":",o+=Hn(Math.trunc(t.o%60)))),s&&(o+="["+t.zone.ianaName+"]"),o}const FG={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},YTe={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},XTe={ordinal:1,hour:0,minute:0,second:0,millisecond:0},wG=["year","month","day","hour","minute","second","millisecond"],KTe=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],JTe=["year","ordinal","hour","minute","second","millisecond"];function LG(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 pQ(t);return e}function IG(t,e){const n=z0(e.zone,zn.defaultZone),r=hn.fromObject(e),i=zn.now();let s,o;if(St(t.year))s=i;else{for(const l of wG)St(t[l])&&(t[l]=FG[l]);const u=CG(t)||bG(t);if(u)return st.invalid(u);const a=n.offset(i);[s,o]=VC(t,a,n)}return new st({ts:s,zone:n,loc:r,o})}function $G(t,e,n){const r=St(n.round)?!0:n.round,i=(o,u)=>(o=fL(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 BG(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 st{constructor(e){const n=e.zone||zn.defaultZone;let r=e.invalid||(Number.isNaN(e.ts)?new Vo("invalid input"):null)||(n.isValid?null:WC(n));this.ts=St(e.ts)?zn.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=OG(this.ts,u),r=Number.isNaN(i.year)?new Vo("invalid input"):null,i=r?null:i,s=r?null:u}this._zone=n,this.loc=e.loc||hn.create(),this.invalid=r,this.weekData=null,this.c=i,this.o=s,this.isLuxonDateTime=!0}static now(){return new st({})}static local(){const[e,n]=BG(arguments),[r,i,s,o,u,a,l]=n;return IG({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static utc(){const[e,n]=BG(arguments),[r,i,s,o,u,a,l]=n;return e.zone=Zr.utcInstance,IG({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static fromJSDate(e,n={}){const r=abe(e)?e.valueOf():NaN;if(Number.isNaN(r))return st.invalid("invalid input");const i=z0(n.zone,zn.defaultZone);return i.isValid?new st({ts:r,zone:i,loc:hn.fromObject(n)}):st.invalid(WC(i))}static fromMillis(e,n={}){if(gx(e))return e<-TG||e>TG?st.invalid("Timestamp out of range"):new st({ts:e,zone:z0(n.zone,zn.defaultZone),loc:hn.fromObject(n)});throw new uo(`fromMillis requires a numerical input, but received a ${typeof e} with value ${e}`)}static fromSeconds(e,n={}){if(gx(e))return new st({ts:e*1e3,zone:z0(n.zone,zn.defaultZone),loc:hn.fromObject(n)});throw new uo("fromSeconds requires a numerical input")}static fromObject(e,n={}){e=e||{};const r=z0(n.zone,zn.defaultZone);if(!r.isValid)return st.invalid(WC(r));const i=zn.now(),s=St(n.specificOffset)?r.offset(i):n.specificOffset,o=UC(e,LG),u=!St(o.ordinal),a=!St(o.year),l=!St(o.month)||!St(o.day),c=a||l,f=o.weekYear||o.weekNumber,x=hn.fromObject(n);if((c||u)&&f)throw new j1("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(l&&u)throw new j1("Can't mix ordinal dates with month/day");const h=f||o.weekday&&!c;let p,m,g=OG(i,s);h?(p=KTe,m=YTe,g=TL(g)):u?(p=JTe,m=XTe,g=RL(g)):(p=wG,m=FG);let y=!1;for(const b of p){const O=o[b];St(O)?y?o[b]=m[b]:o[b]=g[b]:y=!0}const E=h?WTe(o):u?VTe(o):CG(o),A=E||bG(o);if(A)return st.invalid(A);const S=h?vG(o):u?_G(o):o,[v,_]=VC(S,s,r),C=new st({ts:v,zone:r,o:_,loc:x});return o.weekday&&c&&e.weekday!==C.weekday?st.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]=dTe(e);return X1(r,i,n,"ISO 8601",e)}static fromRFC2822(e,n={}){const[r,i]=hTe(e);return X1(r,i,n,"RFC 2822",e)}static fromHTTP(e,n={}){const[r,i]=pTe(e);return X1(r,i,n,"HTTP",n)}static fromFormat(e,n,r={}){if(St(e)||St(n))throw new uo("fromFormat requires an input string and a format");const{locale:i=null,numberingSystem:s=null}=r,o=hn.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0}),[u,a,l,c]=GTe(o,e,n);return c?st.invalid(c):X1(u,a,r,`format ${n}`,e,l)}static fromString(e,n,r={}){return st.fromFormat(e,n,r)}static fromSQL(e,n={}){const[r,i]=vTe(e);return X1(r,i,n,"SQL",e)}static invalid(e,n=null){if(!e)throw new uo("need to specify a reason the DateTime is invalid");const r=e instanceof Vo?e:new Vo(e,n);if(zn.throwOnInvalid)throw new nbe(r);return new st({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?NL(this).weekYear:NaN}get weekNumber(){return this.isValid?NL(this).weekNumber:NaN}get weekday(){return this.isValid?NL(this).weekday:NaN}get ordinal(){return this.isValid?RL(this.c).ordinal:NaN}get monthShort(){return this.isValid?V1.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?V1.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?V1.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?V1.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 U1(this.year)}get daysInMonth(){return PC(this.year,this.month)}get daysInYear(){return this.isValid?q1(this.year):NaN}get weeksInWeekYear(){return this.isValid?MC(this.weekYear):NaN}resolvedLocaleOptions(e={}){const{locale:n,numberingSystem:r,calendar:i}=os.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:n,numberingSystem:r,outputCalendar:i}}toUTC(e=0,n={}){return this.setZone(Zr.instance(e),n)}toLocal(){return this.setZone(zn.defaultZone)}setZone(e,{keepLocalTime:n=!1,keepCalendarTime:r=!1}={}){if(e=z0(e,zn.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]=VC(o,s,e)}return Y1(this,{ts:i,zone:e})}else return st.invalid(WC(e))}reconfigure({locale:e,numberingSystem:n,outputCalendar:r}={}){const i=this.loc.clone({locale:e,numberingSystem:n,outputCalendar:r});return Y1(this,{loc:i})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;const n=UC(e,LG),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 j1("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(o&&i)throw new j1("Can't mix ordinal dates with month/day");let l;r?l=vG({...TL(this.c),...n}):St(n.ordinal)?(l={...this.toObject(),...n},St(n.day)&&(l.day=Math.min(PC(l.year,l.month),l.day))):l=_G({...RL(this.c),...n});const[c,f]=VC(l,this.o,this.zone);return Y1(this,{ts:c,o:f})}plus(e){if(!this.isValid)return this;const n=vt.fromDurationLike(e);return Y1(this,NG(this,n))}minus(e){if(!this.isValid)return this;const n=vt.fromDurationLike(e).negate();return Y1(this,NG(this,n))}startOf(e){if(!this.isValid)return this;const n={},r=vt.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?os.create(this.loc.redefaultToEN(n)).formatDateTimeFromString(this,e):OL}toLocaleString(e=lL,n={}){return this.isValid?os.create(this.loc.clone(n),e).formatDateTime(this):OL}toLocaleParts(e={}){return this.isValid?os.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=DL(this,o);return u+="T",u+=DG(this,o,n,r,i,s),u}toISODate({format:e="extended"}={}){return this.isValid?DL(this,e==="extended"):null}toISOWeekDate(){return YC(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":"")+DG(this,o==="extended",n,e,r,s):null}toRFC2822(){return YC(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return YC(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")}toSQLDate(){return this.isValid?DL(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")),YC(this,i,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():OL}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 vt.invalid("created by diffing an invalid DateTime");const i={locale:this.locale,numberingSystem:this.numberingSystem,...r},s=lbe(n).map(vt.normalizeUnit),o=e.valueOf()>this.valueOf(),u=o?this:e,a=o?e:this,l=FTe(u,a,s,i);return o?l.negate():l}diffNow(e="milliseconds",n={}){return this.diff(st.now(),e,n)}until(e){return this.isValid?pn.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||st.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),$G(n,this.plus(r),{...e,numeric:"always",units:i,unit:s})}toRelativeCalendar(e={}){return this.isValid?$G(e.base||st.fromObject({},{zone:this.zone}),this,{...e,numeric:"auto",units:["years","months","days"],calendary:!0}):null}static min(...e){if(!e.every(st.isDateTime))throw new uo("min requires all arguments be DateTimes");return BQ(e,n=>n.valueOf(),Math.min)}static max(...e){if(!e.every(st.isDateTime))throw new uo("max requires all arguments be DateTimes");return BQ(e,n=>n.valueOf(),Math.max)}static fromFormatExplain(e,n,r={}){const{locale:i=null,numberingSystem:s=null}=r,o=hn.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0});return gG(o,e,n)}static fromStringExplain(e,n,r={}){return st.fromFormatExplain(e,n,r)}static get DATE_SHORT(){return lL}static get DATE_MED(){return gQ}static get DATE_MED_WITH_WEEKDAY(){return sbe}static get DATE_FULL(){return mQ}static get DATE_HUGE(){return yQ}static get TIME_SIMPLE(){return EQ}static get TIME_WITH_SECONDS(){return AQ}static get TIME_WITH_SHORT_OFFSET(){return SQ}static get TIME_WITH_LONG_OFFSET(){return vQ}static get TIME_24_SIMPLE(){return _Q}static get TIME_24_WITH_SECONDS(){return CQ}static get TIME_24_WITH_SHORT_OFFSET(){return bQ}static get TIME_24_WITH_LONG_OFFSET(){return TQ}static get DATETIME_SHORT(){return RQ}static get DATETIME_SHORT_WITH_SECONDS(){return OQ}static get DATETIME_MED(){return NQ}static get DATETIME_MED_WITH_SECONDS(){return DQ}static get DATETIME_MED_WITH_WEEKDAY(){return obe}static get DATETIME_FULL(){return FQ}static get DATETIME_FULL_WITH_SECONDS(){return wQ}static get DATETIME_HUGE(){return LQ}static get DATETIME_HUGE_WITH_SECONDS(){return IQ}}function K1(t){if(st.isDateTime(t))return t;if(t&&t.valueOf&&gx(t.valueOf()))return st.fromJSDate(t);if(t&&typeof t=="object")return st.fromObject(t);throw new uo(`Unknown datetime argument: ${t}, of type ${typeof t}`)}const ZTe="2.5.2";ss.DateTime=st,ss.Duration=vt,ss.FixedOffsetZone=Zr,ss.IANAZone=Ju,ss.Info=V1,ss.Interval=pn,ss.InvalidZone=VQ,ss.Settings=zn,ss.SystemZone=HC,ss.VERSION=ZTe,ss.Zone=Ap,Object.defineProperty(pr,"__esModule",{value:!0}),pr.LiteralYear=pr.LiteralQuarter=pr.LiteralMonth=pr.LiteralWeek=pr.LiteralDay=pr.LiteralHour=pr.LiteralTimestamp=pr.TimeFormatError=void 0;const Q0=ss,eRe=Z,tRe=B0,kG=pp,FL=dt;class nRe extends Error{}pr.TimeFormatError=nRe;function Ax(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 PG="yyyy",MG=`${PG}-LL`,co=`${MG}-dd`,jG=`${co} HH`,UG=`${jG}:mm`,wL=`${UG}:ss`;class qG extends FL.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={type:"dialect",function:"timeLiteral",literal:e,literalType: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 LL extends qG{constructor(e,n){super(e,n,"timestamp"),this.elementType="literal:timestamp"}static parse(e){let n;const r=Ax(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=Q0.DateTime.fromFormat(e,wL);if(s.isValid)return new LL(r,n);if(s=Q0.DateTime.fromFormat(e,UG),s.isValid){r.text=r.text+":00",n="minute";const o=s.plus({minute:1}).toFormat(wL);return new IL(r,n,"timestamp",o)}}}pr.LiteralTimestamp=LL;class IL extends qG{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,FL.getMorphicValue)(i,"timestamp"),a=(0,FL.getMorphicValue)(s,"timestamp");if(u&&a)i=u,s=a;else return super.apply(e,n,r)}if((0,eRe.isTimeFieldType)(o.dataType)){const u=o.dataType;return new tRe.Range(new kG.ExprTime(u,i.value),new kG.ExprTime(u,s.value)).apply(e,n,r)}}return super.apply(e,n,r)}}class $L extends IL{constructor(e,n){super(e,"hour","timestamp",n),this.elementType="literal:hour"}static parse(e){const n=Ax(e,!1);let r=n.text;const i=Q0.DateTime.fromFormat(n.text,jG);if(i.isValid)return n.text=n.text+":00:00",r=i.plus({hour:1}).toFormat(wL),new $L(n,r)}}pr.LiteralHour=$L;class J1 extends IL{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 BL extends J1{constructor(e,n){super(e,"day",n),this.elementType="literal:day"}static parse(e){const n=Ax(e,!1);let r=n.text;const i=Q0.DateTime.fromFormat(n.text,co);if(i.isValid)return r=i.plus({day:1}).toFormat(co),new BL(n,r)}}pr.LiteralDay=BL;class kL extends J1{constructor(e,n){super(e,"week",n),this.elementType="literal:week"}static parse(e){const n=Ax(e,!1);let r=n.text;const i=n.text.slice(0,10),s=Q0.DateTime.fromFormat(i,co);if(s.isValid&&s.weekday===7){const u=s.plus({days:7});return n.text=s.toFormat(co),r=u.toFormat(co),new kL(n,r)}}}pr.LiteralWeek=kL;class PL extends J1{constructor(e,n){super(e,"month",n),this.elementType="literal:month"}static parse(e){const n=Ax(e,!1);let r=n.text;const i=Q0.DateTime.fromFormat(n.text,MG);if(i.isValid){const s=i.plus({months:1});return n.text=i.toFormat(co),r=s.toFormat(co),new PL(n,r)}}}pr.LiteralMonth=PL;class ML extends J1{constructor(e,n){super(e,"quarter",n),this.elementType="literal:quarter"}static parse(e){const n=Ax(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=Q0.DateTime.fromFormat(i[1],"yyyy");s>0&&(o=o.plus({quarters:s}));const u=o.plus({quarter:1});return n.text=o.toFormat(co),r=u.toFormat(co),new ML(n,r)}}}pr.LiteralQuarter=ML;class jL extends J1{constructor(e,n){super(e,"year",n),this.elementType="literal:year"}static parse(e){const n=Ax(e,!1);let r=n.text;const i=Q0.DateTime.fromFormat(n.text,PG);if(i.isValid){const s=i.plus({year:1});return n.text=i.toFormat(co),r=s.toFormat(co),new jL(n,r)}}}pr.LiteralYear=jL;var XC={};Object.defineProperty(XC,"__esModule",{value:!0}),XC.PartialCompare=void 0;const rRe=hr,iRe=dt;class sRe extends iRe.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,rRe.errorFor)("no value for partial compare")}}XC.PartialCompare=sRe;var Rp={};Object.defineProperty(Rp,"__esModule",{value:!0}),Rp.PickWhen=Rp.Pick=void 0;const Zu=Z,G0=hr,Ko=ln,oRe=dt,uRe=Ve,HG=an;function KC(t,e){return t===void 0||t.dataType==="null"||t.dataType==="error"?e:t}class aRe extends oRe.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=["CASE"];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,Zu.maxExpressionType)(o,(0,Zu.maxExpressionType)(f.expressionType,x.expressionType)),u=(0,Zu.mergeEvalSpaces)(u,f.evalSpace,x.evalSpace),s&&!Ko.FT.typeEq(s,x,!0)){const h=Ko.FT.inspect(x);return this.log(`pick type '${h}', expected '${s.dataType}'[pick-values-must-match]`),(0,G0.errorFor)("pick when type")}s=KC(s,x),i.push(" WHEN ",...f.value," THEN ",...x.value)}const l=(this.elsePick||r).getExpression(e);if(s=KC(s,l),!Ko.FT.typeEq(s,l,!0)){const c=this.elsePick?"else":"pick default";return this.log(`${c} type '${Ko.FT.inspect(l)}', expected '${s.dataType}'[pick-values-must-match]`),(0,G0.errorFor)("pick else type")}return{dataType:s.dataType,expressionType:(0,Zu.maxExpressionType)(o,l.expressionType),evalSpace:(0,Zu.mergeEvalSpaces)(u,l.evalSpace),value:(0,HG.compressExpr)([...i," ELSE ",...l.value," END"])}}getExpression(e){if(this.elsePick===void 0)return this.log("pick incomplete, missing 'else'"),(0,G0.errorFor)("no value for partial pick");const n=[];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,G0.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,G0.errorFor)("partial when");n.push({pick:a.pick.getExpression(e),when:a.when.getExpression(e)})}let r;const i=["CASE"];let s="scalar",o="constant";for(const a of n){if(!Ko.FT.typeEq(a.when,Ko.FT.boolT))return this.log(`when expression must be boolean, not '${Ko.FT.inspect(a.when)}`),(0,G0.errorFor)("pick when type");if(r&&!Ko.FT.typeEq(r,a.pick,!0)){const l=Ko.FT.inspect(a.pick);return this.log(`pick type '${l}', expected '${r.dataType}'[pick-values-must-match]`),(0,G0.errorFor)("pick value type")}r=KC(r,a.pick),s=(0,Zu.maxExpressionType)(s,(0,Zu.maxExpressionType)(a.pick.expressionType,a.when.expressionType)),o=(0,Zu.mergeEvalSpaces)(o,a.pick.evalSpace,a.when.evalSpace),i.push(" WHEN ",...a.when.value," THEN ",...a.pick.value)}const u=this.elsePick.getExpression(e);return s=(0,Zu.maxExpressionType)(s,u.expressionType),o=(0,Zu.mergeEvalSpaces)(o,u.evalSpace),r=KC(r,u),Ko.FT.typeEq(r,u,!0)?(i.push(" ELSE ",...u.value," END"),{dataType:r.dataType,expressionType:s,value:(0,HG.compressExpr)(i),evalSpace:o}):(this.elsePick.log(`else type '${Ko.FT.inspect(u)}', expected '${r.dataType}'[pick-values-must-match]`),(0,G0.errorFor)("pick value type mismatch"))}}Rp.Pick=aRe;class lRe extends uRe.MalloyElement{constructor(e,n){super({when:n}),this.pick=e,this.when=n,this.elementType="pickWhen",this.has({pick:e})}}Rp.PickWhen=lRe;var JC={};Object.defineProperty(JC,"__esModule",{value:!0}),JC.Timeframe=void 0;const cRe=Z,fRe=Ve;class xRe extends fRe.MalloyElement{constructor(e){super(),this.elementType="timeframe";let n=e.toLowerCase();n.endsWith("s")&&(n=n.slice(0,-1)),this.text=(0,cRe.isTimestampUnit)(n)?n:"second"}}JC.Timeframe=xRe;var ZC={};Object.defineProperty(ZC,"__esModule",{value:!0}),ZC.TopBy=void 0;const dRe=Z,zG=dt,hRe=Ve,pRe=an;class gRe extends hRe.MalloyElement{constructor(e){super(),this.by=e,this.elementType="topBy",e instanceof zG.ExpressionDef&&this.has({by:e})}getBy(e){if(this.by instanceof zG.ExpressionDef){const n=this.by.getExpression(e);return(0,dRe.expressionIsAggregate)(n.expressionType)||this.log("top by expression must be an aggregate"),{by:"expression",e:(0,pRe.compressExpr)(n.value)}}return{by:"name",name:this.by}}}ZC.TopBy=gRe;var W0={};Object.defineProperty(W0,"__esModule",{value:!0}),W0.ImportStatement=W0.ImportSelect=W0.ImportSourceName=void 0;const UL=Ve;class mRe extends UL.MalloyElement{constructor(e){super(),this.text=e,this.elementType="importSourceName"}}W0.ImportSourceName=mRe;class yRe extends UL.MalloyElement{constructor(e,n){super(),this.text=e,this.from=n,this.elementType="importName",n&&this.has({from:n})}}W0.ImportSelect=yRe;class ERe extends UL.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}'`)}}}W0.ImportStatement=ERe;var Z1={};Object.defineProperty(Z1,"__esModule",{value:!0}),Z1.ExtendBlock=void 0;const ARe=Ve,SRe=Rn;class vRe extends ARe.ListOf{constructor(){super(...arguments),this.elementType="extendBlock",this.forceQueryClass=void 0,this.queryRefinementStage=SRe.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)for(const r of n.list)e.inputFS.extendSource(r)}}Z1.ExtendBlock=vRe;var eb={};Object.defineProperty(eb,"__esModule",{value:!0}),eb.Argument=void 0;const _Re=Ve;class CRe extends _Re.MalloyElement{constructor(e){super({...e}),this.elementType="Argument",this.id=e.id,this.value=e.value}}eb.Argument=CRe;var tb={};Object.defineProperty(tb,"__esModule",{value:!0}),tb.HasParameter=void 0;const QG=Z,bRe=Ve;class TRe extends bRe.MalloyElement{constructor(e){super(),this.elementType="hasParameter",this.name=e.name,e.type&&(0,QG.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,QG.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"}}}tb.HasParameter=TRe;var nb={};Object.defineProperty(nb,"__esModule",{value:!0}),nb.AnonymousQuery=void 0;const RRe=Ve,ORe=Yr;class NRe extends RRe.MalloyElement{constructor(e){super(),this.queryExpr=e,this.elementType="anonymousQuery",this.isNoteableObj=!0,this.extendNote=ORe.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)}}nb.AnonymousQuery=NRe;var V0={};Object.defineProperty(V0,"__esModule",{value:!0}),V0.View=void 0;const DRe=Ve;let FRe=class extends DRe.MalloyElement{pipeline(e,n){return this.pipelineComp(e,n).pipeline}};V0.View=FRe;var rb={};Object.defineProperty(rb,"__esModule",{value:!0}),rb.ViewArrow=void 0;const wRe=Jr,LRe=V0;class IRe extends LRe.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 wRe.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()}}rb.ViewArrow=IRe;var ib={},ey={};Object.defineProperty(ey,"__esModule",{value:!0}),ey.refine=void 0;const qL=Nu,HL=w0;function $Re(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,qL.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,qL.isQuerySegment)(o)&&(0,qL.isQuerySegment)(s)){const u=[],a=[],l=new Map(s.queryFields.map(c=>[(0,HL.nameFromDef)(c),c]));for(const c of o.queryFields)l.has((0,HL.nameFromDef)(c))?u.push(c):a.push(c);s.queryFields=[...s.queryFields,...a],u.length>0&&t.log(`overlapping fields in refinement: ${u.map(HL.nameFromDef)}`)}else o.type==="index"&&s.type==="index"&&(s.indexFields=[...o.indexFields,...s.indexFields]);return[s]}ey.refine=$Re,Object.defineProperty(ib,"__esModule",{value:!0}),ib.ViewRefine=void 0;const BRe=Kr,kRe=Fs,PRe=ey,MRe=V0;class jRe extends MRe.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,kRe.getFinalStruct)(this.refinement,e.structDef(),i):BRe.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,PRe.refine)(this,n,i[0])}getImplicitName(){return this.base.getImplicitName()}}ib.ViewRefine=jRe;var sb={};Object.defineProperty(sb,"__esModule",{value:!0}),sb.ReferenceView=void 0;const GG=Z,WG=Kr,URe=Fs,qRe=Xr,HRe=ey,zRe=V0;class QRe extends zRe.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:WG.ErrorFactory.structDef,outputStruct:WG.ErrorFactory.structDef,pipeline:[],error:!0}};if(!r.found)return this.log(`\`${this.reference.refString}\` is not defined`),i();if(!(r.found instanceof qRe.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,GG.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,GG.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,URe.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,HRe.refine)(this,n,i):n}getImplicitName(){return this.reference.nameString}}sb.ReferenceView=QRe;var ob={},ty={},ub={},ny={};Object.defineProperty(ny,"__esModule",{value:!0}),ny.Index=void 0;const GRe=Ve,WRe=Rn;let VRe=class extends GRe.MalloyElement{constructor(e){super({fields:e}),this.fields=e,this.elementType="index",this.forceQueryClass=WRe.QueryClass.Index,this.queryRefinementStage=void 0}useWeight(e){this.has({weightBy:e}),this.weightBy=e}};ny.Index=VRe;var ry={};Object.defineProperty(ry,"__esModule",{value:!0}),ry.SampleProperty=void 0;const YRe=Ve,VG=Rn;class XRe extends YRe.MalloyElement{constructor(e){super(),this.sample=e,this.elementType="sampleProperty",this.queryRefinementStage=VG.LegalRefinementStage.Tail,this.forceQueryClass=VG.QueryClass.Index}sampling(){return this.sample}}ry.SampleProperty=XRe;var ab={};Object.defineProperty(ab,"__esModule",{value:!0}),ab.IndexFieldSpace=void 0;const YG=Z,zL=ht,KRe=Xr,JRe=Go,ZRe=$1,eOe=Jr;class tOe extends JRe.QueryOperationSpace{constructor(){super(...arguments),this.segmentType="index"}pushFields(...e){for(const n of e)n instanceof zL.FieldReference?super.pushFields(n):n instanceof zL.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 KRe.SpaceField){const s=this.expandedWild[r];if(s){n.push({type:"fieldref",path:s});continue}if(i instanceof ZRe.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 eOe.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=zL.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,YG.isAtomicFieldType)(c.dataType)&&(0,YG.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)}}ab.IndexFieldSpace=tOe,Object.defineProperty(ub,"__esModule",{value:!0}),ub.IndexBuilder=void 0;const QL=Z,nOe=Kr,rOe=Qo,iOe=ny,sOe=M0,oOe=ry,uOe=ab;class aOe{constructor(e,n,r,i){this.filters=[],this.type="index",this.resultFS=new uOe.IndexFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e instanceof rOe.Filter?this.filters.push(...e.getFilterList(this.inputFS)):e instanceof sOe.Limit?(this.limit&&this.limit.log("Ignored, too many limit: statements"),this.limit=e):e instanceof iOe.Index?(this.resultFS.pushFields(...e.fields.list),e.weightBy&&(this.indexOn&&this.indexOn.log("Ignoring previous BY"),this.indexOn=e.weightBy)):e instanceof oOe.SampleProperty?this.sample=e.sampling():e.log("Not legal in an index query operation")}finalize(e){if(e&&!(0,QL.isIndexSegment)(e)&&!(0,QL.isPartialSegment)(e))return this.resultFS.log(`Can't refine index with ${e.type}`),nOe.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,QL.isIndexSegment)(e)&&(e!=null&&e.sample)&&(n.sample=e.sample),this.sample&&(n.sample=this.sample),n}}ub.IndexBuilder=aOe;var lb={},iy={};Object.defineProperty(iy,"__esModule",{value:!0}),iy.GroupBy=void 0;const lOe=Ds,XG=Rn;class cOe extends lOe.DefinitionList{constructor(){super(...arguments),this.elementType="groupBy",this.queryRefinementStage=XG.LegalRefinementStage.Single,this.forceQueryClass=XG.QueryClass.Grouping}}iy.GroupBy=cOe;var cb={};Object.defineProperty(cb,"__esModule",{value:!0}),cb.ProjectFieldSpace=void 0;const GL=Z,fOe=Go;class xOe extends fOe.QuerySpace{constructor(){super(...arguments),this.segmentType="project"}canContain(e){return e.dataType==="turtle"||(0,GL.expressionIsAggregate)(e.expressionType)?!1:(0,GL.expressionInvolvesAggregate)(e.expressionType)&&(0,GL.expressionIsAnalytic)(e.expressionType)?(this.log("Cannot add aggregate analyics to project"),!1):!0}}cb.ProjectFieldSpace=xOe;var Y0={},Sx={};Object.defineProperty(Sx,"__esModule",{value:!0}),Sx.Ordering=Sx.OrderBy=void 0;const dOe=Z,KG=j0,JG=Ve,hOe=Rn;class pOe extends JG.MalloyElement{constructor(e,n){super(),this.field=e,this.dir=n,this.elementType="orderBy",e instanceof KG.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 KG.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,dOe.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}}Sx.OrderBy=pOe;class gOe extends JG.ListOf{constructor(e){super(e),this.elementType="ordering",this.queryRefinementStage=hOe.LegalRefinementStage.Tail,this.forceQueryClass=void 0}getOrderBy(e){return this.list.map(n=>n.getOrderBy(e))}}Sx.Ordering=gOe;var sy={};Object.defineProperty(sy,"__esModule",{value:!0}),sy.Top=void 0;const ZG=Z,mOe=an,yOe=j0,EOe=Ve,AOe=Rn;let SOe=class extends EOe.MalloyElement{constructor(e,n){super(),this.limit=e,this.by=n,this.elementType="top",this.queryRefinementStage=AOe.LegalRefinementStage.Tail,this.forceQueryClass=void 0,this.has({by:n})}getBy(e){var n;if(this.by)if(this.by instanceof yOe.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,ZG.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,ZG.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:(0,mOe.compressExpr)(r.value)}}}};sy.Top=SOe,Object.defineProperty(Y0,"__esModule",{value:!0}),Y0.ReduceBuilder=Y0.QuerySegmentBuilder=void 0;const eW=Z,vOe=Kr,_Oe=Qo,COe=M0,tW=Sx,nW=sy,bOe=Go,TOe=Ds;class rW{constructor(){this.filters=[]}execute(e){if(e.queryExecute){e.queryExecute(this);return}if(e instanceof TOe.DefinitionList)this.resultFS.pushFields(...e.list);else if(e instanceof _Oe.Filter){const n=e.havingClause?this.resultFS:this.inputFS;this.filters.push(...e.getFilterList(n))}else e instanceof nW.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 COe.Limit?this.limit?e.log("Query operation already limited"):this.limit=e.limit:e instanceof tW.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 nW.Top){const i=this.order.getBy(this.inputFS);i&&(n.by=i)}this.order instanceof tW.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])}}Y0.QuerySegmentBuilder=rW;class ROe extends rW{constructor(e,n,r,i){super(),this.type="grouping",this.resultFS=new bOe.ReduceFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}finalize(e){let n;if(e)if((0,eW.isReduceSegment)(e)||(0,eW.isPartialSegment)(e))n=e;else return this.resultFS.log(`Can't refine reduce with ${e.type}`),vOe.ErrorFactory.reduceSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}Y0.ReduceBuilder=ROe,Object.defineProperty(lb,"__esModule",{value:!0}),lb.ProjectBuilder=void 0;const iW=Z,OOe=Kr,NOe=iy,DOe=cb,FOe=Y0;class wOe extends FOe.QuerySegmentBuilder{constructor(e,n,r,i){super(),this.type="project",this.resultFS=new DOe.ProjectFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e.elementType==="having"||e instanceof NOe.GroupBy?e.log("Illegal statement in a select query operation"):super.execute(e)}finalize(e){let n;if(e)if((0,iW.isProjectSegment)(e)||(0,iW.isPartialSegment)(e))n=e;else return this.resultFS.log(`Can't refine select with ${e.type}`),OOe.ErrorFactory.projectSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}lb.ProjectBuilder=wOe;var fb={};Object.defineProperty(fb,"__esModule",{value:!0}),fb.PartialBuilder=void 0;const LOe=Nu,IOe=Y0;class $Oe extends IOe.ReduceBuilder{finalize(e){const n=super.finalize(e);if((0,LOe.isQuerySegment)(n))return{...n,type:"partial"};throw new Error(`Partial Builder cannot finalize from ${n.type}`)}}fb.PartialBuilder=$Oe,Object.defineProperty(ty,"__esModule",{value:!0}),ty.QOpDesc=void 0;const BOe=ub,kOe=lb,POe=Y0,MOe=Ve,jOe=Fs,UOe=Jr,vx=Rn,qOe=fb;class HOe extends MOe.ListOf{constructor(){super(...arguments),this.elementType="queryOperation"}computeType(){var e;let n,r=!1;this.refineThis&&(this.refineThis.type==="reduce"?n=vx.QueryClass.Grouping:this.refineThis.type==="project"?n=vx.QueryClass.Project:this.refineThis.type==="index"&&(n=vx.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=vx.QueryClass.Project),this.opClass=n,n}refineFrom(e){this.refineThis=e}getBuilder(e,n,r){switch(this.computeType()){case vx.QueryClass.Grouping:return new POe.ReduceBuilder(e,this.refineThis,n,r);case vx.QueryClass.Project:return new kOe.ProjectBuilder(e,this.refineThis,n,r);case vx.QueryClass.Index:return new BOe.IndexBuilder(e,this.refineThis,n,r);case void 0:return new qOe.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 UOe.StaticSpace((0,jOe.opOutputStruct)(this,e.structDef(),i))}}}ty.QOpDesc=HOe,Object.defineProperty(ob,"__esModule",{value:!0}),ob.QOpDescView=void 0;const zOe=Z,QOe=Jr,sW=ty,GOe=Fs,WL=Rn,WOe=V0;class VOe extends WOe.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,zOe.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 sW.QOpDesc([]),o=new sW.QOpDesc([]);for(const u of this.operation.list)switch(u.queryRefinementStage){case WL.LegalRefinementStage.Head:s.push(u);break;case WL.LegalRefinementStage.Single:u.log("Illegal in refinement of a query with more than one stage");break;case WL.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,GOe.getFinalStruct)(this,e.structDef(),i.slice(-1));i[u]=this.getOp(new QOe.StaticSpace(a),void 0,o,i[u])}return i}getImplicitName(){}}ob.QOpDescView=VOe;var gn={};Object.defineProperty(gn,"__esModule",{value:!0}),gn.FieldDefinitionValue=gn.DefSpace=gn.DimensionFieldDeclaration=gn.MeasureFieldDeclaration=gn.DeclareFieldDeclaration=gn.ProjectFieldDeclaration=gn.GroupByFieldDeclaration=gn.AggregateFieldDeclaration=gn.CalculateFieldDeclaration=gn.AtomicFieldDeclaration=void 0;const YOe=Z,XOe=an,KOe=ln,JOe=fp,ZOe=Ve,_x=Xn,eNe=Yr,tNe=Xr;class X0 extends ZOe.MalloyElement{constructor(e,n,r){super({expr:e}),this.expr=e,this.defineName=n,this.exprSrc=r,this.isNoteableObj=!0,this.extendNote=eNe.extendNoteMethod}fieldDef(e,n){return this.queryFieldDef(new VL(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 a=this.executesInOutputSpace()?i():e;r=this.expr.getExpression(a)}catch(a){return this.log(`Cannot define '${n}', ${a.message}`),{name:n,type:"error"}}const s=(0,XOe.compressExpr)(r.value);let o=r.dataType;if(o==="null"&&(this.expr.log('null value defaults to type number, use "null::TYPE" to specify correct type',"warn"),o="number"),(0,YOe.isAtomicFieldType)(o)&&o!=="error"){const a={name:n,type:o,location:this.location};return s.length>0&&(a.e=s),r.expressionType&&(a.expressionType=r.expressionType),this.typecheckExprValue(r),this.exprSrc&&(a.code=this.exprSrc),(0,JOe.isGranularResult)(r)&&a.type==="timestamp"&&(a.timeframe=r.timeframe),this.note&&(a.annotation=this.note),a}if(!(e instanceof VL&&e.foundCircle)&&r.dataType!=="error"){const a=KOe.FT.inspect(r);this.log(`Cannot define '${n}', unexpected type: ${a}`)}return{name:n,type:"error"}}makeEntry(e){e.newEntry(this.defineName,this,new oW(e,this))}}gn.AtomicFieldDeclaration=X0;class nNe extends X0{constructor(){super(...arguments),this.elementType="calculateFieldDeclaration"}typecheckExprValue(e){(0,_x.typecheckCalculate)(e,this)}executesInOutputSpace(){return!0}}gn.CalculateFieldDeclaration=nNe;class rNe extends X0{constructor(){super(...arguments),this.elementType="aggregateFieldDeclaration"}typecheckExprValue(e){(0,_x.typecheckAggregate)(e,this)}}gn.AggregateFieldDeclaration=rNe;class iNe extends X0{constructor(){super(...arguments),this.elementType="groupByFieldDeclaration"}typecheckExprValue(e){(0,_x.typecheckGroupBy)(e,this)}}gn.GroupByFieldDeclaration=iNe;class sNe extends X0{constructor(){super(...arguments),this.elementType="projectFieldDeclaration"}typecheckExprValue(e){(0,_x.typecheckProject)(e,this)}}gn.ProjectFieldDeclaration=sNe;class oNe extends X0{constructor(){super(...arguments),this.elementType="declareFieldDeclaration"}typecheckExprValue(e){(0,_x.typecheckDeclare)(e,this)}}gn.DeclareFieldDeclaration=oNe;class uNe extends X0{constructor(){super(...arguments),this.elementType="measureFieldDeclaration"}typecheckExprValue(e){(0,_x.typecheckMeasure)(e,this)}}gn.MeasureFieldDeclaration=uNe;class aNe extends X0{constructor(){super(...arguments),this.elementType="dimensionFieldDeclaration"}typecheckExprValue(e){(0,_x.typecheckDimension)(e,this)}}gn.DimensionFieldDeclaration=aNe;class VL{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")}}gn.DefSpace=VL;class oW extends tNe.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)}}gn.FieldDefinitionValue=oW;var xb={};Object.defineProperty(xb,"__esModule",{value:!0}),xb.Aggregate=void 0;const lNe=Ds,uW=Rn;let cNe=class extends lNe.DefinitionList{constructor(){super(...arguments),this.elementType="aggregateList",this.queryRefinementStage=uW.LegalRefinementStage.Single,this.forceQueryClass=uW.QueryClass.Grouping}};xb.Aggregate=cNe;var db={};Object.defineProperty(db,"__esModule",{value:!0}),db.Calculate=void 0;const fNe=Ds,xNe=Rn;class dNe extends fNe.DefinitionList{constructor(){super(...arguments),this.elementType="calculate",this.forceQueryClass=void 0,this.needsExplicitQueryClass=!0,this.queryRefinementStage=xNe.LegalRefinementStage.Single}}db.Calculate=dNe;var oy={};Object.defineProperty(oy,"__esModule",{value:!0}),oy.Dimensions=void 0;const hNe=L0;class pNe extends hNe.DeclareFields{constructor(){super(...arguments),this.elementType="dimensionList"}}oy.Dimensions=pNe;var uy={};Object.defineProperty(uy,"__esModule",{value:!0}),uy.Measures=void 0;const gNe=L0;class mNe extends gNe.DeclareFields{constructor(){super(...arguments),this.elementType="measureList"}}uy.Measures=mNe;var hb={};Object.defineProperty(hb,"__esModule",{value:!0}),hb.Nests=void 0;const yNe=Ds,aW=Rn;class ENe extends yNe.DefinitionList{constructor(e){super(e),this.elementType="nestedQueries",this.queryRefinementStage=aW.LegalRefinementStage.Single,this.forceQueryClass=aW.QueryClass.Grouping}}hb.Nests=ENe;var pb={};Object.defineProperty(pb,"__esModule",{value:!0}),pb.ProjectStatement=void 0;const ANe=Ds,lW=Rn;class SNe extends ANe.DefinitionList{constructor(){super(...arguments),this.elementType="projectStatement",this.forceQueryClass=lW.QueryClass.Project,this.queryRefinementStage=lW.LegalRefinementStage.Single}queryExecute(e){e.type==="project"&&e.resultFS.pushFields(...this.list)}}pb.ProjectStatement=SNe;var K0={},El={};Object.defineProperty(El,"__esModule",{value:!0}),El.findReferences=El.deprecatedParseTableURI=El.constructTableKey=void 0;const vNe=ux,YL=Bn;function XL(t){const e=(0,YL.getStringIfShort)(t);if(e)return e;const n=[],r=t.string().sqlString();if(r){for(const i of(0,YL.getStringParts)(r))typeof i=="string"&&n.push(i);return n.join("")}return""}class _Ne{constructor(e,n){this.trans=e,this.tokens=n,this.needTables={},this.needImports={}}registerTableReference(e,n,r){const i=cW(e,n);this.needTables[i]||(this.needTables[i]={connectionName:e,tablePath:n,firstReference:r})}enterTableMethod(e){const n=(0,YL.getId)(e.connectionId()),r=XL(e.tablePath()),i=this.trans.rangeFromContext(e);this.registerTableReference(n,r,i)}enterTableFunction(e){const n=XL(e.tableURI()),{connectionName:r,tablePath:i}=fW(n),s=this.trans.rangeFromContext(e);this.registerTableReference(r,i,s)}enterImportURL(e){const n=XL(e);this.needImports[n]||(this.needImports[n]=this.trans.rangeFromContext(e))}}function cW(t,e){return t===void 0?e:`${t}:${e}`}El.constructTableKey=cW;function fW(t){const e=t.match(/^([^:]*):(.*)$/);if(e){const[,n,r]=e;return{connectionName:n,tablePath:r}}else return{tablePath:t}}El.deprecatedParseTableURI=fW;function CNe(t,e,n){const r=new _Ne(t,e),i=r;return vNe.ParseTreeWalker.DEFAULT.walk(i,n),{tables:r.needTables,urls:r.needImports}}El.findReferences=CNe,Object.defineProperty(K0,"__esModule",{value:!0}),K0.TableFunctionSource=K0.TableMethodSource=K0.TableSource=void 0;const xW=El,bNe=zo,dW=Kr;class KL extends bNe.Source{structDef(){var e,n,r;const i=this.getTableInfo();if(i===void 0)return dW.ErrorFactory.structDef;const{tablePath:s,connectionName:o}=i,u=(0,xW.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),dW.ErrorFactory.structDef}}K0.TableSource=KL;class TNe extends KL{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}}}K0.TableMethodSource=TNe;class RNe extends KL{constructor(e){super(),this.tableURI=e,this.elementType="tableFunctionSource"}getTableInfo(){return(0,xW.deprecatedParseTableURI)(this.tableURI)}}K0.TableFunctionSource=RNe;var gb={};Object.defineProperty(gb,"__esModule",{value:!0}),gb.SQLString=void 0;const ONe=Ve,hW=Xu;class NNe extends ONe.MalloyElement{constructor(){super(...arguments),this.elementType="sqlString",this.elements=[],this.containsQueries=!1}complete(){this.has({queries:this.elements.filter(DNe)})}push(e){typeof e=="string"?e.length>0&&this.elements.push(e):e instanceof hW.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}}gb.SQLString=NNe;function DNe(t){return t instanceof hW.SourceQueryElement}var mb={};Object.defineProperty(mb,"__esModule",{value:!0}),mb.SourceDesc=void 0;const FNe=Ve;class wNe extends FNe.ListOf{constructor(){super(...arguments),this.elementType="sourceDescription"}}mb.SourceDesc=wNe;var yb={};Object.defineProperty(yb,"__esModule",{value:!0}),yb.isSourceProperty=void 0;const LNe=Qo,INe=rs,$Ne=L0,BNe=rp,kNe=$0,PNe=ip,MNe=sp,jNe=op,UNe=I0;function qNe(t){return t instanceof LNe.Filter||t instanceof INe.Joins||t instanceof $Ne.DeclareFields||t instanceof BNe.FieldListEdit||t instanceof kNe.Renames||t instanceof PNe.PrimaryKey||t instanceof UNe.ObjectAnnotation||t instanceof MNe.Views||t instanceof jNe.TimezoneStatement}yb.isSourceProperty=qNe;var Eb={};Object.defineProperty(Eb,"__esModule",{value:!0}),Eb.isFieldCollectionMember=void 0;const HNe=gn,pW=ht;function zNe(t){return t instanceof pW.FieldReference||t instanceof pW.WildcardFieldReference||t instanceof HNe.AtomicFieldDeclaration}Eb.isFieldCollectionMember=zNe;var Ab={};Object.defineProperty(Ab,"__esModule",{value:!0}),Ab.isQueryElement=void 0;const QNe=up,GNe=ap,WNe=F1,VNe=w1;function YNe(t){return t instanceof QNe.QueryArrow||t instanceof GNe.QueryRefine||t instanceof WNe.QueryReference||t instanceof VNe.QueryRaw}Ab.isQueryElement=YNe;var gW={};Object.defineProperty(gW,"__esModule",{value:!0});var Sb={};Object.defineProperty(Sb,"__esModule",{value:!0}),Sb.isQueryProperty=void 0;function XNe(t){return"queryRefinementStage"in t&&"forceQueryClass"in t}Sb.isQueryProperty=XNe;var vb={};Object.defineProperty(vb,"__esModule",{value:!0}),vb.isQueryExtendProperty=void 0;const KNe=oy,JNe=rs,ZNe=uy;function eDe(t){return t instanceof KNe.Dimensions||t instanceof ZNe.Measures||t instanceof JNe.Joins}vb.isQueryExtendProperty=eDe;var _b={};Object.defineProperty(_b,"__esModule",{value:!0}),_b.isFieldPropStatement=void 0;const tDe=k0,nDe=Qo,rDe=M0,iDe=yp;function sDe(t){return t instanceof nDe.Filter||t instanceof rDe.Limit||t instanceof iDe.PartitionBy||t instanceof tDe.FunctionOrdering}_b.isFieldPropStatement=sDe,function(t){var e=F&&F.__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=F&&F.__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(g1,t),n(Zh,t),n(ep,t),n(zo,t),n(_1,t),n(Xu,t),n(Y_,t),n(X_,t),n(Z_,t),n(O1,t),n(nC,t),n(rp,t),n(ip,t),n($0,t),n(sp,t),n(op,t),n(rC,t),n(gp,t),n(sC,t),n(k0,t),n(oC,t),n(ml,t),n(uC,t),n(mp,t),n(aC,t),n(lC,t),n(cC,t),n(dp,t),n(fC,t),n(xC,t),n(hC,t),n(k1,t),n(I1,t),n(fx,t),n(pC,t),n(gC,t),n(yC,t),n(AC,t),n(SC,t),n(vC,t),n(_C,t),n(CC,t),n(bC,t),n(TC,t),n(RC,t),n(OC,t),n(NC,t),n(DC,t),n(FC,t),n(IC,t),n(pr,t),n(XC,t),n(yp,t),n(Rp,t),n(B0,t),n(JC,t),n(ZC,t),n(P1,t),n(an,t),n(W0,t),n(Z1,t),n(eb,t),n(tb,t),n(nb,t),n(ap,t),n(up,t),n(V0,t),n(rb,t),n(ib,t),n(sb,t),n(ob,t),n(gn,t),n(ht,t),n(xb,t),n(db,t),n(L0,t),n(oy,t),n(Z1,t),n(Qo,t),n(iy,t),n(ny,t),n(rs,t),n(m1,t),n(M0,t),n(uy,t),n(g1,t),n(hb,t),n(Sx,t),n(pb,t),n(ty,t),n(ry,t),n(sy,t),n(lp,t),n(cx,t),n(L1,t),n(K0,t),n(gb,t),n(I0,t),n(pl,t),n(mb,t),n(yb,t),n(dt,t),n(Eb,t),n(j0,t),n(Ve,t),n(Ab,t),n(gW,t),n(Sb,t),n(vb,t),n(_b,t)}(I_);var Cb={},Op={};Object.defineProperty(Op,"__esModule",{value:!0}),Op.ConstantExpression=Op.ConstantFieldSpace=void 0;const oDe=pl,mW=dt,uDe=dp,aDe=an;class yW{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}}Op.ConstantFieldSpace=yW;class lDe extends mW.ExpressionDef{constructor(e){super(),this.refType=e,this.elementType="$"}getExpression(e){return{dataType:this.refType,value:[{type:"applyVal"}],expressionType:"scalar",evalSpace:"constant"}}}class cDe extends mW.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 yW),this.cfs}constantValue(){return this.expr.getExpression(this.constantFs)}constantCondition(e){const r=new uDe.ExprCompare(new lDe(e),oDe.Comparison.EqualTo,this.expr).getExpression(this.constantFs);return{...r,value:(0,aDe.compressExpr)(r.value)}}apply(e,n,r){return this.expr.apply(e,n,r)}requestExpression(e){return this.expr.requestExpression(e)}}Op.ConstantExpression=cDe;var fDe=F&&F.__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]}),xDe=F&&F.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),dDe=F&&F.__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)&&fDe(e,t,n);return xDe(e,t),e};Object.defineProperty(Cb,"__esModule",{value:!0}),Cb.MalloyToAST=void 0;const EW=BS,hDe=y1,ee=dDe(I_),pDe=xr,gDe=I_,kn=Bn,JL=Z,mDe=dl,yDe=Op;class AW extends ee.SourceQueryElement{constructor(){super(...arguments),this.elementType="parseErrorSourceQuery"}}class ZL extends ee.MalloyElement{constructor(e){super(),this.elementType="ignoredByParser",this.malloySrc=e}}const EDe=["##! m4warnings=error"];class ADe extends hDe.AbstractParseTreeVisitor{constructor(e,n,r){super(),this.parseInfo=e,this.msgLog=n,this.compilerFlags=r;for(const i of EDe){const s=mDe.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})}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 ZL||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 ee.FieldName((0,kn.getId)(e)),e.id())}getModelEntryName(e){return this.astAt(new ee.ModelEntryReference((0,kn.getId)(e)),e.id())}defaultResult(){return new ee.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 pDe.Interval(n,r.stopIndex);return this.parseInfo.sourceStream.getText(i)}getFilterElement(e){const n=this.getFieldExpr(e),r=new ee.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 ee.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 ee.Filter([n])}getPlainString(e){const n=(0,kn.getStringIfShort)(e);if(n)return n;const r=[],i=e.string().sqlString();if(i){for(const s of(0,kn.getStringParts)(i))s instanceof EW.ParserRuleContext?this.contextError(s,"%{ query } illegal in this string"):r.push(s);return(0,kn.unIndent)(r),r.join("")}return""}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 EW.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 ee.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=>ee.isDocStatementOrDocStatementList(r)&&r,"statement");return new ee.Document(n)}visitDefineSourceStatement(e){const r=e.sourcePropertyList().sourceDefinition().map(o=>this.visitSourceDefinition(o)),i=this.getNotes(e.tags()),s=new ee.DefineSourceList(r);return s.extendNote({blockNotes:i}),s}getSourceParameter(e){const n=e.fieldExpr(),r=n?this.astAt(new yDe.ConstantExpression(this.getFieldExpr(n)),n):void 0,i=e.malloyType(),s=i?this.getMalloyType(i):void 0;return this.astAt(new ee.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 ee.DefineSource((0,kn.getId)(e.sourceNameDef()),n instanceof ee.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=>ee.isSourceProperty(s)&&s,"source property"),i=new ee.SourceDesc(r);return n&&i.push(this.getFilterShortcut(n)),i}visitTableFunction(e){const n=this.getPlainString(e.tableURI()),r=this.astAt(new ee.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.getPlainString(e.tablePath());return this.astAt(new ee.TableMethodSource(r,i),e)}visitSqlSource(e){const n=e.connectionId(),r=this.astAt(this.getModelEntryName(n),n),i=new ee.SQLString,s=e.sqlString();s&&this.makeSqlString(s,i);const o=e.shortString();o&&i.push((0,kn.getShortString)(o));const u=new ee.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 ee.Join&&(n.push(s),s instanceof ee.ExpressionJoin?(s.joinType="many",s.joinOn===void 0&&this.contextError(e,"join_many: requires ON expression")):s instanceof ee.KeyJoin&&this.contextError(e,"Foreign key join not legal in join_many:"))}const r=new ee.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 ee.Join&&(r.push(s),s instanceof ee.ExpressionJoin&&(s.joinType="one"));const i=new ee.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 ee.Join&&(r.push(s),s instanceof ee.ExpressionJoin?s.joinType="cross":s.log("Foreign key join not legal in join_cross:"));const i=new ee.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 ee.SQReference(r,this.getSQArguments(i)),e),notes:[],joinAs:r}:{joinAs:r,joinFrom:new ee.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 ee.ExpressionJoin(r,i),u=e.joinExpression(),a=((n=e.matrixOperation())===null||n===void 0?void 0:n.text.toLocaleLowerCase())||"left";return(0,JL.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 ee.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(),ee.DimensionFieldDeclaration),r=new ee.Dimensions(n);return r.extendNote({blockNotes:this.getNotes(e.tags())}),this.astAt(r,e)}visitDefMeasures(e){const n=this.getFieldDefs(e.defList().fieldDef(),ee.MeasureFieldDeclaration),r=new ee.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(ee.isQueryExtendProperty(s))n.push(s);else throw this.internalError(e,`Query extend matched, but ${s.elementType} found`);const i=new ee.ExtendBlock(n);return this.astAt(i,e)}visitDeclareStatement(e){const n=this.getFieldDefs(e.defList().fieldDef(),ee.DeclareFieldDeclaration),r=new ee.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 ee.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 ee.Renames(r);return this.astAt(i,e)}visitFilterClauseList(e){return new ee.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 ee.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 ee.PrimaryKey(this.getFieldName(e.fieldName()));return this.astAt(n,e)}visitFieldNameList(e){const n=e.fieldName().map(r=>new ee.AcceptExceptFieldReference([this.getFieldName(r)]));return new ee.FieldReferences(n)}visitDefExploreEditField(e){const n=e.ACCEPT()?"accept":"except";return new ee.FieldListEdit(n,this.visitFieldNameList(e.fieldNameList()))}visitDefExploreTimezone(e){return this.visitTimezoneStatement(e.timezoneStatement())}visitTimezoneStatement(e){const n=this.getPlainString(e),r=this.astAt(new ee.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=>ee.isQueryProperty(i)&&i,"query statement"),r=e.filterShortcut();return r&&n.push(this.getFilterShortcut(r)),new ee.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 ee.FieldReference||i instanceof ee.AtomicFieldDeclaration?i:!1,"view field")}visitAggregateStatement(e){const n=new ee.Aggregate(this.getQueryItems(e.queryFieldList(),ee.AggregateFieldDeclaration,ee.AggregateFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitGroupByStatement(e){const n=new ee.GroupBy(this.getQueryItems(e.queryFieldList(),ee.GroupByFieldDeclaration,ee.GroupByFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitCalculateStatement(e){const n=new ee.Calculate(this.getQueryItems(e.queryFieldList(),ee.CalculateFieldDeclaration,ee.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(),ee.ExpressionFieldReference);let u;const a=i.timeframe();a&&(u=new ee.ExprGranularTime(new ee.ExprIdReference(o),this.visitTimeframe(a).text,!0));const l=i.aggregate();if(l){const f=l.text.toLowerCase();if(f==="sum")u=new ee.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,ee.ProjectFieldDeclaration,ee.ProjectFieldReference));return this.astAt(new ee.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,ee.ProjectFieldReference):void 0,s=this.astAt(new ee.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 ee.WildcardFieldReference(void 0),e);const s=this.getFieldPath(i,ee.IndexFieldReference);return r.STAR()?this.astAt(new ee.WildcardFieldReference(s),e):this.astAt(s,e)});return new ee.FieldReferences(n)}visitIndexStatement(e){const n=this.visitIndexFields(e.indexFields()),r=new ee.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 ee.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 ee.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 ee.FunctionOrdering(n),e)}visitOrderBySpec(e){const n=e.ASC()?"asc":e.DESC()?"desc":void 0,r=e.INTEGER_LITERAL();if(r)return new ee.OrderBy(this.getNumber(r),n);const i=e.fieldName();if(i)return new ee.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 ee.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 ee.Top(r,u)}const o=n.fieldExpr();o&&(i=new ee.Top(r,this.getFieldExpr(o)))}return i||(i=new ee.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 ee.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 ee.SourceQueryElement){const s=new ee.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 ee.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 ee.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 ee.Nests(this.only(e.nestEntry().map(n=>this.visit(n)),n=>n instanceof ee.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 ee.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 ee.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 ee.ExprNot(this.getFieldExpr(e.fieldExpr()))}visitExprBool(e){return new ee.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 ee.ExprLogicalOp(n,"or",r)}visitExprLogicalAnd(e){const n=this.getFieldExpr(e.fieldExpr(0)),r=this.getFieldExpr(e.fieldExpr(1));return new ee.ExprLogicalOp(n,"and",r)}visitExprOrTree(e){const n=this.getFieldExpr(e.fieldExpr()),r=this.getFieldExpr(e.partialAllowedFieldExpr());return this.astAt(new ee.ExprAlternationTree(n,"|",r),e)}visitExprAndTree(e){const n=this.getFieldExpr(e.fieldExpr()),r=this.getFieldExpr(e.partialAllowedFieldExpr());return this.astAt(new ee.ExprAlternationTree(n,"&",r),e)}visitExprCoalesce(e){const n=this.getFieldExpr(e.fieldExpr()[0]),r=this.getFieldExpr(e.fieldExpr()[1]);return this.astAt(new ee.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(ee.isComparison(i))return this.astAt(new ee.PartialCompare(i,r),e);throw this.internalError(e,`partial comparison '${i}' not recognized`)}return r}visitExprString(e){const n=this.getPlainString(e);return new ee.ExprString(n)}visitExprRegex(e){const n=e.HACKY_REGEX().text;return new ee.ExprRegEx(n.slice(2,-1))}visitExprNow(e){return new ee.ExprNow}visitExprNumber(e){return new ee.ExprNumber(e.text)}visitExprFieldPath(e){const n=new ee.ExprIdReference(this.getFieldPath(e.fieldPath(),ee.ExpressionFieldReference));return this.astAt(n,e)}visitExprNULL(e){return new ee.ExprNULL}visitExprExpr(e){return new ee.ExprParens(this.getFieldExpr(e.partialAllowedFieldExpr()))}visitExprMinus(e){return new ee.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 ee.ExprAddSub(n,i,r)}visitExprMulDiv(e){const n=e.STAR()?"*":e.SLASH()?"/":"%";return new ee.ExprMulDiv(this.getFieldExpr(e.fieldExpr(0)),n,this.getFieldExpr(e.fieldExpr(1)))}visitExprCompare(e){const n=e.compareOp().text;if(ee.isComparison(n))return new ee.ExprCompare(this.getFieldExpr(e.fieldExpr(0)),n,this.getFieldExpr(e.fieldExpr(1)));throw this.internalError(e,`untranslatable comparison operator '${n}'`)}visitExprCountDisinct(e){return this.m4advisory(e,"`count(distinct expression)` deprecated, use `count(expression)` instead"),this.astAt(new ee.ExprCountDistinct(this.getFieldExpr(e.fieldExpr())),e)}visitExprUngroup(e){const n=e.fieldName().map(i=>this.getFieldName(i)),r=e.ungroup().text.toLowerCase();return this.astAt(new ee.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,ee.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 ee.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 ee.ExprIdReference(r),n);return s==="min"?new ee.ExprMin(a):new ee.ExprMax(a)}else{if(s==="avg")return new ee.ExprAvg(u,i);if(s==="sum")return new ee.ExprSum(u,i);this.contextError(e,`Cannot parse aggregate function ${s}`)}return new ee.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 ee.ExprCountDistinct(r):new ee.ExprCount,e);if(s==="min"){if(r)return new ee.ExprMin(r);this.contextError(e,this.symmetricAggregateUsageError(s))}else if(s==="max"){if(r)return new ee.ExprMax(r);this.contextError(e,this.symmetricAggregateUsageError(s))}else{if(r===void 0)return this.contextError(e,this.asymmetricAggregateUsageError(s)),new ee.ExprNULL;const o=e.SOURCE_KW()!==void 0;if(s==="avg")return new ee.ExprAvg(r,i,o);if(s==="sum")return new ee.ExprSum(r,i,o)}return new ee.ExprNULL}visitExprApply(e){return new ee.Apply(this.getFieldExpr(e.fieldExpr()),this.getFieldExpr(e.partialAllowedFieldExpr()))}visitExprRange(e){return new ee.Range(this.getFieldExpr(e.fieldExpr(0)),this.getFieldExpr(e.fieldExpr(1)))}visitExprCast(e){const n=this.getMalloyOrSQLType(e.malloyOrSQLType());return new ee.ExprCast(this.getFieldExpr(e.fieldExpr()),n)}getMalloyType(e){const n=e.text;if((0,JL.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.getPlainString({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 ee.ExprCast(this.getFieldExpr(e.fieldExpr()),n,!0)}visitExprTimeTrunc(e){return new ee.ExprGranularTime(this.getFieldExpr(e.fieldExpr()),this.visitTimeframe(e.timeframe()).text,!0)}visitTimeframe(e){return new ee.Timeframe(e.text)}visitExprForRange(e){const n=this.getFieldExpr(e._startAt),r=this.getFieldExpr(e._duration),i=this.visitTimeframe(e.timeframe());return new ee.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,ee.ExpressionFieldReference):void 0,u=s&&o?this.astAt(o,s):void 0;return ee.ExprTimeExtract.extractor(i)?this.astAt(new ee.ExprTimeExtract(i,r),e):this.astAt(new ee.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,JL.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"),ee.ExprTimeExtract.extractor(l)?this.astAt(new ee.ExprTimeExtract(l,s),e):this.astAt(new ee.ExprFunc(l,s,o,a),e)}visitExprDuration(e){return new ee.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 ee.PickWhen(i,this.getFieldExpr(r._pickWhen))});return e.ELSE()?new ee.Pick(n,this.getFieldExpr(e._pickElse)):new ee.Pick(n)}visitExprFieldProps(e){const n=this.only(e.fieldProperties().fieldPropertyStatement().map(r=>this.visit(r)),r=>ee.isFieldPropStatement(r)&&r,"field property statement");return new ee.ExprProps(this.getFieldExpr(e.fieldExpr()),n)}visitPartitionByStatement(e){return this.astAt(new ee.PartitionBy(e.id().map(n=>this.astAt(new ee.PartitionByFieldReference([this.astAt(new ee.FieldName((0,kn.idToStr)(n)),n)]),n))),e)}visitLiteralTimestamp(e){return this.parseTime(e,ee.LiteralTimestamp.parse)}visitLiteralHour(e){return this.parseTime(e,ee.LiteralHour.parse)}visitLiteralDay(e){return this.parseTime(e,ee.LiteralDay.parse)}visitLiteralWeek(e){return this.parseTime(e,ee.LiteralWeek.parse)}visitLiteralMonth(e){return this.parseTime(e,ee.LiteralMonth.parse)}visitLiteralQuarter(e){return this.parseTime(e,ee.LiteralQuarter.parse)}visitLiteralYear(e){return this.parseTime(e,ee.LiteralYear.parse)}visitImportStatement(e){const n=this.getPlainString(e.importURL()),r=this.astAt(new ee.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 ee.ImportSourceName((0,kn.idToStr)(o[1])),o[1]):void 0;r.push(this.astAt(new ee.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 ee.SampleProperty({rows:this.getNumber(n)});const r=e.sampleSpec().PERCENT_LITERAL();if(r)return new ee.SampleProperty({percent:this.getNumber(r)});const i=e.sampleSpec().TRUE()!==void 0;return new ee.SampleProperty({enable:i})}visitDocAnnotations(e){const n=e.DOC_ANNOTATION().map(i=>({text:i.text,at:this.getLocation(e)})),r=new ee.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 ZL(e.text)}visitIgnoredModelAnnotations(e){return this.contextError(e,"Model annotations not allowed at this scope"),new ZL(e.text)}visitDefExploreAnnotation(e){const n=this.getNotes(e);return new ee.ObjectAnnotation(n)}getSQArgument(e){const n=e.argumentId(),r=n?this.astAt(new ee.PartitionByFieldReference([this.astAt(new ee.FieldName((0,kn.idToStr)(n.id())),n)]),n):void 0;return this.astAt(new ee.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 ee.SQReference(n,r),e.id())}getSqExpr(e){const n=this.visit(e);return n instanceof ee.SourceQueryElement?n:(this.contextError(e,`Expected a source/query expression, not '${n.elementType}'`),new AW)}visitSQExtendedSource(e){const n=this.getSqExpr(e.sqExpr()),r=new ee.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 ee.SQArrow(n,this.getVExpr(r));return this.astAt(i,e)}getVExpr(e){const n=this.visit(e);if(n instanceof ee.View)return n;throw this.internalError(e,`Expected view, got a '${n.elementType}'`)}visitSegField(e){return new ee.ReferenceView(this.getFieldPath(e.fieldPath(),ee.ViewOrScalarFieldReference))}visitSegOps(e){return new ee.QOpDescView(this.visitQueryProperties(e.queryProperties()))}visitSegParen(e){return this.visit(e.vExpr())}visitVSeg(e){return this.visit(e.segExpr())}visitSegRefine(e){return new ee.ViewRefine(this.getVExpr(e._lhs),this.getVExpr(e._rhs))}visitVArrow(e){return new ee.ViewArrow(this.getVExpr(e._lhs),this.getVExpr(e._rhs))}visitSQRefinedQuery(e){const n=this.getSqExpr(e.sqExpr()),r=e.segExpr(),i=new ee.SQRefine(n,this.getVExpr(r));return this.astAt(i,e)}visitSQTable(e){const n=this.visit(e.exploreTable());if(n instanceof gDe.TableSource){const r=new ee.SQSource(n);return this.astAt(r,e)}return new AW}visitSQSQL(e){const n=new ee.SQSource(this.visitSqlSource(e.sqlSource()));return this.astAt(n,e)}visitExperimentalStatementForTesting(e){return this.inExperiment("compilerTestExperimentParse",e),this.astAt(new ee.ExperimentalExperiment("compilerTestExperimentTranslate"),e)}}Cb.MalloyToAST=ADe;var bb={};Object.defineProperty(bb,"__esModule",{value:!0}),bb.MessageLog=void 0;class SDe{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}}bb.MessageLog=SDe;var Tb={};Object.defineProperty(Tb,"__esModule",{value:!0}),Tb.Zone=void 0;class vDe{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})}}Tb.Zone=vDe;var Rb={};Object.defineProperty(Rb,"__esModule",{value:!0}),Rb.walkForDocumentSymbols=void 0;const _De=ux,CDe=Bn;class bDe{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,CDe.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 TDe(t,e,n){const r=new bDe(t,e,[],[]),i=r;return _De.ParseTreeWalker.DEFAULT.walk(i,n),r.symbols}Rb.walkForDocumentSymbols=TDe;var Ob={};Object.defineProperty(Ob,"__esModule",{value:!0}),Ob.walkForDocumentCompletions=void 0;const RDe=ux,ODe=["dimension","measure","join_one","join_many","join_cross","where","primary_key","rename","accept","except","query","declare"],NDe=["group_by","project","index","aggregate","top","limit","order_by","where","having","nest","declare"],DDe=["source","explore","query","sql"];class FDe{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 ODe)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 NDe)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 DDe)this.completions.push({type:"model_property",text:`${r}: `})}}}function wDe(t,e,n){const r=new FDe(t,[],n),i=r;return RDe.ParseTreeWalker.DEFAULT.walk(i,e),r.completions}Ob.walkForDocumentCompletions=wDe;var Nb={};Object.defineProperty(Nb,"__esModule",{value:!0}),Nb.walkForDocumentHelpContext=void 0;const LDe=F4;class IDe extends LDe.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 $De(t,e){return new IDe(e).visit(t)}Nb.walkForDocumentHelpContext=$De;var Db={},ay={};Object.defineProperty(ay,"__esModule",{value:!0}),ay.locationContainsPosition=void 0;function BDe(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)}ay.locationContainsPosition=BDe,Object.defineProperty(Db,"__esModule",{value:!0}),Db.ReferenceList=void 0;const kDe=ay;class PDe{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,kDe.locationContainsPosition)(r.location,e))return r}}Db.ReferenceList=PDe;var Fb={};Object.defineProperty(Fb,"__esModule",{value:!0}),Fb.isNeedResponse=void 0;function MDe(t){return!!t&&(t.tables||t.urls||t.compileSQL)!==void 0}Fb.isNeedResponse=MDe;var wb={};Object.defineProperty(wb,"__esModule",{value:!0}),wb.walkForModelAnnotation=void 0;const jDe=ux;class UDe{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 qDe(t,e,n){const r=new UDe(t,e,n),i=r;return jDe.ParseTreeWalker.DEFAULT.walk(i,n.root),r.annotation}wb.walkForModelAnnotation=qDe;var HDe=F&&F.__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]}),zDe=F&&F.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),QDe=F&&F.__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)&&HDe(e,t,n);return zDe(e,t),e};Object.defineProperty(Fu,"__esModule",{value:!0}),Fu.MalloyParserErrorHandler=Fu.MalloyTranslator=Fu.MalloyChildTranslator=Fu.MalloyTranslation=void 0;const SW=BS,GDe=Yv,WDe=w,vW=QDe(I_),VDe=Cb,YDe=bb,XDe=El,e5=Tb,KDe=Rb,JDe=Ob,ZDe=Nb,eFe=Db,Lb=Fb,tFe=ay,_W=dl,nFe=wb;class rFe extends GDe.MalloyLexer{popMode(){return this._modeStack.isEmpty?this._mode:super.popMode()}}class iFe{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===""?`
|
|
1300
1300
|
`: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=SW.CharStreams.fromString(e),i=new rFe(r),s=new SW.CommonTokenStream(i),o=new WDe.MalloyParser(s);o.removeErrorListeners(),o.addErrorListener(new bW(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 sFe{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,XDe.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,Lb.isNeedResponse)(r))return r;for(const o of e.childTranslators.values()){const u=o.importsAndTablesStep.step(o);if((0,Lb.isNeedResponse)(u))return u}return null}}class oFe{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 VDe.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 vW.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,Lb.isNeedResponse)(a))return a}return o.setTranslator(e),this.response={...e.problemResponse(),ast:o,final:!0},this.response}}class uFe{constructor(e){this.parseStep=e}step(e){if(!this.response){const n=this.parseStep.step(e);if(n.parse){let r;try{r=(0,KDe.walkForDocumentSymbols)(e,n.parse.tokenStream,n.parse.root)}catch{}this.response={symbols:r,final:!0}}else return n}return this.response}}class aFe{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,JDe.walkForDocumentCompletions)(r.parse.tokenStream,r.parse.root,n)}catch{}return{...r,completions:i}}else return r}}class lFe{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,ZDe.walkForDocumentHelpContext)(r.parse.root,n)}catch{}return{...r,helpContext:i}}else return r}}class cFe{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,nFe.walkForModelAnnotation)(e,r.parse.tokenStream,r.parse);this.response={modelAnnotation:{...i,inherits:n==null?void 0:n.annotation}}}}return this.response}}class fFe{constructor(e){this.astStep=e,this.importedAnnotations=!1}step(e,n){if(this.response)return this.response;if(n&&!this.importedAnnotations){const i=_W.Tag.annotationToTag(n.annotation,{prefix:/^##! /});e.compilerFlags=i.tag,this.importedAnnotations=!0}const r=this.astStep.step(e);if((0,Lb.isNeedResponse)(r))return r;if(!r.ast)return this.response=r,this.response;if(e.grammarRule==="malloyDocument")if(r.ast instanceof vW.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 t5{constructor(e,n=null,r="malloyDocument"){this.sourceURL=e,this.importBaseURL=n,this.grammarRule=r,this.queryList=[],this.sqlBlocks=[],this.imports=[],this.compilerFlags=new _W.Tag,this.dialectAlreadyChecked={},this.allDialectsEnabled=!1,this.childTranslators=new Map,this.modelDef={name:e,exports:[],contents:{}},this.parseStep=new iFe,this.modelAnnotationStep=new cFe(this.parseStep),this.metadataStep=new uFe(this.parseStep),this.completionsStep=new aFe(this.parseStep),this.helpContextStep=new lFe(this.parseStep),this.importsAndTablesStep=new sFe(this.parseStep),this.astStep=new oFe(this.importsAndTablesStep),this.translateStep=new fFe(this.astStep),this.references=new eFe.ReferenceList(e)}addChild(e){this.childTranslators.get(e)||this.childTranslators.set(e,new CW(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}
|