@malloydata/render 0.0.183-dev240916205710 → 0.0.183
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/module/index.umd.js
CHANGED
|
@@ -1297,7 +1297,7 @@ ${r} ${s}: [`,o.length>0&&(i+=`
|
|
|
1297
1297
|
`+o.map(u=>u.stringify("",n+4)).join(`
|
|
1298
1298
|
`)+`
|
|
1299
1299
|
${r} `),i+="]")}return i}*walk(){for(const e of Object.keys(this.children)){const n=this.children[e];if(n instanceof nu)yield n;else for(const r of n)yield r}}varInfo(){let e="";for(const[n,r]of Object.entries(this))n!=="elementType"&&(typeof r=="boolean"?e+=r?` ${n}`:` !${n}`:(typeof r=="string"||typeof r=="number")&&(e+=` ${n}=${r}`));return e}internalError(e){return this.log(`INTERNAL ERROR IN TRANSLATION: ${e}`),new Error(e)}needs(e){for(const n of this.walk()){const r=n.needs(e);if(r)return r}}inExperiment(e,n=!1){var r;const i=(r=this.translator())===null||r===void 0?void 0:r.compilerFlags.tag("experimental");return i&&(i.bare()||i.has(e))?!0:(n||this.log(`Experimental flag '${e}' is not set, feature not available`),!1)}}Ge.MalloyElement=nu;class p1e extends nu{constructor(){super(...arguments),this.elementType="unimplemented",this.reported=!1}}Ge.Unimplemented=p1e;class IR extends nu{constructor(e){super(),this.name=e,this.elementType="modelEntryReference"}get refString(){return this.name}toString(){return this.refString}getNamed(){var e;return(e=this.modelEntry(this))===null||e===void 0?void 0:e.entry}}Ge.ModelEntryReference=IR;class g1e extends nu{constructor(e){super(),this.id=e,this.elementType="experimentalExperiment"}execute(e){this.inExperiment(this.id)}}Ge.ExperimentalExperiment=g1e;function DU(t){return t.execute!==void 0}Ge.isDocStatement=DU;function m1e(t){return t instanceof lp||DU(t)}Ge.isDocStatementOrDocStatementList=m1e;class NU extends nu{constructor(e){super(),this.elements=e,this.newContents()}newContents(){this.has({listOf:this.elements})}get list(){return this.elements}empty(){return this.elements.length===0}notEmpty(){return this.elements.length>0}push(...e){return this.elements.push(...e),this.newContents(),this.elements}needs(e){for(const n of this.elements){const r=n.needs(e);if(r)return r}}}Ge.ListOf=NU;class lp extends NU{constructor(){super(...arguments),this.elementType="topLevelStatements",this.execCursor=0,this.isNoteableObj=!0,this.extendNote=OU.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,OU.isNoteable)(n)&&n.extendNote(this.note),this.noteCursor+=1),n instanceof lp){const r=n.executeList(e);if(r)return r}else{const r=n.needs(e);if(r)return r;n.execute(e)}this.execCursor+=1}}}Ge.DocStatementList=lp;const y1e="5a79a191-06bc-43cf-9b12-58741cd82970";function FU(t){const e=t.inherits?FU(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 E1e(t){const e=FU(t).join("");return(0,h1e.v5)(e,y1e)}class BR extends nu{constructor(e){super(),this.elementType="document",this.globalNameSpace=new d1e.GlobalNameSpace,this.documentModel={},this.queryList=[],this.sqlBlocks=[],this.didInitModel=!1,this.annotation={},this.experiments=new f1e.Tag({}),this.modelAnnotationTodoList=[],this.dialectNameSpaces=new Map,this.statements=new lp(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=E1e(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,RU.getDialect)(n).experimental&&!r.experimentalDialectEnabled(n)&&e.log(`Requires compiler flag '##! experimental.dialect.${n}'`,"error")}getDialectNamespace(e){if(this.dialectNameSpaces.has(e))return this.dialectNameSpaces.get(e);const n=(0,RU.getDialect)(e),r=new x1e.DialectNameSpace(n);return this.dialectNameSpaces.set(e,r),r}}Ge.Document=BR;var vA={},rd={},Fr={},Tl={};Object.defineProperty(Tl,"__esModule",{value:!0}),Tl.canMakeEntry=Tl.SpaceEntry=void 0;class A1e{}Tl.SpaceEntry=A1e;function v1e(t){return"makeEntry"in t}Tl.canMakeEntry=v1e,Object.defineProperty(Fr,"__esModule",{value:!0}),Fr.SpaceField=void 0;const S1e=oe,_1e=Tl;class C1e extends _1e.SpaceEntry{constructor(){super(...arguments),this.refType="field"}fieldTypeFromFieldDef(e){const n={dataType:e.type,expressionType:"scalar",evalSpace:"input"};return(0,S1e.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(){}}Fr.SpaceField=C1e,Object.defineProperty(rd,"__esModule",{value:!0}),rd.ViewField=void 0;const b1e=Fr;class T1e extends b1e.SpaceField{constructor(e){super(),this.inSpace=e}typeDesc(){return{dataType:"turtle",expressionType:"scalar",evalSpace:"input"}}}rd.ViewField=T1e,Object.defineProperty(vA,"__esModule",{value:!0}),vA.ASTViewField=void 0;const R1e=rd;class O1e extends R1e.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)}}vA.ASTViewField=O1e,Object.defineProperty(ip,"__esModule",{value:!0}),ip.ViewFieldDeclaration=void 0;const D1e=Ge,N1e=Nr,F1e=Zx,w1e=vA;class L1e extends D1e.MalloyElement{constructor(e,n){super({view:n}),this.name=e,this.view=n,this.elementType="view-field-declaration",this.isNoteableObj=!0,this.extendNote=N1e.extendNoteMethod}makeEntry(e){const n=new w1e.ASTViewField(e,this,this.name);e.newEntry(this.name,this,n)}getFieldDef(e){const{pipeline:n,annotation:r}=this.view.pipelineComp(e),i=(0,F1e.detectAndRemovePartialStages)(n,this);return{type:"turtle",name:this.name,pipeline:i,annotation:{...this.note,inherits:r},location:this.location}}}ip.ViewFieldDeclaration=L1e;var yn={};Object.defineProperty(yn,"__esModule",{value:!0}),yn.LegalRefinementStage=yn.QueryClass=void 0;var wU;(function(t){t.Index="index",t.Project="project",t.Grouping="grouping"})(wU||(yn.QueryClass=wU={}));var LU;(function(t){t[t.Single=0]="Single",t[t.Head=1]="Head",t[t.Tail=2]="Tail"})(LU||(yn.LegalRefinementStage=LU={})),Object.defineProperty(rp,"__esModule",{value:!0}),rp.NestFieldDeclaration=void 0;const I1e=Zx,B1e=ip,IU=yn;class $1e extends B1e.ViewFieldDeclaration{constructor(){super(...arguments),this.elementType="nest-field-declaration",this.queryRefinementStage=IU.LegalRefinementStage.Single,this.forceQueryClass=IU.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,I1e.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")}}rp.NestFieldDeclaration=$1e;var id={},wr={};Object.defineProperty(wr,"__esModule",{value:!0}),wr.ErrorFactory=void 0;const BU={type:"struct",name:"~malformed~",dialect:"~malformed~",structSource:{type:"table",tablePath:"//undefined_error_table_path"},structRelationship:{type:"basetable",connectionName:"//undefined_error_connection"},fields:[]};class $R{static get structDef(){return{...BU}}static isErrorStructDef(e){return e.name.includes(BU.name)}static get query(){return{structRef:$R.structDef,pipeline:[]}}static get reduceSegment(){return{type:"reduce",queryFields:[]}}static get projectSegment(){return{type:"project",queryFields:[]}}static get indexSegment(){return{type:"index",indexFields:[]}}}wr.ErrorFactory=$R,Object.defineProperty(id,"__esModule",{value:!0}),id.DefineSourceList=id.DefineSource=void 0;const k1e=wr,$U=Ge,P1e=Nr;class M1e extends $U.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=P1e.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),k1e.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`)}}id.DefineSource=M1e;class j1e extends $U.DocStatementList{constructor(e){super(e),this.elementType="defineSources"}}id.DefineSourceList=j1e;var sd={};Object.defineProperty(sd,"__esModule",{value:!0}),sd.DefineQueryList=sd.DefineQuery=void 0;const kU=Ge,U1e=Nr;class q1e extends kU.MalloyElement{constructor(e,n){super({queryExpr:n}),this.name=e,this.queryExpr=n,this.elementType="defineQuery",this.isNoteableObj=!0,this.extendNote=U1e.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})}}sd.DefineQuery=q1e;class H1e extends kU.DocStatementList{constructor(e){super(e),this.elementType="defineQueries"}}sd.DefineQueryList=H1e;var ro={};Object.defineProperty(ro,"__esModule",{value:!0}),ro.Source=void 0;const z1e=Ge;class Q1e extends z1e.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)}}}ro.Source=Q1e;var cp={},od={},SA={},Rl={};Object.defineProperty(Rl,"__esModule",{value:!0}),Rl.mergeFields=Rl.nameFromDef=void 0;function kR(t){var e;return t.type==="fieldref"?t.path[t.path.length-1]:(e=t.as)!==null&&e!==void 0?e:t.name}Rl.nameFromDef=kR;function G1e(t,e){if(t===void 0)return e;const n=new Set(e.map(i=>kR(i))),r=t.filter(i=>!n.has(kR(i)));return r.push(...e),r}Rl.mergeFields=G1e;var fp={},Lr={},ru={};Object.defineProperty(ru,"__esModule",{value:!0}),ru.DefinedParameter=ru.AbstractParameter=ru.SpaceParam=void 0;const W1e=Tl;class PR extends W1e.SpaceEntry{constructor(){super(...arguments),this.refType="parameter"}}ru.SpaceParam=PR;class V1e extends PR{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"}}}ru.AbstractParameter=V1e;class Y1e extends PR{constructor(e){super(),this.paramDef=e}parameter(){return this.paramDef}typeDesc(){return{dataType:this.paramDef.type,expressionType:"scalar",evalSpace:"input"}}}ru.DefinedParameter=Y1e;var Mc={};Object.defineProperty(Mc,"__esModule",{value:!0}),Mc.StructSpaceFieldBase=void 0;const X1e=Fr;class J1e extends X1e.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"}}}Mc.StructSpaceFieldBase=J1e;var xp={};Object.defineProperty(xp,"__esModule",{value:!0}),xp.ColumnSpaceField=void 0;const K1e=Fr;class Z1e extends K1e.SpaceField{constructor(e){super(),this.haveFieldDef=e}fieldDef(){return this.haveFieldDef}typeDesc(){return this.fieldTypeFromFieldDef(this.haveFieldDef)}}xp.ColumnSpaceField=Z1e;var _A={};Object.defineProperty(_A,"__esModule",{value:!0}),_A.IRViewField=void 0;const epe=rd;class tpe extends epe.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()}}_A.IRViewField=tpe,Object.defineProperty(Lr,"__esModule",{value:!0}),Lr.StructSpaceField=Lr.StaticSpace=void 0;const npe=$o,rpe=oe,ipe=ru,spe=Fr,CA=Mc,ope=xp,upe=_A;class PU{constructor(e){this.type="fieldSpace",this.fromStruct=e}dialectObj(){try{return(0,npe.getDialect)(this.fromStruct.dialect)}catch{return}}defToSpaceField(e){return e.type==="struct"?new MU(e):(0,rpe.isTurtleDef)(e)?new upe.IRViewField(this,e):new ope.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 ipe.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 spe.SpaceField){const o=i.fieldDef();o&&n.addReference({type:i instanceof CA.StructSpaceFieldBase?"joinReference":"fieldReference",definition:o,location:n.location,text:n.refString})}const s=i instanceof CA.StructSpaceFieldBase?[{name:n.refString,structRelationship:i.structRelationship}]:[];if(r.length){if(i instanceof CA.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}}Lr.StaticSpace=PU;class MU extends CA.StructSpaceFieldBase{constructor(e){super(e)}get fieldSpace(){return new PU(this.sourceDef)}}Lr.StructSpaceField=MU,Object.defineProperty(fp,"__esModule",{value:!0}),fp.JoinSpaceField=void 0;const ape=Lr;class lpe extends ape.StructSpaceField{constructor(e,n){super(n.structDef(e)),this.parameterSpace=e,this.join=n}}fp.JoinSpaceField=lpe;var dp={};Object.defineProperty(dp,"__esModule",{value:!0}),dp.SpaceSeed=void 0;const cpe=Lr;function jU(t){return t.type==="fieldSpace"}class fpe{constructor(e){this.sourceSpec=e,this.spaceSpec=e}get structDef(){return jU(this.spaceSpec)?(this.asStruct||(this.asStruct=this.spaceSpec.structDef()),this.asStruct):this.spaceSpec}get fieldSpace(){return jU(this.spaceSpec)?this.spaceSpec:(this.asFS||(this.asFS=new cpe.StaticSpace(this.spaceSpec)),this.asFS)}}dp.SpaceSeed=fpe;var ud={};Object.defineProperty(ud,"__esModule",{value:!0}),ud.ParameterSpace=void 0;const xpe=ru;class dpe{constructor(e){this.type="fieldSpace",this._map={};for(const n of e)this._map[n.name]=new xpe.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}}ud.ParameterSpace=dpe,Object.defineProperty(SA,"__esModule",{value:!0}),SA.DynamicSpace=void 0;const hpe=Rl,ppe=wr,gpe=Fr,mpe=fp,ype=rd,UU=ru,Epe=dp,Ape=Lr,vpe=Mc,Spe=ud;class _pe extends Ape.StaticSpace{constructor(e){const n=new Epe.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 UU.AbstractParameter(n)));return this}parameterSpace(){return new Spe.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,hpe.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 UU.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 vpe.StructSpaceFieldBase?r.push([a,l]):l instanceof ype.ViewField?i.push([a,l]):l instanceof gpe.SpaceField&&n.push([a,l]);const o=[...n,...r,...i],u=this.parameterSpace();for(const[,a]of o)if(a instanceof mpe.JoinSpaceField){const l=a.join.structDef(u);ppe.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}}SA.DynamicSpace=_pe,Object.defineProperty(od,"__esModule",{value:!0}),od.RefinedSpace=void 0;const Cpe=SA,bpe=Tl;class MR extends Cpe.DynamicSpace{static filteredFrom(e,n,r){const i=new MR(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,bpe.canMakeEntry)(n)?n.makeEntry(this):n.log(`Internal error, ${n.elementType} not expected in this context`)}}od.RefinedSpace=MR;var Ol={},Xi={};Object.defineProperty(Xi,"__esModule",{value:!0}),Xi.DefinitionList=void 0;const Tpe=Ge,qU=Nr;class Rpe extends Tpe.ListOf{constructor(){super(...arguments),this.isNoteableObj=!0}extendNote(e){(0,qU.extendNoteHelper)(this,e),this.distributeAnnotation()}distributeAnnotation(){if(this.note)for(const e of this.elements)(0,qU.isNoteable)(e)&&e.extendNote(this.note)}newContents(){super.newContents(),this.distributeAnnotation()}}Xi.DefinitionList=Rpe,Object.defineProperty(Ol,"__esModule",{value:!0}),Ol.DeclareFields=void 0;const Ope=Xi,Dpe=yn;class Npe extends Ope.DefinitionList{constructor(e){super(e),this.elementType="declareFields",this.queryRefinementStage=Dpe.LegalRefinementStage.Single,this.forceQueryClass=void 0}queryExecute(e){for(const n of this.list)e.inputFS.extendSource(n)}}Ol.DeclareFields=Npe;var io={};Object.defineProperty(io,"__esModule",{value:!0}),io.Filter=io.FilterElement=void 0;const HU=oe,zU=Ge,jR=yn;class Fpe extends zU.MalloyElement{constructor(e,n){super({expr:e}),this.expr=e,this.exprSrc=n,this.elementType="filterElement"}filterCondition(e){const n=this.expr.getExpression(e);return n.dataType!=="boolean"?(this.expr.log("Filter expression must have boolean value"),{node:"filterCondition",code:this.exprSrc,e:{node:"false"},expressionType:"scalar"}):{node:"filterCondition",code:this.exprSrc,e:n.value,expressionType:n.expressionType}}}io.FilterElement=Fpe;let wpe=class extends zU.ListOf{constructor(){super(...arguments),this.elementType="filter",this.forceQueryClass=void 0,this.queryRefinementStage=jR.LegalRefinementStage.Head}set having(e){this.elementType=e?"having":"where",this.havingClause=e,this.queryRefinementStage=e?jR.LegalRefinementStage.Tail:jR.LegalRefinementStage.Head}getFilterList(e){const n=[];for(const r of this.list){const i=r.filterCondition(e);if(this.havingClause!==void 0){const s=(0,HU.expressionIsAggregate)(i.expressionType),o=(0,HU.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}};io.Filter=wpe;var _i={};Object.defineProperty(_i,"__esModule",{value:!0}),_i.Joins=_i.ExpressionJoin=_i.KeyJoin=_i.Join=void 0;const Lpe=oe,Ipe=fp,Bpe=Xi,$pe=Ge,kpe=Nr,Ppe=yn,QU=wr;class UR extends $pe.MalloyElement{constructor(){super(...arguments),this.isNoteableObj=!0,this.extendNote=kpe.extendNoteMethod}makeEntry(e){e.newEntry(this.name.refString,this,new Ipe.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"),QU.ErrorFactory.structDef)}}_i.Join=UR;class Mpe extends UR{constructor(e,n,r){super({name:e,sourceExpr:n,keyExpr:r}),this.name=e,this.sourceExpr=n,this.keyExpr=r,this.elementType="joinOnKey"}structDef(e){var n;const r=this.getStructDefFromExpr(e),i={...r,structRelationship:{type:"one",matrixOperation:"left",onExpression:{node:"error",message:"('join fixup'='not done yet')"}},location:this.location};return r.structSource.type==="query"?i.name=this.name.refString:i.as=this.name.refString,this.note&&(i.annotation=this.note),(n=this.document())===null||n===void 0||n.rememberToAddModelAnnotations(i),i}fixupJoinOn(e,n){const r=this.keyExpr.getExpression(e);if(n.primaryKey){const i=n.fields.find(s=>(s.as||s.name)===n.primaryKey);if(i)if(i.type===r.dataType){n.structRelationship={type:"one",matrixOperation:"left",onExpression:{node:"=",kids:{left:{node:"field",path:[this.name.refString,n.primaryKey]},right:r.value}}};return}else this.log(`join_one: with type mismatch with primary key: ${r.dataType}/${i.type}`);else this.log(`join_one: Primary key '${i}' not found in source`)}else this.log("join_one: Cannot use with unless source has a primary key")}}_i.KeyJoin=Mpe;class jpe extends UR{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,Lpe.isJoinOn)(i)&&(i.onExpression=r.value)}structDef(e){var n;const r=this.sourceExpr.getSource();if(!r)return this.sourceExpr.sqLog("Cannot create a source to join from"),QU.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}}_i.ExpressionJoin=jpe;class Upe extends Bpe.DefinitionList{constructor(e){super(e),this.elementType="joinList",this.forceQueryClass=void 0,this.queryRefinementStage=Ppe.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)e.inputFS.extendSource(n)}}_i.Joins=Upe;var ad={};Object.defineProperty(ad,"__esModule",{value:!0}),ad.FieldListEdit=void 0;const qpe=Ge;class Hpe extends qpe.MalloyElement{constructor(e,n){super({refs:n}),this.edit=e,this.refs=n,this.elementType="fieldListEdit"}}ad.FieldListEdit=Hpe;var ld={};Object.defineProperty(ld,"__esModule",{value:!0}),ld.PrimaryKey=void 0;const zpe=Ge;class Qpe extends zpe.MalloyElement{constructor(e){super({field:e}),this.field=e,this.elementType="primary key"}}ld.PrimaryKey=Qpe;var cd={};Object.defineProperty(cd,"__esModule",{value:!0}),cd.Views=void 0;const Gpe=Xi;class Wpe extends Gpe.DefinitionList{constructor(){super(...arguments),this.elementType="turtleDefList"}}cd.Views=Wpe;var fd={};Object.defineProperty(fd,"__esModule",{value:!0}),fd.TimezoneStatement=void 0;const Vpe=Ge;class Ype extends Vpe.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)}}fd.TimezoneStatement=Ype;var Dl={};Object.defineProperty(Dl,"__esModule",{value:!0}),Dl.ModelAnnotation=Dl.ObjectAnnotation=void 0;const Xpe=xa,Jpe=Ge;class GU extends Jpe.MalloyElement{constructor(e){super(),this.notes=e,this.elementType="annotation",this.forceQueryClass=void 0,this.queryRefinementStage=void 0}queryExecute(){}}Dl.ObjectAnnotation=GU;class Kpe extends GU{constructor(){super(...arguments),this.elementType="modelAnnotation"}getCompilerFlags(e,n){const r=Xpe.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)}}Dl.ModelAnnotation=Kpe;var Nl={},bA={};Object.defineProperty(bA,"__esModule",{value:!0}),bA.RenameSpaceField=void 0;const Zpe=Fr;class ege extends Zpe.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()}}bA.RenameSpaceField=ege,Object.defineProperty(Nl,"__esModule",{value:!0}),Nl.Renames=Nl.RenameField=void 0;const tge=bA,WU=Ge,nge=Fr;class rge extends WU.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 nge.SpaceField?e.renameEntry(this.oldName.refString,this.newName,new tge.RenameSpaceField(n.found,this.newName,this.location)):this.log(`'${this.oldName}' cannot be renamed`):this.log(`Can't rename '${this.oldName}', no such field`)}}Nl.RenameField=rge;class ige extends WU.ListOf{constructor(){super(...arguments),this.elementType="renameFields"}}Nl.Renames=ige,Object.defineProperty(cp,"__esModule",{value:!0}),cp.RefinedSource=void 0;const sge=oe,oge=od,uge=Ol,age=io,lge=_i,cge=ad,fge=ld,xge=cd,dge=ro,hge=fd,pge=Dl,gge=Nl,mge=ud;class yge extends dge.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 pge.ObjectAnnotation)continue;const g=m;m instanceof fge.PrimaryKey?(i&&(i.log("Primary key already defined"),m.log("Primary key redefined")),i=m):m instanceof cge.FieldListEdit?(s&&(s.log("Too many accept/except statements"),m.log("Too many accept/except statements")),s=m):m instanceof uge.DeclareFields||m instanceof lge.Joins||m instanceof xge.Views||m instanceof gge.Renames?o.push(...m.list):m instanceof age.Filter?u.push(m):m instanceof hge.TimezoneStatement?a=m.tz:g.log(`Unexpected source property: '${g.elementType}'`)}const l=n?new mge.ParameterSpace(n):void 0,c=structuredClone(this.source.structDef(l));i&&(c.primaryKey=i.field.name);const f=oge.RefinedSpace.filteredFrom(c,s,l);if(a&&f.setTimezone(a),n&&f.addParameters(n),f.pushFields(...o),i){const m=i.field.getField(f);m.error&&i.log(m.error)}const x=f.structDef(),h=x.filterList||[];let p=!1;for(const m of u)for(const g of m.list){const y=g.filterCondition(f);(0,sge.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)}}cp.RefinedSource=yge;var iu={};Object.defineProperty(iu,"__esModule",{value:!0}),iu.SourceQueryElement=void 0;const Ege=Ge;class qR extends Ege.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 qR&&n.errored){e=!1;break}return e}}iu.SourceQueryElement=qR;var TA={},jc={};Object.defineProperty(jc,"__esModule",{value:!0}),jc.QuerySource=void 0;const Age=ro;class vge extends Age.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)}}}jc.QuerySource=vge;var xd={},hp={};Object.defineProperty(hp,"__esModule",{value:!0}),hp.QueryBase=void 0;const Sge=Zx,_ge=Ge;class Cge extends _ge.MalloyElement{query(){const e=this.queryComp(!0).query;return{...e,pipeline:(0,Sge.detectAndRemovePartialStages)(e.pipeline,this)}}}hp.QueryBase=Cge,Object.defineProperty(xd,"__esModule",{value:!0}),xd.QueryArrow=void 0;const bge=oe,Tge=ro,VU=Lr,Rge=hp;class Oge extends Rge.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 Tge.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,bge.refIsStructDef)(l.structRef)?l.structRef:this.source.structDef(void 0),i=new VU.StaticSpace(n)}else{const l=this.source.queryComp(e);r=l.query,n=l.outputStruct,i=new VU.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}}}xd.QueryArrow=Oge,Object.defineProperty(TA,"__esModule",{value:!0}),TA.SQArrow=void 0;const Dge=iu,Nge=jc,Fge=xd;class wge extends Dge.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 Fge.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 Nge.QuerySource(e);return this.has({asSource:n}),n}}TA.SQArrow=wge;var RA={},dd={},Ji={};Object.defineProperty(Ji,"__esModule",{value:!0}),Ji.getStructFieldDef=Ji.getFinalStruct=Ji.opOutputStruct=void 0;const Lge=ll,Ige=nc,HR=oe,YU=wr;function XU(t,e,n){const r=YU.ErrorFactory.isErrorStructDef(e)||(0,HR.structHasErrors)(e);(0,HR.isPartialSegment)(n)&&(n={...n,type:"reduce"});const i=(0,HR.segmentHasErrors)(n);if(!r&&!i)try{return Ige.Segment.nextStructDef(e,n)}catch(s){t.log(`INTERNAL ERROR model/Segment.nextStructDef: ${s.message}
|
|
1300
|
-
QUERY: ${(0,Lge.inspect)(n,{breakLength:72,depth:1/0})}`)}return{...YU.ErrorFactory.structDef,dialect:e.dialect}}Ji.opOutputStruct=XU;function Bge(t,e,n){for(const r of n)e=XU(t,e,r);return e}Ji.getFinalStruct=Bge;function $ge(t,e){return t.fields.find(n=>(n.as||n.name)===e)}Ji.getStructFieldDef=$ge,Object.defineProperty(dd,"__esModule",{value:!0}),dd.QueryRefine=void 0;const kge=Lr,Pge=Ji,Mge=hp;class jge extends Mge.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 kge.StaticSpace(n.inputStruct),i=this.refinement.refine(r,n.query.pipeline,void 0);return{query:{...n.query,pipeline:i},outputStruct:(0,Pge.getFinalStruct)(this.refinement,n.inputStruct,i),inputStruct:n.inputStruct}}}dd.QueryRefine=jge;var pp={},hd={},Yn={};Object.defineProperty(Yn,"__esModule",{value:!0}),Yn.timeResult=Yn.resolution=Yn.castDateToTimestamp=Yn.castTimestampToDate=Yn.castTo=Yn.timeOffset=void 0;const Uge=oe;function qge(t,e,n,r,i){return{node:"delta",kids:{base:{...e,dataType:t},delta:r},op:n,units:i}}Yn.timeOffset=qge;function Hge(t,e,n,r=!1){const i={node:"cast",dstType:t,e,safe:r};return(0,Uge.isAtomicFieldType)(n)&&(i.srcType=n),i}Yn.castTo=Hge;function zge(t,e=!1){return{node:"cast",dstType:"date",srcType:"timestamp",e:t,safe:e}}Yn.castTimestampToDate=zge;function Qge(t,e=!1){return{node:"cast",dstType:"timestamp",srcType:"date",e:t,safe:e}}Yn.castDateToTimestamp=Qge;function Gge(t){switch(t){case"hour":case"minute":case"second":case"microsecond":case"millisecond":return"timestamp"}return"date"}Yn.resolution=Gge;function Wge(t,e){return e?{...t,timeframe:e}:t}Yn.timeResult=Wge;var Uc={},Xn={};Object.defineProperty(Xn,"__esModule",{value:!0}),Xn.errorFor=void 0;function Vge(t){return{dataType:"error",expressionType:"scalar",value:{node:"error",message:t},evalSpace:"constant"}}Xn.errorFor=Vge;var xt={},rn={};Object.defineProperty(rn,"__esModule",{value:!0}),rn.FT=void 0;const Yge=ko;function qc(t,e="scalar",n="constant"){return{dataType:t,expressionType:e,evalSpace:n}}class hr{static in(e,n){return e?n.find(i=>hr.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=>hr.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,Yge.expressionIsScalar)(r.expressionType)||(i=`${r.expressionType} ${i}`),i}return"undefined"}).join(",")}}rn.FT=hr,hr.nullT=qc("null"),hr.numberT=qc("number"),hr.stringT=qc("string"),hr.dateT=qc("date"),hr.timestampT=qc("timestamp"),hr.boolT=qc("boolean"),hr.anyAtomicT=[hr.numberT,hr.stringT,hr.dateT,hr.timestampT,hr.boolT],hr.aggregateBoolT=qc("boolean","aggregate");var pd={};Object.defineProperty(pd,"__esModule",{value:!0}),pd.isGranularResult=void 0;function Xge(t){return t.dataType==="date"||t.dataType==="timestamp"?t.timeframe!==void 0:!1}pd.isGranularResult=Xge;var su={};Object.defineProperty(su,"__esModule",{value:!0}),su.isComparison=su.isEquality=su.getExprNode=void 0;function Jge(t){switch(t){case"~":return"like";case"!~":return"!like"}return t}su.getExprNode=Jge;function JU(t){return t==="="||t==="!="||t==="~"||t==="!~"}su.isEquality=JU;function Kge(t){return JU(t)||t===">="||t==="<="||t===">"||t==="<"}su.isComparison=Kge,Object.defineProperty(xt,"__esModule",{value:!0}),xt.applyBinary=xt.getMorphicValue=xt.ExprDuration=xt.ExpressionDef=void 0;const En=oe,gd=Xn,Hc=rn,OA=Yn,KU=pd,Zge=Ge,gp=su;class eme extends Error{}class ZU extends Zge.MalloyElement{constructor(){super(...arguments),this.legalChildTypes=Hc.FT.anyAtomicT}granular(){return!1}requestExpression(e){return this.getExpression(e)}defaultFieldName(){}typeCheck(e,n){return n.dataType!=="error"&&!Hc.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 ${Hc.FT.inspect(n)}`),!1):!0}apply(e,n,r){return rq(e,r,n,this)}canSupportPartitionBy(){return!1}canSupportOrderBy(){return!1}canSupportLimit(){return!1}supportsWhere(e){return(0,En.expressionIsAggregate)(e.expressionType)}}xt.ExpressionDef=ZU;class zR extends ZU{constructor(e,n){super({n:e}),this.n=e,this.timeframe=n,this.elementType="duration",this.legalChildTypes=[Hc.FT.timestampT,Hc.FT.dateT]}apply(e,n,r){const i=r.getExpression(e);if(this.typeCheck(this,i),(0,En.isTimeFieldType)(i.dataType)&&(n==="+"||n==="-")){const s=this.n.getExpression(e);if(!Hc.FT.typeEq(s,Hc.FT.numberT))return this.log(`Duration units needs number not '${s.dataType}`),(0,gd.errorFor)("illegal unit expression");let o;if((0,KU.isGranularResult)(i)&&i.timeframe===this.timeframe&&(o=i.timeframe),i.dataType==="timestamp"){const u=(0,OA.timeOffset)("timestamp",i.value,n,s.value,this.timeframe);return(0,OA.timeResult)({dataType:"timestamp",expressionType:(0,En.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,En.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:u},o)}return(0,En.isDateUnit)(this.timeframe)?(0,OA.timeResult)({dataType:"date",expressionType:(0,En.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,En.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:(0,OA.timeOffset)("date",i.value,n,s.value,this.timeframe)},o):(this.log(`Cannot offset date by ${this.timeframe}`),(0,gd.errorFor)("ofsset date error"))}return super.apply(e,n,r)}getExpression(e){return{dataType:"duration",expressionType:"scalar",value:{node:"error",message:"Duration is not a value"},evalSpace:"constant"}}}xt.ExprDuration=zR;function eq(t,e){return t.dataType===e?t.value:t.morphic&&t.morphic[e]}function tme(t,e){if(t.dataType===e)return t;if(t.morphic&&t.morphic[e])return{...t,dataType:e,value:t.morphic[e]}}xt.getMorphicValue=tme;function tq(t,e,n,r){const i=(0,En.isTimeFieldType)(e.dataType),s=(0,En.isTimeFieldType)(r.dataType),o=(0,gp.getExprNode)(n);if(i&&s)if(e.dataType!==r.dataType){const u=eq(e,"timestamp"),a=eq(r,"timestamp");if(u&&a)return{node:o,kids:{left:u,right:u}}}else return{node:o,kids:{left:e.value,right:r.value}};if((i||s)&&e.dataType!=="null"&&r.dataType!=="null")return t.log(`Cannot compare a ${e.dataType} to a ${r.dataType}`),{node:"false"}}function nme(t,e){if(t.dataType==="string"){if(e.dataType==="regular expression")return{node:"regexpMatch",kids:{expr:t.value,regex:e.value}}}else if(e.dataType==="string"&&t.dataType==="regular expression")return{node:"regexpMatch",kids:{expr:e.value,regex:t.value}}}function rme(t,e,n){const r=e==="!="||e==="!~",i=r?"is-not-null":"is-null";if(t.dataType==="null"||n.dataType==="null")return t.dataType!=="null"?{node:i,e:t.value}:n.dataType!=="null"?{node:i,e:n.value}:{node:r?"false":"true"}}function ime(t,e,n,r){var i;const s=e.getExpression(t),o=r.getExpression(t),u=(0,gp.getExprNode)(n),a=mp("boolean",s,o);if(a)return a;if(s.dataType==="sql native"||o.dataType==="sql native"){const f=s.dataType==="null"||o.dataType==="null",x=s.rawType&&s.rawType===o.rawType;if(!(f||x)){const h=yp(e,s,r,o);if(h)return{...h,dataType:"boolean"}}}let c=tq(e,s,n,o)||{node:u,kids:{left:s.value,right:o.value}};if(s.dataType!=="error"&&o.dataType!=="error")switch(n){case"~":case"!~":{if(s.dataType!=="string"||o.dataType!=="string"){const f=nme(s,o);if(f===void 0)throw new eme("Incompatible types for match('~') operator");c=f}break}case"=":case"!=":{c=(i=rme(s,n,o))!==null&&i!==void 0?i:c;break}}return{dataType:"boolean",expressionType:(0,En.maxExpressionType)(s.expressionType,o.expressionType),evalSpace:(0,En.mergeEvalSpaces)(s.evalSpace,o.evalSpace),value:c}}function sme(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=mp("boolean",i,s);if(o)return o;const u=(0,En.maxExpressionType)(i.expressionType,s.expressionType),a=yp(e,i,r,s);if(a)return{...a,dataType:"boolean"};const l=tq(e,i,n,s)||{node:(0,gp.getExprNode)(n),kids:{left:i.value,right:s.value}};return{dataType:"boolean",expressionType:u,evalSpace:(0,En.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:l}}function nq(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=mp("number",i,s);if(o)return o;const u=yp(e,i,r,s);if(u)return u;const a=(0,En.maxExpressionType)(i.expressionType,s.expressionType);if(i.dataType!=="number")e.log(`The '${n}' operator requires a number, not a '${i.dataType}'`);else if(s.dataType!=="number")r.log(`The '${n}' operator requires a number, not a '${s.dataType}'`);else return{dataType:"number",expressionType:a,value:{node:n,kids:{left:i.value,right:s.value}},evalSpace:(0,En.mergeEvalSpaces)(i.evalSpace,s.evalSpace)};return(0,gd.errorFor)("numbers required")}function ome(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=yp(e,i,r,s);if(o)return o;const u=(0,En.isTimeFieldType)(i.dataType),a=mp(u?"error":"number",i,s);if(a)return a;if(u){let l=r;if(s.dataType!=="duration")if((0,KU.isGranularResult)(i))l=new zR(r,i.timeframe);else if(i.dataType==="date")l=new zR(r,"day");else return e.log(`Can not offset time by '${s.dataType}'`),(0,gd.errorFor)(`time plus ${s.dataType}`);return l.apply(t,n,e)}return nq(t,e,n,r)}function rq(t,e,n,r){if((0,gp.isEquality)(n))return ime(t,e,n,r);if((0,gp.isComparison)(n))return sme(t,e,n,r);if(n==="+"||n==="-")return ome(t,e,n,r);if(n==="*")return nq(t,e,n,r);if(n==="/"||n==="%"){const i=e.getExpression(t),s=r.getExpression(t),o=yp(e,i,r,s);if(o)return e.log(`Cannot use '${n}' with sql native type`),o;const u=mp("number",i,s);if(u)return u;if(i.dataType!=="number")e.log("Numerator must be a number");else if(s.dataType!=="number")r.log("Denominator must be a number");else{const a={node:n,kids:{left:i.value,right:s.value}};return{dataType:"number",expressionType:(0,En.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,En.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:a}}return(0,gd.errorFor)("divide type mismatch")}return e.log(`Cannot use ${n} operator here`),(0,gd.errorFor)("applybinary bad operator")}xt.applyBinary=rq;function mp(t,...e){if(e.some(n=>n.dataType==="error"))return{dataType:t,expressionType:(0,En.maxOfExpressionTypes)(e.map(n=>n.expressionType)),value:{node:"error",message:"cascading error"},evalSpace:(0,En.mergeEvalSpaces)(...e.map(n=>n.evalSpace))}}function yp(t,e,n,r){const i={dataType:e.dataType,expressionType:(0,En.maxExpressionType)(e.expressionType,r.expressionType),value:{node:"error",message:"sql-native unsupported"},evalSpace:(0,En.mergeEvalSpaces)(e.evalSpace,r.evalSpace)};if(e.dataType==="sql native")return t.log(`Unsupported SQL native type '${e.rawType}' not allowed in expression[unsupported-sql-native-type-not-allowed-in-expression]`),i.dataType=r.dataType,i;if(r.dataType==="sql native")return n.log(`Unsupported SQL native type '${r.rawType}' not allowed in expression[unsupported-sql-native-type-not-allowed-in-expression]`),i}Object.defineProperty(Uc,"__esModule",{value:!0}),Uc.ExprIdReference=void 0;const ume=oe,ame=Xn,lme=xt;class cme extends lme.ExpressionDef{constructor(e){super(),this.fieldReference=e,this.elementType="ExpressionIdReference",this.has({fieldPath:e})}get refString(){return this.fieldReference.refString}getExpression(e){const n=this.fieldReference.getField(e);if(n.found){const r=n.found.typeDesc();if(n.isOutputField)return{...r,evalSpace:r.evalSpace==="constant"?"constant":"output",value:{node:"outputField",name:this.refString}};const i={node:n.found.refType,path:this.fieldReference.path},s=(0,ume.expressionIsAggregate)(r.expressionType)?"output":r.evalSpace;return{...r,value:i,evalSpace:s}}return this.log(n.error),(0,ame.errorFor)(n.error)}}Uc.ExprIdReference=cme,Object.defineProperty(hd,"__esModule",{value:!0}),hd.NamedSource=void 0;const QR=oe,fme=ro,xme=wr,dme=Yn,GR=Ge,hme=Uc,pme=ud;class gme extends fme.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 GR.ModelEntryReference&&this.has({ref:e})}get refName(){return this.ref instanceof GR.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 GR.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,QR.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 hme.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 pme.ParameterSpace(r??[]),h=a.value.getExpression(x);let p=h.value;h.dataType!==f.type&&(0,QR.isCastType)(f.type)&&(p=(0,dme.castTo)(f.type,h.value,h.dataType,!0)),o[c]={...f,value:p}}}for(const a in n)a in o||((0,QR.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=xme.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}}hd.NamedSource=gme;var Ep={},DA={};Object.defineProperty(DA,"__esModule",{value:!0}),DA.QueryHeadStruct=void 0;const mme=oe,yme=ro,Eme=hd;class Ame extends yme.Source{constructor(e,n){super(),this.fromRef=e,this.sourceArguments=n,this.elementType="internalOnlyQueryHead"}structRef(){return{structRef:this.fromRef}}structDef(e){if((0,mme.refIsStructDef)(this.fromRef))return this.fromRef;const n=new Eme.NamedSource(this.fromRef,this.sourceArguments,void 0);return this.has({exploreReference:n}),n.structDef(e)}}DA.QueryHeadStruct=Ame,Object.defineProperty(Ep,"__esModule",{value:!0}),Ep.QueryReference=void 0;const WR=wr,vme=Ge,Sme=DA,_me=oe,Cme=Ji;class bme extends vme.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:WR.ErrorFactory.structDef,outputStruct:WR.ErrorFactory.structDef,query:WR.ErrorFactory.query}};if(!r)return this.log(`Reference to undefined query '${this.name.refString}'`),i();if(r.type==="query"){const s=new Sme.QueryHeadStruct(r.structRef,r.sourceArguments);this.has({queryHead:s});const o=s.structDef(void 0),u=(0,Cme.getFinalStruct)(this,o,r.pipeline);return{query:e||(0,_me.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}}Ep.QueryReference=bme,Object.defineProperty(pp,"__esModule",{value:!0}),pp.SQReference=void 0;const Tme=iu,Rme=jc,Ome=hd,iq=Ep;class Dme extends Tme.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 iq.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 iq.QueryReference(this.ref);this.asSource=new Rme.QuerySource(n)}else if(e.type==="struct")this.asSource=new Ome.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}}pp.SQReference=Dme,Object.defineProperty(RA,"__esModule",{value:!0}),RA.SQRefine=void 0;const Nme=iu,Fme=jc,wme=dd,Lme=pp;class Ime extends Nme.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 Lme.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 wme.QueryRefine(e,this.refine);return this.has({query:n}),n}}getSource(){const e=this.getQuery();if(e){const n=new Fme.QuerySource(e);return this.has({queryAsSource:n}),n}}}RA.SQRefine=Ime;var NA={},Ap={};Object.defineProperty(Ap,"__esModule",{value:!0}),Ap.QueryRaw=void 0;const Bme=oe,$me=Ge;class kme extends $me.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,Bme.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}}Ap.QueryRaw=kme;var vp={},FA={};Object.defineProperty(FA,"__esModule",{value:!0}),FA.makeSQLBlock=void 0;const Pme=oe,Mme=Ft;function jme(t,e){const n={name:`md5:/${e||"$default"}//${Ume(t)}`,select:t};return e&&(n.connection=e),n}FA.makeSQLBlock=jme;function Ume(t){const e=t.map(n=>(0,Pme.isSQLFragment)(n)?n.sql:JSON.stringify(n));return(0,Mme.generateHash)(e.join(";"))}Object.defineProperty(vp,"__esModule",{value:!0}),vp.SQLSource=void 0;const qme=FA,Hme=ro,wA=wr;class zme extends Hme.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,qme.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 wA.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"),wA.ErrorFactory.structDef;const r=this.sqlBlock();n.reference(r.name,this.location);const i=n.getEntry(r.name);if(i.status==="error"){const s=i.message.split(/\r?\n/);return this.select.log("Invalid SQL, "+s.join(`
|
|
1300
|
+
QUERY: ${(0,Lge.inspect)(n,{breakLength:72,depth:1/0})}`)}return{...YU.ErrorFactory.structDef,dialect:e.dialect}}Ji.opOutputStruct=XU;function Bge(t,e,n){for(const r of n)e=XU(t,e,r);return e}Ji.getFinalStruct=Bge;function $ge(t,e){return t.fields.find(n=>(n.as||n.name)===e)}Ji.getStructFieldDef=$ge,Object.defineProperty(dd,"__esModule",{value:!0}),dd.QueryRefine=void 0;const kge=Lr,Pge=Ji,Mge=hp;class jge extends Mge.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 kge.StaticSpace(n.inputStruct),i=this.refinement.refine(r,n.query.pipeline,void 0);return{query:{...n.query,pipeline:i},outputStruct:(0,Pge.getFinalStruct)(this.refinement,n.inputStruct,i),inputStruct:n.inputStruct}}}dd.QueryRefine=jge;var pp={},hd={},Yn={};Object.defineProperty(Yn,"__esModule",{value:!0}),Yn.timeResult=Yn.resolution=Yn.castDateToTimestamp=Yn.castTimestampToDate=Yn.castTo=Yn.timeOffset=void 0;const Uge=oe;function qge(t,e,n,r,i){return{node:"delta",kids:{base:{...e,dataType:t},delta:r},op:n,units:i}}Yn.timeOffset=qge;function Hge(t,e,n,r=!1){const i={node:"cast",dstType:t,e,safe:r};return(0,Uge.isAtomicFieldType)(n)&&(i.srcType=n),i}Yn.castTo=Hge;function zge(t,e=!1){return{node:"cast",dstType:"date",srcType:"timestamp",e:t,safe:e}}Yn.castTimestampToDate=zge;function Qge(t,e=!1){return{node:"cast",dstType:"timestamp",srcType:"date",e:t,safe:e}}Yn.castDateToTimestamp=Qge;function Gge(t){switch(t){case"hour":case"minute":case"second":case"microsecond":case"millisecond":return"timestamp"}return"date"}Yn.resolution=Gge;function Wge(t,e){return e?{...t,timeframe:e}:t}Yn.timeResult=Wge;var Uc={},Xn={};Object.defineProperty(Xn,"__esModule",{value:!0}),Xn.errorFor=void 0;function Vge(t){return{dataType:"error",expressionType:"scalar",value:{node:"error",message:t},evalSpace:"constant"}}Xn.errorFor=Vge;var xt={},rn={};Object.defineProperty(rn,"__esModule",{value:!0}),rn.FT=void 0;const Yge=ko;function qc(t,e="scalar",n="constant"){return{dataType:t,expressionType:e,evalSpace:n}}class hr{static in(e,n){return e?n.find(i=>hr.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=>hr.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,Yge.expressionIsScalar)(r.expressionType)||(i=`${r.expressionType} ${i}`),i}return"undefined"}).join(",")}}rn.FT=hr,hr.nullT=qc("null"),hr.numberT=qc("number"),hr.stringT=qc("string"),hr.dateT=qc("date"),hr.timestampT=qc("timestamp"),hr.boolT=qc("boolean"),hr.anyAtomicT=[hr.numberT,hr.stringT,hr.dateT,hr.timestampT,hr.boolT],hr.aggregateBoolT=qc("boolean","aggregate");var pd={};Object.defineProperty(pd,"__esModule",{value:!0}),pd.isGranularResult=void 0;function Xge(t){return t.dataType==="date"||t.dataType==="timestamp"?t.timeframe!==void 0:!1}pd.isGranularResult=Xge;var su={};Object.defineProperty(su,"__esModule",{value:!0}),su.isComparison=su.isEquality=su.getExprNode=void 0;function Jge(t){switch(t){case"~":return"like";case"!~":return"!like"}return t}su.getExprNode=Jge;function JU(t){return t==="="||t==="!="||t==="~"||t==="!~"}su.isEquality=JU;function Kge(t){return JU(t)||t===">="||t==="<="||t===">"||t==="<"}su.isComparison=Kge,Object.defineProperty(xt,"__esModule",{value:!0}),xt.applyBinary=xt.getMorphicValue=xt.ExprDuration=xt.ExpressionDef=void 0;const En=oe,gd=Xn,Hc=rn,OA=Yn,KU=pd,Zge=Ge,gp=su;class eme extends Error{}class ZU extends Zge.MalloyElement{constructor(){super(...arguments),this.legalChildTypes=Hc.FT.anyAtomicT}granular(){return!1}requestExpression(e){return this.getExpression(e)}defaultFieldName(){}typeCheck(e,n){return n.dataType!=="error"&&!Hc.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 ${Hc.FT.inspect(n)}`),!1):!0}apply(e,n,r){return rq(e,r,n,this)}canSupportPartitionBy(){return!1}canSupportOrderBy(){return!1}canSupportLimit(){return!1}supportsWhere(e){return(0,En.expressionIsAggregate)(e.expressionType)}}xt.ExpressionDef=ZU;class zR extends ZU{constructor(e,n){super({n:e}),this.n=e,this.timeframe=n,this.elementType="duration",this.legalChildTypes=[Hc.FT.timestampT,Hc.FT.dateT]}apply(e,n,r){const i=r.getExpression(e);if(this.typeCheck(this,i),(0,En.isTimeFieldType)(i.dataType)&&(n==="+"||n==="-")){const s=this.n.getExpression(e);if(!Hc.FT.typeEq(s,Hc.FT.numberT))return this.log(`Duration units needs number not '${s.dataType}`),(0,gd.errorFor)("illegal unit expression");let o;if((0,KU.isGranularResult)(i)&&i.timeframe===this.timeframe&&(o=i.timeframe),i.dataType==="timestamp"){const u=(0,OA.timeOffset)("timestamp",i.value,n,s.value,this.timeframe);return(0,OA.timeResult)({dataType:"timestamp",expressionType:(0,En.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,En.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:u},o)}return(0,En.isDateUnit)(this.timeframe)?(0,OA.timeResult)({dataType:"date",expressionType:(0,En.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,En.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:(0,OA.timeOffset)("date",i.value,n,s.value,this.timeframe)},o):(this.log(`Cannot offset date by ${this.timeframe}`),(0,gd.errorFor)("ofsset date error"))}return super.apply(e,n,r)}getExpression(e){return{dataType:"duration",expressionType:"scalar",value:{node:"error",message:"Duration is not a value"},evalSpace:"constant"}}}xt.ExprDuration=zR;function eq(t,e){return t.dataType===e?t.value:t.morphic&&t.morphic[e]}function tme(t,e){if(t.dataType===e)return t;if(t.morphic&&t.morphic[e])return{...t,dataType:e,value:t.morphic[e]}}xt.getMorphicValue=tme;function tq(t,e,n,r){const i=(0,En.isTimeFieldType)(e.dataType),s=(0,En.isTimeFieldType)(r.dataType),o=(0,gp.getExprNode)(n);if(i&&s)if(e.dataType!==r.dataType){const u=eq(e,"timestamp"),a=eq(r,"timestamp");if(u&&a)return{node:o,kids:{left:u,right:u}}}else return{node:o,kids:{left:e.value,right:r.value}};if((i||s)&&e.dataType!=="null"&&r.dataType!=="null")return t.log(`Cannot compare a ${e.dataType} to a ${r.dataType}`),{node:"false"}}function nme(t,e){if(t.dataType==="string"){if(e.dataType==="regular expression")return{node:"regexpMatch",kids:{expr:t.value,regex:e.value}}}else if(e.dataType==="string"&&t.dataType==="regular expression")return{node:"regexpMatch",kids:{expr:e.value,regex:t.value}}}function rme(t,e,n){const r=e==="!="||e==="!~",i=r?"is-not-null":"is-null";if(t.dataType==="null"||n.dataType==="null")return t.dataType!=="null"?{node:i,e:t.value}:n.dataType!=="null"?{node:i,e:n.value}:{node:r?"false":"true"}}function ime(t,e,n,r){var i;const s=e.getExpression(t),o=r.getExpression(t),u=(0,gp.getExprNode)(n),a=mp("boolean",s,o);if(a)return a;if(s.dataType==="sql native"||o.dataType==="sql native"){const f=s.dataType==="null"||o.dataType==="null",x=s.rawType&&s.rawType===o.rawType;if(!(f||x)){const h=yp(e,s,r,o);if(h)return{...h,dataType:"boolean"}}}let c=tq(e,s,n,o)||{node:u,kids:{left:s.value,right:o.value}};if(s.dataType!=="error"&&o.dataType!=="error")switch(n){case"~":case"!~":{if(s.dataType!=="string"||o.dataType!=="string"){let f=nme(s,o);if(f)n[0]==="!"&&(f={node:"not",e:{...f}});else throw new eme("Incompatible types for match('~') operator");c=f}break}case"=":case"!=":{c=(i=rme(s,n,o))!==null&&i!==void 0?i:c;break}}return{dataType:"boolean",expressionType:(0,En.maxExpressionType)(s.expressionType,o.expressionType),evalSpace:(0,En.mergeEvalSpaces)(s.evalSpace,o.evalSpace),value:c}}function sme(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=mp("boolean",i,s);if(o)return o;const u=(0,En.maxExpressionType)(i.expressionType,s.expressionType),a=yp(e,i,r,s);if(a)return{...a,dataType:"boolean"};const l=tq(e,i,n,s)||{node:(0,gp.getExprNode)(n),kids:{left:i.value,right:s.value}};return{dataType:"boolean",expressionType:u,evalSpace:(0,En.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:l}}function nq(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=mp("number",i,s);if(o)return o;const u=yp(e,i,r,s);if(u)return u;const a=(0,En.maxExpressionType)(i.expressionType,s.expressionType);if(i.dataType!=="number")e.log(`The '${n}' operator requires a number, not a '${i.dataType}'`);else if(s.dataType!=="number")r.log(`The '${n}' operator requires a number, not a '${s.dataType}'`);else return{dataType:"number",expressionType:a,value:{node:n,kids:{left:i.value,right:s.value}},evalSpace:(0,En.mergeEvalSpaces)(i.evalSpace,s.evalSpace)};return(0,gd.errorFor)("numbers required")}function ome(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=yp(e,i,r,s);if(o)return o;const u=(0,En.isTimeFieldType)(i.dataType),a=mp(u?"error":"number",i,s);if(a)return a;if(u){let l=r;if(s.dataType!=="duration")if((0,KU.isGranularResult)(i))l=new zR(r,i.timeframe);else if(i.dataType==="date")l=new zR(r,"day");else return e.log(`Can not offset time by '${s.dataType}'`),(0,gd.errorFor)(`time plus ${s.dataType}`);return l.apply(t,n,e)}return nq(t,e,n,r)}function rq(t,e,n,r){if((0,gp.isEquality)(n))return ime(t,e,n,r);if((0,gp.isComparison)(n))return sme(t,e,n,r);if(n==="+"||n==="-")return ome(t,e,n,r);if(n==="*")return nq(t,e,n,r);if(n==="/"||n==="%"){const i=e.getExpression(t),s=r.getExpression(t),o=yp(e,i,r,s);if(o)return e.log(`Cannot use '${n}' with sql native type`),o;const u=mp("number",i,s);if(u)return u;if(i.dataType!=="number")e.log("Numerator must be a number");else if(s.dataType!=="number")r.log("Denominator must be a number");else{const a={node:n,kids:{left:i.value,right:s.value}};return{dataType:"number",expressionType:(0,En.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,En.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:a}}return(0,gd.errorFor)("divide type mismatch")}return e.log(`Cannot use ${n} operator here`),(0,gd.errorFor)("applybinary bad operator")}xt.applyBinary=rq;function mp(t,...e){if(e.some(n=>n.dataType==="error"))return{dataType:t,expressionType:(0,En.maxOfExpressionTypes)(e.map(n=>n.expressionType)),value:{node:"error",message:"cascading error"},evalSpace:(0,En.mergeEvalSpaces)(...e.map(n=>n.evalSpace))}}function yp(t,e,n,r){const i={dataType:e.dataType,expressionType:(0,En.maxExpressionType)(e.expressionType,r.expressionType),value:{node:"error",message:"sql-native unsupported"},evalSpace:(0,En.mergeEvalSpaces)(e.evalSpace,r.evalSpace)};if(e.dataType==="sql native")return t.log(`Unsupported SQL native type '${e.rawType}' not allowed in expression[unsupported-sql-native-type-not-allowed-in-expression]`),i.dataType=r.dataType,i;if(r.dataType==="sql native")return n.log(`Unsupported SQL native type '${r.rawType}' not allowed in expression[unsupported-sql-native-type-not-allowed-in-expression]`),i}Object.defineProperty(Uc,"__esModule",{value:!0}),Uc.ExprIdReference=void 0;const ume=oe,ame=Xn,lme=xt;class cme extends lme.ExpressionDef{constructor(e){super(),this.fieldReference=e,this.elementType="ExpressionIdReference",this.has({fieldPath:e})}get refString(){return this.fieldReference.refString}getExpression(e){const n=this.fieldReference.getField(e);if(n.found){const r=n.found.typeDesc();if(n.isOutputField)return{...r,evalSpace:r.evalSpace==="constant"?"constant":"output",value:{node:"outputField",name:this.refString}};const i={node:n.found.refType,path:this.fieldReference.path},s=(0,ume.expressionIsAggregate)(r.expressionType)?"output":r.evalSpace;return{...r,value:i,evalSpace:s}}return this.log(n.error),(0,ame.errorFor)(n.error)}}Uc.ExprIdReference=cme,Object.defineProperty(hd,"__esModule",{value:!0}),hd.NamedSource=void 0;const QR=oe,fme=ro,xme=wr,dme=Yn,GR=Ge,hme=Uc,pme=ud;class gme extends fme.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 GR.ModelEntryReference&&this.has({ref:e})}get refName(){return this.ref instanceof GR.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 GR.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,QR.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 hme.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 pme.ParameterSpace(r??[]),h=a.value.getExpression(x);let p=h.value;h.dataType!==f.type&&(0,QR.isCastType)(f.type)&&(p=(0,dme.castTo)(f.type,h.value,h.dataType,!0)),o[c]={...f,value:p}}}for(const a in n)a in o||((0,QR.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=xme.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}}hd.NamedSource=gme;var Ep={},DA={};Object.defineProperty(DA,"__esModule",{value:!0}),DA.QueryHeadStruct=void 0;const mme=oe,yme=ro,Eme=hd;class Ame extends yme.Source{constructor(e,n){super(),this.fromRef=e,this.sourceArguments=n,this.elementType="internalOnlyQueryHead"}structRef(){return{structRef:this.fromRef}}structDef(e){if((0,mme.refIsStructDef)(this.fromRef))return this.fromRef;const n=new Eme.NamedSource(this.fromRef,this.sourceArguments,void 0);return this.has({exploreReference:n}),n.structDef(e)}}DA.QueryHeadStruct=Ame,Object.defineProperty(Ep,"__esModule",{value:!0}),Ep.QueryReference=void 0;const WR=wr,vme=Ge,Sme=DA,_me=oe,Cme=Ji;class bme extends vme.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:WR.ErrorFactory.structDef,outputStruct:WR.ErrorFactory.structDef,query:WR.ErrorFactory.query}};if(!r)return this.log(`Reference to undefined query '${this.name.refString}'`),i();if(r.type==="query"){const s=new Sme.QueryHeadStruct(r.structRef,r.sourceArguments);this.has({queryHead:s});const o=s.structDef(void 0),u=(0,Cme.getFinalStruct)(this,o,r.pipeline);return{query:e||(0,_me.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}}Ep.QueryReference=bme,Object.defineProperty(pp,"__esModule",{value:!0}),pp.SQReference=void 0;const Tme=iu,Rme=jc,Ome=hd,iq=Ep;class Dme extends Tme.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 iq.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 iq.QueryReference(this.ref);this.asSource=new Rme.QuerySource(n)}else if(e.type==="struct")this.asSource=new Ome.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}}pp.SQReference=Dme,Object.defineProperty(RA,"__esModule",{value:!0}),RA.SQRefine=void 0;const Nme=iu,Fme=jc,wme=dd,Lme=pp;class Ime extends Nme.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 Lme.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 wme.QueryRefine(e,this.refine);return this.has({query:n}),n}}getSource(){const e=this.getQuery();if(e){const n=new Fme.QuerySource(e);return this.has({queryAsSource:n}),n}}}RA.SQRefine=Ime;var NA={},Ap={};Object.defineProperty(Ap,"__esModule",{value:!0}),Ap.QueryRaw=void 0;const Bme=oe,$me=Ge;class kme extends $me.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,Bme.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}}Ap.QueryRaw=kme;var vp={},FA={};Object.defineProperty(FA,"__esModule",{value:!0}),FA.makeSQLBlock=void 0;const Pme=oe,Mme=Ft;function jme(t,e){const n={name:`md5:/${e||"$default"}//${Ume(t)}`,select:t};return e&&(n.connection=e),n}FA.makeSQLBlock=jme;function Ume(t){const e=t.map(n=>(0,Pme.isSQLFragment)(n)?n.sql:JSON.stringify(n));return(0,Mme.generateHash)(e.join(";"))}Object.defineProperty(vp,"__esModule",{value:!0}),vp.SQLSource=void 0;const qme=FA,Hme=ro,wA=wr;class zme extends Hme.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,qme.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 wA.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"),wA.ErrorFactory.structDef;const r=this.sqlBlock();n.reference(r.name,this.location);const i=n.getEntry(r.name);if(i.status==="error"){const s=i.message.split(/\r?\n/);return this.select.log("Invalid SQL, "+s.join(`
|
|
1301
1301
|
`)),wA.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"),wA.ErrorFactory.structDef}}vp.SQLSource=zme,Object.defineProperty(NA,"__esModule",{value:!0}),NA.SQSource=void 0;const Qme=iu,Gme=Ap,Wme=vp;class Vme extends Qme.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 Wme.SQLSource){const e=new Gme.QueryRaw(this.theSource);return this.has({rawQuery:e}),e}else this.sqLog("This source cannot be used as a query")}}NA.SQSource=Vme;var LA={};Object.defineProperty(LA,"__esModule",{value:!0}),LA.SQExtend=void 0;const Yme=cp,Xme=iu;class Jme extends Xme.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 Yme.RefinedSource(e,this.extend),this.has({asSource:this.asSource}),this.asSource;this.sqLog("Could not compute source to extend")}isSource(){return!0}}LA.SQExtend=Jme;var IA={},Sp={},_p={};Object.defineProperty(_p,"__esModule",{value:!0}),_p.BinaryBoolean=void 0;const sq=oe,Kme=Xn,Zme=rn,e3e=su,t3e=xt;class n3e extends t3e.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=[Zme.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,sq.mergeEvalSpaces)(n.evalSpace,r.evalSpace);return{dataType:"boolean",expressionType:(0,sq.maxExpressionType)(n.expressionType,r.expressionType),value:{node:(0,e3e.getExprNode)(this.op),kids:{left:n.value,right:r.value}},evalSpace:i}}return(0,Kme.errorFor)("logial required boolean")}}_p.BinaryBoolean=n3e,Object.defineProperty(Sp,"__esModule",{value:!0}),Sp.ExprCompare=void 0;const Qt=rn,r3e=_p,i3e={"~":[Qt.FT.stringT],"!~":[Qt.FT.stringT],"<":[Qt.FT.numberT,Qt.FT.stringT,Qt.FT.dateT,Qt.FT.timestampT],"<=":[Qt.FT.numberT,Qt.FT.stringT,Qt.FT.dateT,Qt.FT.timestampT],"=":[Qt.FT.numberT,Qt.FT.stringT,Qt.FT.dateT,Qt.FT.timestampT],"!=":[Qt.FT.numberT,Qt.FT.stringT,Qt.FT.dateT,Qt.FT.timestampT],">=":[Qt.FT.numberT,Qt.FT.stringT,Qt.FT.dateT,Qt.FT.timestampT],">":[Qt.FT.numberT,Qt.FT.stringT,Qt.FT.dateT,Qt.FT.timestampT]};class s3e extends r3e.BinaryBoolean{constructor(e,n,r){super(e,n,r),this.elementType="a<=>b",this.legalChildTypes=i3e[n]}getExpression(e){return this.right.apply(e,this.op,this.left)}}Sp.ExprCompare=s3e;var Cp={},md={};Object.defineProperty(md,"__esModule",{value:!0}),md.ExprTime=void 0;const o3e=oe,u3e=xt;class VR extends u3e.ExpressionDef{constructor(e,n,r="scalar"){super(),this.elementType="timestampOrDate",this.elementType=e,this.translationValue={dataType:e,expressionType:r,value:n,evalSpace:"constant"}}getExpression(e){return this.translationValue}static fromValue(e,n){let r=n.value;if(e!==n.dataType){const i={node:"cast",safe:!1,dstType:e,e:n.value};(0,o3e.isTimeFieldType)(n.dataType)&&(i.srcType=n.dataType),r=i}return new VR(e,r,n.expressionType)}}md.ExprTime=VR;var Fl={};Object.defineProperty(Fl,"__esModule",{value:!0}),Fl.Range=void 0;const oq=oe,a3e=Xn,l3e=xt;class c3e extends l3e.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,oq.maxExpressionType)(u.expressionType,a.expressionType),evalSpace:(0,oq.mergeEvalSpaces)(u.evalSpace,a.evalSpace),value:{node:s,kids:{left:u.value,right:a.value}}}}case">":return this.last.apply(e,">=",r);case">=":return this.first.apply(e,">=",r);case"<":return this.first.apply(e,"<",r);case"<=":return this.last.apply(e,"<",r)}throw new Error("mysterious error in range computation")}requestExpression(e){}getExpression(e){return this.log("A Range is not a value"),(0,a3e.errorFor)("a range is not a value")}}Fl.Range=c3e,Object.defineProperty(Cp,"__esModule",{value:!0}),Cp.ExprGranularTime=void 0;const uq=oe,f3e=Xn,aq=rn,lq=Yn,x3e=xt,BA=md,cq=Fl;class d3e extends x3e.ExpressionDef{constructor(e,n,r){super({expr:e}),this.expr=e,this.units=n,this.truncate=r,this.elementType="granularTime",this.legalChildTypes=[aq.FT.timestampT,aq.FT.dateT]}granular(){return!0}getExpression(e){const n=this.units,r=this.expr.getExpression(e);if((0,uq.isTimeFieldType)(r.dataType)){const s={...r,dataType:r.dataType,timeframe:n};return this.truncate&&(s.value={node:"trunc",e:{...r.value,dataType:r.dataType},units:n}),s}r.dataType!=="error"&&this.log(`Cannot do time truncation on type '${r.dataType}'`);const i=r.dataType==="error"?(0,uq.isDateUnit)(n)?"date":"timestamp":r.dataType;return{...r,dataType:i,value:(0,f3e.errorFor)("granularity typecheck").value,evalSpace:"constant"}}toRange(e){const n=this.getExpression(e),r={node:"numberLiteral",literal:"1"};if(n.dataType==="timestamp"){const u=BA.ExprTime.fromValue("timestamp",n),a=new BA.ExprTime("timestamp",(0,lq.timeOffset)("timestamp",n.value,"+",r,this.units),n.expressionType);return new cq.Range(u,a)}const i=new BA.ExprTime("date",n.value,n.expressionType),s=(0,lq.timeOffset)("date",n.value,"+",r,this.units),o=new BA.ExprTime("date",s,n.expressionType);return new cq.Range(i,o)}}Cp.ExprGranularTime=d3e,Object.defineProperty(IA,"__esModule",{value:!0}),IA.Apply=void 0;const h3e=Sp,p3e=pd,fq=Cp;class g3e extends h3e.ExprCompare{constructor(e,n){super(e,"=",n),this.left=e,this.right=n,this.elementType="apply"}getExpression(e){let n=this.right;if(!this.right.granular()){const r=this.right.requestExpression(e);r&&(0,p3e.isGranularResult)(r)&&(n=new fq.ExprGranularTime(this.right,r.timeframe,!1))}return n instanceof fq.ExprGranularTime?n.toRange(e).apply(e,this.op,this.left):super.getExpression(e)}}IA.Apply=g3e;var yd={};Object.defineProperty(yd,"__esModule",{value:!0}),yd.BinaryNumeric=void 0;const m3e=rn,y3e=xt;class E3e extends y3e.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=[m3e.FT.numberT]}getExpression(e){return this.right.apply(e,this.op,this.left)}}yd.BinaryNumeric=E3e;var $A={};Object.defineProperty($A,"__esModule",{value:!0}),$A.Boolean=void 0;const A3e=xt,v3e=rn;let S3e=class extends A3e.ExpressionDef{constructor(e){super(),this.value=e,this.elementType="boolean literal"}getExpression(){return{...v3e.FT.boolT,value:{node:this.value}}}};$A.Boolean=S3e;var wl={};Object.defineProperty(wl,"__esModule",{value:!0}),wl.FunctionOrdering=wl.FunctionOrderBy=void 0;const YR=oe,xq=Ge,_3e=Uc;class C3e extends xq.MalloyElement{constructor(e,n){super(),this.field=e,this.dir=n,this.elementType="orderBy",e&&this.has({field:e})}getAnalyticOrderBy(e){if(!this.field)return this.log("analytic `order_by` must specify an aggregate expression or output field reference"),{node:"functionOrderBy",e:{node:"error"},dir:this.dir};const n=this.field.getExpression(e);return(0,YR.expressionIsAggregate)(n.expressionType)||((0,YR.expressionIsScalar)(n.expressionType)?(!(this.field instanceof _3e.ExprIdReference)||n.evalSpace==="input")&&this.field.log("analytic `order_by` must be an aggregate or an output field reference"):this.field.log("analytic `order_by` must be scalar or aggregate")),{node:"functionOrderBy",e:n.value,dir:this.dir}}getAggregateOrderBy(e,n){if(this.field){const r=this.field.getExpression(e);return(0,YR.expressionIsScalar)(r.expressionType)||this.field.log("aggregate `order_by` must be scalar"),n||this.field.log("`order_by` must be only `asc` or `desc` with no expression"),{node:"functionOrderBy",e:r.value,dir:this.dir}}else return this.dir===void 0?(this.log("field or order direction must be specified"),{node:"functionDefaultOrderBy",dir:"asc"}):{node:"functionDefaultOrderBy",dir:this.dir}}}wl.FunctionOrderBy=C3e;class b3e extends xq.ListOf{constructor(e){super(e),this.elementType="function-ordering"}getAnalyticOrderBy(e){return this.list.map(n=>n.getAnalyticOrderBy(e))}getAggregateOrderBy(e,n){return this.list.map(r=>r.getAggregateOrderBy(e,n))}}wl.FunctionOrdering=b3e;var kA={};Object.defineProperty(kA,"__esModule",{value:!0}),kA.ExprAddSub=void 0;const T3e=yd;class R3e extends T3e.BinaryNumeric{constructor(){super(...arguments),this.elementType="+-"}}kA.ExprAddSub=R3e;var ha={},ht={},bp={};Object.defineProperty(bp,"__esModule",{value:!0}),bp.ReferenceField=void 0;const dq=Fr;class O3e extends dq.SpaceField{constructor(e,n){super(),this.fieldRef=e,this.inFS=n,this.didLookup=!1}get referenceTo(){return this.didLookup||(this.memoReference=this.inFS.lookup(this.fieldRef.list).found,this.didLookup=!0),this.memoReference}getQueryFieldDef(e){var n;if(!this.queryFieldDef){const r=this.fieldRef.getField(e);r.error&&this.fieldRef.log(r.error);const i=this.fieldRef.list.map(u=>u.name),s=((n=r.found)===null||n===void 0?void 0:n.refType)==="parameter"?{type:r.found.typeDesc().dataType,name:i[0],e:{node:"parameter",path:i}}:{type:"fieldref",path:i};this.queryFieldDef=s;const o=this.referenceTo;if(o instanceof dq.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"}}}bp.ReferenceField=O3e;var In={};Object.defineProperty(In,"__esModule",{value:!0}),In.typecheckGroupBy=In.typecheckAggregate=In.typecheckCalculate=In.typecheckDeclare=In.typecheckMeasure=In.typecheckDimension=In.typecheckIndex=In.typecheckProject=void 0;const An=ko;function D3e(t,e){if(t.dataType==="turtle"||!(0,An.expressionIsScalar)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,An.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic";else if((0,An.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?`)}}In.typecheckProject=D3e;function N3e(t,e){if(t.dataType==="turtle"||!(0,An.expressionIsScalar)(t.expressionType)){let n;if(t.dataType==="turtle")n="a view";else if((0,An.expressionIsAnalytic)(t.expressionType))n="an analytic";else if((0,An.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`)}}In.typecheckIndex=N3e;function F3e(t,e){if(!(0,An.expressionIsScalar)(t.expressionType))if((0,An.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,An.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`)}In.typecheckDimension=F3e;function w3e(t,e){if(!(0,An.expressionIsAggregate)(t.expressionType))if((0,An.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,An.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`)}In.typecheckMeasure=w3e;function L3e(t,e){t.dataType==="turtle"?e.log("Query fields cannot be used in a declare block"):(0,An.expressionIsAnalytic)(t.expressionType)&&e.log("Analytic expressions can not be used in a declare block")}In.typecheckDeclare=L3e;function I3e(t,e){if(t.dataType==="turtle"||!(0,An.expressionIsAnalytic)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,An.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate";else if((0,An.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?`)}}In.typecheckCalculate=I3e;function B3e(t,e){if(t.dataType==="turtle"||!(0,An.expressionIsAggregate)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,An.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic";else if((0,An.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?`)}}In.typecheckAggregate=B3e;function $3e(t,e){if(t.dataType==="turtle"||!(0,An.expressionIsScalar)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,An.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic";else if((0,An.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?`)}}In.typecheckGroupBy=$3e,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 k3e=bp,P3e=Xi,hq=Ge,pq=Nr,Ll=In;class Ci extends hq.ListOf{constructor(e){super(e),this.isNoteableObj=!0,this.extendNote=pq.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 k3e.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=Ci;class M3e extends Ci{constructor(){super(...arguments),this.elementType="acceptExceptFieldReference"}typecheck(){}}ht.AcceptExceptFieldReference=M3e;class j3e extends Ci{constructor(){super(...arguments),this.elementType="expressionFieldReference"}typecheck(){}}ht.ExpressionFieldReference=j3e;class U3e extends Ci{constructor(){super(...arguments),this.elementType="partitionByFieldReference"}typecheck(){}}ht.PartitionByFieldReference=U3e;class q3e extends Ci{constructor(){super(...arguments),this.elementType="parameterFieldReference"}typecheck(){}}ht.ParameterFieldReference=q3e;class H3e extends Ci{constructor(){super(...arguments),this.elementType="calculateFieldReference"}typecheck(e){(0,Ll.typecheckCalculate)(e,this)}}ht.CalculateFieldReference=H3e;class XR extends Ci{constructor(){super(...arguments),this.elementType="indexFieldReference"}typecheck(e){(0,Ll.typecheckIndex)(e,this)}static indexOutputName(e){return e.map(n=>encodeURIComponent(n)).join("/")}get outputName(){return XR.indexOutputName(this.path)}}ht.IndexFieldReference=XR;class z3e extends Ci{constructor(){super(...arguments),this.elementType="aggregateFieldReference"}typecheck(e){(0,Ll.typecheckAggregate)(e,this)}}ht.AggregateFieldReference=z3e;class Q3e extends Ci{constructor(){super(...arguments),this.elementType="groupByFieldReference"}typecheck(e){(0,Ll.typecheckGroupBy)(e,this)}}ht.GroupByFieldReference=Q3e;class G3e extends Ci{constructor(){super(...arguments),this.elementType="projectFieldReference"}typecheck(e){(0,Ll.typecheckProject)(e,this)}}ht.ProjectFieldReference=G3e;class W3e extends Ci{constructor(){super(...arguments),this.elementType="declareFieldReference"}typecheck(e){(0,Ll.typecheckDeclare)(e,this)}}ht.DeclareFieldReference=W3e;class V3e extends Ci{constructor(){super(...arguments),this.elementType="measureFieldReference"}typecheck(e){(0,Ll.typecheckMeasure)(e,this)}}ht.MeasureFieldReference=V3e;class Y3e extends Ci{constructor(){super(...arguments),this.elementType="dimensionFieldReference"}typecheck(e){(0,Ll.typecheckDimension)(e,this)}}ht.DimensionFieldReference=Y3e;class X3e extends Ci{constructor(){super(...arguments),this.elementType="viewOrScalarFieldReference"}typecheck(e){}}ht.ViewOrScalarFieldReference=X3e;class J3e extends hq.MalloyElement{constructor(e){super(),this.joinPath=e,this.elementType="wildcardFieldReference",this.isNoteableObj=!0,this.extendNote=pq.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=J3e;class K3e extends P3e.DefinitionList{constructor(e){super(e),this.elementType="fieldReferenceList"}}ht.FieldReferences=K3e,Object.defineProperty(ha,"__esModule",{value:!0}),ha.ExprAggregateFunction=void 0;const gq=oe,Z3e=Ft,Tp=Xn,eye=Lr,tye=Mc,nye=rn,rye=ht,iye=xt,sye=Fr,oye=Uc;class uye extends iye.ExpressionDef{constructor(e,n,r){super(),this.func=e,this.legalChildTypes=[nye.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,gq.isAtomicFieldType)(x.dataType)){s=this.source,o={dataType:x.dataType,expressionType:x.expressionType,value:x.evalSpace==="output"?{node:"outputField",name:this.source.refString}:{node:"field",path:this.source.path},evalSpace:x.evalSpace},u=this.source.path;const h=this.getJoinUsage(i);(h.length===1||h.length>1&&h.slice(1).every(m=>aye(m,h[0])))&&(u=h[0].map(m=>m.name),a=h[0])}else if(!(f instanceof tye.StructSpaceFieldBase))return this.log(`Aggregate source cannot be a ${x.dataType}`),(0,Tp.errorFor)(`Aggregate source cannot be a ${x.dataType}`)}else return this.log(`Reference to undefined value ${this.source.refString}`),(0,Tp.errorFor)(`Reference to undefined value ${this.source.refString}`)}if(o===void 0)return this.log("Missing expression for aggregate function"),(0,Tp.errorFor)("agggregate without expression");if((0,gq.expressionIsAggregate)(o.expressionType))return this.log("Aggregate expression cannot be aggregate"),(0,Tp.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=KR(a,c),p=ZR(this.elementType,h),m=f?p:"Join path is required for this calculation";if(m){const g=lye(m,c,s,this.elementType);this.log(g,p?"error":"warn")}}}if(this.typeCheck(this.expr||this,{...o,expressionType:"scalar"})){const c={node:"aggregate",function:this.func,e:o.value};return u&&u.length>0&&(c.structPath=u),{dataType:this.returns(o),expressionType:"aggregate",value:c,evalSpace:"output"}}return(0,Tp.errorFor)("aggregate type check")}isSymmetricFunction(){return!0}getJoinUsage(e){const n=[];if(this.source&&this.source.getField(e).found){const i={node:"field",path:this.source.path};n.push(...JR(e,i))}if(this.expr){const r=this.expr.getExpression(e).value;n.push(...JR(e,r))}return n}}ha.ExprAggregateFunction=uye;function aye(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 JR(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 eye.StructSpaceField&&u.length>0){const l=r(a.fieldSpace,u);return{...l,relationship:[{name:o,structRelationship:a.structRelationship},...l.relationship]}}else if(a instanceof sye.SpaceField){if(u.length!==0)throw new Error(`${o} cannot contain a ${u.join(".")}`);const l=a.fieldDef();if(l)return{fs:i,def:l,relationship:[]};throw new Error("No field def")}else throw new Error("expected a field def or struct")};for(const i of(0,Z3e.exprWalk)(e))if(i.node==="field"){const s=r(t,i.path);if(s.def.type!=="struct"&&s.def.type!=="turtle")if(s.def.e){const o=JR(s.fs,s.def.e);n.push(...o.map(u=>[...s.relationship,...u]))}else n.push(s.relationship)}else if(i.node==="source-reference")if(i.path){const s=r(t,i.path);n.push(s.relationship)}else n.push([]);return n}function KR(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 ZR(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 lye(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=KR(i,e),o=ZR(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=KR(l,e),f=ZR(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 rye.FieldReference?`${n.refString}.${r}()`:n instanceof oye.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 PA={};Object.defineProperty(PA,"__esModule",{value:!0}),PA.ExprAlternationTree=void 0;const mq=oe,cye=Xn,fye=xt;class xye extends fye.ExpressionDef{constructor(e,n,r){super({left:e,right:r}),this.left=e,this.op=n,this.right=r,this.elementType="alternation",this.elementType=`${n}alternation${n}`}apply(e,n,r){const i=this.left.apply(e,n,r),s=this.right.apply(e,n,r);return{dataType:"boolean",expressionType:(0,mq.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,mq.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:{node:this.op==="&"?"and":"or",kids:{left:i.value,right:s.value}}}}requestExpression(e){}getExpression(e){return this.log("Alternation tree has no value"),(0,cye.errorFor)("no value from alternation tree")}}PA.ExprAlternationTree=xye;var Ed={};Object.defineProperty(Ed,"__esModule",{value:!0}),Ed.ExprAsymmetric=void 0;const dye=ha;class hye extends dye.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}`}}}}Ed.ExprAsymmetric=hye;var MA={};Object.defineProperty(MA,"__esModule",{value:!0}),MA.ExprAvg=void 0;const pye=Ed;class gye extends pye.ExprAsymmetric{constructor(e,n,r){super("avg",e,n,r),this.has({source:n})}}MA.ExprAvg=gye;var jA={};Object.defineProperty(jA,"__esModule",{value:!0}),jA.ExprCast=void 0;const mye=Yn,yye=xt;class Eye extends yye.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,mye.castTo)(this.castType,s.value,s.dataType,this.safe),evalSpace:s.evalSpace}}}jA.ExprCast=Eye;var UA={};Object.defineProperty(UA,"__esModule",{value:!0}),UA.ExprCoalesce=void 0;const yq=ko,Eq=rn,Aye=xt;class vye extends Aye.ExpressionDef{constructor(e,n){super({expr:e,altExpr:n}),this.expr=e,this.altExpr=n,this.elementType="coalesce expression",this.legalChildTypes=Eq.FT.anyAtomicT}getExpression(e){const n=this.expr.getExpression(e),r=this.altExpr.getExpression(e);return n.dataType==="null"?r:(Eq.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,yq.maxExpressionType)(n.expressionType,r.expressionType),value:{node:"coalesce",kids:{left:n.value,right:r.value}},evalSpace:(0,yq.mergeEvalSpaces)(n.evalSpace,r.evalSpace)})}}UA.ExprCoalesce=vye;var qA={};Object.defineProperty(qA,"__esModule",{value:!0}),qA.ExprCount=void 0;const Sye=ha;class _ye extends Sye.ExprAggregateFunction{constructor(e){super("count"),this.source=e,this.elementType="count",this.has({source:e})}defaultFieldName(){if(this.source)return"count_"+this.source.nameString}getExpression(e){const n={node:"aggregate",function:"count",e:{node:""}};return this.source&&(n.structPath=this.source.path),{dataType:"number",expressionType:"aggregate",value:n,evalSpace:"output"}}}qA.ExprCount=_ye;var HA={};Object.defineProperty(HA,"__esModule",{value:!0}),HA.ExprCountDistinct=void 0;const zA=rn,Cye=ha;class bye extends Cye.ExprAggregateFunction{constructor(e){super("distinct",e),this.legalChildTypes=[zA.FT.numberT,zA.FT.stringT,zA.FT.dateT,zA.FT.timestampT]}}HA.ExprCountDistinct=bye;var QA={},Il={};Object.defineProperty(Il,"__esModule",{value:!0}),Il.Limit=void 0;const Tye=Ge,Rye=yn;class Oye extends Tye.MalloyElement{constructor(e){super(),this.limit=e,this.elementType="limit",this.queryRefinementStage=Rye.LegalRefinementStage.Tail,this.forceQueryClass=void 0}}Il.Limit=Oye;var Ad={};Object.defineProperty(Ad,"__esModule",{value:!0}),Ad.PartitionBy=void 0;const Dye=Ge;class Nye extends Dye.ListOf{constructor(e){super(e),this.partitionFields=e,this.elementType="partition_by"}}Ad.PartitionBy=Nye;var Rp={},Bl={};Object.defineProperty(Bl,"__esModule",{value:!0}),Bl.FieldName=void 0;const Fye=Ge;class wye extends Fye.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])}}Bl.FieldName=wye,Object.defineProperty(Rp,"__esModule",{value:!0}),Rp.ExprFunc=void 0;const Ki=oe,pa=Xn,Lye=Mc,Iye=xt,Bye=Bl,Aq=Ft;class $ye extends Iye.ExpressionDef{constructor(e,n,r,i,s){super({args:n}),this.name=e,this.args=n,this.isRaw=r,this.rawType=i,this.source=s,this.elementType="function call()",this.has({source:s})}canSupportPartitionBy(){return!0}canSupportOrderBy(){return!0}canSupportLimit(){return!0}getExpression(e){return this.getPropsExpression(e)}findFunctionDef(e){var n,r,i;const s=this.name.toLowerCase(),o=e?(r=(n=this.getDialectNamespace(e))===null||n===void 0?void 0:n.getEntry(s))===null||r===void 0?void 0:r.entry:void 0,u=o??((i=this.modelEntry(s))===null||i===void 0?void 0:i.entry);return u===void 0?(this.log(`Unknown function '${this.name}'. Use '${this.name}!(...)' to call a SQL function directly.`),{found:void 0,error:"unknown function"}):u.type!=="function"?(this.log(`Cannot call '${this.name}', which is of type ${u.type}`),{found:void 0,error:"called non function"}):(u.name!==this.name&&this.log(`Case insensitivity for function names is deprecated, use '${u.name}' instead`,"warn"),{found:u,error:void 0})}getPropsExpression(e,n){var r,i,s,o;const u=this.args.map(R=>R.getExpression(e));if(this.isRaw){let R="scalar",O;const I=[`${this.name}(`];for(const z of u)R=(0,Ki.maxExpressionType)(R,z.expressionType),O?I.push(","):O=z.dataType,I.push(z.value);return I.push(")"),{dataType:(i=(r=this.rawType)!==null&&r!==void 0?r:O)!==null&&i!==void 0?i:"number",expressionType:R,value:(0,Aq.composeSQLExpr)(I),evalSpace:(0,Ki.mergeEvalSpaces)(...u.map(z=>z.evalSpace))}}const a=(s=e.dialectObj())===null||s===void 0?void 0:s.name,{found:l,error:c}=this.findFunctionDef(a);if(l===void 0)return(0,pa.errorFor)(c);let f,x=(o=this.source)===null||o===void 0?void 0:o.path;if(this.source){const R=this.source.getField(e).found;if(R){const O=R.typeDesc();if((0,Ki.isAtomicFieldType)(O.dataType))f={dataType:O.dataType,expressionType:O.expressionType,value:{node:"field",path:this.source.path},evalSpace:O.evalSpace},x=this.source.path.slice(0,-1);else if(!(R instanceof Lye.StructSpaceFieldBase)){const I=`Aggregate source cannot be a ${O.dataType}`;return this.log(I),(0,pa.errorFor)(I)}}else{const O=`Reference to undefined value ${this.source.refString}`;return this.log(O),(0,pa.errorFor)(O)}}const h=[...f?[f]:[],...u],p=kye(l,h);if(p===void 0)return this.log(`No matching overload for function ${this.name}(${h.map(R=>R.dataType).join(", ")})`),(0,pa.errorFor)("no matching overload");const{overload:m,expressionTypeErrors:g,evalSpaceErrors:y,nullabilityErrors:E}=p;for(const R of g){const O=R.argIndex-(f?1:0),I=(0,Ki.expressionIsScalar)(R.maxExpressionType)?"scalar":"scalar or aggregate";this.args[O].log(`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must be ${I}, but received ${R.actualExpressionType}`)}for(const R of y){const O=R.argIndex-(f?1:0),I=R.maxEvalSpace==="literal"?"literal":R.maxEvalSpace==="constant"?"literal or constant":"literal, constant or output";this.args[O].log(`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must be ${I}, but received ${R.actualEvalSpace}`)}for(const R of E){const O=R.argIndex-(f?1:0);this.args[O].log(`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must not be a literal null`)}const A=m.returnType,v=(0,Ki.maxOfExpressionTypes)([A.expressionType,...h.map(R=>R.expressionType)]);if(!(0,Ki.expressionIsAggregate)(m.returnType.expressionType)&&this.source!==void 0)return this.log(`Cannot call function ${this.name}(${h.map(R=>R.dataType).join(", ")}) with source`),(0,pa.errorFor)("cannot call with source");const _={node:"function_call",overload:m,name:this.name,kids:{args:h.map(R=>R.value)},expressionType:v,structPath:x};let S=_;if(n!=null&&n.orderBys&&n.orderBys.length>0){const R=(0,Ki.expressionIsAnalytic)(m.returnType.expressionType);if(R||this.inExperiment("aggregate_order_by",!0)||n.orderBys[0].log("Enable experiment `aggregate_order_by` to use `order_by` with an aggregate function"),m.supportsOrderBy||R){const O=m.supportsOrderBy!=="only_default",I=n.orderBys.flatMap(j=>R?j.getAnalyticOrderBy(e):j.getAggregateOrderBy(e,O));_.kids.orderBy=I}else n.orderBys[0].log(`Function \`${this.name}\` does not support \`order_by\``)}if((n==null?void 0:n.limit)!==void 0&&(m.supportsLimit?_.limit=n.limit.limit:this.log(`Function ${this.name} does not support limit`)),n!=null&&n.partitionBys&&n.partitionBys.length>0){const R=[];for(const O of n.partitionBys)for(const I of O.partitionFields){const j=I.getField(e);j.found===void 0?I.log(`${I.refString} is not defined`):(0,Ki.expressionIsAnalytic)(j.found.typeDesc().expressionType)||(0,Ki.expressionIsUngroupedAggregate)(j.found.typeDesc().expressionType)?I.log("Partition expression must be scalar or aggregate"):R.push(I.nameString)}_.partitionBy=R}if(["sql_number","sql_string","sql_date","sql_timestamp","sql_boolean"].includes(l.name)){if(!this.inExperiment("sql_functions",!0)){const O=`Cannot use sql_function \`${l.name}\`; use \`sql_functions\` experiment to enable this behavior`;return this.log(O),(0,pa.errorFor)("sql_function used without enabling")}const R=h[0].value;if(R.node!=="stringLiteral")this.log(`Invalid string literal for \`${l.name}\``);else{const O=R.literal,I=Pye(O),j=I.filter(Y=>Y.type==="interpolation"&&Y.name.includes(".")).map(Y=>Y.type==="interpolation"?`\${${Y.name}}`:`\${${Y.value}}`);if(j.length>0){const Y=j.length===1?`'.' paths are not yet supported in sql interpolations, found ${j.at(0)}`:`'.' paths are not yet supported in sql interpolations, found (${j.join(", ")})`;return this.log(Y),(0,pa.errorFor)(`${Y}. See LookML \${...} documentation at https://cloud.google.com/looker/docs/reference/param-field-sql#sql_for_dimensions`)}const z=[];for(const Y of I)if(Y.type==="string")z.push(Y.value);else if(Y.name==="TABLE")z.push({node:"source-reference"});else{const Q=new Bye.FieldName(Y.name);this.has({name:Q});const se=e.lookup([Q]);if(se.found===void 0)return this.log(`Invalid interpolation: ${se.error}`),(0,pa.errorFor)("invalid interpolated field");se.found.refType==="parameter"?z.push({node:"parameter",path:[Y.name]}):z.push({node:"field",path:[Y.name]})}S=(0,Aq.composeSQLExpr)(z)}}if(A.dataType==="any")return this.log(`Invalid return type ${A.dataType} for function '${this.name}'`),(0,pa.errorFor)("invalid return type");const C=(0,Ki.mergeEvalSpaces)(...h.map(R=>R.evalSpace)),b=C==="constant"?"constant":(0,Ki.expressionIsScalar)(v)?C:"output";return{dataType:A.dataType,expressionType:v,value:S,evalSpace:b}}}Rp.ExprFunc=$ye;function kye(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,Ki.isExpressionTypeLEQ)(c.expressionType,h.expressionType)||o.push({argIndex:l,maxExpressionType:h.expressionType,actualExpressionType:c.expressionType,param:f})),(h.evalSpace==="literal"&&c.evalSpace!=="literal"||h.evalSpace==="constant"&&(c.evalSpace==="input"||c.evalSpace==="output")||(0,Ki.expressionIsAnalytic)(n.returnType.expressionType)&&c.evalSpace==="input")&&u.push({argIndex:l,param:f,maxEvalSpace:h.evalSpace,actualEvalSpace:c.evalSpace}),h.evalSpace==="literal"&&c.dataType==="null"&&a.push({argIndex:l,param:f}),p})){i=!1;break}f.isVariadic?l===e.length-1&&(s=!0):r++}if(!(!s&&(r!==e.length||r!==n.params.length))&&i)return{overload:n,expressionTypeErrors:o,evalSpaceErrors:u,nullabilityErrors:a}}}function Pye(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(QA,"__esModule",{value:!0}),QA.ExprProps=void 0;const Mye=oe,jye=Xn,Uye=rn,qye=wl,Hye=Il,zye=Ad,Qye=xt,Gye=Rp;class Wye extends Qye.ExpressionDef{constructor(e,n){super({expr:e,statements:n}),this.expr=e,this.statements=n,this.elementType="expression with props",this.legalChildTypes=Uye.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,Mye.expressionIsCalculation)(u.expressionType)))return s.log("Cannot filter an expresion with an aggregate or analytical computation"),n;i.push(...o)}return this.typeCheck(this.expr,{...n,expressionType:"scalar"})?{...n,value:{node:"filteredExpr",kids:{e:n.value,filterList:i}}}:(this.expr.log(`Cannot filter '${n.dataType}' data`),(0,jye.errorFor)("cannot filter type"))}return n}getExpression(e){const n=[];let r;const i=[],s=[];for(const u of this.statements)u instanceof zye.PartitionBy?this.expr.canSupportPartitionBy()?n.push(u):u.log("`partition_by` is not supported for this kind of expression"):u instanceof Hye.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 qye.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 Gye.ExprFunc?this.expr.getPropsExpression(e,{partitionBys:n,limit:r,orderBys:i}):this.expr.getExpression(e);return this.getFilteredExpression(e,o,s)}}QA.ExprProps=Wye;var GA={};Object.defineProperty(GA,"__esModule",{value:!0}),GA.ExprLogicalOp=void 0;const Vye=_p,vq=rn;class Yye extends Vye.BinaryBoolean{constructor(){super(...arguments),this.elementType="logical operator",this.legalChildTypes=[vq.FT.boolT,vq.FT.aggregateBoolT]}}GA.ExprLogicalOp=Yye;var WA={};Object.defineProperty(WA,"__esModule",{value:!0}),WA.ExprMax=void 0;const VA=rn,Xye=ha;class Jye extends Xye.ExprAggregateFunction{constructor(e){super("max",e),this.legalChildTypes=[VA.FT.numberT,VA.FT.stringT,VA.FT.dateT,VA.FT.timestampT]}returns(e){return e.dataType}}WA.ExprMax=Jye;var YA={};Object.defineProperty(YA,"__esModule",{value:!0}),YA.ExprMin=void 0;const XA=rn,Kye=ha;class Zye extends Kye.ExprAggregateFunction{constructor(e){super("min",e),this.legalChildTypes=[XA.FT.numberT,XA.FT.stringT,XA.FT.dateT,XA.FT.timestampT]}returns(e){return e.dataType}}YA.ExprMin=Zye;var JA={};Object.defineProperty(JA,"__esModule",{value:!0}),JA.ExprMinus=void 0;const eEe=Xn,Sq=rn,tEe=xt;class nEe extends tEe.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="unary minus",this.legalChildTypes=[Sq.FT.numberT]}getExpression(e){const n=this.expr.getExpression(e);return Sq.FT.typeIn(n,this.legalChildTypes)?{...n,dataType:"number",value:{node:"unary-",e:n.value}}:(0,eEe.errorFor)("negate requires number")}}JA.ExprMinus=nEe;var KA={};Object.defineProperty(KA,"__esModule",{value:!0}),KA.ExprMulDiv=void 0;const rEe=yd;class iEe extends rEe.BinaryNumeric{constructor(){super(...arguments),this.elementType="*/%"}}KA.ExprMulDiv=iEe;var ZA={},Op={};Object.defineProperty(Op,"__esModule",{value:!0}),Op.Unary=void 0;const sEe=xt;class oEe extends sEe.ExpressionDef{constructor(e){super({expr:e}),this.expr=e}}Op.Unary=oEe,Object.defineProperty(ZA,"__esModule",{value:!0}),ZA.ExprNot=void 0;const _q=rn,uEe=Op;class aEe extends uEe.Unary{constructor(e){super(e),this.elementType="not",this.legalChildTypes=[_q.FT.boolT,_q.FT.nullT]}getExpression(e){const n=this.expr.getExpression(e),r=this.typeCheck(this.expr,n);return{...n,dataType:"boolean",value:{node:"not",e:r?n.value:{node:"false"}}}}}ZA.ExprNot=aEe;var e4={};Object.defineProperty(e4,"__esModule",{value:!0}),e4.ExprNow=void 0;const lEe=xt;class cEe extends lEe.ExpressionDef{constructor(){super(...arguments),this.elementType="timestamp"}getExpression(e){return{dataType:"timestamp",expressionType:"scalar",evalSpace:"constant",value:{node:"now"}}}}e4.ExprNow=cEe;var t4={};Object.defineProperty(t4,"__esModule",{value:!0}),t4.ExprNULL=void 0;const fEe=xt;class xEe extends fEe.ExpressionDef{constructor(){super(...arguments),this.elementType="NULL"}getExpression(){return{dataType:"null",value:{node:"null"},expressionType:"scalar",evalSpace:"literal"}}}t4.ExprNULL=xEe;var n4={};Object.defineProperty(n4,"__esModule",{value:!0}),n4.ExprNumber=void 0;const dEe=rn,hEe=xt;class pEe extends hEe.ExpressionDef{constructor(e){super(),this.n=e,this.elementType="numeric literal"}getExpression(e){return this.constantExpression()}constantExpression(){return{...dEe.FT.numberT,evalSpace:"literal",value:{node:"numberLiteral",literal:this.n}}}}n4.ExprNumber=pEe;var r4={};Object.defineProperty(r4,"__esModule",{value:!0}),r4.ExprParens=void 0;const gEe=xt;class mEe extends gEe.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="(expression)"}requestExpression(e){return this.expr.requestExpression(e)}getExpression(e){const n=this.expr.getExpression(e);return{...n,value:{node:"()",e:n.value}}}}r4.ExprParens=mEe;var i4={};Object.defineProperty(i4,"__esModule",{value:!0}),i4.ExprRegEx=void 0;const yEe=xt;class EEe extends yEe.ExpressionDef{constructor(e){super(),this.regex=e,this.elementType="regular expression literal"}getExpression(){return{dataType:"regular expression",expressionType:"scalar",value:{node:"regexpLiteral",literal:this.regex},evalSpace:"literal"}}}i4.ExprRegEx=EEe;var s4={};Object.defineProperty(s4,"__esModule",{value:!0}),s4.ExprString=void 0;const AEe=xt,vEe=rn;class SEe extends AEe.ExpressionDef{constructor(e){super(),this.elementType="string literal",this.value=e}getExpression(e){return{...vEe.FT.stringT,value:{node:"stringLiteral",literal:this.value},evalSpace:"literal"}}}s4.ExprString=SEe;var o4={};Object.defineProperty(o4,"__esModule",{value:!0}),o4.ExprSum=void 0;const _Ee=Ed;class CEe extends _Ee.ExprAsymmetric{constructor(e,n,r){super("sum",e,n,r),this.has({source:n})}}o4.ExprSum=CEe;var u4={};Object.defineProperty(u4,"__esModule",{value:!0}),u4.ExprTimeExtract=void 0;const zc=oe,$l=Xn,eO=xt,bEe=Fl;class Dp extends eO.ExpressionDef{static extractor(e){const n=Dp.pluralMap[e];if(n)return n;if((0,zc.isExtractUnit)(e))return e}constructor(e,n){super({args:n}),this.extractText=e,this.args=n,this.elementType="timeExtract"}getExpression(e){const n=Dp.extractor(this.extractText);if(n){if(this.args.length!==1)return this.log(`Extraction function ${n} requires one argument`),(0,$l.errorFor)("{this.name} arg count");const r=this.args[0];if(r instanceof bEe.Range){let i=r.first.getExpression(e),s=r.last.getExpression(e);const o=(0,zc.maxExpressionType)(i.expressionType,s.expressionType),u=(0,zc.mergeEvalSpaces)(i.evalSpace,s.evalSpace);if(i.dataType==="error"||s.dataType==="error")return{dataType:"number",expressionType:o,evalSpace:u,value:(0,$l.errorFor)("extract from error").value};if(!(0,zc.isTimeFieldType)(i.dataType))return r.first.log(`Can't extract ${n} from '${i.dataType}'`),(0,$l.errorFor)(`${n} bad type ${i.dataType}`);if(!(0,zc.isTimeFieldType)(s.dataType))return r.last.log(`Cannot extract ${n} from '${s.dataType}'`),(0,$l.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,eO.getMorphicValue)(i,"timestamp");c&&(i=c,l=!1)}else{const c=(0,eO.getMorphicValue)(s,"timestamp");c&&(s=c,l=!1)}if(l)return r.first.log(`Cannot measure from ${i.dataType} to ${s.dataType}`),(0,$l.errorFor)(`${n} range mismatch`)}return["week","month","quarter","year"].includes(n)?(this.log(`Cannot measure interval using '${n}'`),(0,$l.errorFor)(`${n} civil extraction`)):(0,zc.isTimestampUnit)(n)?{dataType:"number",expressionType:o,evalSpace:u,value:{node:"timeDiff",units:n,kids:{left:{...i.value,dataType:a},right:{...s.value,dataType:a}}}}:(this.log(`Cannot extract ${n} from a range`),(0,$l.errorFor)(`${n} bad extraction`))}else{const i=r.getExpression(e);return(0,zc.isTimeFieldType)(i.dataType)?{dataType:"number",expressionType:i.expressionType,evalSpace:i.evalSpace,value:{node:"extract",e:{...i.value,dataType:i.dataType},units:n}}:(i.dataType!=="error"&&this.log(`${this.extractText}() requires time type, not '${i.dataType}'`),{dataType:"number",expressionType:i.expressionType,evalSpace:i.evalSpace,value:(0,$l.errorFor)(`${this.extractText} bad type ${i.dataType}`).value})}}throw this.internalError(`Illegal extraction unit '${this.extractText}'`)}}u4.ExprTimeExtract=Dp,Dp.pluralMap={years:"year",quarters:"quarter",months:"month",weeks:"week",days:"day",hours:"hour",minutes:"minute",seconds:"second"};var a4={},so={},l4={};Object.defineProperty(l4,"__esModule",{value:!0}),l4.QueryInputSpace=void 0;const TEe=_i,REe=dp,OEe=od;class DEe extends OEe.RefinedSpace{constructor(e,n){const r=new REe.SpaceSeed(e);super(r.structDef),this.queryOutput=n,this.extendList=[]}extendSource(e){this.pushFields(e),e instanceof TEe.Join?this.extendList.push(e.name.refString):this.extendList.push(e.defineName)}isQueryFieldSpace(){return!0}outputSpace(){return this.queryOutput}inputSpace(){return this}}l4.QueryInputSpace=DEe;var NEe=D&&D.__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]}),FEe=D&&D.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),wEe=D&&D.__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)&&NEe(e,t,n);return FEe(e,t),e};Object.defineProperty(so,"__esModule",{value:!0}),so.ReduceFieldSpace=so.QuerySpace=so.QueryOperationSpace=void 0;const c4=wEe(oe),tO=Rl,LEe=Bl,IEe=Fr,BEe=ht,$Ee=od,kEe=xp,PEe=Lr,MEe=l4;class Cq extends $Ee.RefinedSpace{constructor(e,n,r,i){super(e.emptyStructDef()),this.queryInputSpace=e,this.nestParent=r,this.astEl=i,this.expandedWild={},this.exprSpace=new MEe.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 PEe.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();c4.isAtomicFieldType(l.dataType)&&c4.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)}}so.QueryOperationSpace=Cq;class bq extends Cq{addRefineFromFields(e){var n;if(c4.isQuerySegment(e))for(const r of e.queryFields)if(r.type==="fieldref"){const i=this.exprSpace.lookup(r.path.map(s=>new LEe.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 kEe.ColumnSpaceField(r))}pushFields(...e){for(const n of e)n instanceof BEe.WildcardFieldReference?this.addWild(n):super.pushFields(n)}canContain(e){return!0}queryFieldDefs(){const e=[];for(const[n,r]of this.entries())if(r instanceof IEe.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)&&!UEe(s)&&e.push(s)}}return this.isComplete(),e}getQuerySegment(e){const n=this.getPipeSegment(e);if(c4.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,tO.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,tO.nameFromDef)(u)===s);o&&r.push(o)}n.extendSource=(0,tO.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}}so.QuerySpace=bq;class jEe extends bq{constructor(){super(...arguments),this.segmentType="reduce"}}so.ReduceFieldSpace=jEe;function UEe(t){return typeof t!="string"&&t.type==="turtle"&&t.pipeline.length===0}Object.defineProperty(a4,"__esModule",{value:!0}),a4.ExprUngroup=void 0;const Tq=oe,nO=Xn,qEe=so,HEe=rn,zEe=xt;class QEe extends zEe.ExpressionDef{constructor(e,n,r){super({expr:n,fields:r}),this.control=e,this.expr=n,this.fields=r,this.legalChildTypes=HEe.FT.anyAtomicT,this.elementType="ungroup"}returns(e){return"number"}getExpression(e){const n=this.expr.getExpression(e);if(!(0,Tq.expressionIsAggregate)(n.expressionType))return this.expr.log(`${this.control}() expression must be an aggregate`),(0,nO.errorFor)("ungrouped scalar");if((0,Tq.expressionIsUngroupedAggregate)(n.expressionType))return this.expr.log(`${this.control}() expression must not already be ungrouped`),(0,nO.errorFor)("doubly-ungrouped aggregate");const r={node:this.control,e:n.value};if(this.typeCheck(this.expr,{...n,expressionType:"scalar"})){if(e.isQueryFieldSpace()&&this.fields.length>0){const i=[],s=this.control==="exclude";for(const o of this.fields){let u=e.outputSpace(),a=!0;for(;u;){const l=u.lookup([o]);if(l.found&&l.isOutputField)i.push(o.refString),a=!1;else if(u instanceof qEe.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,nO.errorFor)("ungrouped type check")}}a4.ExprUngroup=QEe;var f4={};Object.defineProperty(f4,"__esModule",{value:!0}),f4.ForRange=void 0;const Rq=ko,rO=Xn,Oq=rn,x4=Yn,GEe=xt,d4=md,Dq=Fl;class WEe extends GEe.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=[Oq.FT.timestampT,Oq.FT.dateT]}apply(e,n,r){const i=this.from.getExpression(e),s=r.getExpression(e);if(!this.typeCheck(r,s))return(0,rO.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,Rq.mergeEvalSpaces)(i.evalSpace,s.evalSpace),expressionType:(0,Rq.maxExpressionType)(i.expressionType,s.expressionType),value:(0,rO.errorFor)("for not number").value};const u=this.timeframe.text;let a=(0,x4.resolution)(u);if(i.dataType==="timestamp"&&(a="timestamp"),s.dataType==="date"&&a==="date"){const p=this.from,m=(0,x4.timeOffset)("date",i.value,"+",o.value,u),g=new d4.ExprTime("date",m);return new Dq.Range(p,g).apply(e,n,r)}const l=d4.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,x4.castDateToTimestamp)(f),c=new d4.ExprTime("timestamp",f,i.expressionType)}const x=(0,x4.timeOffset)("timestamp",f,"+",o.value,u),h=new d4.ExprTime("timestamp",x,i.expressionType);return new Dq.Range(c,h).apply(e,n,l)}requestExpression(e){}getExpression(e){return this.log("A Range is not a value"),(0,rO.errorFor)("range has no value")}}f4.ForRange=WEe;var Jn={},bi={};Object.defineProperty(bi,"__esModule",{value:!0});class Qc extends Error{}class VEe extends Qc{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}}class YEe extends Qc{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}}class XEe extends Qc{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}}class Np extends Qc{}class Nq extends Qc{constructor(e){super(`Invalid unit ${e}`)}}class bs extends Qc{}class kl extends Qc{constructor(){super("Zone is an abstract class")}}const ke="numeric",oo="short",Zi="long",iO={year:ke,month:ke,day:ke},Fq={year:ke,month:oo,day:ke},JEe={year:ke,month:oo,day:ke,weekday:oo},wq={year:ke,month:Zi,day:ke},Lq={year:ke,month:Zi,day:ke,weekday:Zi},Iq={hour:ke,minute:ke},Bq={hour:ke,minute:ke,second:ke},$q={hour:ke,minute:ke,second:ke,timeZoneName:oo},kq={hour:ke,minute:ke,second:ke,timeZoneName:Zi},Pq={hour:ke,minute:ke,hourCycle:"h23"},Mq={hour:ke,minute:ke,second:ke,hourCycle:"h23"},jq={hour:ke,minute:ke,second:ke,hourCycle:"h23",timeZoneName:oo},Uq={hour:ke,minute:ke,second:ke,hourCycle:"h23",timeZoneName:Zi},qq={year:ke,month:ke,day:ke,hour:ke,minute:ke},Hq={year:ke,month:ke,day:ke,hour:ke,minute:ke,second:ke},zq={year:ke,month:oo,day:ke,hour:ke,minute:ke},Qq={year:ke,month:oo,day:ke,hour:ke,minute:ke,second:ke},KEe={year:ke,month:oo,day:ke,weekday:oo,hour:ke,minute:ke},Gq={year:ke,month:Zi,day:ke,hour:ke,minute:ke,timeZoneName:oo},Wq={year:ke,month:Zi,day:ke,hour:ke,minute:ke,second:ke,timeZoneName:oo},Vq={year:ke,month:Zi,day:ke,weekday:Zi,hour:ke,minute:ke,timeZoneName:Zi},Yq={year:ke,month:Zi,day:ke,weekday:Zi,hour:ke,minute:ke,second:ke,timeZoneName:Zi};function vt(t){return typeof t>"u"}function Gc(t){return typeof t=="number"}function h4(t){return typeof t=="number"&&t%1===0}function ZEe(t){return typeof t=="string"}function eAe(t){return Object.prototype.toString.call(t)==="[object Date]"}function Xq(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch{return!1}}function tAe(t){return Array.isArray(t)?t:[t]}function Jq(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 nAe(t,e){return e.reduce((n,r)=>(n[r]=t[r],n),{})}function vd(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function ga(t,e,n){return h4(t)&&t>=e&&t<=n}function rAe(t,e){return t-e*Math.floor(t/e)}function Dn(t,e=2){const n=t<0;let r;return n?r="-"+(""+-t).padStart(e,"0"):r=(""+t).padStart(e,"0"),r}function Pl(t){if(!(vt(t)||t===null||t===""))return parseInt(t,10)}function Wc(t){if(!(vt(t)||t===null||t===""))return parseFloat(t)}function sO(t){if(!(vt(t)||t===null||t==="")){const e=parseFloat("0."+t)*1e3;return Math.floor(e)}}function oO(t,e,n=!1){const r=10**e;return(n?Math.trunc:Math.round)(t*r)/r}function Fp(t){return t%4===0&&(t%100!==0||t%400===0)}function wp(t){return Fp(t)?366:365}function p4(t,e){const n=rAe(e-1,12)+1,r=t+(e-n)/12;return n===2?Fp(r)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][n-1]}function uO(t){let e=Date.UTC(t.year,t.month-1,t.day,t.hour,t.minute,t.second,t.millisecond);return t.year<100&&t.year>=0&&(e=new Date(e),e.setUTCFullYear(e.getUTCFullYear()-1900)),+e}function g4(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 aO(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 m4(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 Zq(t){const e=Number(t);if(typeof t=="boolean"||t===""||Number.isNaN(e))throw new bs(`Invalid unit value ${t}`);return e}function y4(t,e){const n={};for(const r in t)if(vd(t,r)){const i=t[r];if(i==null)continue;n[e(r)]=Zq(i)}return n}function Lp(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}${Dn(n,2)}:${Dn(r,2)}`;case"narrow":return`${i}${n}${r>0?`:${r}`:""}`;case"techie":return`${i}${Dn(n,2)}${Dn(r,2)}`;default:throw new RangeError(`Value format ${e} is out of range for property format`)}}function E4(t){return nAe(t,["hour","minute","second","millisecond"])}const eH=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/,iAe=["January","February","March","April","May","June","July","August","September","October","November","December"],tH=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],sAe=["J","F","M","A","M","J","J","A","S","O","N","D"];function nH(t){switch(t){case"narrow":return[...sAe];case"short":return[...tH];case"long":return[...iAe];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 rH=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],iH=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],oAe=["M","T","W","T","F","S","S"];function sH(t){switch(t){case"narrow":return[...oAe];case"short":return[...iH];case"long":return[...rH];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}const oH=["AM","PM"],uAe=["Before Christ","Anno Domini"],aAe=["BC","AD"],lAe=["B","A"];function uH(t){switch(t){case"narrow":return[...lAe];case"short":return[...aAe];case"long":return[...uAe];default:return null}}function cAe(t){return oH[t.hour<12?0:1]}function fAe(t,e){return sH(e)[t.weekday-1]}function xAe(t,e){return nH(e)[t.month-1]}function dAe(t,e){return uH(e)[t.year<0?0:1]}function hAe(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 aH(t,e){let n="";for(const r of t)r.literal?n+=r.val:n+=e(r.val);return n}const pAe={D:iO,DD:Fq,DDD:wq,DDDD:Lq,t:Iq,tt:Bq,ttt:$q,tttt:kq,T:Pq,TT:Mq,TTT:jq,TTTT:Uq,f:qq,ff:zq,fff:Gq,ffff:Vq,F:Hq,FF:Qq,FFF:Wq,FFFF:Yq};class Ti{static create(e,n={}){return new Ti(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 pAe[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 Dn(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?cAe(e):s({hour:"numeric",hourCycle:"h12"},"dayperiod"),a=(h,p)=>r?xAe(e,h):s(p?{month:h}:{month:h,day:"numeric"},"month"),l=(h,p)=>r?fAe(e,h):s(p?{weekday:h}:{weekday:h,month:"long",day:"numeric"},"weekday"),c=h=>{const p=Ti.macroTokenToFormatOpts(h);return p?this.formatWithSystemDefault(e,p):h},f=h=>r?dAe(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 aH(Ti.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=Ti.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 aH(s,i(u))}}class uo{constructor(e,n){this.reason=e,this.explanation=n}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}}let Sd=class{get type(){throw new kl}get name(){throw new kl}get ianaName(){return this.name}get isUniversal(){throw new kl}offsetName(e,n){throw new kl}formatOffset(e,n){throw new kl}offset(e){throw new kl}equals(e){throw new kl}get isValid(){throw new kl}},lO=null;class A4 extends Sd{static get instance(){return lO===null&&(lO=new A4),lO}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 Lp(this.offset(e),n)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type==="system"}get isValid(){return!0}}let v4={};function gAe(t){return v4[t]||(v4[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"})),v4[t]}const mAe={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function yAe(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 EAe(t,e){const n=t.formatToParts(e),r=[];for(let i=0;i<n.length;i++){const{type:s,value:o}=n[i],u=mAe[s];s==="era"?r[u]=o:vt(u)||(r[u]=parseInt(o,10))}return r}let S4={};class ou extends Sd{static create(e){return S4[e]||(S4[e]=new ou(e)),S4[e]}static resetCache(){S4={},v4={}}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=ou.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 Lp(this.offset(e),n)}offset(e){const n=new Date(e);if(isNaN(n))return NaN;const r=gAe(this.name);let[i,s,o,u,a,l,c]=r.formatToParts?EAe(r,n):yAe(r,n);u==="BC"&&(i=-Math.abs(i)+1);const x=uO({year:i,month:s,day:o,hour:a===24?0:a,minute:l,second:c,millisecond:0});let h=+n;const p=h%1e3;return h-=p>=0?p:1e3+p,(x-h)/(60*1e3)}equals(e){return e.type==="iana"&&e.name===this.name}get isValid(){return this.valid}}let cO=null;class Ir extends Sd{static get utcInstance(){return cO===null&&(cO=new Ir(0)),cO}static instance(e){return e===0?Ir.utcInstance:new Ir(e)}static parseSpecifier(e){if(e){const n=e.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(n)return new Ir(m4(n[1],n[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${Lp(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${Lp(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,n){return Lp(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 lH extends Sd{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 Ml(t,e){if(vt(t)||t===null)return e;if(t instanceof Sd)return t;if(ZEe(t)){const n=t.toLowerCase();return n==="local"||n==="system"?e:n==="utc"||n==="gmt"?Ir.utcInstance:Ir.parseSpecifier(n)||ou.create(t)}else return Gc(t)?Ir.instance(t):typeof t=="object"&&t.offset&&typeof t.offset=="number"?t:new lH(t)}let cH=()=>Date.now(),fH="system",xH=null,dH=null,hH=null,pH;class Nn{static get now(){return cH}static set now(e){cH=e}static set defaultZone(e){fH=e}static get defaultZone(){return Ml(fH,A4.instance)}static get defaultLocale(){return xH}static set defaultLocale(e){xH=e}static get defaultNumberingSystem(){return dH}static set defaultNumberingSystem(e){dH=e}static get defaultOutputCalendar(){return hH}static set defaultOutputCalendar(e){hH=e}static get throwOnInvalid(){return pH}static set throwOnInvalid(e){pH=e}static resetCaches(){cn.resetCache(),ou.resetCache()}}let gH={};function AAe(t,e={}){const n=JSON.stringify([t,e]);let r=gH[n];return r||(r=new Intl.ListFormat(t,e),gH[n]=r),r}let fO={};function xO(t,e={}){const n=JSON.stringify([t,e]);let r=fO[n];return r||(r=new Intl.DateTimeFormat(t,e),fO[n]=r),r}let dO={};function vAe(t,e={}){const n=JSON.stringify([t,e]);let r=dO[n];return r||(r=new Intl.NumberFormat(t,e),dO[n]=r),r}let hO={};function SAe(t,e={}){const{base:n,...r}=e,i=JSON.stringify([t,r]);let s=hO[i];return s||(s=new Intl.RelativeTimeFormat(t,e),hO[i]=s),s}let Ip=null;function _Ae(){return Ip||(Ip=new Intl.DateTimeFormat().resolvedOptions().locale,Ip)}function CAe(t){const e=t.indexOf("-u-");if(e===-1)return[t];{let n;const r=t.substring(0,e);try{n=xO(t).resolvedOptions()}catch{n=xO(r).resolvedOptions()}const{numberingSystem:i,calendar:s}=n;return[r,i,s]}}function bAe(t,e,n){return(n||e)&&(t+="-u",n&&(t+=`-ca-${n}`),e&&(t+=`-nu-${e}`)),t}function TAe(t){const e=[];for(let n=1;n<=12;n++){const r=ot.utc(2016,n,1);e.push(t(r))}return e}function RAe(t){const e=[];for(let n=1;n<=7;n++){const r=ot.utc(2016,11,13+n);e.push(t(r))}return e}function _4(t,e,n,r,i){const s=t.listingMode(n);return s==="error"?null:s==="en"?r(e):i(e)}function OAe(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 DAe{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=vAe(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):oO(e,3);return Dn(n,this.padTo)}}}class NAe{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&&ou.create(u).valid?(i=u,this.dt=e):(i="UTC",r.timeZoneName?this.dt=e:this.dt=e.offset===0?e:ot.fromMillis(e.ts+e.offset*60*1e3))}else e.zone.type==="system"?this.dt=e:(this.dt=e,i=e.zone.name);const s={...this.opts};i&&(s.timeZone=i),this.dtf=xO(n,s)}format(){return this.dtf.format(this.dt.toJSDate())}formatToParts(){return this.dtf.formatToParts(this.dt.toJSDate())}resolvedOptions(){return this.dtf.resolvedOptions()}}class FAe{constructor(e,n,r){this.opts={style:"long",...r},!n&&Xq()&&(this.rtf=SAe(e,r))}format(e,n){return this.rtf?this.rtf.format(e,n):hAe(n,e,this.opts.numeric,this.opts.style!=="long")}formatToParts(e,n){return this.rtf?this.rtf.formatToParts(e,n):[]}}class cn{static fromOpts(e){return cn.create(e.locale,e.numberingSystem,e.outputCalendar,e.defaultToEN)}static create(e,n,r,i=!1){const s=e||Nn.defaultLocale,o=s||(i?"en-US":_Ae()),u=n||Nn.defaultNumberingSystem,a=r||Nn.defaultOutputCalendar;return new cn(o,u,a,s)}static resetCache(){Ip=null,fO={},dO={},hO={}}static fromObject({locale:e,numberingSystem:n,outputCalendar:r}={}){return cn.create(e,n,r)}constructor(e,n,r,i){const[s,o,u]=CAe(e);this.locale=s,this.numberingSystem=n||o||null,this.outputCalendar=r||u||null,this.intl=bAe(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=OAe(this)),this.fastNumbersCached}listingMode(){const e=this.isEnglish(),n=(this.numberingSystem===null||this.numberingSystem==="latn")&&(this.outputCalendar===null||this.outputCalendar==="gregory");return e&&n?"en":"intl"}clone(e){return!e||Object.getOwnPropertyNames(e).length===0?this:cn.create(e.locale||this.specifiedLocale,e.numberingSystem||this.numberingSystem,e.outputCalendar||this.outputCalendar,e.defaultToEN||!1)}redefaultToEN(e={}){return this.clone({...e,defaultToEN:!0})}redefaultToSystem(e={}){return this.clone({...e,defaultToEN:!1})}months(e,n=!1,r=!0){return _4(this,e,r,nH,()=>{const i=n?{month:e,day:"numeric"}:{month:e},s=n?"format":"standalone";return this.monthsCache[s][e]||(this.monthsCache[s][e]=TAe(o=>this.extract(o,i,"month"))),this.monthsCache[s][e]})}weekdays(e,n=!1,r=!0){return _4(this,e,r,sH,()=>{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]=RAe(o=>this.extract(o,i,"weekday"))),this.weekdaysCache[s][e]})}meridiems(e=!0){return _4(this,void 0,e,()=>oH,()=>{if(!this.meridiemCache){const n={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[ot.utc(2016,11,13,9),ot.utc(2016,11,13,19)].map(r=>this.extract(r,n,"dayperiod"))}return this.meridiemCache})}eras(e,n=!0){return _4(this,e,n,uH,()=>{const r={era:e};return this.eraCache[e]||(this.eraCache[e]=[ot.utc(-40,1,1),ot.utc(2017,1,1)].map(i=>this.extract(i,r,"era"))),this.eraCache[e]})}extract(e,n,r){const i=this.dtFormatter(e,n),s=i.formatToParts(),o=s.find(u=>u.type.toLowerCase()===r);return o?o.value:null}numberFormatter(e={}){return new DAe(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,n={}){return new NAe(e,this.intl,n)}relFormatter(e={}){return new FAe(this.intl,this.isEnglish(),e)}listFormatter(e={}){return AAe(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 _d(...t){const e=t.reduce((n,r)=>n+r.source,"");return RegExp(`^${e}$`)}function Cd(...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 bd(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 mH(...t){return(e,n)=>{const r={};let i;for(i=0;i<t.length;i++)r[t[i]]=Pl(e[n+i]);return[r,null,n+i]}}const yH=/(?:(Z)|([+-]\d\d)(?::?(\d\d))?)/,wAe=`(?:${yH.source}?(?:\\[(${eH.source})\\])?)?`,pO=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,EH=RegExp(`${pO.source}${wAe}`),gO=RegExp(`(?:T${EH.source})?`),LAe=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,IAe=/(\d{4})-?W(\d\d)(?:-?(\d))?/,BAe=/(\d{4})-?(\d{3})/,$Ae=mH("weekYear","weekNumber","weekDay"),kAe=mH("year","ordinal"),PAe=/(\d{4})-(\d\d)-(\d\d)/,AH=RegExp(`${pO.source} ?(?:${yH.source}|(${eH.source}))?`),MAe=RegExp(`(?: ${AH.source})?`);function Td(t,e,n){const r=t[e];return vt(r)?n:Pl(r)}function jAe(t,e){return[{year:Td(t,e),month:Td(t,e+1,1),day:Td(t,e+2,1)},null,e+3]}function Rd(t,e){return[{hours:Td(t,e,0),minutes:Td(t,e+1,0),seconds:Td(t,e+2,0),milliseconds:sO(t[e+3])},null,e+4]}function Bp(t,e){const n=!t[e]&&!t[e+1],r=m4(t[e+1],t[e+2]),i=n?null:Ir.instance(r);return[{},i,e+3]}function $p(t,e){const n=t[e]?ou.create(t[e]):null;return[{},n,e+1]}const UAe=RegExp(`^T?${pO.source}$`),qAe=/^-?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 HAe(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(Wc(n)),months:x(Wc(r)),weeks:x(Wc(i)),days:x(Wc(s)),hours:x(Wc(o)),minutes:x(Wc(u)),seconds:x(Wc(a),a==="-0"),milliseconds:x(sO(l),f)}]}const zAe={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 mO(t,e,n,r,i,s,o){const u={year:e.length===2?aO(Pl(e)):Pl(e),month:tH.indexOf(n)+1,day:Pl(r),hour:Pl(i),minute:Pl(s)};return o&&(u.second=Pl(o)),t&&(u.weekday=t.length>3?rH.indexOf(t)+1:iH.indexOf(t)+1),u}const QAe=/^(?:(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 GAe(t){const[,e,n,r,i,s,o,u,a,l,c,f]=t,x=mO(e,i,r,n,s,o,u);let h;return a?h=zAe[a]:l?h=0:h=m4(c,f),[x,new Ir(h)]}function WAe(t){return t.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}const VAe=/^(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$/,YAe=/^(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$/,XAe=/^(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 vH(t){const[,e,n,r,i,s,o,u]=t;return[mO(e,i,r,n,s,o,u),Ir.utcInstance]}function JAe(t){const[,e,n,r,i,s,o,u]=t;return[mO(e,u,n,r,i,s,o),Ir.utcInstance]}const KAe=_d(LAe,gO),ZAe=_d(IAe,gO),e4e=_d(BAe,gO),t4e=_d(EH),SH=Cd(jAe,Rd,Bp,$p),n4e=Cd($Ae,Rd,Bp,$p),r4e=Cd(kAe,Rd,Bp,$p),i4e=Cd(Rd,Bp,$p);function s4e(t){return bd(t,[KAe,SH],[ZAe,n4e],[e4e,r4e],[t4e,i4e])}function o4e(t){return bd(WAe(t),[QAe,GAe])}function u4e(t){return bd(t,[VAe,vH],[YAe,vH],[XAe,JAe])}function a4e(t){return bd(t,[qAe,HAe])}const l4e=Cd(Rd);function c4e(t){return bd(t,[UAe,l4e])}const f4e=_d(PAe,MAe),x4e=_d(AH),d4e=Cd(Rd,Bp,$p);function h4e(t){return bd(t,[f4e,SH],[x4e,d4e])}const p4e="Invalid Duration",_H={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}},g4e={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},..._H},Ts=146097/400,Od=146097/4800,m4e={years:{quarters:4,months:12,weeks:Ts/7,days:Ts,hours:Ts*24,minutes:Ts*24*60,seconds:Ts*24*60*60,milliseconds:Ts*24*60*60*1e3},quarters:{months:3,weeks:Ts/28,days:Ts/4,hours:Ts*24/4,minutes:Ts*24*60/4,seconds:Ts*24*60*60/4,milliseconds:Ts*24*60*60*1e3/4},months:{weeks:Od/7,days:Od,hours:Od*24,minutes:Od*24*60,seconds:Od*24*60*60,milliseconds:Od*24*60*60*1e3},..._H},Vc=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],y4e=Vc.slice(0).reverse();function Yc(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 St(r)}function E4e(t){return t<0?Math.floor(t):Math.ceil(t)}function CH(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?E4e(o):Math.trunc(o);r[i]+=a,e[n]-=a*s}function A4e(t,e){y4e.reduce((n,r)=>vt(e[r])?n:(n&&CH(t,e,n,e,r),r),null)}class St{constructor(e){const n=e.conversionAccuracy==="longterm"||!1;this.values=e.values,this.loc=e.loc||cn.create(),this.conversionAccuracy=n?"longterm":"casual",this.invalid=e.invalid||null,this.matrix=n?m4e:g4e,this.isLuxonDuration=!0}static fromMillis(e,n){return St.fromObject({milliseconds:e},n)}static fromObject(e,n={}){if(e==null||typeof e!="object")throw new bs(`Duration.fromObject: argument expected to be an object, got ${e===null?"null":typeof e}`);return new St({values:y4(e,St.normalizeUnit),loc:cn.fromObject(n),conversionAccuracy:n.conversionAccuracy})}static fromDurationLike(e){if(Gc(e))return St.fromMillis(e);if(St.isDuration(e))return e;if(typeof e=="object")return St.fromObject(e);throw new bs(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,n){const[r]=a4e(e);return r?St.fromObject(r,n):St.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static fromISOTime(e,n){const[r]=c4e(e);return r?St.fromObject(r,n):St.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static invalid(e,n=null){if(!e)throw new bs("need to specify a reason the Duration is invalid");const r=e instanceof uo?e:new uo(e,n);if(Nn.throwOnInvalid)throw new XEe(r);return new St({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 Nq(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?Ti.create(this.loc,r).formatDurationFromString(this,e):p4e}toHuman(e={}){const n=Vc.map(r=>{const i=this.values[r];return vt(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+=oO(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=St.fromDurationLike(e),r={};for(const i of Vc)(vd(n.values,i)||vd(this.values,i))&&(r[i]=n.get(i)+this.get(i));return Yc(this,{values:r},!0)}minus(e){if(!this.isValid)return this;const n=St.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]=Zq(e(this.values[r],r));return Yc(this,{values:n},!0)}get(e){return this[St.normalizeUnit(e)]}set(e){if(!this.isValid)return this;const n={...this.values,...y4(e,St.normalizeUnit)};return Yc(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),Yc(this,s)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;const e=this.toObject();return A4e(this.matrix,e),Yc(this,{values:e},!0)}shiftTo(...e){if(!this.isValid)return this;if(e.length===0)return this;e=e.map(o=>St.normalizeUnit(o));const n={},r={},i=this.toObject();let s;for(const o of Vc)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;Gc(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)Vc.indexOf(l)>Vc.indexOf(o)&&CH(this.matrix,i,l,n,o)}else Gc(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 Yc(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 Yc(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 Vc)if(!n(this.values[r],e.values[r]))return!1;return!0}}const kp="Invalid Interval";function v4e(t,e){return!t||!t.isValid?fn.invalid("missing or invalid start"):!e||!e.isValid?fn.invalid("missing or invalid end"):e<t?fn.invalid("end before start",`The end of an interval must be after its start, but you had start=${t.toISO()} and end=${e.toISO()}`):null}class fn{constructor(e){this.s=e.start,this.e=e.end,this.invalid=e.invalid||null,this.isLuxonInterval=!0}static invalid(e,n=null){if(!e)throw new bs("need to specify a reason the Interval is invalid");const r=e instanceof uo?e:new uo(e,n);if(Nn.throwOnInvalid)throw new YEe(r);return new fn({invalid:r})}static fromDateTimes(e,n){const r=Up(e),i=Up(n),s=v4e(r,i);return s??new fn({start:r,end:i})}static after(e,n){const r=St.fromDurationLike(n),i=Up(e);return fn.fromDateTimes(i,i.plus(r))}static before(e,n){const r=St.fromDurationLike(n),i=Up(e);return fn.fromDateTimes(i.minus(r),i)}static fromISO(e,n){const[r,i]=(e||"").split("/",2);if(r&&i){let s,o;try{s=ot.fromISO(r,n),o=s.isValid}catch{o=!1}let u,a;try{u=ot.fromISO(i,n),a=u.isValid}catch{a=!1}if(o&&a)return fn.fromDateTimes(s,u);if(o){const l=St.fromISO(i,n);if(l.isValid)return fn.after(s,l)}else if(a){const l=St.fromISO(r,n);if(l.isValid)return fn.before(u,l)}}return fn.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static isInterval(e){return e&&e.isLuxonInterval||!1}get start(){return this.isValid?this.s:null}get end(){return this.isValid?this.e:null}get isValid(){return this.invalidReason===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}length(e="milliseconds"){return this.isValid?this.toDuration(e).get(e):NaN}count(e="milliseconds"){if(!this.isValid)return NaN;const n=this.start.startOf(e),r=this.end.startOf(e);return Math.floor(r.diff(n,e).get(e))+1}hasSame(e){return this.isValid?this.isEmpty()||this.e.minus(1).hasSame(this.s,e):!1}isEmpty(){return this.s.valueOf()===this.e.valueOf()}isAfter(e){return this.isValid?this.s>e:!1}isBefore(e){return this.isValid?this.e<=e:!1}contains(e){return this.isValid?this.s<=e&&this.e>e:!1}set({start:e,end:n}={}){return this.isValid?fn.fromDateTimes(e||this.s,n||this.e):this}splitAt(...e){if(!this.isValid)return[];const n=e.map(Up).filter(o=>this.contains(o)).sort(),r=[];let{s:i}=this,s=0;for(;i<this.e;){const o=n[s]||this.e,u=+o>+this.e?this.e:o;r.push(fn.fromDateTimes(i,u)),i=u,s+=1}return r}splitBy(e){const n=St.fromDurationLike(e);if(!this.isValid||!n.isValid||n.as("milliseconds")===0)return[];let{s:r}=this,i=1,s;const o=[];for(;r<this.e;){const u=this.start.plus(n.mapUnits(a=>a*i));s=+u>+this.e?this.e:u,o.push(fn.fromDateTimes(r,s)),r=s,i+=1}return o}divideEqually(e){return this.isValid?this.splitBy(this.length()/e).slice(0,e):[]}overlaps(e){return this.e>e.s&&this.s<e.e}abutsStart(e){return this.isValid?+this.e==+e.s:!1}abutsEnd(e){return this.isValid?+e.e==+this.s:!1}engulfs(e){return this.isValid?this.s<=e.s&&this.e>=e.e:!1}equals(e){return!this.isValid||!e.isValid?!1:this.s.equals(e.s)&&this.e.equals(e.e)}intersection(e){if(!this.isValid)return this;const n=this.s>e.s?this.s:e.s,r=this.e<e.e?this.e:e.e;return n>=r?null:fn.fromDateTimes(n,r)}union(e){if(!this.isValid)return this;const n=this.s<e.s?this.s:e.s,r=this.e>e.e?this.e:e.e;return fn.fromDateTimes(n,r)}static merge(e){const[n,r]=e.sort((i,s)=>i.s-s.s).reduce(([i,s],o)=>s?s.overlaps(o)||s.abutsStart(o)?[i,s.union(o)]:[i.concat([s]),o]:[i,o],[[],null]);return r&&n.push(r),n}static xor(e){let n=null,r=0;const i=[],s=e.map(a=>[{time:a.s,type:"s"},{time:a.e,type:"e"}]),o=Array.prototype.concat(...s),u=o.sort((a,l)=>a.time-l.time);for(const a of u)r+=a.type==="s"?1:-1,r===1?n=a.time:(n&&+n!=+a.time&&i.push(fn.fromDateTimes(n,a.time)),n=null);return fn.merge(i)}difference(...e){return fn.xor([this].concat(e)).map(n=>this.intersection(n)).filter(n=>n&&!n.isEmpty())}toString(){return this.isValid?`[${this.s.toISO()} – ${this.e.toISO()})`:kp}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:kp}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:kp}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:kp}toFormat(e,{separator:n=" – "}={}){return this.isValid?`${this.s.toFormat(e)}${n}${this.e.toFormat(e)}`:kp}toDuration(e,n){return this.isValid?this.e.diff(this.s,e,n):St.invalid(this.invalidReason)}mapEndpoints(e){return fn.fromDateTimes(e(this.s),e(this.e))}}let Pp=class{static hasDST(e=Nn.defaultZone){const n=ot.now().setZone(e).set({month:12});return!e.isUniversal&&n.offset!==n.set({month:6}).offset}static isValidIANAZone(e){return ou.isValidZone(e)}static normalizeZone(e){return Ml(e,Nn.defaultZone)}static months(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||cn.create(n,r,s)).months(e)}static monthsFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||cn.create(n,r,s)).months(e,!0)}static weekdays(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null}={}){return(i||cn.create(n,r,null)).weekdays(e)}static weekdaysFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null}={}){return(i||cn.create(n,r,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return cn.create(e).meridiems()}static eras(e="short",{locale:n=null}={}){return cn.create(n,null,"gregory").eras(e)}static features(){return{relative:Xq()}}};function bH(t,e){const n=i=>i.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),r=n(e)-n(t);return Math.floor(St.fromMillis(r).as("days"))}function S4e(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=bH(u,a);return(l-l%7)/7}],["days",bH]],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 _4e(t,e,n,r){let[i,s,o,u]=S4e(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=St.fromObject(s,r);return l.length>0?St.fromMillis(a,r).shiftTo(...l).plus(c):c}const yO={arab:"[٠-٩]",arabext:"[۰-۹]",bali:"[᭐-᭙]",beng:"[০-৯]",deva:"[०-९]",fullwide:"[0-9]",gujr:"[૦-૯]",hanidec:"[〇|一|二|三|四|五|六|七|八|九]",khmr:"[០-៩]",knda:"[೦-೯]",laoo:"[໐-໙]",limb:"[᥆-᥏]",mlym:"[൦-൯]",mong:"[᠐-᠙]",mymr:"[၀-၉]",orya:"[୦-୯]",tamldec:"[௦-௯]",telu:"[౦-౯]",thai:"[๐-๙]",tibt:"[༠-༩]",latn:"\\d"},TH={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]},C4e=yO.hanidec.replace(/[\[|\]]/g,"").split("");function b4e(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(yO.hanidec)!==-1)e+=C4e.indexOf(t[n]);else for(const i in TH){const[s,o]=TH[i];r>=s&&r<=o&&(e+=r-s)}}return parseInt(e,10)}else return e}function ao({numberingSystem:t},e=""){return new RegExp(`${yO[t||"latn"]}${e}`)}const T4e="missing Intl.DateTimeFormat.formatToParts support";function wt(t,e=n=>n){return{regex:t,deser:([n])=>e(b4e(n))}}const RH="[ ]",OH=new RegExp(RH,"g");function R4e(t){return t.replace(/\./g,"\\.?").replace(OH,RH)}function DH(t){return t.replace(/\./g,"").replace(OH," ").toLowerCase()}function lo(t,e){return t===null?null:{regex:RegExp(t.map(R4e).join("|")),deser:([n])=>t.findIndex(r=>DH(n)===DH(r))+e}}function NH(t,e){return{regex:t,deser:([,n,r])=>m4(n,r),groups:e}}function EO(t){return{regex:t,deser:([e])=>e}}function O4e(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function D4e(t,e){const n=ao(e),r=ao(e,"{2}"),i=ao(e,"{3}"),s=ao(e,"{4}"),o=ao(e,"{6}"),u=ao(e,"{1,2}"),a=ao(e,"{1,3}"),l=ao(e,"{1,6}"),c=ao(e,"{1,9}"),f=ao(e,"{2,4}"),x=ao(e,"{4,6}"),h=g=>({regex:RegExp(O4e(g.val)),deser:([y])=>y,literal:!0}),m=(g=>{if(t.literal)return h(g);switch(g.val){case"G":return lo(e.eras("short",!1),0);case"GG":return lo(e.eras("long",!1),0);case"y":return wt(l);case"yy":return wt(f,aO);case"yyyy":return wt(s);case"yyyyy":return wt(x);case"yyyyyy":return wt(o);case"M":return wt(u);case"MM":return wt(r);case"MMM":return lo(e.months("short",!0,!1),1);case"MMMM":return lo(e.months("long",!0,!1),1);case"L":return wt(u);case"LL":return wt(r);case"LLL":return lo(e.months("short",!1,!1),1);case"LLLL":return lo(e.months("long",!1,!1),1);case"d":return wt(u);case"dd":return wt(r);case"o":return wt(a);case"ooo":return wt(i);case"HH":return wt(r);case"H":return wt(u);case"hh":return wt(r);case"h":return wt(u);case"mm":return wt(r);case"m":return wt(u);case"q":return wt(u);case"qq":return wt(r);case"s":return wt(u);case"ss":return wt(r);case"S":return wt(a);case"SSS":return wt(i);case"u":return EO(c);case"uu":return EO(u);case"uuu":return wt(n);case"a":return lo(e.meridiems(),0);case"kkkk":return wt(s);case"kk":return wt(f,aO);case"W":return wt(u);case"WW":return wt(r);case"E":case"c":return wt(n);case"EEE":return lo(e.weekdays("short",!1,!1),1);case"EEEE":return lo(e.weekdays("long",!1,!1),1);case"ccc":return lo(e.weekdays("short",!0,!1),1);case"cccc":return lo(e.weekdays("long",!0,!1),1);case"Z":case"ZZ":return NH(new RegExp(`([+-]${u.source})(?::(${r.source}))?`),2);case"ZZZ":return NH(new RegExp(`([+-]${u.source})(${r.source})?`),2);case"z":return EO(/[a-z_+-/]{1,256}?/i);default:return h(g)}})(t)||{invalidReason:T4e};return m.token=t,m}const N4e={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 F4e(t,e,n){const{type:r,value:i}=t;if(r==="literal")return{literal:!0,val:i};const s=n[r];let o=N4e[r];if(typeof o=="object"&&(o=o[s]),o)return{literal:!1,val:o}}function w4e(t){return[`^${t.map(n=>n.regex).reduce((n,r)=>`${n}(${r.source})`,"")}$`,t]}function L4e(t,e,n){const r=t.match(e);if(r){const i={};let s=1;for(const o in n)if(vd(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 I4e(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 vt(t.z)||(n=ou.create(t.z)),vt(t.Z)||(n||(n=new Ir(t.Z)),r=t.Z),vt(t.q)||(t.M=(t.q-1)*3+1),vt(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),vt(t.u)||(t.S=sO(t.u)),[Object.keys(t).reduce((s,o)=>{const u=e(o);return u&&(s[u]=t[o]),s},{}),n,r]}let AO=null;function B4e(){return AO||(AO=ot.fromMillis(1555555555555)),AO}function $4e(t,e){if(t.literal)return t;const n=Ti.macroTokenToFormatOpts(t.val);if(!n)return t;const s=Ti.create(e,n).formatDateTimeParts(B4e()).map(o=>F4e(o,e,n));return s.includes(void 0)?t:s}function k4e(t,e){return Array.prototype.concat(...t.map(n=>$4e(n,e)))}function FH(t,e,n){const r=k4e(Ti.parseFormat(n),t),i=r.map(o=>D4e(o,t)),s=i.find(o=>o.invalidReason);if(s)return{input:e,tokens:r,invalidReason:s.invalidReason};{const[o,u]=w4e(i),a=RegExp(o,"i"),[l,c]=L4e(e,a,u),[f,x,h]=c?I4e(c):[null,null,void 0];if(vd(c,"a")&&vd(c,"H"))throw new Np("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 P4e(t,e,n){const{result:r,zone:i,specificOffset:s,invalidReason:o}=FH(t,e,n);return[r,i,s,o]}const wH=[0,31,59,90,120,151,181,212,243,273,304,334],LH=[0,31,60,91,121,152,182,213,244,274,305,335];function Rs(t,e){return new uo("unit out of range",`you specified ${e} (of type ${typeof e}) as a ${t}, which is invalid`)}function IH(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 BH(t,e,n){return n+(Fp(t)?LH:wH)[e-1]}function $H(t,e){const n=Fp(t)?LH:wH,r=n.findIndex(s=>s<e),i=e-n[r];return{month:r+1,day:i}}function vO(t){const{year:e,month:n,day:r}=t,i=BH(e,n,r),s=IH(e,n,r);let o=Math.floor((i-s+10)/7),u;return o<1?(u=e-1,o=g4(u)):o>g4(e)?(u=e+1,o=1):u=e,{weekYear:u,weekNumber:o,weekday:s,...E4(t)}}function kH(t){const{weekYear:e,weekNumber:n,weekday:r}=t,i=IH(e,1,4),s=wp(e);let o=n*7+r-i-3,u;o<1?(u=e-1,o+=wp(u)):o>s?(u=e+1,o-=wp(e)):u=e;const{month:a,day:l}=$H(u,o);return{year:u,month:a,day:l,...E4(t)}}function SO(t){const{year:e,month:n,day:r}=t,i=BH(e,n,r);return{year:e,ordinal:i,...E4(t)}}function PH(t){const{year:e,ordinal:n}=t,{month:r,day:i}=$H(e,n);return{year:e,month:r,day:i,...E4(t)}}function M4e(t){const e=h4(t.weekYear),n=ga(t.weekNumber,1,g4(t.weekYear)),r=ga(t.weekday,1,7);return e?n?r?!1:Rs("weekday",t.weekday):Rs("week",t.week):Rs("weekYear",t.weekYear)}function j4e(t){const e=h4(t.year),n=ga(t.ordinal,1,wp(t.year));return e?n?!1:Rs("ordinal",t.ordinal):Rs("year",t.year)}function MH(t){const e=h4(t.year),n=ga(t.month,1,12),r=ga(t.day,1,p4(t.year,t.month));return e?n?r?!1:Rs("day",t.day):Rs("month",t.month):Rs("year",t.year)}function jH(t){const{hour:e,minute:n,second:r,millisecond:i}=t,s=ga(e,0,23)||e===24&&n===0&&r===0&&i===0,o=ga(n,0,59),u=ga(r,0,59),a=ga(i,0,999);return s?o?u?a?!1:Rs("millisecond",i):Rs("second",r):Rs("minute",n):Rs("hour",e)}const _O="Invalid DateTime",UH=864e13;function C4(t){return new uo("unsupported zone",`the zone "${t.name}" is not supported`)}function CO(t){return t.weekData===null&&(t.weekData=vO(t.c)),t.weekData}function Mp(t,e){const n={ts:t.ts,zone:t.zone,c:t.c,o:t.o,loc:t.loc,invalid:t.invalid};return new ot({...n,...e,old:n})}function qH(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 HH(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 b4(t,e,n){return qH(uO(t),e,n)}function zH(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,p4(r,i))+Math.trunc(e.days)+Math.trunc(e.weeks)*7},o=St.fromObject({years:e.years-Math.trunc(e.years),quarters:e.quarters-Math.trunc(e.quarters),months:e.months-Math.trunc(e.months),weeks:e.weeks-Math.trunc(e.weeks),days:e.days-Math.trunc(e.days),hours:e.hours,minutes:e.minutes,seconds:e.seconds,milliseconds:e.milliseconds}).as("milliseconds"),u=uO(s);let[a,l]=qH(u,n,t.zone);return o!==0&&(a+=o,l=t.zone.offset(a)),{ts:a,o:l}}function jp(t,e,n,r,i,s){const{setZone:o,zone:u}=n;if(t&&Object.keys(t).length!==0){const a=e||u,l=ot.fromObject(t,{...n,zone:a,specificOffset:s});return o?l:l.setZone(u)}else return ot.invalid(new uo("unparsable",`the input "${i}" can't be parsed as ${r}`))}function T4(t,e,n=!0){return t.isValid?Ti.create(cn.create("en-US"),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(t,e):null}function bO(t,e){const n=t.c.year>9999||t.c.year<0;let r="";return n&&t.c.year>=0&&(r+="+"),r+=Dn(t.c.year,n?6:4),e?(r+="-",r+=Dn(t.c.month),r+="-",r+=Dn(t.c.day)):(r+=Dn(t.c.month),r+=Dn(t.c.day)),r}function QH(t,e,n,r,i,s){let o=Dn(t.c.hour);return e?(o+=":",o+=Dn(t.c.minute),(t.c.second!==0||!n)&&(o+=":")):o+=Dn(t.c.minute),(t.c.second!==0||!n)&&(o+=Dn(t.c.second),(t.c.millisecond!==0||!r)&&(o+=".",o+=Dn(t.c.millisecond,3))),i&&(t.isOffsetFixed&&t.offset===0&&!s?o+="Z":t.o<0?(o+="-",o+=Dn(Math.trunc(-t.o/60)),o+=":",o+=Dn(Math.trunc(-t.o%60))):(o+="+",o+=Dn(Math.trunc(t.o/60)),o+=":",o+=Dn(Math.trunc(t.o%60)))),s&&(o+="["+t.zone.ianaName+"]"),o}const GH={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},U4e={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},q4e={ordinal:1,hour:0,minute:0,second:0,millisecond:0},WH=["year","month","day","hour","minute","second","millisecond"],H4e=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],z4e=["year","ordinal","hour","minute","second","millisecond"];function VH(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 Nq(t);return e}function YH(t,e){const n=Ml(e.zone,Nn.defaultZone),r=cn.fromObject(e),i=Nn.now();let s,o;if(vt(t.year))s=i;else{for(const l of WH)vt(t[l])&&(t[l]=GH[l]);const u=MH(t)||jH(t);if(u)return ot.invalid(u);const a=n.offset(i);[s,o]=b4(t,a,n)}return new ot({ts:s,zone:n,loc:r,o})}function XH(t,e,n){const r=vt(n.round)?!0:n.round,i=(o,u)=>(o=oO(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 JH(t){let e={},n;return t.length>0&&typeof t[t.length-1]=="object"?(e=t[t.length-1],n=Array.from(t).slice(0,t.length-1)):n=Array.from(t),[e,n]}class ot{constructor(e){const n=e.zone||Nn.defaultZone;let r=e.invalid||(Number.isNaN(e.ts)?new uo("invalid input"):null)||(n.isValid?null:C4(n));this.ts=vt(e.ts)?Nn.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=HH(this.ts,u),r=Number.isNaN(i.year)?new uo("invalid input"):null,i=r?null:i,s=r?null:u}this._zone=n,this.loc=e.loc||cn.create(),this.invalid=r,this.weekData=null,this.c=i,this.o=s,this.isLuxonDateTime=!0}static now(){return new ot({})}static local(){const[e,n]=JH(arguments),[r,i,s,o,u,a,l]=n;return YH({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static utc(){const[e,n]=JH(arguments),[r,i,s,o,u,a,l]=n;return e.zone=Ir.utcInstance,YH({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static fromJSDate(e,n={}){const r=eAe(e)?e.valueOf():NaN;if(Number.isNaN(r))return ot.invalid("invalid input");const i=Ml(n.zone,Nn.defaultZone);return i.isValid?new ot({ts:r,zone:i,loc:cn.fromObject(n)}):ot.invalid(C4(i))}static fromMillis(e,n={}){if(Gc(e))return e<-UH||e>UH?ot.invalid("Timestamp out of range"):new ot({ts:e,zone:Ml(n.zone,Nn.defaultZone),loc:cn.fromObject(n)});throw new bs(`fromMillis requires a numerical input, but received a ${typeof e} with value ${e}`)}static fromSeconds(e,n={}){if(Gc(e))return new ot({ts:e*1e3,zone:Ml(n.zone,Nn.defaultZone),loc:cn.fromObject(n)});throw new bs("fromSeconds requires a numerical input")}static fromObject(e,n={}){e=e||{};const r=Ml(n.zone,Nn.defaultZone);if(!r.isValid)return ot.invalid(C4(r));const i=Nn.now(),s=vt(n.specificOffset)?r.offset(i):n.specificOffset,o=y4(e,VH),u=!vt(o.ordinal),a=!vt(o.year),l=!vt(o.month)||!vt(o.day),c=a||l,f=o.weekYear||o.weekNumber,x=cn.fromObject(n);if((c||u)&&f)throw new Np("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(l&&u)throw new Np("Can't mix ordinal dates with month/day");const h=f||o.weekday&&!c;let p,m,g=HH(i,s);h?(p=H4e,m=U4e,g=vO(g)):u?(p=z4e,m=q4e,g=SO(g)):(p=WH,m=GH);let y=!1;for(const b of p){const R=o[b];vt(R)?y?o[b]=m[b]:o[b]=g[b]:y=!0}const E=h?M4e(o):u?j4e(o):MH(o),A=E||jH(o);if(A)return ot.invalid(A);const v=h?kH(o):u?PH(o):o,[_,S]=b4(v,s,r),C=new ot({ts:_,zone:r,o:S,loc:x});return o.weekday&&c&&e.weekday!==C.weekday?ot.invalid("mismatched weekday",`you can't specify both a weekday of ${o.weekday} and a date of ${C.toISO()}`):C}static fromISO(e,n={}){const[r,i]=s4e(e);return jp(r,i,n,"ISO 8601",e)}static fromRFC2822(e,n={}){const[r,i]=o4e(e);return jp(r,i,n,"RFC 2822",e)}static fromHTTP(e,n={}){const[r,i]=u4e(e);return jp(r,i,n,"HTTP",n)}static fromFormat(e,n,r={}){if(vt(e)||vt(n))throw new bs("fromFormat requires an input string and a format");const{locale:i=null,numberingSystem:s=null}=r,o=cn.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0}),[u,a,l,c]=P4e(o,e,n);return c?ot.invalid(c):jp(u,a,r,`format ${n}`,e,l)}static fromString(e,n,r={}){return ot.fromFormat(e,n,r)}static fromSQL(e,n={}){const[r,i]=h4e(e);return jp(r,i,n,"SQL",e)}static invalid(e,n=null){if(!e)throw new bs("need to specify a reason the DateTime is invalid");const r=e instanceof uo?e:new uo(e,n);if(Nn.throwOnInvalid)throw new VEe(r);return new ot({invalid:r})}static isDateTime(e){return e&&e.isLuxonDateTime||!1}get(e){return this[e]}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}get outputCalendar(){return this.isValid?this.loc.outputCalendar:null}get zone(){return this._zone}get zoneName(){return this.isValid?this.zone.name:null}get year(){return this.isValid?this.c.year:NaN}get quarter(){return this.isValid?Math.ceil(this.c.month/3):NaN}get month(){return this.isValid?this.c.month:NaN}get day(){return this.isValid?this.c.day:NaN}get hour(){return this.isValid?this.c.hour:NaN}get minute(){return this.isValid?this.c.minute:NaN}get second(){return this.isValid?this.c.second:NaN}get millisecond(){return this.isValid?this.c.millisecond:NaN}get weekYear(){return this.isValid?CO(this).weekYear:NaN}get weekNumber(){return this.isValid?CO(this).weekNumber:NaN}get weekday(){return this.isValid?CO(this).weekday:NaN}get ordinal(){return this.isValid?SO(this.c).ordinal:NaN}get monthShort(){return this.isValid?Pp.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?Pp.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?Pp.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?Pp.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 Fp(this.year)}get daysInMonth(){return p4(this.year,this.month)}get daysInYear(){return this.isValid?wp(this.year):NaN}get weeksInWeekYear(){return this.isValid?g4(this.weekYear):NaN}resolvedLocaleOptions(e={}){const{locale:n,numberingSystem:r,calendar:i}=Ti.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:n,numberingSystem:r,outputCalendar:i}}toUTC(e=0,n={}){return this.setZone(Ir.instance(e),n)}toLocal(){return this.setZone(Nn.defaultZone)}setZone(e,{keepLocalTime:n=!1,keepCalendarTime:r=!1}={}){if(e=Ml(e,Nn.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]=b4(o,s,e)}return Mp(this,{ts:i,zone:e})}else return ot.invalid(C4(e))}reconfigure({locale:e,numberingSystem:n,outputCalendar:r}={}){const i=this.loc.clone({locale:e,numberingSystem:n,outputCalendar:r});return Mp(this,{loc:i})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;const n=y4(e,VH),r=!vt(n.weekYear)||!vt(n.weekNumber)||!vt(n.weekday),i=!vt(n.ordinal),s=!vt(n.year),o=!vt(n.month)||!vt(n.day),u=s||o,a=n.weekYear||n.weekNumber;if((u||i)&&a)throw new Np("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(o&&i)throw new Np("Can't mix ordinal dates with month/day");let l;r?l=kH({...vO(this.c),...n}):vt(n.ordinal)?(l={...this.toObject(),...n},vt(n.day)&&(l.day=Math.min(p4(l.year,l.month),l.day))):l=PH({...SO(this.c),...n});const[c,f]=b4(l,this.o,this.zone);return Mp(this,{ts:c,o:f})}plus(e){if(!this.isValid)return this;const n=St.fromDurationLike(e);return Mp(this,zH(this,n))}minus(e){if(!this.isValid)return this;const n=St.fromDurationLike(e).negate();return Mp(this,zH(this,n))}startOf(e){if(!this.isValid)return this;const n={},r=St.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?Ti.create(this.loc.redefaultToEN(n)).formatDateTimeFromString(this,e):_O}toLocaleString(e=iO,n={}){return this.isValid?Ti.create(this.loc.clone(n),e).formatDateTime(this):_O}toLocaleParts(e={}){return this.isValid?Ti.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=bO(this,o);return u+="T",u+=QH(this,o,n,r,i,s),u}toISODate({format:e="extended"}={}){return this.isValid?bO(this,e==="extended"):null}toISOWeekDate(){return T4(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":"")+QH(this,o==="extended",n,e,r,s):null}toRFC2822(){return T4(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return T4(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")}toSQLDate(){return this.isValid?bO(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")),T4(this,i,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():_O}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 St.invalid("created by diffing an invalid DateTime");const i={locale:this.locale,numberingSystem:this.numberingSystem,...r},s=tAe(n).map(St.normalizeUnit),o=e.valueOf()>this.valueOf(),u=o?this:e,a=o?e:this,l=_4e(u,a,s,i);return o?l.negate():l}diffNow(e="milliseconds",n={}){return this.diff(ot.now(),e,n)}until(e){return this.isValid?fn.fromDateTimes(this,e):this}hasSame(e,n){if(!this.isValid)return!1;const r=e.valueOf(),i=this.setZone(e.zone,{keepLocalTime:!0});return i.startOf(n)<=r&&r<=i.endOf(n)}equals(e){return this.isValid&&e.isValid&&this.valueOf()===e.valueOf()&&this.zone.equals(e.zone)&&this.loc.equals(e.loc)}toRelative(e={}){if(!this.isValid)return null;const n=e.base||ot.fromObject({},{zone:this.zone}),r=e.padding?this<n?-e.padding:e.padding:0;let i=["years","months","days","hours","minutes","seconds"],s=e.unit;return Array.isArray(e.unit)&&(i=e.unit,s=void 0),XH(n,this.plus(r),{...e,numeric:"always",units:i,unit:s})}toRelativeCalendar(e={}){return this.isValid?XH(e.base||ot.fromObject({},{zone:this.zone}),this,{...e,numeric:"auto",units:["years","months","days"],calendary:!0}):null}static min(...e){if(!e.every(ot.isDateTime))throw new bs("min requires all arguments be DateTimes");return Jq(e,n=>n.valueOf(),Math.min)}static max(...e){if(!e.every(ot.isDateTime))throw new bs("max requires all arguments be DateTimes");return Jq(e,n=>n.valueOf(),Math.max)}static fromFormatExplain(e,n,r={}){const{locale:i=null,numberingSystem:s=null}=r,o=cn.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0});return FH(o,e,n)}static fromStringExplain(e,n,r={}){return ot.fromFormatExplain(e,n,r)}static get DATE_SHORT(){return iO}static get DATE_MED(){return Fq}static get DATE_MED_WITH_WEEKDAY(){return JEe}static get DATE_FULL(){return wq}static get DATE_HUGE(){return Lq}static get TIME_SIMPLE(){return Iq}static get TIME_WITH_SECONDS(){return Bq}static get TIME_WITH_SHORT_OFFSET(){return $q}static get TIME_WITH_LONG_OFFSET(){return kq}static get TIME_24_SIMPLE(){return Pq}static get TIME_24_WITH_SECONDS(){return Mq}static get TIME_24_WITH_SHORT_OFFSET(){return jq}static get TIME_24_WITH_LONG_OFFSET(){return Uq}static get DATETIME_SHORT(){return qq}static get DATETIME_SHORT_WITH_SECONDS(){return Hq}static get DATETIME_MED(){return zq}static get DATETIME_MED_WITH_SECONDS(){return Qq}static get DATETIME_MED_WITH_WEEKDAY(){return KEe}static get DATETIME_FULL(){return Gq}static get DATETIME_FULL_WITH_SECONDS(){return Wq}static get DATETIME_HUGE(){return Vq}static get DATETIME_HUGE_WITH_SECONDS(){return Yq}}function Up(t){if(ot.isDateTime(t))return t;if(t&&t.valueOf&&Gc(t.valueOf()))return ot.fromJSDate(t);if(t&&typeof t=="object")return ot.fromObject(t);throw new bs(`Unknown datetime argument: ${t}, of type ${typeof t}`)}const Q4e="2.5.2";var KH=bi.DateTime=ot;bi.Duration=St,bi.FixedOffsetZone=Ir,bi.IANAZone=ou,bi.Info=Pp,bi.Interval=fn,bi.InvalidZone=lH,bi.Settings=Nn,bi.SystemZone=A4,bi.VERSION=Q4e,bi.Zone=Sd,Object.defineProperty(Jn,"__esModule",{value:!0}),Jn.LiteralYear=Jn.LiteralQuarter=Jn.LiteralMonth=Jn.LiteralWeek=Jn.LiteralDay=Jn.LiteralHour=Jn.LiteralTimestamp=Jn.TimeFormatError=void 0;const jl=bi,G4e=oe,W4e=Fl,ZH=md,TO=xt;class V4e extends Error{}Jn.TimeFormatError=V4e;function Xc(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 ez="yyyy",tz=`${ez}-LL`,Os=`${tz}-dd`,nz=`${Os} HH`,rz=`${nz}:mm`,RO=`${rz}:ss`;class iz extends TO.ExpressionDef{constructor(e,n,r){super(),this.units=n,this.timeType=r,this.literalPart=e.text,e.tzSpec&&(this.timeZone=e.tzSpec)}makeLiteral(e,n){const r={node:"timeLiteral",literal:e,dataType:n};return this.timeZone&&(r.timezone=this.timeZone),r}makeValue(e,n){const r=this.makeLiteral(e,n),i="scalar",s=r;return this.units?{dataType:n,expressionType:i,value:s,timeframe:this.units,evalSpace:"literal"}:{dataType:n,expressionType:i,value:s,evalSpace:"literal"}}getExpression(e){return this.makeValue(this.literalPart,this.timeType)}getNext(){if(this.nextLit)return this.makeValue(this.nextLit,this.timeType)}granular(){return this.nextLit!==void 0}}class OO extends iz{constructor(e,n){super(e,n,"timestamp"),this.elementType="literal:timestamp"}static parse(e){let n;const r=Xc(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=jl.DateTime.fromFormat(e,RO);if(s.isValid)return new OO(r,n);if(s=jl.DateTime.fromFormat(e,rz),s.isValid){r.text=r.text+":00",n="minute";const o=s.plus({minute:1}).toFormat(RO);return new DO(r,n,"timestamp",o)}}}Jn.LiteralTimestamp=OO;class DO extends iz{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,TO.getMorphicValue)(i,"timestamp"),a=(0,TO.getMorphicValue)(s,"timestamp");if(u&&a)i=u,s=a;else return super.apply(e,n,r)}if((0,G4e.isTimeFieldType)(o.dataType)){const u=o.dataType;return new W4e.Range(new ZH.ExprTime(u,i.value),new ZH.ExprTime(u,s.value)).apply(e,n,r)}}return super.apply(e,n,r)}}class NO extends DO{constructor(e,n){super(e,"hour","timestamp",n),this.elementType="literal:hour"}static parse(e){const n=Xc(e,!1);let r=n.text;const i=jl.DateTime.fromFormat(n.text,nz);if(i.isValid)return n.text=n.text+":00:00",r=i.plus({hour:1}).toFormat(RO),new NO(n,r)}}Jn.LiteralHour=NO;class qp extends DO{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 FO extends qp{constructor(e,n){super(e,"day",n),this.elementType="literal:day"}static parse(e){const n=Xc(e,!1);let r=n.text;const i=jl.DateTime.fromFormat(n.text,Os);if(i.isValid)return r=i.plus({day:1}).toFormat(Os),new FO(n,r)}}Jn.LiteralDay=FO;class wO extends qp{constructor(e,n){super(e,"week",n),this.elementType="literal:week"}static parse(e){const n=Xc(e,!1);let r=n.text;const i=n.text.slice(0,10),s=jl.DateTime.fromFormat(i,Os);if(s.isValid&&s.weekday===7){const u=s.plus({days:7});return n.text=s.toFormat(Os),r=u.toFormat(Os),new wO(n,r)}}}Jn.LiteralWeek=wO;class LO extends qp{constructor(e,n){super(e,"month",n),this.elementType="literal:month"}static parse(e){const n=Xc(e,!1);let r=n.text;const i=jl.DateTime.fromFormat(n.text,tz);if(i.isValid){const s=i.plus({months:1});return n.text=i.toFormat(Os),r=s.toFormat(Os),new LO(n,r)}}}Jn.LiteralMonth=LO;class IO extends qp{constructor(e,n){super(e,"quarter",n),this.elementType="literal:quarter"}static parse(e){const n=Xc(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=jl.DateTime.fromFormat(i[1],"yyyy");s>0&&(o=o.plus({quarters:s}));const u=o.plus({quarter:1});return n.text=o.toFormat(Os),r=u.toFormat(Os),new IO(n,r)}}}Jn.LiteralQuarter=IO;class BO extends qp{constructor(e,n){super(e,"year",n),this.elementType="literal:year"}static parse(e){const n=Xc(e,!1);let r=n.text;const i=jl.DateTime.fromFormat(n.text,ez);if(i.isValid){const s=i.plus({year:1});return n.text=i.toFormat(Os),r=s.toFormat(Os),new BO(n,r)}}}Jn.LiteralYear=BO;var R4={};Object.defineProperty(R4,"__esModule",{value:!0}),R4.PartialCompare=void 0;const Y4e=Xn,X4e=xt;class J4e extends X4e.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,Y4e.errorFor)("no value for partial compare")}}R4.PartialCompare=J4e;var Dd={};Object.defineProperty(Dd,"__esModule",{value:!0}),Dd.PickWhen=Dd.Pick=void 0;const uu=oe,Ul=Xn,co=rn,K4e=xt,Z4e=Ge;function O4(t,e){return t===void 0||t.dataType==="null"||t.dataType==="error"?e:t}class eve extends K4e.ExpressionDef{constructor(e,n){super({choices:e}),this.choices=e,this.elsePick=n,this.elementType="pick",this.has({elsePick:n})}requestExpression(e){if(this.elsePick!==void 0){for(const n of this.choices){if(n.pick===void 0)return;const r=n.when.requestExpression(e);if(r===void 0||r.dataType!=="boolean")return}return this.getExpression(e)}}apply(e,n,r){const i={node:"pick",kids:{pickWhen:[],pickThen:[],pickElse:{node:"error",message:"pick statement not complete"}}};let s,o="scalar",u="constant";for(const c of this.choices){const f=c.when.apply(e,"=",r),x=c.pick?c.pick.getExpression(e):r.getExpression(e);if(o=(0,uu.maxExpressionType)(o,(0,uu.maxExpressionType)(f.expressionType,x.expressionType)),u=(0,uu.mergeEvalSpaces)(u,f.evalSpace,x.evalSpace),s&&!co.FT.typeEq(s,x,!0)){const h=co.FT.inspect(x);return this.log(`pick type '${h}', expected '${s.dataType}'[pick-values-must-match]`),(0,Ul.errorFor)("pick when type")}s=O4(s,x),i.kids.pickWhen.push(f.value),i.kids.pickThen.push(x.value)}const l=(this.elsePick||r).getExpression(e);if(s=O4(s,l),!co.FT.typeEq(s,l,!0)){const c=this.elsePick?"else":"pick default";return this.log(`${c} type '${co.FT.inspect(l)}', expected '${s.dataType}'[pick-values-must-match]`),(0,Ul.errorFor)("pick else type")}return i.kids.pickElse=l.value,{dataType:s.dataType,expressionType:(0,uu.maxExpressionType)(o,l.expressionType),evalSpace:(0,uu.mergeEvalSpaces)(u,l.evalSpace),value:i}}getExpression(e){const n={node:"pick",kids:{pickWhen:[],pickThen:[],pickElse:{node:"error",message:"pick statement not complete"}}};if(this.elsePick===void 0)return this.log("pick incomplete, missing 'else'"),(0,Ul.errorFor)("no value for partial pick");const r=[];for(const a of this.choices){if(a.pick===void 0)return this.log("pick with no value can only be used with apply"),(0,Ul.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,Ul.errorFor)("partial when");r.push({pick:a.pick.getExpression(e),when:a.when.getExpression(e)})}let i,s="scalar",o="constant";for(const a of r){if(!co.FT.typeEq(a.when,co.FT.boolT))return this.log(`when expression must be boolean, not '${co.FT.inspect(a.when)}`),(0,Ul.errorFor)("pick when type");if(i&&!co.FT.typeEq(i,a.pick,!0)){const l=co.FT.inspect(a.pick);return this.log(`pick type '${l}', expected '${i.dataType}'[pick-values-must-match]`),(0,Ul.errorFor)("pick value type")}i=O4(i,a.pick),s=(0,uu.maxExpressionType)(s,(0,uu.maxExpressionType)(a.pick.expressionType,a.when.expressionType)),o=(0,uu.mergeEvalSpaces)(o,a.pick.evalSpace,a.when.evalSpace),n.kids.pickWhen.push(a.when.value),n.kids.pickThen.push(a.pick.value)}const u=this.elsePick.getExpression(e);return s=(0,uu.maxExpressionType)(s,u.expressionType),o=(0,uu.mergeEvalSpaces)(o,u.evalSpace),i=O4(i,u),co.FT.typeEq(i,u,!0)?(n.kids.pickElse=u.value,{dataType:i.dataType,expressionType:s,value:n,evalSpace:o}):(this.elsePick.log(`else type '${co.FT.inspect(u)}', expected '${i.dataType}'[pick-values-must-match]`),(0,Ul.errorFor)("pick value type mismatch"))}}Dd.Pick=eve;class tve extends Z4e.MalloyElement{constructor(e,n){super({when:n}),this.pick=e,this.when=n,this.elementType="pickWhen",this.has({pick:e})}}Dd.PickWhen=tve;var D4={};Object.defineProperty(D4,"__esModule",{value:!0}),D4.Timeframe=void 0;const nve=oe,rve=Ge;class ive extends rve.MalloyElement{constructor(e){super(),this.elementType="timeframe";let n=e.toLowerCase();n.endsWith("s")&&(n=n.slice(0,-1)),this.text=(0,nve.isTimestampUnit)(n)?n:"second"}}D4.Timeframe=ive;var N4={};Object.defineProperty(N4,"__esModule",{value:!0}),N4.TopBy=void 0;const sve=oe,sz=xt,ove=Ge;class uve extends ove.MalloyElement{constructor(e){super(),this.by=e,this.elementType="topBy",e instanceof sz.ExpressionDef&&this.has({by:e})}getBy(e){if(this.by instanceof sz.ExpressionDef){const n=this.by.getExpression(e);return(0,sve.expressionIsAggregate)(n.expressionType)||this.log("top by expression must be an aggregate"),{by:"expression",e:n.value}}return{by:"name",name:this.by}}}N4.TopBy=uve;var ql={};Object.defineProperty(ql,"__esModule",{value:!0}),ql.ImportStatement=ql.ImportSelect=ql.ImportSourceName=void 0;const $O=Ge;class ave extends $O.MalloyElement{constructor(e){super(),this.text=e,this.elementType="importSourceName"}}ql.ImportSourceName=ave;class lve extends $O.MalloyElement{constructor(e,n){super(),this.text=e,this.from=n,this.elementType="importName",n&&this.has({from:n})}}ql.ImportSelect=lve;class cve extends $O.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}'`)}}}ql.ImportStatement=cve;var Hp={};Object.defineProperty(Hp,"__esModule",{value:!0}),Hp.ExtendBlock=void 0;const fve=Ge,xve=yn;class dve extends fve.ListOf{constructor(){super(...arguments),this.elementType="extendBlock",this.forceQueryClass=void 0,this.queryRefinementStage=xve.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)for(const r of n.list)e.inputFS.extendSource(r)}}Hp.ExtendBlock=dve;var F4={};Object.defineProperty(F4,"__esModule",{value:!0}),F4.Argument=void 0;const hve=Ge;class pve extends hve.MalloyElement{constructor(e){super({...e}),this.elementType="Argument",this.id=e.id,this.value=e.value}}F4.Argument=pve;var w4={};Object.defineProperty(w4,"__esModule",{value:!0}),w4.HasParameter=void 0;const oz=oe,gve=Ge;class mve extends gve.MalloyElement{constructor(e){super(),this.elementType="hasParameter",this.name=e.name,e.type&&(0,oz.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,oz.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"}}}w4.HasParameter=mve;var L4={};Object.defineProperty(L4,"__esModule",{value:!0}),L4.AnonymousQuery=void 0;const yve=Ge,Eve=Nr;class Ave extends yve.MalloyElement{constructor(e){super(),this.queryExpr=e,this.elementType="anonymousQuery",this.isNoteableObj=!0,this.extendNote=Eve.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)}}L4.AnonymousQuery=Ave;var Hl={};Object.defineProperty(Hl,"__esModule",{value:!0}),Hl.View=void 0;const vve=Ge;let Sve=class extends vve.MalloyElement{pipeline(e,n){return this.pipelineComp(e,n).pipeline}};Hl.View=Sve;var I4={};Object.defineProperty(I4,"__esModule",{value:!0}),I4.ViewArrow=void 0;const _ve=Lr,Cve=Hl;class bve extends Cve.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 _ve.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()}}I4.ViewArrow=bve;var B4={},zp={};Object.defineProperty(zp,"__esModule",{value:!0}),zp.refine=void 0;const kO=ko,PO=Rl;function Tve(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,kO.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,kO.isQuerySegment)(o)&&(0,kO.isQuerySegment)(s)){const u=[],a=[],l=new Map(s.queryFields.map(c=>[(0,PO.nameFromDef)(c),c]));for(const c of o.queryFields)l.has((0,PO.nameFromDef)(c))?u.push(c):a.push(c);s.queryFields=[...s.queryFields,...a],u.length>0&&t.log(`overlapping fields in refinement: ${u.map(PO.nameFromDef)}`)}else o.type==="index"&&s.type==="index"&&(s.indexFields=[...o.indexFields,...s.indexFields]);return[s]}zp.refine=Tve,Object.defineProperty(B4,"__esModule",{value:!0}),B4.ViewRefine=void 0;const Rve=wr,Ove=Ji,Dve=zp,Nve=Hl;class Fve extends Nve.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,Ove.getFinalStruct)(this.refinement,e.structDef(),i):Rve.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,Dve.refine)(this,n,i[0])}getImplicitName(){return this.base.getImplicitName()}}B4.ViewRefine=Fve;var $4={};Object.defineProperty($4,"__esModule",{value:!0}),$4.ReferenceView=void 0;const uz=oe,az=wr,wve=Ji,Lve=Fr,Ive=zp,Bve=Hl;class $ve extends Bve.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:az.ErrorFactory.structDef,outputStruct:az.ErrorFactory.structDef,pipeline:[],error:!0}};if(!r.found)return this.log(`\`${this.reference.refString}\` is not defined`),i();if(!(r.found instanceof Lve.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,uz.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,uz.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,wve.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,Ive.refine)(this,n,i):n}getImplicitName(){return this.reference.nameString}}$4.ReferenceView=$ve;var k4={},Qp={},P4={},Gp={};Object.defineProperty(Gp,"__esModule",{value:!0}),Gp.Index=void 0;const kve=Ge,Pve=yn;let Mve=class extends kve.MalloyElement{constructor(e){super({fields:e}),this.fields=e,this.elementType="index",this.forceQueryClass=Pve.QueryClass.Index,this.queryRefinementStage=void 0}useWeight(e){this.has({weightBy:e}),this.weightBy=e}};Gp.Index=Mve;var Wp={};Object.defineProperty(Wp,"__esModule",{value:!0}),Wp.SampleProperty=void 0;const jve=Ge,lz=yn;class Uve extends jve.MalloyElement{constructor(e){super(),this.sample=e,this.elementType="sampleProperty",this.queryRefinementStage=lz.LegalRefinementStage.Tail,this.forceQueryClass=lz.QueryClass.Index}sampling(){return this.sample}}Wp.SampleProperty=Uve;var M4={};Object.defineProperty(M4,"__esModule",{value:!0}),M4.IndexFieldSpace=void 0;const cz=oe,MO=ht,qve=Fr,Hve=so,zve=bp,Qve=Lr;class Gve extends Hve.QueryOperationSpace{constructor(){super(...arguments),this.segmentType="index"}pushFields(...e){for(const n of e)n instanceof MO.FieldReference?super.pushFields(n):n instanceof MO.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 qve.SpaceField){const s=this.expandedWild[r];if(s){n.push({type:"fieldref",path:s});continue}if(i instanceof zve.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 Qve.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=MO.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,cz.isAtomicFieldType)(c.dataType)&&(0,cz.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)}}M4.IndexFieldSpace=Gve,Object.defineProperty(P4,"__esModule",{value:!0}),P4.IndexBuilder=void 0;const jO=oe,Wve=wr,Vve=io,Yve=Gp,Xve=Il,Jve=Wp,Kve=M4;class Zve{constructor(e,n,r,i){this.filters=[],this.type="index",this.resultFS=new Kve.IndexFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e instanceof Vve.Filter?this.filters.push(...e.getFilterList(this.inputFS)):e instanceof Xve.Limit?(this.limit&&this.limit.log("Ignored, too many limit: statements"),this.limit=e):e instanceof Yve.Index?(this.resultFS.pushFields(...e.fields.list),e.weightBy&&(this.indexOn&&this.indexOn.log("Ignoring previous BY"),this.indexOn=e.weightBy)):e instanceof Jve.SampleProperty?this.sample=e.sampling():e.log("Not legal in an index query operation")}finalize(e){if(e&&!(0,jO.isIndexSegment)(e)&&!(0,jO.isPartialSegment)(e))return this.resultFS.log(`Can't refine index with ${e.type}`),Wve.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,jO.isIndexSegment)(e)&&(e!=null&&e.sample)&&(n.sample=e.sample),this.sample&&(n.sample=this.sample),n}}P4.IndexBuilder=Zve;var j4={},Vp={};Object.defineProperty(Vp,"__esModule",{value:!0}),Vp.GroupBy=void 0;const eSe=Xi,fz=yn;class tSe extends eSe.DefinitionList{constructor(){super(...arguments),this.elementType="groupBy",this.queryRefinementStage=fz.LegalRefinementStage.Single,this.forceQueryClass=fz.QueryClass.Grouping}}Vp.GroupBy=tSe;var U4={};Object.defineProperty(U4,"__esModule",{value:!0}),U4.ProjectFieldSpace=void 0;const UO=oe,nSe=so;class rSe extends nSe.QuerySpace{constructor(){super(...arguments),this.segmentType="project"}canContain(e){return e.dataType==="turtle"||(0,UO.expressionIsAggregate)(e.expressionType)?!1:(0,UO.expressionInvolvesAggregate)(e.expressionType)&&(0,UO.expressionIsAnalytic)(e.expressionType)?(this.log("Cannot add aggregate analyics to project"),!1):!0}}U4.ProjectFieldSpace=rSe;var zl={},Jc={};Object.defineProperty(Jc,"__esModule",{value:!0}),Jc.Ordering=Jc.OrderBy=void 0;const iSe=oe,xz=Bl,dz=Ge,sSe=yn;class oSe extends dz.MalloyElement{constructor(e,n){super(),this.field=e,this.dir=n,this.elementType="orderBy",e instanceof xz.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 xz.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,iSe.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}}Jc.OrderBy=oSe;class uSe extends dz.ListOf{constructor(e){super(e),this.elementType="ordering",this.queryRefinementStage=sSe.LegalRefinementStage.Tail,this.forceQueryClass=void 0}getOrderBy(e){return this.list.map(n=>n.getOrderBy(e))}}Jc.Ordering=uSe;var Yp={};Object.defineProperty(Yp,"__esModule",{value:!0}),Yp.Top=void 0;const hz=oe,aSe=Bl,lSe=Ge,cSe=yn;let fSe=class extends lSe.MalloyElement{constructor(e,n){super(),this.limit=e,this.by=n,this.elementType="top",this.queryRefinementStage=cSe.LegalRefinementStage.Tail,this.forceQueryClass=void 0,this.has({by:n})}getBy(e){var n;if(this.by)if(this.by instanceof aSe.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,hz.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,hz.expressionIsAggregate)(r.expressionType)&&this.by.log("top by expression must be an aggregate"),r.evalSpace==="output"&&this.by.log("top by expression must be an output expression"),{by:"expression",e:r.value}}}};Yp.Top=fSe,Object.defineProperty(zl,"__esModule",{value:!0}),zl.ReduceBuilder=zl.QuerySegmentBuilder=void 0;const pz=oe,xSe=wr,dSe=io,hSe=Il,gz=Jc,mz=Yp,pSe=so,gSe=Xi;class yz{constructor(){this.filters=[]}execute(e){if(e.queryExecute){e.queryExecute(this);return}if(e instanceof gSe.DefinitionList)this.resultFS.pushFields(...e.list);else if(e instanceof dSe.Filter){const n=e.havingClause?this.resultFS:this.inputFS;this.filters.push(...e.getFilterList(n))}else e instanceof mz.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 hSe.Limit?this.limit?e.log("Query operation already limited"):this.limit=e.limit:e instanceof gz.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 mz.Top){const i=this.order.getBy(this.inputFS);i&&(n.by=i)}this.order instanceof gz.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])}}zl.QuerySegmentBuilder=yz;class mSe extends yz{constructor(e,n,r,i){super(),this.type="grouping",this.resultFS=new pSe.ReduceFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}finalize(e){let n;if(e)if((0,pz.isReduceSegment)(e)||(0,pz.isPartialSegment)(e))n=e;else return this.resultFS.log(`Can't refine reduce with ${e.type}`),xSe.ErrorFactory.reduceSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}zl.ReduceBuilder=mSe,Object.defineProperty(j4,"__esModule",{value:!0}),j4.ProjectBuilder=void 0;const Ez=oe,ySe=wr,ESe=Vp,ASe=U4,vSe=zl;class SSe extends vSe.QuerySegmentBuilder{constructor(e,n,r,i){super(),this.type="project",this.resultFS=new ASe.ProjectFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e.elementType==="having"||e instanceof ESe.GroupBy?e.log("Illegal statement in a select query operation"):super.execute(e)}finalize(e){let n;if(e)if((0,Ez.isProjectSegment)(e)||(0,Ez.isPartialSegment)(e))n=e;else return this.resultFS.log(`Can't refine select with ${e.type}`),ySe.ErrorFactory.projectSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}j4.ProjectBuilder=SSe;var q4={};Object.defineProperty(q4,"__esModule",{value:!0}),q4.PartialBuilder=void 0;const _Se=ko,CSe=zl;class bSe extends CSe.ReduceBuilder{finalize(e){const n=super.finalize(e);if((0,_Se.isQuerySegment)(n))return{...n,type:"partial"};throw new Error(`Partial Builder cannot finalize from ${n.type}`)}}q4.PartialBuilder=bSe,Object.defineProperty(Qp,"__esModule",{value:!0}),Qp.QOpDesc=void 0;const TSe=P4,RSe=j4,OSe=zl,DSe=Ge,NSe=Ji,FSe=Lr,Kc=yn,wSe=q4;class LSe extends DSe.ListOf{constructor(){super(...arguments),this.elementType="queryOperation"}computeType(){var e;let n,r=!1;this.refineThis&&(this.refineThis.type==="reduce"?n=Kc.QueryClass.Grouping:this.refineThis.type==="project"?n=Kc.QueryClass.Project:this.refineThis.type==="index"&&(n=Kc.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=Kc.QueryClass.Project),this.opClass=n,n}refineFrom(e){this.refineThis=e}getBuilder(e,n,r){switch(this.computeType()){case Kc.QueryClass.Grouping:return new OSe.ReduceBuilder(e,this.refineThis,n,r);case Kc.QueryClass.Project:return new RSe.ProjectBuilder(e,this.refineThis,n,r);case Kc.QueryClass.Index:return new TSe.IndexBuilder(e,this.refineThis,n,r);case void 0:return new wSe.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 FSe.StaticSpace((0,NSe.opOutputStruct)(this,e.structDef(),i))}}}Qp.QOpDesc=LSe,Object.defineProperty(k4,"__esModule",{value:!0}),k4.QOpDescView=void 0;const ISe=oe,BSe=Lr,Az=Qp,$Se=Ji,qO=yn,kSe=Hl;class PSe extends kSe.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,ISe.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 Az.QOpDesc([]),o=new Az.QOpDesc([]);for(const u of this.operation.list)switch(u.queryRefinementStage){case qO.LegalRefinementStage.Head:s.push(u);break;case qO.LegalRefinementStage.Single:u.log("Illegal in refinement of a query with more than one stage");break;case qO.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,$Se.getFinalStruct)(this,e.structDef(),i.slice(-1));i[u]=this.getOp(new BSe.StaticSpace(a),void 0,o,i[u])}return i}getImplicitName(){}}k4.QOpDescView=PSe;var xn={};Object.defineProperty(xn,"__esModule",{value:!0}),xn.FieldDefinitionValue=xn.DefSpace=xn.DimensionFieldDeclaration=xn.MeasureFieldDeclaration=xn.DeclareFieldDeclaration=xn.ProjectFieldDeclaration=xn.GroupByFieldDeclaration=xn.AggregateFieldDeclaration=xn.CalculateFieldDeclaration=xn.AtomicFieldDeclaration=void 0;const MSe=oe,jSe=rn,USe=pd,qSe=Ge,Zc=In,HSe=Nr,zSe=Fr;class Ql extends qSe.MalloyElement{constructor(e,n,r){super({expr:e}),this.expr=e,this.defineName=n,this.exprSrc=r,this.isNoteableObj=!0,this.extendNote=HSe.extendNoteMethod}fieldDef(e,n){return this.queryFieldDef(new HO(e,this),n)}executesInOutputSpace(){return!1}queryFieldDef(e,n){let r;function i(){if(e.isQueryFieldSpace())return e.outputSpace();throw new Error("must be in a query -- weird internal error")}try{const u=this.executesInOutputSpace()?i():e;r=this.expr.getExpression(u)}catch(u){return this.log(`Cannot define '${n}', ${u.message}`),{name:n,type:"error"}}let s=r.dataType;if(s==="null"&&(this.expr.log('null value defaults to type number, use "null::TYPE" to specify correct type',"warn"),s="number"),(0,MSe.isAtomicFieldType)(s)&&s!=="error"){const u={name:n,type:s,location:this.location};return u.e=r.value,r.expressionType&&(u.expressionType=r.expressionType),this.typecheckExprValue(r),this.exprSrc&&(u.code=this.exprSrc),(0,USe.isGranularResult)(r)&&(u.type==="timestamp"||u.type==="date")&&(u.timeframe=r.timeframe),this.note&&(u.annotation=this.note),u}if(!(e instanceof HO&&e.foundCircle)&&r.dataType!=="error"){const u=jSe.FT.inspect(r);this.log(`Cannot define '${n}', unexpected type: ${u}`)}return{name:n,type:"error"}}makeEntry(e){e.newEntry(this.defineName,this,new vz(e,this))}}xn.AtomicFieldDeclaration=Ql;class QSe extends Ql{constructor(){super(...arguments),this.elementType="calculateFieldDeclaration"}typecheckExprValue(e){(0,Zc.typecheckCalculate)(e,this)}executesInOutputSpace(){return!0}}xn.CalculateFieldDeclaration=QSe;class GSe extends Ql{constructor(){super(...arguments),this.elementType="aggregateFieldDeclaration"}typecheckExprValue(e){(0,Zc.typecheckAggregate)(e,this)}}xn.AggregateFieldDeclaration=GSe;class WSe extends Ql{constructor(){super(...arguments),this.elementType="groupByFieldDeclaration"}typecheckExprValue(e){(0,Zc.typecheckGroupBy)(e,this)}}xn.GroupByFieldDeclaration=WSe;class VSe extends Ql{constructor(){super(...arguments),this.elementType="projectFieldDeclaration"}typecheckExprValue(e){(0,Zc.typecheckProject)(e,this)}}xn.ProjectFieldDeclaration=VSe;class YSe extends Ql{constructor(){super(...arguments),this.elementType="declareFieldDeclaration"}typecheckExprValue(e){(0,Zc.typecheckDeclare)(e,this)}}xn.DeclareFieldDeclaration=YSe;class XSe extends Ql{constructor(){super(...arguments),this.elementType="measureFieldDeclaration"}typecheckExprValue(e){(0,Zc.typecheckMeasure)(e,this)}}xn.MeasureFieldDeclaration=XSe;class JSe extends Ql{constructor(){super(...arguments),this.elementType="dimensionFieldDeclaration"}typecheckExprValue(e){(0,Zc.typecheckDimension)(e,this)}}xn.DimensionFieldDeclaration=JSe;class HO{constructor(e,n){this.realFS=e,this.circular=n,this.type="fieldSpace",this.foundCircle=!1}structDef(){return this.realFS.structDef()}emptyStructDef(){return this.realFS.emptyStructDef()}entry(e){return this.realFS.entry(e)}lookup(e){return e[0]&&e[0].refString===this.circular.defineName?(this.foundCircle=!0,{error:`Circular reference to '${this.circular.defineName}' in definition`,found:void 0}):this.realFS.lookup(e)}entries(){return this.realFS.entries()}dialectObj(){return this.realFS.dialectObj()}isQueryFieldSpace(){return this.realFS.isQueryFieldSpace()}outputSpace(){if(this.realFS.isQueryFieldSpace())return this.realFS.outputSpace();throw new Error("Not a query field space")}inputSpace(){if(this.realFS.isQueryFieldSpace())return this.realFS.inputSpace();throw new Error("Not a query field space")}}xn.DefSpace=HO;class vz extends zSe.SpaceField{constructor(e,n){super(),this.space=e,this.exprDef=n,this.fieldName=n.defineName}get name(){return this.fieldName}fieldDef(){return this.haveFieldDef||(this.haveFieldDef=this.exprDef.fieldDef(this.space,this.name)),this.haveFieldDef}getQueryFieldDef(e){if(!this.qfd){const n=this.exprDef.queryFieldDef(e,this.name);this.qfd=n}return this.qfd}typeDesc(){const e=this.qfd||this.fieldDef();return this.fieldTypeFromFieldDef(e)}}xn.FieldDefinitionValue=vz;var H4={};Object.defineProperty(H4,"__esModule",{value:!0}),H4.Aggregate=void 0;const KSe=Xi,Sz=yn;let ZSe=class extends KSe.DefinitionList{constructor(){super(...arguments),this.elementType="aggregateList",this.queryRefinementStage=Sz.LegalRefinementStage.Single,this.forceQueryClass=Sz.QueryClass.Grouping}};H4.Aggregate=ZSe;var z4={};Object.defineProperty(z4,"__esModule",{value:!0}),z4.Calculate=void 0;const e5e=Xi,t5e=yn;class n5e extends e5e.DefinitionList{constructor(){super(...arguments),this.elementType="calculate",this.forceQueryClass=void 0,this.needsExplicitQueryClass=!0,this.queryRefinementStage=t5e.LegalRefinementStage.Single}}z4.Calculate=n5e;var Xp={};Object.defineProperty(Xp,"__esModule",{value:!0}),Xp.Dimensions=void 0;const r5e=Ol;class i5e extends r5e.DeclareFields{constructor(){super(...arguments),this.elementType="dimensionList"}}Xp.Dimensions=i5e;var Jp={};Object.defineProperty(Jp,"__esModule",{value:!0}),Jp.Measures=void 0;const s5e=Ol;class o5e extends s5e.DeclareFields{constructor(){super(...arguments),this.elementType="measureList"}}Jp.Measures=o5e;var Q4={};Object.defineProperty(Q4,"__esModule",{value:!0}),Q4.Nests=void 0;const u5e=Xi,_z=yn;class a5e extends u5e.DefinitionList{constructor(e){super(e),this.elementType="nestedQueries",this.queryRefinementStage=_z.LegalRefinementStage.Single,this.forceQueryClass=_z.QueryClass.Grouping}}Q4.Nests=a5e;var G4={};Object.defineProperty(G4,"__esModule",{value:!0}),G4.ProjectStatement=void 0;const l5e=Xi,Cz=yn;class c5e extends l5e.DefinitionList{constructor(){super(...arguments),this.elementType="projectStatement",this.forceQueryClass=Cz.QueryClass.Project,this.queryRefinementStage=Cz.LegalRefinementStage.Single}queryExecute(e){e.type==="project"&&e.resultFS.pushFields(...this.list)}}G4.ProjectStatement=c5e;var Gl={},ma={};Object.defineProperty(ma,"__esModule",{value:!0}),ma.findReferences=ma.deprecatedParseTableURI=ma.constructTableKey=void 0;const f5e=bl,zO=nn;function QO(t){const e=(0,zO.getStringIfShort)(t);if(e)return e;const n=[],r=t.string().sqlString();if(r){for(const i of(0,zO.getStringParts)(r))typeof i=="string"&&n.push(i);return n.join("")}return""}class x5e{constructor(e,n){this.trans=e,this.tokens=n,this.needTables={},this.needImports={}}registerTableReference(e,n,r){const i=bz(e,n);this.needTables[i]||(this.needTables[i]={connectionName:e,tablePath:n,firstReference:r})}enterTableMethod(e){const n=(0,zO.getId)(e.connectionId()),r=QO(e.tablePath()),i=this.trans.rangeFromContext(e);this.registerTableReference(n,r,i)}enterTableFunction(e){const n=QO(e.tableURI()),{connectionName:r,tablePath:i}=Tz(n),s=this.trans.rangeFromContext(e);this.registerTableReference(r,i,s)}enterImportURL(e){const n=QO(e);this.needImports[n]||(this.needImports[n]=this.trans.rangeFromContext(e))}}function bz(t,e){return t===void 0?e:`${t}:${e}`}ma.constructTableKey=bz;function Tz(t){const e=t.match(/^([^:]*):(.*)$/);if(e){const[,n,r]=e;return{connectionName:n,tablePath:r}}else return{tablePath:t}}ma.deprecatedParseTableURI=Tz;function d5e(t,e,n){const r=new x5e(t,e),i=r;return f5e.ParseTreeWalker.DEFAULT.walk(i,n),{tables:r.needTables,urls:r.needImports}}ma.findReferences=d5e,Object.defineProperty(Gl,"__esModule",{value:!0}),Gl.TableFunctionSource=Gl.TableMethodSource=Gl.TableSource=void 0;const Rz=ma,h5e=ro,Oz=wr;class GO extends h5e.Source{structDef(){var e,n,r;const i=this.getTableInfo();if(i===void 0)return Oz.ErrorFactory.structDef;const{tablePath:s,connectionName:o}=i,u=(0,Rz.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),Oz.ErrorFactory.structDef}}Gl.TableSource=GO;class p5e extends GO{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}}}Gl.TableMethodSource=p5e;class g5e extends GO{constructor(e){super(),this.tableURI=e,this.elementType="tableFunctionSource"}getTableInfo(){return(0,Rz.deprecatedParseTableURI)(this.tableURI)}}Gl.TableFunctionSource=g5e;var W4={};Object.defineProperty(W4,"__esModule",{value:!0}),W4.SQLString=void 0;const m5e=Ge,Dz=iu;class y5e extends m5e.MalloyElement{constructor(){super(...arguments),this.elementType="sqlString",this.elements=[],this.containsQueries=!1}complete(){this.has({queries:this.elements.filter(E5e)})}push(e){typeof e=="string"?e.length>0&&this.elements.push(e):e instanceof Dz.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}}W4.SQLString=y5e;function E5e(t){return t instanceof Dz.SourceQueryElement}var V4={};Object.defineProperty(V4,"__esModule",{value:!0}),V4.SourceDesc=void 0;const A5e=Ge;class v5e extends A5e.ListOf{constructor(){super(...arguments),this.elementType="sourceDescription"}}V4.SourceDesc=v5e;var Y4={};Object.defineProperty(Y4,"__esModule",{value:!0}),Y4.isSourceProperty=void 0;const S5e=io,_5e=_i,C5e=Ol,b5e=ad,T5e=Nl,R5e=ld,O5e=cd,D5e=fd,N5e=Dl;function F5e(t){return t instanceof S5e.Filter||t instanceof _5e.Joins||t instanceof C5e.DeclareFields||t instanceof b5e.FieldListEdit||t instanceof T5e.Renames||t instanceof R5e.PrimaryKey||t instanceof N5e.ObjectAnnotation||t instanceof O5e.Views||t instanceof D5e.TimezoneStatement}Y4.isSourceProperty=F5e;var X4={};Object.defineProperty(X4,"__esModule",{value:!0}),X4.isFieldCollectionMember=void 0;const w5e=xn,Nz=ht;function L5e(t){return t instanceof Nz.FieldReference||t instanceof Nz.WildcardFieldReference||t instanceof w5e.AtomicFieldDeclaration}X4.isFieldCollectionMember=L5e;var J4={};Object.defineProperty(J4,"__esModule",{value:!0}),J4.isQueryElement=void 0;const I5e=xd,B5e=dd,$5e=Ep,k5e=Ap;function P5e(t){return t instanceof I5e.QueryArrow||t instanceof B5e.QueryRefine||t instanceof $5e.QueryReference||t instanceof k5e.QueryRaw}J4.isQueryElement=P5e;var Fz={};Object.defineProperty(Fz,"__esModule",{value:!0});var K4={};Object.defineProperty(K4,"__esModule",{value:!0}),K4.isQueryProperty=void 0;function M5e(t){return"queryRefinementStage"in t&&"forceQueryClass"in t}K4.isQueryProperty=M5e;var Z4={};Object.defineProperty(Z4,"__esModule",{value:!0}),Z4.isQueryExtendProperty=void 0;const j5e=Xp,U5e=_i,q5e=Jp;function H5e(t){return t instanceof j5e.Dimensions||t instanceof q5e.Measures||t instanceof U5e.Joins}Z4.isQueryExtendProperty=H5e;var ev={};Object.defineProperty(ev,"__esModule",{value:!0}),ev.isFieldPropStatement=void 0;const z5e=wl,Q5e=io,G5e=Il,W5e=Ad;function V5e(t){return t instanceof Q5e.Filter||t instanceof G5e.Limit||t instanceof W5e.PartitionBy||t instanceof z5e.FunctionOrdering}ev.isFieldPropStatement=V5e,function(t){var e=D&&D.__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=D&&D.__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(rp,t),n(id,t),n(sd,t),n(ro,t),n(cp,t),n(iu,t),n(TA,t),n(RA,t),n(NA,t),n(pp,t),n(LA,t),n(ad,t),n(ld,t),n(Nl,t),n(cd,t),n(fd,t),n(IA,t),n(yd,t),n($A,t),n(wl,t),n(kA,t),n(ha,t),n(PA,t),n(Ed,t),n(MA,t),n(jA,t),n(UA,t),n(Sp,t),n(qA,t),n(HA,t),n(QA,t),n(Rp,t),n(Cp,t),n(Uc,t),n(GA,t),n(WA,t),n(YA,t),n(JA,t),n(KA,t),n(ZA,t),n(e4,t),n(t4,t),n(n4,t),n(r4,t),n(i4,t),n(s4,t),n(o4,t),n(u4,t),n(a4,t),n(f4,t),n(Jn,t),n(R4,t),n(Ad,t),n(Dd,t),n(Fl,t),n(D4,t),n(N4,t),n(Op,t),n(ql,t),n(Hp,t),n(F4,t),n(w4,t),n(L4,t),n(dd,t),n(xd,t),n(Hl,t),n(I4,t),n(B4,t),n($4,t),n(k4,t),n(xn,t),n(ht,t),n(H4,t),n(z4,t),n(Ol,t),n(Xp,t),n(Hp,t),n(io,t),n(Vp,t),n(Gp,t),n(_i,t),n(ip,t),n(Il,t),n(Jp,t),n(rp,t),n(Q4,t),n(Jc,t),n(G4,t),n(Qp,t),n(Wp,t),n(Yp,t),n(hd,t),n(jc,t),n(vp,t),n(Gl,t),n(W4,t),n(Dl,t),n(su,t),n(V4,t),n(Y4,t),n(xt,t),n(X4,t),n(Bl,t),n(Ge,t),n(J4,t),n(Fz,t),n(K4,t),n(Z4,t),n(ev,t)}(fA);var tv={},Nd={};Object.defineProperty(Nd,"__esModule",{value:!0}),Nd.ConstantExpression=Nd.ConstantFieldSpace=void 0;const Y5e=xt;class wz{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}}Nd.ConstantFieldSpace=wz;class X5e extends Y5e.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 wz),this.cfs}constantValue(){return this.expr.getExpression(this.constantFs)}apply(e,n,r){return this.expr.apply(e,n,r)}requestExpression(e){return this.expr.requestExpression(e)}}Nd.ConstantExpression=X5e;var J5e=D&&D.__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]}),K5e=D&&D.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),Z5e=D&&D.__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)&&J5e(e,t,n);return K5e(e,t),e};Object.defineProperty(tv,"__esModule",{value:!0}),tv.MalloyToAST=void 0;const Lz=dy,e_e=sp,Z=Z5e(fA),t_e=Wn,n_e=fA,Bn=nn,WO=oe,r_e=xa,i_e=Nd;class Iz extends Z.SourceQueryElement{constructor(){super(...arguments),this.elementType="parseErrorSourceQuery"}}class VO extends Z.MalloyElement{constructor(e){super(),this.elementType="ignoredByParser",this.malloySrc=e}}const s_e=["##! m4warnings=error"];class o_e extends e_e.AbstractParseTreeVisitor{constructor(e,n,r){super(),this.parseInfo=e,this.msgLog=n,this.compilerFlags=r;for(const i of s_e){const s=r_e.Tag.fromTagline(i,this.compilerFlags);this.compilerFlags=s.tag}}internalError(e,n){const r=`Internal Translator Error: ${n}`;return this.contextError(e,r),new Error(r)}astError(e,n,r="error"){this.msgLog.log({message:n,at:e.location,severity:r})}getLocation(e){return{url:this.parseInfo.sourceURL,range:this.parseInfo.rangeFromContext(e)}}contextError(e,n,r="error"){this.msgLog.log({message:n,at:this.getLocation(e),severity:r})}warnWithReplacement(e,n,r){this.msgLog.log({message:e,at:{url:this.parseInfo.sourceURL,range:n},severity:"warn",replacement:r})}inExperiment(e,n){const r=this.compilerFlags.tag("experimental");return r&&(r.bare()||r.has(e))?!0:(this.contextError(n,`Experimental flag '${e}' required to enable this feature`),!1)}m4Severity(){const e=this.compilerFlags.tag("m4warnings");return e?e.text()==="warn"?"warn":"error":!1}m4advisory(e,n){const r=this.m4Severity();r&&this.contextError(e,n,r)}only(e,n,r){const i=[];for(const s of e){const o=n(s);o?i.push(o):s instanceof VO||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 Z.FieldName((0,Bn.getId)(e)),e.id())}getModelEntryName(e){return this.astAt(new Z.ModelEntryReference((0,Bn.getId)(e)),e.id())}defaultResult(){return new Z.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 t_e.Interval(n,r.stopIndex);return this.parseInfo.sourceStream.getText(i)}getFilterElement(e){const n=this.getFieldExpr(e),r=new Z.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 Z.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 Z.Filter([n])}getPlainStringFrom(e){const[n,r]=(0,Bn.getPlainString)(e);for(const i of r)i instanceof Lz.ParserRuleContext&&this.contextError(i,"%{ query } illegal in this string");return n||""}makeSqlString(e,n){for(const r of e.sqlInterpolation())r.CLOSE_CODE()&&this.m4advisory(r,"Use %{ ... } instead of %{ ... }%");for(const r of(0,Bn.getStringParts)(e))r instanceof Lz.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 Z.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=>Z.isDocStatementOrDocStatementList(r)&&r,"statement");return new Z.Document(n)}visitDefineSourceStatement(e){const r=e.sourcePropertyList().sourceDefinition().map(o=>this.visitSourceDefinition(o)),i=this.getNotes(e.tags()),s=new Z.DefineSourceList(r);return s.extendNote({blockNotes:i}),s}getSourceParameter(e){const n=e.fieldExpr(),r=n?this.astAt(new i_e.ConstantExpression(this.getFieldExpr(n)),n):void 0,i=e.malloyType(),s=i?this.getMalloyType(i):void 0;return this.astAt(new Z.HasParameter({name:(0,Bn.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 Z.DefineSource((0,Bn.getId)(e.sourceNameDef()),n instanceof Z.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=>Z.isSourceProperty(s)&&s,"source property"),i=new Z.SourceDesc(r);return n&&i.push(this.getFilterShortcut(n)),i}visitTableFunction(e){const n=this.getPlainStringFrom(e.tableURI()),r=this.astAt(new Z.TableFunctionSource(n),e);return this.m4advisory(e,"`table('connection_name:table_path')` is deprecated; use `connection_name.table('table_path')`"),r}visitTableMethod(e){const n=e.connectionId(),r=this.astAt(this.getModelEntryName(n),n),i=this.getPlainStringFrom(e.tablePath());return this.astAt(new Z.TableMethodSource(r,i),e)}visitSqlSource(e){const n=e.connectionId(),r=this.astAt(this.getModelEntryName(n),n),i=new Z.SQLString,s=e.sqlString();s&&this.makeSqlString(s,i);const o=e.shortString();o&&i.push((0,Bn.getShortString)(o));const u=new Z.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 Z.Join&&(n.push(s),s instanceof Z.ExpressionJoin?(s.joinType="many",s.joinOn===void 0&&this.contextError(e,"join_many: requires ON expression")):s instanceof Z.KeyJoin&&this.contextError(e,"Foreign key join not legal in join_many:"))}const r=new Z.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 Z.Join&&(r.push(s),s instanceof Z.ExpressionJoin&&(s.joinType="one"));const i=new Z.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 Z.Join&&(r.push(s),s instanceof Z.ExpressionJoin?s.joinType="cross":s.log("Foreign key join not legal in join_cross:"));const i=new Z.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 Z.SQReference(r,this.getSQArguments(i)),e),notes:[],joinAs:r}:{joinAs:r,joinFrom:new Z.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 Z.ExpressionJoin(r,i),u=e.joinExpression(),a=((n=e.matrixOperation())===null||n===void 0?void 0:n.text.toLocaleLowerCase())||"left";return(0,WO.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 Z.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,Bn.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(),Z.DimensionFieldDeclaration),r=new Z.Dimensions(n);return r.extendNote({blockNotes:this.getNotes(e.tags())}),this.astAt(r,e)}visitDefMeasures(e){const n=this.getFieldDefs(e.defList().fieldDef(),Z.MeasureFieldDeclaration),r=new Z.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(Z.isQueryExtendProperty(s))n.push(s);else throw this.internalError(e,`Query extend matched, but ${s.elementType} found`);const i=new Z.ExtendBlock(n);return this.astAt(i,e)}visitDeclareStatement(e){const n=this.getFieldDefs(e.defList().fieldDef(),Z.DeclareFieldDeclaration),r=new Z.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 Z.RenameField((0,Bn.getId)(n),this.getFieldName(r));return this.astAt(i,e)}visitDefExploreRename(e){const r=e.renameList().exploreRenameDef().map(s=>this.visitExploreRenameDef(s)),i=new Z.Renames(r);return this.astAt(i,e)}visitFilterClauseList(e){return new Z.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 Z.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 Z.PrimaryKey(this.getFieldName(e.fieldName()));return this.astAt(n,e)}visitFieldNameList(e){const n=e.fieldName().map(r=>new Z.AcceptExceptFieldReference([this.getFieldName(r)]));return new Z.FieldReferences(n)}visitDefExploreEditField(e){const n=e.ACCEPT()?"accept":"except";return new Z.FieldListEdit(n,this.visitFieldNameList(e.fieldNameList()))}visitDefExploreTimezone(e){return this.visitTimezoneStatement(e.timezoneStatement())}visitTimezoneStatement(e){const n=this.getPlainStringFrom(e),r=this.astAt(new Z.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=>Z.isQueryProperty(i)&&i,"query statement"),r=e.filterShortcut();return r&&n.push(this.getFilterShortcut(r)),new Z.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 Z.FieldReference||i instanceof Z.AtomicFieldDeclaration?i:!1,"view field")}visitAggregateStatement(e){const n=new Z.Aggregate(this.getQueryItems(e.queryFieldList(),Z.AggregateFieldDeclaration,Z.AggregateFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitGroupByStatement(e){const n=new Z.GroupBy(this.getQueryItems(e.queryFieldList(),Z.GroupByFieldDeclaration,Z.GroupByFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitCalculateStatement(e){const n=new Z.Calculate(this.getQueryItems(e.queryFieldList(),Z.CalculateFieldDeclaration,Z.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(),Z.ExpressionFieldReference);let u;const a=i.timeframe();a&&(u=new Z.ExprGranularTime(new Z.ExprIdReference(o),this.visitTimeframe(a).text,!0));const l=i.aggregate();if(l){const f=l.text.toLowerCase();if(f==="sum")u=new Z.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,Z.ProjectFieldDeclaration,Z.ProjectFieldReference));return this.astAt(new Z.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,Z.ProjectFieldReference):void 0,s=this.astAt(new Z.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,Bn.getId)(a));return s}visitIndexFields(e){const n=e.indexElement().map(r=>{const i=r.fieldPath();if(!i)return this.astAt(new Z.WildcardFieldReference(void 0),e);const s=this.getFieldPath(i,Z.IndexFieldReference);return r.STAR()?this.astAt(new Z.WildcardFieldReference(s),e):this.astAt(s,e)});return new Z.FieldReferences(n)}visitIndexStatement(e){const n=this.visitIndexFields(e.indexFields()),r=new Z.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 Z.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 Z.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 Z.FunctionOrdering(n),e)}visitOrderBySpec(e){const n=e.ASC()?"asc":e.DESC()?"desc":void 0,r=e.INTEGER_LITERAL();if(r)return new Z.OrderBy(this.getNumber(r),n);const i=e.fieldName();if(i)return new Z.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 Z.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 Z.Top(r,u)}const o=n.fieldExpr();o&&(i=new Z.Top(r,this.getFieldExpr(o)))}return i||(i=new Z.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 Z.DefineQueryList(n);return i.extendNote({blockNotes:r}),i}visitTopLevelQueryDef(e){const n=(0,Bn.getId)(e.queryName()),r=this.visit(e.sqExpr()),i=this.getNotes(e.tags()).concat(this.getIsNotes(e.isDefine()));if(r instanceof Z.SourceQueryElement){const s=new Z.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 Z.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 Z.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 Z.Nests(this.only(e.nestEntry().map(n=>this.visit(n)),n=>n instanceof Z.NestFieldDeclaration&&n,"query"))}visitNestDef(e){const n=e.queryName();let r;const i=this.getVExpr(e.vExpr());if(n)r=(0,Bn.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 Z.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,Bn.getId)(e.exploreQueryNameDef()),r=new Z.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 Z.ExprNot(this.getFieldExpr(e.fieldExpr()))}visitExprBool(e){return new Z.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 Z.ExprLogicalOp(n,"or",r)}visitExprLogicalAnd(e){const n=this.getFieldExpr(e.fieldExpr(0)),r=this.getFieldExpr(e.fieldExpr(1));return new Z.ExprLogicalOp(n,"and",r)}visitExprOrTree(e){const n=this.getFieldExpr(e.fieldExpr()),r=this.getFieldExpr(e.partialAllowedFieldExpr());return this.astAt(new Z.ExprAlternationTree(n,"|",r),e)}visitExprAndTree(e){const n=this.getFieldExpr(e.fieldExpr()),r=this.getFieldExpr(e.partialAllowedFieldExpr());return this.astAt(new Z.ExprAlternationTree(n,"&",r),e)}visitExprCoalesce(e){const n=this.getFieldExpr(e.fieldExpr()[0]),r=this.getFieldExpr(e.fieldExpr()[1]);return this.astAt(new Z.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(Z.isComparison(i))return this.astAt(new Z.PartialCompare(i,r),e);throw this.internalError(e,`partial comparison '${i}' not recognized`)}return r}visitExprString(e){const n=this.getPlainStringFrom(e);return new Z.ExprString(n)}visitExprRegex(e){const n=e.HACKY_REGEX().text;return new Z.ExprRegEx(n.slice(2,-1))}visitExprNow(e){return new Z.ExprNow}visitExprNumber(e){return new Z.ExprNumber(e.text)}visitExprFieldPath(e){const n=new Z.ExprIdReference(this.getFieldPath(e.fieldPath(),Z.ExpressionFieldReference));return this.astAt(n,e)}visitExprNULL(e){return new Z.ExprNULL}visitExprExpr(e){return new Z.ExprParens(this.getFieldExpr(e.partialAllowedFieldExpr()))}visitExprMinus(e){return new Z.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 Z.ExprAddSub(n,i,r)}visitExprMulDiv(e){const n=e.STAR()?"*":e.SLASH()?"/":"%";return new Z.ExprMulDiv(this.getFieldExpr(e.fieldExpr(0)),n,this.getFieldExpr(e.fieldExpr(1)))}visitExprCompare(e){const n=e.compareOp().text;if(Z.isComparison(n))return new Z.ExprCompare(this.getFieldExpr(e.fieldExpr(0)),n,this.getFieldExpr(e.fieldExpr(1)));throw this.internalError(e,`untranslatable comparison operator '${n}'`)}visitExprUngroup(e){const n=e.fieldName().map(i=>this.getFieldName(i)),r=e.ungroup().text.toLowerCase();return this.astAt(new Z.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,Z.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 Z.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 Z.ExprIdReference(r),n);return s==="min"?new Z.ExprMin(a):new Z.ExprMax(a)}else{if(s==="avg")return new Z.ExprAvg(u,i);if(s==="sum")return new Z.ExprSum(u,i);this.contextError(e,`Cannot parse aggregate function ${s}`)}return new Z.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 Z.ExprCountDistinct(r):new Z.ExprCount,e);if(s==="min"){if(r)return new Z.ExprMin(r);this.contextError(e,this.symmetricAggregateUsageError(s))}else if(s==="max"){if(r)return new Z.ExprMax(r);this.contextError(e,this.symmetricAggregateUsageError(s))}else{if(r===void 0)return this.contextError(e,this.asymmetricAggregateUsageError(s)),new Z.ExprNULL;const o=e.SOURCE_KW()!==void 0;if(s==="avg")return new Z.ExprAvg(r,i,o);if(s==="sum")return new Z.ExprSum(r,i,o)}return new Z.ExprNULL}visitExprApply(e){return new Z.Apply(this.getFieldExpr(e.fieldExpr()),this.getFieldExpr(e.partialAllowedFieldExpr()))}visitExprRange(e){return new Z.Range(this.getFieldExpr(e.fieldExpr(0)),this.getFieldExpr(e.fieldExpr(1)))}visitExprCast(e){const n=this.getMalloyOrSQLType(e.malloyOrSQLType());return new Z.ExprCast(this.getFieldExpr(e.fieldExpr()),n)}getMalloyType(e){const n=e.text;if((0,WO.isCastType)(n))return n;throw this.internalError(e,`unknown type '${n}'`)}getMalloyOrSQLType(e){const n=e.malloyType();if(n)return this.getMalloyType(n);const r=e.string();if(r)return{raw:this.getPlainStringFrom({string:()=>r})};throw this.internalError(e,"Expected Malloy or SQL type to either be a Malloy type or a string")}visitExprSafeCast(e){const n=this.getMalloyOrSQLType(e.malloyOrSQLType());return new Z.ExprCast(this.getFieldExpr(e.fieldExpr()),n,!0)}visitExprTimeTrunc(e){return new Z.ExprGranularTime(this.getFieldExpr(e.fieldExpr()),this.visitTimeframe(e.timeframe()).text,!0)}visitTimeframe(e){return new Z.Timeframe(e.text)}visitExprForRange(e){const n=this.getFieldExpr(e._startAt),r=this.getFieldExpr(e._duration),i=this.visitTimeframe(e.timeframe());return new Z.ForRange(n,r,i)}visitExprAggFunc(e){const n=e.argumentList(),r=n?this.allFieldExpressions(n.fieldExpr()):[],i=(0,Bn.getId)(e),s=e.fieldPath(),o=s?this.getFieldPath(s,Z.ExpressionFieldReference):void 0,u=s&&o?this.astAt(o,s):void 0;return Z.ExprTimeExtract.extractor(i)?this.astAt(new Z.ExprTimeExtract(i,r),e):this.astAt(new Z.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,WO.isCastType)(u)?a=u:(this.contextError(e,`'#' assertion for unknown type '${u}'`),a=void 0));let l=(0,Bn.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"),Z.ExprTimeExtract.extractor(l)?this.astAt(new Z.ExprTimeExtract(l,s),e):this.astAt(new Z.ExprFunc(l,s,o,a),e)}visitExprDuration(e){return new Z.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 Z.PickWhen(i,this.getFieldExpr(r._pickWhen))});return e.ELSE()?new Z.Pick(n,this.getFieldExpr(e._pickElse)):new Z.Pick(n)}visitExprFieldProps(e){const n=this.only(e.fieldProperties().fieldPropertyStatement().map(r=>this.visit(r)),r=>Z.isFieldPropStatement(r)&&r,"field property statement");return new Z.ExprProps(this.getFieldExpr(e.fieldExpr()),n)}visitPartitionByStatement(e){return this.astAt(new Z.PartitionBy(e.id().map(n=>this.astAt(new Z.PartitionByFieldReference([this.astAt(new Z.FieldName((0,Bn.idToStr)(n)),n)]),n))),e)}visitLiteralTimestamp(e){return this.parseTime(e,Z.LiteralTimestamp.parse)}visitLiteralHour(e){return this.parseTime(e,Z.LiteralHour.parse)}visitLiteralDay(e){return this.parseTime(e,Z.LiteralDay.parse)}visitLiteralWeek(e){return this.parseTime(e,Z.LiteralWeek.parse)}visitLiteralMonth(e){return this.parseTime(e,Z.LiteralMonth.parse)}visitLiteralQuarter(e){return this.parseTime(e,Z.LiteralQuarter.parse)}visitLiteralYear(e){return this.parseTime(e,Z.LiteralYear.parse)}visitImportStatement(e){const n=this.getPlainStringFrom(e.importURL()),r=this.astAt(new Z.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 Z.ImportSourceName((0,Bn.idToStr)(o[1])),o[1]):void 0;r.push(this.astAt(new Z.ImportSelect((0,Bn.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 Z.SampleProperty({rows:this.getNumber(n)});const r=e.sampleSpec().PERCENT_LITERAL();if(r)return new Z.SampleProperty({percent:this.getNumber(r)});const i=e.sampleSpec().TRUE()!==void 0;return new Z.SampleProperty({enable:i})}visitDocAnnotations(e){const n=e.DOC_ANNOTATION().map(i=>({text:i.text,at:this.getLocation(e)})),r=new Z.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 VO(e.text)}visitIgnoredModelAnnotations(e){return this.contextError(e,"Model annotations not allowed at this scope"),new VO(e.text)}visitDefExploreAnnotation(e){const n=this.getNotes(e);return new Z.ObjectAnnotation(n)}getSQArgument(e){const n=e.argumentId(),r=n?this.astAt(new Z.PartitionByFieldReference([this.astAt(new Z.FieldName((0,Bn.idToStr)(n.id())),n)]),n):void 0;return this.astAt(new Z.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 Z.SQReference(n,r),e.id())}getSqExpr(e){const n=this.visit(e);return n instanceof Z.SourceQueryElement?n:(this.contextError(e,`Expected a source/query expression, not '${n.elementType}'`),new Iz)}visitSQExtendedSource(e){const n=this.getSqExpr(e.sqExpr()),r=new Z.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 Z.SQArrow(n,this.getVExpr(r));return this.astAt(i,e)}getVExpr(e){const n=this.visit(e);if(n instanceof Z.View)return n;throw this.internalError(e,`Expected view, got a '${n.elementType}'`)}visitSegField(e){return new Z.ReferenceView(this.getFieldPath(e.fieldPath(),Z.ViewOrScalarFieldReference))}visitSegOps(e){return new Z.QOpDescView(this.visitQueryProperties(e.queryProperties()))}visitSegParen(e){return this.visit(e.vExpr())}visitVSeg(e){return this.visit(e.segExpr())}visitSegRefine(e){return new Z.ViewRefine(this.getVExpr(e._lhs),this.getVExpr(e._rhs))}visitVArrow(e){return new Z.ViewArrow(this.getVExpr(e._lhs),this.getVExpr(e._rhs))}visitSQRefinedQuery(e){const n=this.getSqExpr(e.sqExpr()),r=e.segExpr(),i=new Z.SQRefine(n,this.getVExpr(r));return this.astAt(i,e)}visitSQTable(e){const n=this.visit(e.exploreTable());if(n instanceof n_e.TableSource){const r=new Z.SQSource(n);return this.astAt(r,e)}return new Iz}visitSQSQL(e){const n=new Z.SQSource(this.visitSqlSource(e.sqlSource()));return this.astAt(n,e)}visitExperimentalStatementForTesting(e){return this.inExperiment("compilerTestExperimentParse",e),this.astAt(new Z.ExperimentalExperiment("compilerTestExperimentTranslate"),e)}visitExprWarnLike(e){let n="~";const r=e.fieldExpr(0),i=e.fieldExpr(1),s=this.parseInfo.rangeFromContext(e);return e.NOT()?(n="!~",this.warnWithReplacement("Use Malloy operator '!~' instead of 'NOT LIKE'",s,`${r.text} !~ ${i.text}`)):this.warnWithReplacement("Use Malloy operator '~' instead of 'LIKE'",s,`${r.text} ~ ${i.text}`),this.astAt(new Z.ExprCompare(this.getFieldExpr(r),n,this.getFieldExpr(i)),e)}visitExprWarnNullCmp(e){let n="=";const r=e.fieldExpr(),i=this.parseInfo.rangeFromContext(e);e.NOT()?(n="!=",this.warnWithReplacement("Use '!= NULL' to check for NULL instead of 'IS NOT NULL'",i,`${r.text} != null`)):this.warnWithReplacement("Use '= NULL' to check for NULL instead of 'IS NULL'",i,`${r.text} = null`);const s=new Z.ExprNULL;return this.astAt(new Z.ExprCompare(this.getFieldExpr(r),n,s),e)}}tv.MalloyToAST=o_e;var nv={};Object.defineProperty(nv,"__esModule",{value:!0}),nv.MessageLog=void 0;class u_e{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}}nv.MessageLog=u_e;var rv={};Object.defineProperty(rv,"__esModule",{value:!0}),rv.Zone=void 0;class a_e{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})}}rv.Zone=a_e;var iv={};Object.defineProperty(iv,"__esModule",{value:!0}),iv.walkForDocumentSymbols=void 0;const l_e=bl,c_e=nn;class f_e{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,c_e.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 x_e(t,e,n){const r=new f_e(t,e,[],[]),i=r;return l_e.ParseTreeWalker.DEFAULT.walk(i,n),r.symbols}iv.walkForDocumentSymbols=x_e;var sv={};Object.defineProperty(sv,"__esModule",{value:!0}),sv.walkForDocumentCompletions=void 0;const d_e=bl,h_e=["dimension","measure","join_one","join_many","join_cross","where","primary_key","rename","accept","except","query","declare"],p_e=["group_by","project","index","aggregate","top","limit","order_by","where","having","nest","declare"],g_e=["source","explore","query","sql"];class m_e{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 h_e)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 p_e)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 g_e)this.completions.push({type:"model_property",text:`${r}: `})}}}function y_e(t,e,n){const r=new m_e(t,[],n),i=r;return d_e.ParseTreeWalker.DEFAULT.walk(i,e),r.completions}sv.walkForDocumentCompletions=y_e;var ov={};Object.defineProperty(ov,"__esModule",{value:!0}),ov.walkForDocumentHelpContext=void 0;const E_e=NR;class A_e extends E_e.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 v_e(t,e){return new A_e(e).visit(t)}ov.walkForDocumentHelpContext=v_e;var uv={},Kp={};Object.defineProperty(Kp,"__esModule",{value:!0}),Kp.locationContainsPosition=void 0;function S_e(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)}Kp.locationContainsPosition=S_e,Object.defineProperty(uv,"__esModule",{value:!0}),uv.ReferenceList=void 0;const __e=Kp;class C_e{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,__e.locationContainsPosition)(r.location,e))return r}}uv.ReferenceList=C_e;var av={};Object.defineProperty(av,"__esModule",{value:!0}),av.isNeedResponse=void 0;function b_e(t){return!!t&&(t.tables||t.urls||t.compileSQL)!==void 0}av.isNeedResponse=b_e;var lv={};Object.defineProperty(lv,"__esModule",{value:!0}),lv.walkForModelAnnotation=void 0;const T_e=bl;class R_e{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 O_e(t,e,n){const r=new R_e(t,e,n),i=r;return T_e.ParseTreeWalker.DEFAULT.walk(i,n.root),r.annotation}lv.walkForModelAnnotation=O_e;var cv={};Object.defineProperty(cv,"__esModule",{value:!0}),cv.walkForTablePath=void 0;const Bz=nn,D_e=bl;class N_e{constructor(e,n){this.translator=e,this.tokens=n,this.pathInfos=[]}enterTableMethod(e){const n=(0,Bz.getId)(e.connectionId()),[r,i]=(0,Bz.getPlainString)(e.tablePath(),!0);r!==void 0&&this.pathInfos.push({connectionId:n,tablePath:r,range:this.translator.rangeFromContext(e)})}}function F_e(t,e,n){const r=new N_e(t,e),i=r;return D_e.ParseTreeWalker.DEFAULT.walk(i,n.root),r.pathInfos}cv.walkForTablePath=F_e;var w_e=D&&D.__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]}),L_e=D&&D.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),I_e=D&&D.__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)&&w_e(e,t,n);return L_e(e,t),e};Object.defineProperty(Mo,"__esModule",{value:!0}),Mo.MalloyParserErrorHandler=Mo.MalloyTranslator=Mo.MalloyChildTranslator=Mo.MalloyTranslation=void 0;const $z=dy,B_e=TE,$_e=w,kz=I_e(fA),k_e=tv,P_e=nv,M_e=ma,YO=rv,j_e=iv,U_e=sv,q_e=ov,H_e=uv,fv=av,z_e=Kp,Pz=xa,Q_e=lv,G_e=cv;class W_e extends B_e.MalloyLexer{popMode(){return this._modeStack.isEmpty?this._mode:super.popMode()}}class V_e{step(e){if(this.response)return this.response;if(e.urlIsFullPath===void 0)try{const s=new URL(e.sourceURL);e.urlIsFullPath=!0}catch(s){const o=s instanceof Error?s.message:"";e.urlIsFullPath=!1,e.root.logger.log({message:`Could not compute full path URL: ${o}`,severity:"error"})}if(!e.urlIsFullPath)return e.fatalResponse();const n=e.root.importZone.getEntry(e.sourceURL);if(n.status!=="present"){if(n.status==="error"){const s=n.message.includes(e.sourceURL)?`import error: ${n.message}`:`import '${e.sourceURL}' error: ${n.message}`,o=n.firstReference||e.defaultLocation();return e.root.logger.log({message:s,at:o,severity:"error"}),this.response=e.fatalResponse(),this.response}return{urls:[e.sourceURL]}}const r=n.value===""?`
|
|
1302
1302
|
`:n.value;this.sourceInfo=this.getSourceInfo(r);let i;try{i=this.runParser(r,e)}catch(s){e.root.logger.log({message:`Malloy internal parser exception [${s.message}]`,severity:"error"}),i=void 0}return e.root.logger.hasErrors()?this.response={parse:i,...e.fatalResponse()}:this.response={parse:i},this.response}getSourceInfo(e){const n=/\r?\n/,r={at:[],lines:[],length:e.length};let i=e,s=0;for(;i!=="";){const o=i.match(n);if(o&&o.index!==void 0){r.lines.push(i.slice(0,o.index));const u=o.index+o[0].length;r.at.push({begin:s,end:s+u}),s+=u,i=i.slice(u)}else{r.lines.push(i),r.at.push({begin:s,end:s+i.length});break}}return r}runParser(e,n){const r=$z.CharStreams.fromString(e),i=new W_e(r),s=new $z.CommonTokenStream(i),o=new $_e.MalloyParser(s);o.removeErrorListeners(),o.addErrorListener(new jz(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 Y_e{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,M_e.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,fv.isNeedResponse)(r))return r;for(const o of e.childTranslators.values()){const u=o.importsAndTablesStep.step(o);if((0,fv.isNeedResponse)(u))return u}return null}}class X_e{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 k_e.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 kz.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,fv.isNeedResponse)(a))return a}return o.setTranslator(e),this.response={...e.problemResponse(),ast:o,final:!0},this.response}}class J_e{constructor(e){this.parseStep=e}step(e){if(!this.response){const n=this.parseStep.step(e);if(n.parse){let r;try{r=(0,j_e.walkForDocumentSymbols)(e,n.parse.tokenStream,n.parse.root)}catch{}this.response={symbols:r,final:!0}}else return n}return this.response}}class K_e{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,U_e.walkForDocumentCompletions)(r.parse.tokenStream,r.parse.root,n)}catch{}return{...r,completions:i}}else return r}}class Z_e{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,q_e.walkForDocumentHelpContext)(r.parse.root,n)}catch{}return{...r,helpContext:i}}else return r}}class eCe{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,Q_e.walkForModelAnnotation)(e,r.parse.tokenStream,r.parse);this.response={modelAnnotation:{...i,inherits:n==null?void 0:n.annotation}}}}return this.response}}class tCe{constructor(e){this.parseStep=e}step(e){if(!this.response){const n=this.parseStep.step(e);if(n.parse){const r=(0,G_e.walkForTablePath)(e,n.parse.tokenStream,n.parse);this.response={pathInfo:r}}else return n}return this.response}}class nCe{constructor(e){this.astStep=e,this.importedAnnotations=!1}step(e,n){if(this.response)return this.response;if(n&&!this.importedAnnotations){const i=Pz.Tag.annotationToTag(n.annotation,{prefix:/^##! /});e.compilerFlags=i.tag,this.importedAnnotations=!0}const r=this.astStep.step(e);if((0,fv.isNeedResponse)(r))return r;if(!r.ast)return this.response=r,this.response;if(e.grammarRule==="malloyDocument")if(r.ast instanceof kz.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 XO{constructor(e,n=null,r="malloyDocument"){this.sourceURL=e,this.importBaseURL=n,this.grammarRule=r,this.queryList=[],this.sqlBlocks=[],this.imports=[],this.compilerFlags=new Pz.Tag,this.dialectAlreadyChecked={},this.allDialectsEnabled=!1,this.childTranslators=new Map,this.modelDef={name:e,exports:[],contents:{}},this.parseStep=new V_e,this.modelAnnotationStep=new eCe(this.parseStep),this.metadataStep=new J_e(this.parseStep),this.completionsStep=new K_e(this.parseStep),this.helpContextStep=new Z_e(this.parseStep),this.importsAndTablesStep=new Y_e(this.parseStep),this.astStep=new X_e(this.importsAndTablesStep),this.tablePathInfoStep=new tCe(this.parseStep),this.translateStep=new nCe(this.astStep),this.references=new H_e.ReferenceList(e)}addChild(e){this.childTranslators.get(e)||this.childTranslators.set(e,new Mz(e,this.root))}getDependencies(){const e=[this.sourceURL];for(const[n,r]of this.childTranslators)e.push(...r.getDependencies());return e}addReference(e){this.references.add(e)}referenceAt(e){return this.references.find(e)}fatalResponse(){return{final:!0,...this.problemResponse()}}problemResponse(){return{problems:this.problems()}}problems(){return[...this.root.logger.getLog()]}getLineMap(e){var n,r;if(e===this.sourceURL)return(n=this.parseStep.sourceInfo)===null||n===void 0?void 0:n.lines;const i=this.childTranslators.get(e);if(i)return(r=i.parseStep.sourceInfo)===null||r===void 0?void 0:r.lines}codeAtLocation(e){const n=this.getLineMap(e.url)||[];if(e.range.start.line===e.range.end.line)return n[e.range.start.line].slice(e.range.start.character,e.range.end.character);let r="";r+=n[e.range.start.line].slice(e.range.start.character);for(let i=e.range.start.line+1;i<e.range.end.line;i++)r+=n[i];return r+=n[e.range.end.line].slice(0,e.range.end.character),r}prettyErrors(){let e="",n="";for(const r of this.root.logger.getLog()){let i=r.message,s=this.sourceURL;if(r.at){s=r.at.url;const o=r.at.range.start.line,u=r.at.range.start.character,a=this.getLineMap(r.at.url);if(a){const l=a[o];i=`line ${o+1}: ${r.message}
|
|
1303
1303
|
| ${l}`,u>0&&(i=i+`
|