@malloydata/render 0.0.282 → 0.0.283-fix-line-date-truncation-250528185350
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/module/index.mjs +1 -1
- package/dist/module/index.umd.js +1 -1
- package/dist/register/register.mjs +10191 -10120
- package/dist/register/register.umd.js +272 -272
- package/dist/webcomponent/malloy-render.mjs +10191 -10120
- package/dist/webcomponent/malloy-render.umd.js +272 -272
- package/package.json +5 -5
package/dist/module/index.mjs
CHANGED
|
@@ -152830,7 +152830,7 @@ function Oht(t) {
|
|
|
152830
152830
|
var Fe = {}, SD = {};
|
|
152831
152831
|
Object.defineProperty(SD, "__esModule", { value: !0 });
|
|
152832
152832
|
SD.MALLOY_VERSION = void 0;
|
|
152833
|
-
SD.MALLOY_VERSION = "0.0.
|
|
152833
|
+
SD.MALLOY_VERSION = "0.0.283";
|
|
152834
152834
|
Object.defineProperty(Fe, "__esModule", { value: !0 });
|
|
152835
152835
|
Fe.InMemoryModelCache = Fe.CacheManager = Fe.CSVWriter = Fe.JSONWriter = Fe.DataWriter = Fe.DataRecord = Fe.DataArray = Fe.Result = Fe.ExploreMaterializer = Fe.PreparedResultMaterializer = Fe.QueryMaterializer = Fe.ModelMaterializer = Fe.SingleConnectionRuntime = Fe.ConnectionRuntime = Fe.Runtime = Fe.ExploreField = Fe.JoinRelationship = Fe.QueryField = Fe.Query = Fe.StringField = Fe.UnsupportedField = Fe.JSONField = Fe.BooleanField = Fe.NumberField = Fe.TimestampField = Fe.DateField = Fe.TimestampTimeframe = Fe.DateTimeframe = Fe.AtomicField = Fe.AtomicFieldType = Fe.Explore = Fe.SourceRelationship = Fe.FixedConnectionMap = Fe.InMemoryURLReader = Fe.EmptyURLReader = Fe.PreparedResult = Fe.DocumentCompletion = Fe.DocumentSymbol = Fe.DocumentPosition = Fe.DocumentRange = Fe.DocumentTablePath = Fe.Parse = Fe.PreparedQuery = Fe.Model = Fe.MalloyError = Fe.Malloy = void 0;
|
|
152836
152836
|
const jY = UT, zr = ni, UY = aE, T7 = y2, wht = SD, Fht = E2, Dn = $s, Nht = hd, Lht = Pi, Iht = HE, qY = "internal://internal.malloy";
|
package/dist/module/index.umd.js
CHANGED
|
@@ -1391,7 +1391,7 @@ z{{{{{{{{ӆ
|
|
|
1391
1391
|
| ${c}`,a>0&&(s=s+`
|
|
1392
1392
|
| ${" ".repeat(a)}^`)}else s=`line ${u+1}: char ${a}: ${i.message}`}r!==o&&(s=`FILE: ${o}
|
|
1393
1393
|
`+s,r=o),e!==""?e=`${e}
|
|
1394
|
-
${s}`:e=s}return e}childRequest(e){var r;const i=decodeURI(new URL(e,this.sourceURL).toString()),s=(r=this.childTranslators.get(i))===null||r===void 0?void 0:r.translate();if(s!=null&&s.compileSQL)return{compileSQL:s.compileSQL}}getChildExports(e){const r={},i=decodeURI(new URL(e,this.sourceURL).toString()),s=this.childTranslators.get(i);if(s&&s.translate().modelDef)for(const u of s.modelDef.exports){const a=s.modelDef.contents[u];((0,_dt.isSourceDef)(a)||a.type==="query")&&(r[u]=a)}return r}translate(e){if(this.finalAnswer)return this.finalAnswer;const r=this.translateStep.step(this,e);return r.final&&(this.finalAnswer=r),r}translatorForDependency(e){return this.childTranslators.get(e)}importAt(e){for(let r=0;r<this.imports.length;r++){const i=this.imports[r];if((0,lM.locationContainsPosition)(i.location,e))return i}}metadata(){return this.metadataStep.step(this)}modelAnnotation(e){return this.modelAnnotationStep.step(this,e)}tablePathInfo(){return this.tablePathInfoStep.step(this)}completions(e){return this.completionsStep.step(this,e)}helpContext(e){return this.helpContextStep.step(this,e)}defaultLocation(){return{url:this.sourceURL,range:{start:{line:0,character:0},end:{line:0,character:0}}}}rangeFromContext(e){return(0,lM.rangeFromContext)(this.parseStep.sourceInfo,e)}firstReferenceToDialect(e){return this.dialectAlreadyChecked[e]?!1:(this.dialectAlreadyChecked[e]=!0,!0)}experimentalDialectEnabled(e){if(this.allDialectsEnabled)return!0;const r=this.compilerFlags.tag("experimental");return r!==void 0&&(r.bare()||r.has("dialect",e))}}Sc.MalloyTranslation=cM;class Uxe extends cM{constructor(e,r){super(e),this.root=r}}Sc.MalloyChildTranslator=Uxe;class Udt extends cM{constructor(e,r=null,i=null,s=null){super(e,r),this.eventStream=s,this.schemaZone=new aM.Zone,this.importZone=new aM.Zone,this.pretranslatedModels=new Map,this.sqlQueryZone=new aM.Zone,this.root=this,this.logger=new jxe.BaseMessageLogger(s),i&&this.update(i)}update(e){var r,i,s;this.schemaZone.updateFrom(e.tables,(r=e.errors)===null||r===void 0?void 0:r.tables),this.importZone.updateFrom(e.urls,(i=e.errors)===null||i===void 0?void 0:i.urls),this.sqlQueryZone.updateFrom(e.compileSQL,(s=e.errors)===null||s===void 0?void 0:s.compileSQL);for(const o in e.translations)this.pretranslatedModels.set(o,e.translations[o])}logError(e,r,i){return this.logger.log((0,jxe.makeLogMessage)(e,r,{severity:"error",...i})),e}}Sc.MalloyTranslator=Udt;function qxe(t){return[...Object.keys(t),...Object.keys(t).map(e=>qxe(t[e])).flat()]}var $E={};Object.defineProperty($E,"__esModule",{value:!0}),$E.ExploreQueryWalker=void 0,$E.exploreQueryWalkerBuilder=Hdt;const qdt=sc;class Hxe{constructor(e){this.inDocument=!1,this.exploreClauseRefs=[],this.tokens=e}exploreQueryAtOffset(e){return this.exploreClauseRefs.find(r=>r.range[0]===void 0||r.range[1]===void 0?!1:r.range[0]<=e&&r.range[1]>=e)}filterAtOffset(e){const r=this.exploreQueryAtOffset(e);if(r)return r.filterRefs.find(i=>i.range[0]===void 0||i.range[1]===void 0?!1:i.range[0]<=e&&i.range[1]>=e)}hasFilterListAtOffset(e){const r=this.exploreQueryAtOffset(e);return r?!!r.filterLists.find(i=>i.range[0]===void 0||i.range[1]===void 0?!1:i.range[0]<=e&&i.range[1]>=e):!1}enterMalloyDocument(){this.inDocument=!0}}$E.ExploreQueryWalker=Hxe;function Hdt(t,e){const r=new Hxe(t),i=r;return qdt.ParseTreeWalker.DEFAULT.walk(i,e),r}var BE={},kE={},Xl={};Object.defineProperty(Xl,"__esModule",{value:!0}),Xl.sourceDefToSourceInfo=zxe,Xl.modelDefToModelInfo=Qdt,Xl.convertFieldInfos=L2,Xl.writeLiteralToTag=Yxe,Xl.getResultStructMetadataAnnotation=MR;const _o=ei,fM=fu,xM=ws,Qxe=Xo;function zxe(t){var e;const r=t.parameters&&Object.entries(t.parameters).length>0?Object.entries(t.parameters).map(([s,o])=>(0,_o.isAtomic)(o)?{name:s,type:jR(o),default_value:Gxe(o.value)}:{name:s,type:{kind:"filter_expression_type",filter_type:{kind:`${o.filterType}_type`}},default_value:Gxe(o.value)}):void 0;return{name:(e=t.as)!==null&&e!==void 0?e:t.name,schema:{fields:L2(t,t.fields)},parameters:r,annotations:dM(t)}}function Qdt(t){const e={entries:[],anonymous_queries:[]};for(const[r,i]of Object.entries(t.contents))if(t.exports.includes(r)){if((0,_o.isSourceDef)(i)){const s=zxe(i);e.entries.push({kind:"source",...s})}else if(i.type==="query"){const s=(0,fM.getResultStructDefForQuery)(t,i),o=dM(i),u=s.resultMetadata?MR(s,s.resultMetadata):void 0,a=[...o??[],...u?[u]:[]],l={kind:"source",name:r,schema:{fields:L2(s,s.fields)},annotations:a.length>0?a:void 0};e.entries.push(l)}}for(const r of t.queryList){const i=(0,fM.getResultStructDefForQuery)(t,r),s=dM(r),o=i.resultMetadata?MR(i,i.resultMetadata):void 0,u=[...s??[],...o?[o]:[]],a={schema:{fields:L2(i,i.fields)},annotations:u.length>0?u:void 0};e.anonymous_queries.push(a)}return e}function Gxe(t){if(t!==null)switch(t.node){case"numberLiteral":return{kind:"number_literal",number_value:parseFloat(t.literal)};case"stringLiteral":return{kind:"string_literal",string_value:t.literal};case"filterLiteral":return{kind:"filter_expression_literal",filter_expression_value:t.filterSrc};case"timeLiteral":return{kind:"timestamp_literal",timestamp_value:t.literal};case"true":return{kind:"boolean_literal",boolean_value:!0};case"false":return{kind:"boolean_literal",boolean_value:!1};case"null":return{kind:"null_literal"};default:throw new Error("Invalid parameter default value")}}function dM(t){return(0,xM.annotationToTaglines)(t.annotation).map(r=>({value:r}))}function L2(t,e){var r,i,s;const o=[];for(const u of e){if(!(u.accessModifier===void 0))continue;const c=(0,xM.annotationToTaglines)(u.annotation).map(x=>({value:x})),f=c.length>0?c:void 0;if((0,_o.isTurtle)(u)){const x=(0,fM.getResultStructDefForView)(t,u),h=x.resultMetadata?MR(x,x.resultMetadata):void 0,p=[...f??[],...h?[h]:[]],m={kind:"view",name:(r=u.as)!==null&&r!==void 0?r:u.name,annotations:p.length>0?p:void 0,schema:{fields:L2(x,x.fields)}};o.push(m)}else if((0,_o.isAtomic)(u)){const x=(0,_o.expressionIsAggregate)(u.expressionType),h=(0,_o.expressionIsScalar)(u.expressionType);if(!x&&!h||u.type==="error")continue;const p=u.resultMetadata?Wxe(u,u.resultMetadata):void 0,m=[...f??[],...p?[p]:[]],g={kind:x?"measure":"dimension",name:(i=u.as)!==null&&i!==void 0?i:u.name,type:jR(u),annotations:m.length>0?m:void 0};o.push(g)}else if((0,_o.isJoinedSource)(u)){const x={kind:"join",name:(s=u.as)!==null&&s!==void 0?s:u.name,annotations:f,schema:{fields:L2(u,u.fields)},relationship:u.join};o.push(x)}}return o}function Wxe(t,e){var r;const i=Qxe.Tag.withPrefix("#(malloy) ");let s=!1;e.referenceId!==void 0&&(i.set(["reference_id"],e.referenceId),s=!0),e.fieldKind==="measure"&&(i.set(["calculation"]),s=!0),e.drillable&&(i.set(["drillable"]),s=!0),((0,_o.isAtomic)(t)||(0,_o.isTurtle)(t))&&t.drillView!==void 0&&(i.set(["drill_view"],t.drillView),s=!0);const o=(r=e.filterList)===null||r===void 0?void 0:r.filter(u=>u.expressionType==="scalar");if(o&&(Vxe(i,o),s=!0),e.fieldKind==="dimension"){const a=(e==null?void 0:e.sourceExpression)||(e!=null&&e.sourceField.includes(".")?e==null?void 0:e.sourceField:Gdt(t.name));i.set(["drill_expression"],a),s=!0}return s?{value:i.toString()}:void 0}function Vxe(t,e){var r;for(let i=0;i<e.length;i++){const s=e[i];t.set(["drill_filters",i,"code"],s.code),s.drillView&&t.set(["drill_filters",i,"drill_view"],s.drillView),s.drillView===void 0&&s.stableFilter!==void 0&&(t.set(["drill_filters",i,"field_reference"],[...(r=s.stableFilter.field_reference.path)!==null&&r!==void 0?r:[],s.stableFilter.field_reference.name]),s.stableFilter.kind==="filter_string"?(t.set(["drill_filters",i,"kind"],"filter_expression"),t.set(["drill_filters",i,"filter_expression"],s.stableFilter.filter)):(t.set(["drill_filters",i,"kind"],"literal_equality"),Yxe(t,["drill_filters",i,"value"],s.stableFilter.value)))}}function Yxe(t,e,r){switch(t.set([...e,"kind"],r.kind),r.kind){case"string_literal":t.set([...e,"string_value"],r.string_value);break;case"number_literal":t.set([...e,"number_value"],r.number_value);break;case"boolean_literal":t.set([...e,"boolean_value"],r.boolean_value.toString());break;case"date_literal":t.set([...e,"date_value"],r.date_value),t.set([...e,"timezone"],r.timezone),t.set([...e,"granularity"],r.granularity);break;case"timestamp_literal":t.set([...e,"timestamp_value"],r.timestamp_value),t.set([...e,"timezone"],r.timezone),t.set([...e,"granularity"],r.granularity);break;case"filter_expression_literal":t.set([...e,"filter_expression_value"],r.filter_expression_value);break}}function zdt(t){return t.replace(/\\/g,"\\\\").replace(/`/g,"\\`")}function Gdt(t){return t.match(/^[A-Za-z_][0-9A-Za-z_]*$/)?t:`\`${zdt(t)}\``}function MR(t,e){var r,i,s;const o=Qxe.Tag.withPrefix("#(malloy) ");let u=!1;e.limit!==void 0&&(o.set(["limit"],e.limit),u=!0);const a=(r=e.filterList)===null||r===void 0?void 0:r.filter(l=>l.expressionType==="scalar");if(a&&(Vxe(o,a),u=!0),e.drillable&&(o.set(["drillable"]),u=!0),e.orderBy){for(let l=0;l<e.orderBy.length;l++){const c=e.orderBy[l],f=typeof c.field=="number"?(i=t.fields[c.field-1].as)!==null&&i!==void 0?i:t.fields[c.field-1].name:c.field,x=(s=c.dir)!==null&&s!==void 0?s:null;o.set(["ordered_by",l,f],x)}u=!0}return u?{value:o.toString()}:void 0}function jR(t){if((0,_o.isBasicAtomic)(t))switch(t.type){case"string":return{kind:"string_type"};case"number":return{kind:"number_type",subtype:t.numberType==="float"?"decimal":t.numberType==="integer"?"integer":void 0};case"boolean":return{kind:"boolean_type"};case"date":{const e=t.timeframe;return e&&!Wdt(e)?{kind:"timestamp_type",timeframe:t.timeframe}:{kind:"date_type",timeframe:Vdt(t.timeframe)}}case"timestamp":return{kind:"timestamp_type",timeframe:t.timeframe};case"json":return{kind:"json_type"};case"sql native":return{kind:"sql_native_type",sql_type:t.rawType};case"error":throw new Error("Error type is not supported in stable interface")}else{if((0,_o.isRepeatedRecord)(t))return{kind:"array_type",element_type:Kxe(t)};if(t.type==="record")return Kxe(t);if(t.type==="array")return{kind:"array_type",element_type:jR(t.elementTypeDef)}}throw new Error("Unexpected field type")}function Kxe(t){return{kind:"record_type",fields:t.fields.map(e=>{const r=[];if("resultMetadata"in e&&e.resultMetadata){const i=Wxe(e,e.resultMetadata);i&&r.push(i)}if(e.annotation){const i=(0,xM.annotationToTaglines)(e.annotation);r.push(...i.map(s=>({value:s})))}if((0,_o.isAtomic)(e))return{name:e.name,annotations:r.length>0?r:void 0,type:jR(e)};throw new Error("Expected record type to not have a table as its child")})}}function Wdt(t){switch(t){case"day":case"week":case"month":case"year":case"quarter":return!0;default:return!1}}function Vdt(t){switch(t){case void 0:return;case"day":case"week":case"month":case"year":case"quarter":return t;default:throw new Error(`Invalid date timeframe ${t}`)}}function a2t(t){return t}function l2t(t){return t}(function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.DEFAULT_LOG_RANGE=void 0,t.wrapLegacyInfoConnection=u,t.wrapLegacyConnection=a,t.mapData=c,t.wrapResult=f,t.nodeToLiteralValue=x,t.mapLogs=h;const e=Xo,r=ws,i=ei,s=Xl,o=Ny;function u(p){return{get dialectName(){return p.dialectName},async fetchSchemaForSQLQuery(m){const g=await p.fetchSchemaForSQLStruct({connection:p.name,selectStr:m},{}),y=g.structDef;if(y===void 0)throw new Error(g.error);return{fields:(0,s.convertFieldInfos)(y,y.fields)}},async fetchSchemaForTable(m){const g=`${p.name}:${m}`,y=await p.fetchSchemaForTables({[g]:m},{}),_=y.schemas[g];if(_===void 0)throw new Error(y.errors[g]);return{fields:(0,s.convertFieldInfos)(_,_.fields)}}}}function a(p){return{...u(p),runSQL:async(m,g)=>{const y=await p.runSQL(m);return c(y.rows,g)}}}function l(p){if(p instanceof Date)return p;if(p.constructor.name==="Date")return new Date(p);if(typeof p=="number")return new Date(p);if(typeof p!="string")return new Date(p.value);{let g=o.DateTime.fromISO(p,{zone:"UTC"});return g.isValid||(g=o.DateTime.fromSQL(p,{zone:"UTC"})),g.toJSDate()}}function c(p,m){function g(E,A){if(E===null)return{kind:"null_cell"};if(A.type.kind==="date_type"||A.type.kind==="timestamp_type"){const v=l(E).toISOString();return A.type.kind==="date_type"?{kind:"date_cell",date_value:v}:{kind:"timestamp_cell",timestamp_value:v}}else if(A.type.kind==="boolean_type"){if(typeof E=="number")return{kind:"boolean_cell",boolean_value:E!==0};if(typeof E!="boolean")throw new Error(`Invalid boolean ${E}`);return{kind:"boolean_cell",boolean_value:E}}else if(A.type.kind==="number_type"){if(typeof E!="number")throw new Error(`Invalid number ${E}`);return{kind:"number_cell",number_value:E}}else if(A.type.kind==="string_type"){if(typeof E!="string")throw new Error(`Invalid string ${E}`);return{kind:"string_cell",string_value:E}}else if(A.type.kind==="array_type"){if(!Array.isArray(E))throw new Error(`Invalid array ${E}`);return{kind:"array_cell",array_value:E.map(v=>g(v,{name:"array_element",type:A.type.element_type}))}}else{if(A.type.kind==="json_type")return{kind:"json_cell",json_value:JSON.stringify(E)};if(A.type.kind==="sql_native_type")return{kind:"sql_native_cell",sql_native_value:JSON.stringify(E)};{const v=A.type;if(v.kind!=="record_type")throw new Error(`Invalid record in result ${JSON.stringify(A)}, ${JSON.stringify(E)}`);return y(E,{kind:"join",relationship:"many",name:"array_element",schema:{fields:v.fields.map(C=>({kind:"dimension",...C}))}})}}}function y(E,A){const v=[];for(const C of A.schema.fields){const b=E[C.name];if(C.kind!=="dimension")throw new Error("Invalid result -- expected all fields to be dimensions");const S=g(b,C);v.push(S)}return{kind:"record_cell",record_value:v}}const _={kind:"join",schema:m,name:"root",relationship:"one"};return{kind:"array_cell",array_value:p.map(E=>y(E,_))}}function f(p){const m=p._queryResult.structs,g=m[m.length-1],y={fields:(0,s.convertFieldInfos)(g,g.fields)},_=(0,r.annotationToTaglines)(p.annotation).map(v=>({value:v})),E=g.resultMetadata?(0,s.getResultStructMetadataAnnotation)(g,g.resultMetadata):void 0;E&&_.push(E),_.push(...g.resultMetadata?[]:[]);const A=e.Tag.withPrefix("#(malloy) ");if(p.sourceExplore&&A.set(["source","name"],p.sourceExplore.name),p._sourceArguments){const v=Object.entries(p._sourceArguments);for(let C=0;C<v.length;C++){const[b,S]=v[C],R=x(S.value);R!==void 0&&(0,s.writeLiteralToTag)(A,["source","parameters",C,"value"],R),A.set(["source","parameters",C,"name"],b)}}return _.push({value:A.toString()}),_.push({value:e.Tag.withPrefix("#(malloy) ").set(["query_name"],p.resultExplore.name).toString()}),{schema:y,data:c(p.data.toObject(),y),connection_name:p.connectionName,annotations:_.length>0?_:void 0,query_timezone:p.data.field.queryTimezone,sql:p.sql}}function x(p){switch(p==null?void 0:p.node){case"numberLiteral":return{kind:"number_literal",number_value:Number.parseFloat(p.literal)};case"null":return{kind:"null_literal"};case"stringLiteral":return{kind:"string_literal",string_value:p.literal};case"filterLiteral":return{kind:"filter_expression_literal",filter_expression_value:p.filterSrc};case"true":return{kind:"boolean_literal",boolean_value:!0};case"false":return{kind:"boolean_literal",boolean_value:!1};case"timeLiteral":return p.typeDef.type==="date"?p.typeDef.timeframe===void 0||(0,i.isDateUnit)(p.typeDef.timeframe)?{kind:"date_literal",date_value:p.literal,timezone:p.timezone,granularity:p.typeDef.timeframe}:void 0:{kind:"timestamp_literal",timestamp_value:p.literal,timezone:p.timezone,granularity:p.typeDef.timeframe};default:return}}t.DEFAULT_LOG_RANGE={start:{line:0,character:0},end:{line:0,character:0}};function h(p,m){return p.map(g=>{var y,_,E,A;return{severity:g.severity,message:g.message,range:(_=(y=g.at)===null||y===void 0?void 0:y.range)!==null&&_!==void 0?_:t.DEFAULT_LOG_RANGE,url:(A=(E=g.at)===null||E===void 0?void 0:E.url)!==null&&A!==void 0?A:m}})}})(kE);var Ydt=T&&T.__createBinding||(Object.create?function(t,e,r,i){i===void 0&&(i=r);var s=Object.getOwnPropertyDescriptor(e,r);(!s||("get"in s?!e.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,i,s)}:function(t,e,r,i){i===void 0&&(i=r),t[i]=e[r]}),Kdt=T&&T.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),Jdt=T&&T.__importStar||function(){var t=function(e){return t=Object.getOwnPropertyNames||function(r){var i=[];for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(i[i.length]=s);return i},t(e)};return function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var i=t(e),s=0;s<i.length;s++)i[s]!=="default"&&Ydt(r,e,i[s]);return Kdt(r,e),r}}();Object.defineProperty(BE,"__esModule",{value:!0}),BE.MalloyToQuery=void 0,BE.malloyToQuery=rht;const Xdt=$p,Zdt=tp,gt=Jdt(F),Jxe=Zp,dd=cs,eht=We,tht=HT,Xxe=Bi,nht=kE,hd=Iy,hM="Malloy query documents";class Zxe extends Zdt.AbstractParseTreeVisitor{constructor(e,r){super(),this.parseInfo=e,this.msgLog=r}internalError(e,r){return this.contextError(e,"internal-translator-error",{message:r}),new Error(`Internal Translator Error: ${r}`)}getLocation(e){return{url:this.parseInfo.sourceURL,range:(0,Xxe.rangeFromContext)(this.parseInfo.sourceInfo,e)}}contextError(e,r,i,s){this.msgLog.log((0,Jxe.makeLogMessage)(r,i,{at:this.getLocation(e),...s}))}getNumber(e){return Number.parseInt(e.text)}defaultResult(){return null}getAnnotations(e){const r=e.ANNOTATION().map(i=>({value:i.text}));return r.length>0?r:void 0}getIsAnnotations(e){var r,i;if(e===void 0)return;const o=((r=this.getAnnotations(e._beforeIs))!==null&&r!==void 0?r:[]).concat((i=this.getAnnotations(e._afterIs))!==null&&i!==void 0?i:[]);return o.length>0?o:void 0}notAllowed(e,r){this.illegal(e,`${r} are not allowed in ${hM}`)}illegal(e,r){this.contextError(e,"invalid-malloy-query-document",r)}visitMalloyDocument(e){const r=e.malloyStatement();let i;for(const s of r)s.defineSourceStatement()?this.notAllowed(s,"Source definitions"):s.defineQuery()?this.notAllowed(s,"Query definitions"):s.importStatement()?this.notAllowed(s,"Import statements"):s.docAnnotations()?this.notAllowed(s,"Model annotations"):s.ignoredObjectAnnotations()?this.notAllowed(s,"Detatched object annotations"):s.experimentalStatementForTesting()?this.notAllowed(s,"Experimental testing statements"):i===void 0?i=s.runStatement():this.illegal(s,`${hM} may only have one run statement`);return i===void 0?(this.illegal(e,`${hM} must have a run statement`),null):this.visitRunStatement(i)}visitRunStatement(e){const r=e.topLevelAnonQueryDef(),i=this.getQueryDefinition(r.sqExpr()),s=this.getAnnotations(e.topLevelAnonQueryDef().tags());return i!==null?{annotations:s,definition:i}:null}getSourceArguments(e){const r=[];for(const i of e.sourceArgument()){const s=i.argumentId();if(s===void 0)return this.contextError(i,"unnamed-source-argument","Source argument must be named"),null;const o=(0,dd.getId)(s),u=this.getLiteralIncludingNegativeNumber(i.fieldExpr());if(u===null)return null;r.push({name:o,value:u})}return r}getQueryReference(e){const r=e.sourceArguments(),i=(0,dd.getId)(e);if(r){const s=this.getSourceArguments(r);return s===null?null:{name:i,parameters:s}}else return{name:i}}getQueryDefinition(e){if(e instanceof gt.SQIDContext){const r=this.getQueryReference(e);if(r!==null)return{kind:"query_reference",...r}}else{if(e instanceof gt.SQParensContext)return this.getQueryDefinition(e.sqExpr());if(e instanceof gt.SQComposeContext)this.notAllowed(e,"Source compositions");else if(e instanceof gt.SQRefinedQueryContext){const r=e.sqExpr(),i=this.getQueryDefinition(r),s=this.getRefinementSegment(e.segExpr());return s===null||i===null?null:(s.kind==="arrow"&&this.notAllowed(e,"Queries against refined queries"),{kind:"refinement",base:i,refinement:s})}else if(e instanceof gt.SQExtendedSourceContext)this.notAllowed(e,"Source extensions");else if(e instanceof gt.SQIncludeContext)this.notAllowed(e,"Source inclusions");else if(e instanceof gt.SQTableContext)this.notAllowed(e,"Table statements");else if(e instanceof gt.SQSQLContext)this.notAllowed(e,"SQL statements");else if(e instanceof gt.SQArrowContext){const r=e.sqExpr(),i=this.getQueryDefinition(r),s=this.getRefinementSegment(e.segExpr());return s===null||i===null?null:i.kind==="query_reference"?{kind:"arrow",source:{...i,kind:"source_reference"},view:s}:i.kind==="arrow"?{kind:"arrow",source:i.source,view:{kind:"arrow",source:i.view,view:s}}:{kind:"arrow",source:i,view:s}}}return null}getRefinementSegment(e){if(e instanceof gt.SegOpsContext){const r=e.queryProperties().queryStatement().flatMap(i=>this.getSegmentOperation(i));return r.some(i=>i===null)?null:{kind:"segment",operations:r}}else if(e instanceof gt.SegFieldContext){const{name:r,path:i}=this.getFieldPath(e.fieldPath());return{kind:"view_reference",name:r,path:i}}else{if(e instanceof gt.SegParenContext)return this.getViewExpression(e.vExpr());if(e instanceof gt.SegRefineContext){const r=this.getRefinementSegment(e._lhs),i=this.getRefinementSegment(e._rhs);return r===null||i===null?null:{kind:"refinement",base:r,refinement:i}}}return null}getGroupByStatement(e){const r=this.getAnnotations(e.tags()),s=e.queryFieldList().queryFieldEntry().map(o=>this.getQueryField(o));return s.some(o=>o===null)||s===null?null:s.map(o=>{var u;const a=[...r??[],...(u=o.field.annotations)!==null&&u!==void 0?u:[]];return{kind:"group_by",name:o.name,field:{...o.field,annotations:a.length>0?a:void 0}}})}getAggregateStatement(e){const r=this.getAnnotations(e.tags()),s=e.queryFieldList().queryFieldEntry().map(o=>this.getQueryField(o));return s.some(o=>o===null)||s===null?null:s.map(o=>{var u;const a=[...r??[],...(u=o.field.annotations)!==null&&u!==void 0?u:[]];return{kind:"aggregate",name:o.name,field:{...o.field,annotations:a.length>0?a:void 0}}})}getOrderByStatement(e){const r=e.ordering().orderBySpec(),i=[];for(const s of r)if(s.INTEGER_LITERAL())this.notAllowed(s,"Indexed order by statements");else if(s.fieldName()){const o=(0,dd.getId)(s.fieldName()),u=s.ASC()?"asc":s.DESC()?"desc":void 0;i.push({kind:"order_by",direction:u,field_reference:{name:o}})}else return null;return i}getNestStatement(e){const r=this.getAnnotations(e.tags()),i=e.nestedQueryList().nestEntry(),s=[];for(const o of i){if(!(o instanceof gt.NestDefContext))return this.internalError(o,"Expected nestDef"),null;const u=this.getAnnotations(o.tags()),a=this.getIsAnnotations(o.isDefine()),l=o.queryName(),c=l?(0,dd.getId)(l):void 0,f=this.getViewExpression(o.vExpr());if(f===null)return null;s.push({kind:"nest",name:c,view:{definition:f,annotations:this.combineAnnotations(r,u,a)}})}return s}getViewExpression(e){if(e instanceof gt.VSegContext)return this.getRefinementSegment(e.segExpr());if(e instanceof gt.VArrowContext){const r=this.getRefinementSegment(e),i=this.getViewExpression(e._rhs);return r===null||i===null?null:{kind:"arrow",source:r,view:i}}else return this.internalError(e,"Unexpected VExpr node"),null}getLimitStatement(e){return{kind:"limit",limit:this.getNumber(e.INTEGER_LITERAL())}}getSegmentOperation(e){if(e.groupByStatement()){const r=e.groupByStatement();return this.getGroupByStatement(r)}else if(e.aggregateStatement()){const r=e.aggregateStatement();return this.getAggregateStatement(r)}else if(e.limitStatement()){const r=e.limitStatement(),i=this.getLimitStatement(r);return i===null?null:[i]}else if(e.declareStatement())this.notAllowed(e,"Declare statements");else if(e.queryJoinStatement())this.notAllowed(e,"Query join statements");else if(e.queryExtend())this.notAllowed(e,"Query extend statements");else if(e.projectStatement())this.notAllowed(e,"Select statements");else if(e.indexStatement())this.notAllowed(e,"Index statements");else if(e.calculateStatement())this.notAllowed(e,"Calculate statements");else if(e.topStatement())this.notAllowed(e,"Top statements");else if(e.orderByStatement()){const r=e.orderByStatement();return this.getOrderByStatement(r)}else if(e.whereStatement()){const r=e.whereStatement(),i=this.getWhere(r);return i===null?null:i.map(s=>({kind:"where",...s}))}else if(e.drillStatement()){const r=e.drillStatement(),i=this.getDrill(r);return i===null?null:i.map(s=>({kind:"drill",...s}))}else if(e.havingStatement()){const r=e.havingStatement(),i=this.getHaving(r);return i===null?null:i.map(s=>({kind:"having",...s}))}else if(e.nestStatement()){const r=e.nestStatement();return this.getNestStatement(r)}else e.sampleStatement()?this.notAllowed(e,"Sample statements"):e.timezoneStatement()?this.notAllowed(e,"Timezone statements"):(e.queryAnnotation()||e.ignoredModelAnnotations())&&this.notAllowed(e,"Detached annotation statements");return null}getFieldPath(e){const r=e.fieldName().map(o=>(0,dd.getId)(o)),i=r[r.length-1],s=r.slice(0,-1);return{name:i,path:s.length>0?s:void 0}}getTimeframe(e){const r=e.text;return(0,eht.isTimestampUnit)(r)?r:(this.illegal(e,`Invalid timeframe ${r}`),null)}getQueryField(e){if(e.taggedRef()){const r=e.taggedRef(),i=this.getAnnotations(r.tags()),{name:s,path:o}=this.getFieldPath(r.fieldPath());if(r.refExpr()){const u=r.refExpr();if(u.timeframe()){const a=this.getTimeframe(u.timeframe());return a===null?null:{name:void 0,field:{annotations:i,expression:{kind:"time_truncation",field_reference:{name:s,path:o},truncation:a}}}}else u.aggregate()&&this.notAllowed(u,"Aggregate expressions")}else return{name:void 0,field:{annotations:i,expression:{kind:"field_reference",name:s,path:o}}}}else if(e.fieldDef()){const r=e.fieldDef(),i=this.getAnnotations(r.tags()),s=this.getIsAnnotations(r.isDefine()),o=(0,dd.getId)(r.fieldNameDef()),u=this.getFieldExpression(r.fieldExpr());return u===null?null:{name:o,field:{expression:u,annotations:this.combineAnnotations(i,s)}}}return null}getFieldExpression(e){if(e instanceof gt.ExprFieldPathContext){const{name:r,path:i}=this.getFieldPath(e.fieldPath());return{kind:"field_reference",name:r,path:i}}else if(e instanceof gt.ExprTimeTruncContext){const r=this.getTimeframe(e.timeframe()),i=e.fieldExpr(),s=this.getFieldExpression(i);return s===null||r===null?null:s.kind!=="field_reference"?(this.illegal(i,"Left hand side of time truncation must be a field reference"),null):{kind:"time_truncation",truncation:r,field_reference:{name:s.name,path:s.path,parameters:s.parameters}}}else if(e instanceof gt.ExprFieldPropsContext){const r=e.fieldExpr(),i=this.getFieldExpression(r);if(i===null)return null;if(i.kind!=="field_reference")return this.illegal(r,"Left hand side of filtered field must be a field reference"),null;const s=e.fieldProperties().fieldPropertyStatement(),o=[];for(const u of s){const a=u.whereStatement();if(a){const l=this.getWhere(a);if(l===null)return null;o.push(...l)}}return{kind:"filtered_field",field_reference:{name:i.name,path:i.path,parameters:i.parameters},where:o}}else{const r=this.getLiteralIncludingNegativeNumber(e);return r===null?null:{kind:"literal_value",literal_value:r}}}stripQuote(e,r){return e.slice(e.indexOf(r)+r.length,e.lastIndexOf(r))}getFilterString(e){const r=e.tripFilterString(),i=e.tickFilterString();if(r){const s=r.BQ3_FILTER(),o=r.DQ3_FILTER(),u=r.SQ3_FILTER();if(s)return this.stripQuote(s.text,"```");if(o)return this.stripQuote(o.text,'"""');if(u)return this.stripQuote(u.text,"'''")}else if(i){const s=i.BQ_FILTER(),o=i.DQ_FILTER(),u=i.SQ_FILTER();if(s)return this.stripQuote(s.text,"`");if(o)return this.stripQuote(o.text,'"');if(u)return this.stripQuote(u.text,"'")}return null}getFilterExpr(e){if(e instanceof gt.ExprCompareContext){if(e.compareOp().MATCH()){const r=e.fieldExpr()[0],i=e.fieldExpr()[1];if(r instanceof gt.ExprFieldPathContext&&i instanceof gt.ExprLiteralContext){const{path:s,name:o}=this.getFieldPath(r.fieldPath()),u=i.literal();if(u instanceof gt.FilterString_stubContext){const a=this.getFilterString(u.filterString());return a===null?null:{filter:{kind:"filter_string",field_reference:{name:o,path:s},filter:a}}}}}else if(e.compareOp().EQ()){const r=e.fieldExpr()[0],i=e.fieldExpr()[1];if(r instanceof gt.ExprFieldPathContext){const{path:s,name:o}=this.getFieldPath(r.fieldPath()),u=this.getLiteralIncludingNegativeNumber(i);return u===null?(this.notAllowed(e,"Filters other than comparisons with filter strings or equality with literals"),null):{filter:{kind:"literal_equality",field_reference:{name:o,path:s},value:u}}}}}return this.notAllowed(e,"Filters other than comparisons with filter strings or equality with literals"),null}getTimeLiteral(e,r){const i=r(e.text);if(!i)return this.contextError(e,"failed-to-parse-time-literal","Time data parse error"),null;const s=i.getValue(),o=s.timeframe;if(s.value.node!=="timeLiteral")return null;const u=s.value.literal,a=s.value.timezone;return s.type==="timestamp"?{kind:"timestamp_literal",timestamp_value:u,granularity:o,timezone:a}:o==="hour"||o==="minute"||o==="second"?null:{kind:"date_literal",date_value:u,granularity:o,timezone:a}}getLiteralIncludingNegativeNumber(e){if(e instanceof gt.ExprLiteralContext)return this.getLiteral(e.literal());if(e instanceof gt.ExprMinusContext){const r=e.fieldExpr();if(r instanceof gt.ExprLiteralContext){const i=this.getLiteral(r.literal());return i===null||i.kind!=="number_literal"?null:{kind:"number_literal",number_value:-i.number_value}}}return null}getLiteral(e){if(e instanceof gt.ExprTimeContext){const r=e.dateLiteral();return r instanceof gt.LiteralTimestampContext?this.getTimeLiteral(r,hd.LiteralTimestamp.parse):r instanceof gt.LiteralHourContext?this.getTimeLiteral(r,hd.LiteralHour.parse):r instanceof gt.LiteralDayContext?this.getTimeLiteral(r,hd.LiteralDay.parse):r instanceof gt.LiteralWeekContext?this.getTimeLiteral(r,hd.LiteralWeek.parse):r instanceof gt.LiteralMonthContext?this.getTimeLiteral(r,hd.LiteralMonth.parse):r instanceof gt.LiteralQuarterContext?this.getTimeLiteral(r,hd.LiteralQuarter.parse):r instanceof gt.LiteralYearContext?this.getTimeLiteral(r,hd.LiteralYear.parse):null}else{if(e instanceof gt.ExprArrayLiteralContext)return this.notAllowed(e,"array literals"),null;if(e instanceof gt.ExprLiteralRecordContext)return this.notAllowed(e,"record literals"),null;if(e instanceof gt.ExprStringContext){const[r,i]=(0,dd.getPlainString)(e);for(const s of i)s instanceof Xdt.ParserRuleContext&&this.contextError(s,"illegal-query-interpolation-outside-sql-block","%{ query } illegal in this string");return{kind:"string_literal",string_value:r??""}}else{if(e instanceof gt.ExprBoolContext)return{kind:"boolean_literal",boolean_value:e.TRUE()!==null};if(e instanceof gt.ExprNumberContext)return{kind:"number_literal",number_value:Number(e.text)};if(e instanceof gt.ExprNULLContext)return{kind:"null_literal"}}}return null}getDrill(e){const i=e.drillClauseList().fieldExpr().map(s=>this.getFilterExpr(s));return i.some(s=>s===null)?null:i}getWhere(e){const i=e.filterClauseList().fieldExpr().map(s=>this.getFilterExpr(s));return i.some(s=>s===null)?null:i}getHaving(e){const i=e.filterClauseList().fieldExpr().map(s=>this.getFilterExpr(s));return i.some(s=>s===null)?null:i}combineAnnotations(...e){const r=e.flatMap(i=>i??[]);return r.length>0?r:void 0}}BE.MalloyToQuery=Zxe;function rht(t){const e=(0,Xxe.getSourceInfo)(t),r=new Jxe.BaseMessageLogger(null),i="internal://query.malloy",s=(0,tht.runMalloyParser)(t,i,e,r),u=new Zxe(s,r).visit(s.root),a=(0,nht.mapLogs)(r.getLog(),i);if(u===null)return{logs:a};if(!("definition"in u))throw new Error("Expected a query");return{query:u,logs:a}}(function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.malloyToQuery=t.exploreQueryWalkerBuilder=t.MalloyTranslation=t.MalloyTranslator=void 0;var e=Sc;Object.defineProperty(t,"MalloyTranslator",{enumerable:!0,get:function(){return e.MalloyTranslator}}),Object.defineProperty(t,"MalloyTranslation",{enumerable:!0,get:function(){return e.MalloyTranslation}});var r=$E;Object.defineProperty(t,"exploreQueryWalkerBuilder",{enumerable:!0,get:function(){return r.exploreQueryWalkerBuilder}});var i=BE;Object.defineProperty(t,"malloyToQuery",{enumerable:!0,get:function(){return i.malloyToQuery}})})(p4);var Fe={},UR={};Object.defineProperty(UR,"__esModule",{value:!0}),UR.MALLOY_VERSION=void 0,UR.MALLOY_VERSION="0.0.282",Object.defineProperty(Fe,"__esModule",{value:!0}),Fe.InMemoryModelCache=Fe.CacheManager=Fe.CSVWriter=Fe.JSONWriter=Fe.DataWriter=Fe.DataRecord=Fe.DataArray=Fe.Result=Fe.ExploreMaterializer=Fe.PreparedResultMaterializer=Fe.QueryMaterializer=Fe.ModelMaterializer=Fe.SingleConnectionRuntime=Fe.ConnectionRuntime=Fe.Runtime=Fe.ExploreField=Fe.JoinRelationship=Fe.QueryField=Fe.Query=Fe.StringField=Fe.UnsupportedField=Fe.JSONField=Fe.BooleanField=Fe.NumberField=Fe.TimestampField=Fe.DateField=Fe.TimestampTimeframe=Fe.DateTimeframe=Fe.AtomicField=Fe.AtomicFieldType=Fe.Explore=Fe.SourceRelationship=Fe.FixedConnectionMap=Fe.InMemoryURLReader=Fe.EmptyURLReader=Fe.PreparedResult=Fe.DocumentCompletion=Fe.DocumentSymbol=Fe.DocumentPosition=Fe.DocumentRange=Fe.DocumentTablePath=Fe.Parse=Fe.PreparedQuery=Fe.Model=Fe.MalloyError=Fe.Malloy=void 0;const ede=p4,ni=ei,tde=Ny,pM=Qp,iht=UR,sht=Gp,Fn=ws,oht=sd,uht=Bi,aht=RE,nde="internal://internal.malloy";let Zl=class FD{static get version(){return iht.MALLOY_VERSION}static _parse(e,r,i,s,o){r===void 0&&(r=new URL(nde));let u=r;s!=null&&s.importBaseURL&&(u=s==null?void 0:s.importBaseURL);const a=new ede.MalloyTranslator(r.toString(),u.toString(),{urls:{[r.toString()]:e}},i);return s!=null&&s.testEnvironment&&(a.allDialectsEnabled=!0),new ide(a,o)}static parse({url:e,urlReader:r,source:i,eventStream:s,options:o}){if(i!==void 0)return FD._parse(i,e,s,o);if(r===void 0)throw new Error("Internal Error: urlReader is required.");if(e===void 0)throw new Error("Internal Error: url is required if source not present.");return YR(r,e).then(({contents:u,invalidationKey:a})=>FD._parse(u,e,s,o,a))}static async compile({url:e,source:r,parse:i,urlReader:s,connections:o,model:u,refreshSchemaCache:a,noThrowOnError:l,eventStream:c,importBaseURL:f,cacheManager:x}){var h,p,m,g,y;let _;if(a&&(_=typeof a=="number"?a:Date.now()),e===void 0&&r===void 0&&i===void 0)throw new Error("Internal Error: url, source, or parse required.");e===void 0&&(i!==void 0?e=new URL(i._translator.sourceURL):e=new URL(nde));const E={};if(r===void 0&&x!==void 0){const C=await x.getCachedModelDef(s,e.toString());if(C)return new I2(C.modelDef,[],[e.toString(),...VR(C.modelDef.dependencies)])}f??(f=e);let A;const v=e.toString();if(i!==void 0){A=i._translator;const C=(h=i._invalidationKey)!==null&&h!==void 0?h:await DM(s,e);E[v]=C}else{if(r===void 0){const{contents:C,invalidationKey:b}=await YR(s,e);E[v]=b,r=C}else{const C=await DM(s,e);E[v]=C}A=new ede.MalloyTranslator(v,f.toString(),{urls:{[v]:r}},c)}for(;;){const C=A.translate(u==null?void 0:u._modelDef);if(C.final)if(C.modelDef){await(x==null?void 0:x.setCachedModelDef(e.toString(),{modelDef:C.modelDef,invalidationKeys:E}));for(const b of A.newlyTranslatedDependencies())await(x==null?void 0:x.setCachedModelDef(b.url,{modelDef:b.modelDef,invalidationKeys:E}));return new I2(C.modelDef,C.problems||[],[...(p=u==null?void 0:u.fromSources)!==null&&p!==void 0?p:[],...(m=C.fromSources)!==null&&m!==void 0?m:[]])}else if(l){const b={name:"modelDidNotCompile",exports:[],contents:{},dependencies:{},queryList:[]},S=(u==null?void 0:u._modelDef)||b;return new I2(S,C.problems||[],[...(g=u==null?void 0:u.fromSources)!==null&&g!==void 0?g:[],...(y=C.fromSources)!==null&&y!==void 0?y:[]])}else{const b=C.problems||[],S=A.prettyErrors();throw new rde(`Error(s) compiling model:
|
|
1394
|
+
${s}`:e=s}return e}childRequest(e){var r;const i=decodeURI(new URL(e,this.sourceURL).toString()),s=(r=this.childTranslators.get(i))===null||r===void 0?void 0:r.translate();if(s!=null&&s.compileSQL)return{compileSQL:s.compileSQL}}getChildExports(e){const r={},i=decodeURI(new URL(e,this.sourceURL).toString()),s=this.childTranslators.get(i);if(s&&s.translate().modelDef)for(const u of s.modelDef.exports){const a=s.modelDef.contents[u];((0,_dt.isSourceDef)(a)||a.type==="query")&&(r[u]=a)}return r}translate(e){if(this.finalAnswer)return this.finalAnswer;const r=this.translateStep.step(this,e);return r.final&&(this.finalAnswer=r),r}translatorForDependency(e){return this.childTranslators.get(e)}importAt(e){for(let r=0;r<this.imports.length;r++){const i=this.imports[r];if((0,lM.locationContainsPosition)(i.location,e))return i}}metadata(){return this.metadataStep.step(this)}modelAnnotation(e){return this.modelAnnotationStep.step(this,e)}tablePathInfo(){return this.tablePathInfoStep.step(this)}completions(e){return this.completionsStep.step(this,e)}helpContext(e){return this.helpContextStep.step(this,e)}defaultLocation(){return{url:this.sourceURL,range:{start:{line:0,character:0},end:{line:0,character:0}}}}rangeFromContext(e){return(0,lM.rangeFromContext)(this.parseStep.sourceInfo,e)}firstReferenceToDialect(e){return this.dialectAlreadyChecked[e]?!1:(this.dialectAlreadyChecked[e]=!0,!0)}experimentalDialectEnabled(e){if(this.allDialectsEnabled)return!0;const r=this.compilerFlags.tag("experimental");return r!==void 0&&(r.bare()||r.has("dialect",e))}}Sc.MalloyTranslation=cM;class Uxe extends cM{constructor(e,r){super(e),this.root=r}}Sc.MalloyChildTranslator=Uxe;class Udt extends cM{constructor(e,r=null,i=null,s=null){super(e,r),this.eventStream=s,this.schemaZone=new aM.Zone,this.importZone=new aM.Zone,this.pretranslatedModels=new Map,this.sqlQueryZone=new aM.Zone,this.root=this,this.logger=new jxe.BaseMessageLogger(s),i&&this.update(i)}update(e){var r,i,s;this.schemaZone.updateFrom(e.tables,(r=e.errors)===null||r===void 0?void 0:r.tables),this.importZone.updateFrom(e.urls,(i=e.errors)===null||i===void 0?void 0:i.urls),this.sqlQueryZone.updateFrom(e.compileSQL,(s=e.errors)===null||s===void 0?void 0:s.compileSQL);for(const o in e.translations)this.pretranslatedModels.set(o,e.translations[o])}logError(e,r,i){return this.logger.log((0,jxe.makeLogMessage)(e,r,{severity:"error",...i})),e}}Sc.MalloyTranslator=Udt;function qxe(t){return[...Object.keys(t),...Object.keys(t).map(e=>qxe(t[e])).flat()]}var $E={};Object.defineProperty($E,"__esModule",{value:!0}),$E.ExploreQueryWalker=void 0,$E.exploreQueryWalkerBuilder=Hdt;const qdt=sc;class Hxe{constructor(e){this.inDocument=!1,this.exploreClauseRefs=[],this.tokens=e}exploreQueryAtOffset(e){return this.exploreClauseRefs.find(r=>r.range[0]===void 0||r.range[1]===void 0?!1:r.range[0]<=e&&r.range[1]>=e)}filterAtOffset(e){const r=this.exploreQueryAtOffset(e);if(r)return r.filterRefs.find(i=>i.range[0]===void 0||i.range[1]===void 0?!1:i.range[0]<=e&&i.range[1]>=e)}hasFilterListAtOffset(e){const r=this.exploreQueryAtOffset(e);return r?!!r.filterLists.find(i=>i.range[0]===void 0||i.range[1]===void 0?!1:i.range[0]<=e&&i.range[1]>=e):!1}enterMalloyDocument(){this.inDocument=!0}}$E.ExploreQueryWalker=Hxe;function Hdt(t,e){const r=new Hxe(t),i=r;return qdt.ParseTreeWalker.DEFAULT.walk(i,e),r}var BE={},kE={},Xl={};Object.defineProperty(Xl,"__esModule",{value:!0}),Xl.sourceDefToSourceInfo=zxe,Xl.modelDefToModelInfo=Qdt,Xl.convertFieldInfos=L2,Xl.writeLiteralToTag=Yxe,Xl.getResultStructMetadataAnnotation=MR;const _o=ei,fM=fu,xM=ws,Qxe=Xo;function zxe(t){var e;const r=t.parameters&&Object.entries(t.parameters).length>0?Object.entries(t.parameters).map(([s,o])=>(0,_o.isAtomic)(o)?{name:s,type:jR(o),default_value:Gxe(o.value)}:{name:s,type:{kind:"filter_expression_type",filter_type:{kind:`${o.filterType}_type`}},default_value:Gxe(o.value)}):void 0;return{name:(e=t.as)!==null&&e!==void 0?e:t.name,schema:{fields:L2(t,t.fields)},parameters:r,annotations:dM(t)}}function Qdt(t){const e={entries:[],anonymous_queries:[]};for(const[r,i]of Object.entries(t.contents))if(t.exports.includes(r)){if((0,_o.isSourceDef)(i)){const s=zxe(i);e.entries.push({kind:"source",...s})}else if(i.type==="query"){const s=(0,fM.getResultStructDefForQuery)(t,i),o=dM(i),u=s.resultMetadata?MR(s,s.resultMetadata):void 0,a=[...o??[],...u?[u]:[]],l={kind:"source",name:r,schema:{fields:L2(s,s.fields)},annotations:a.length>0?a:void 0};e.entries.push(l)}}for(const r of t.queryList){const i=(0,fM.getResultStructDefForQuery)(t,r),s=dM(r),o=i.resultMetadata?MR(i,i.resultMetadata):void 0,u=[...s??[],...o?[o]:[]],a={schema:{fields:L2(i,i.fields)},annotations:u.length>0?u:void 0};e.anonymous_queries.push(a)}return e}function Gxe(t){if(t!==null)switch(t.node){case"numberLiteral":return{kind:"number_literal",number_value:parseFloat(t.literal)};case"stringLiteral":return{kind:"string_literal",string_value:t.literal};case"filterLiteral":return{kind:"filter_expression_literal",filter_expression_value:t.filterSrc};case"timeLiteral":return{kind:"timestamp_literal",timestamp_value:t.literal};case"true":return{kind:"boolean_literal",boolean_value:!0};case"false":return{kind:"boolean_literal",boolean_value:!1};case"null":return{kind:"null_literal"};default:throw new Error("Invalid parameter default value")}}function dM(t){return(0,xM.annotationToTaglines)(t.annotation).map(r=>({value:r}))}function L2(t,e){var r,i,s;const o=[];for(const u of e){if(!(u.accessModifier===void 0))continue;const c=(0,xM.annotationToTaglines)(u.annotation).map(x=>({value:x})),f=c.length>0?c:void 0;if((0,_o.isTurtle)(u)){const x=(0,fM.getResultStructDefForView)(t,u),h=x.resultMetadata?MR(x,x.resultMetadata):void 0,p=[...f??[],...h?[h]:[]],m={kind:"view",name:(r=u.as)!==null&&r!==void 0?r:u.name,annotations:p.length>0?p:void 0,schema:{fields:L2(x,x.fields)}};o.push(m)}else if((0,_o.isAtomic)(u)){const x=(0,_o.expressionIsAggregate)(u.expressionType),h=(0,_o.expressionIsScalar)(u.expressionType);if(!x&&!h||u.type==="error")continue;const p=u.resultMetadata?Wxe(u,u.resultMetadata):void 0,m=[...f??[],...p?[p]:[]],g={kind:x?"measure":"dimension",name:(i=u.as)!==null&&i!==void 0?i:u.name,type:jR(u),annotations:m.length>0?m:void 0};o.push(g)}else if((0,_o.isJoinedSource)(u)){const x={kind:"join",name:(s=u.as)!==null&&s!==void 0?s:u.name,annotations:f,schema:{fields:L2(u,u.fields)},relationship:u.join};o.push(x)}}return o}function Wxe(t,e){var r;const i=Qxe.Tag.withPrefix("#(malloy) ");let s=!1;e.referenceId!==void 0&&(i.set(["reference_id"],e.referenceId),s=!0),e.fieldKind==="measure"&&(i.set(["calculation"]),s=!0),e.drillable&&(i.set(["drillable"]),s=!0),((0,_o.isAtomic)(t)||(0,_o.isTurtle)(t))&&t.drillView!==void 0&&(i.set(["drill_view"],t.drillView),s=!0);const o=(r=e.filterList)===null||r===void 0?void 0:r.filter(u=>u.expressionType==="scalar");if(o&&(Vxe(i,o),s=!0),e.fieldKind==="dimension"){const a=(e==null?void 0:e.sourceExpression)||(e!=null&&e.sourceField.includes(".")?e==null?void 0:e.sourceField:Gdt(t.name));i.set(["drill_expression"],a),s=!0}return s?{value:i.toString()}:void 0}function Vxe(t,e){var r;for(let i=0;i<e.length;i++){const s=e[i];t.set(["drill_filters",i,"code"],s.code),s.drillView&&t.set(["drill_filters",i,"drill_view"],s.drillView),s.drillView===void 0&&s.stableFilter!==void 0&&(t.set(["drill_filters",i,"field_reference"],[...(r=s.stableFilter.field_reference.path)!==null&&r!==void 0?r:[],s.stableFilter.field_reference.name]),s.stableFilter.kind==="filter_string"?(t.set(["drill_filters",i,"kind"],"filter_expression"),t.set(["drill_filters",i,"filter_expression"],s.stableFilter.filter)):(t.set(["drill_filters",i,"kind"],"literal_equality"),Yxe(t,["drill_filters",i,"value"],s.stableFilter.value)))}}function Yxe(t,e,r){switch(t.set([...e,"kind"],r.kind),r.kind){case"string_literal":t.set([...e,"string_value"],r.string_value);break;case"number_literal":t.set([...e,"number_value"],r.number_value);break;case"boolean_literal":t.set([...e,"boolean_value"],r.boolean_value.toString());break;case"date_literal":t.set([...e,"date_value"],r.date_value),t.set([...e,"timezone"],r.timezone),t.set([...e,"granularity"],r.granularity);break;case"timestamp_literal":t.set([...e,"timestamp_value"],r.timestamp_value),t.set([...e,"timezone"],r.timezone),t.set([...e,"granularity"],r.granularity);break;case"filter_expression_literal":t.set([...e,"filter_expression_value"],r.filter_expression_value);break}}function zdt(t){return t.replace(/\\/g,"\\\\").replace(/`/g,"\\`")}function Gdt(t){return t.match(/^[A-Za-z_][0-9A-Za-z_]*$/)?t:`\`${zdt(t)}\``}function MR(t,e){var r,i,s;const o=Qxe.Tag.withPrefix("#(malloy) ");let u=!1;e.limit!==void 0&&(o.set(["limit"],e.limit),u=!0);const a=(r=e.filterList)===null||r===void 0?void 0:r.filter(l=>l.expressionType==="scalar");if(a&&(Vxe(o,a),u=!0),e.drillable&&(o.set(["drillable"]),u=!0),e.orderBy){for(let l=0;l<e.orderBy.length;l++){const c=e.orderBy[l],f=typeof c.field=="number"?(i=t.fields[c.field-1].as)!==null&&i!==void 0?i:t.fields[c.field-1].name:c.field,x=(s=c.dir)!==null&&s!==void 0?s:null;o.set(["ordered_by",l,f],x)}u=!0}return u?{value:o.toString()}:void 0}function jR(t){if((0,_o.isBasicAtomic)(t))switch(t.type){case"string":return{kind:"string_type"};case"number":return{kind:"number_type",subtype:t.numberType==="float"?"decimal":t.numberType==="integer"?"integer":void 0};case"boolean":return{kind:"boolean_type"};case"date":{const e=t.timeframe;return e&&!Wdt(e)?{kind:"timestamp_type",timeframe:t.timeframe}:{kind:"date_type",timeframe:Vdt(t.timeframe)}}case"timestamp":return{kind:"timestamp_type",timeframe:t.timeframe};case"json":return{kind:"json_type"};case"sql native":return{kind:"sql_native_type",sql_type:t.rawType};case"error":throw new Error("Error type is not supported in stable interface")}else{if((0,_o.isRepeatedRecord)(t))return{kind:"array_type",element_type:Kxe(t)};if(t.type==="record")return Kxe(t);if(t.type==="array")return{kind:"array_type",element_type:jR(t.elementTypeDef)}}throw new Error("Unexpected field type")}function Kxe(t){return{kind:"record_type",fields:t.fields.map(e=>{const r=[];if("resultMetadata"in e&&e.resultMetadata){const i=Wxe(e,e.resultMetadata);i&&r.push(i)}if(e.annotation){const i=(0,xM.annotationToTaglines)(e.annotation);r.push(...i.map(s=>({value:s})))}if((0,_o.isAtomic)(e))return{name:e.name,annotations:r.length>0?r:void 0,type:jR(e)};throw new Error("Expected record type to not have a table as its child")})}}function Wdt(t){switch(t){case"day":case"week":case"month":case"year":case"quarter":return!0;default:return!1}}function Vdt(t){switch(t){case void 0:return;case"day":case"week":case"month":case"year":case"quarter":return t;default:throw new Error(`Invalid date timeframe ${t}`)}}function a2t(t){return t}function l2t(t){return t}(function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.DEFAULT_LOG_RANGE=void 0,t.wrapLegacyInfoConnection=u,t.wrapLegacyConnection=a,t.mapData=c,t.wrapResult=f,t.nodeToLiteralValue=x,t.mapLogs=h;const e=Xo,r=ws,i=ei,s=Xl,o=Ny;function u(p){return{get dialectName(){return p.dialectName},async fetchSchemaForSQLQuery(m){const g=await p.fetchSchemaForSQLStruct({connection:p.name,selectStr:m},{}),y=g.structDef;if(y===void 0)throw new Error(g.error);return{fields:(0,s.convertFieldInfos)(y,y.fields)}},async fetchSchemaForTable(m){const g=`${p.name}:${m}`,y=await p.fetchSchemaForTables({[g]:m},{}),_=y.schemas[g];if(_===void 0)throw new Error(y.errors[g]);return{fields:(0,s.convertFieldInfos)(_,_.fields)}}}}function a(p){return{...u(p),runSQL:async(m,g)=>{const y=await p.runSQL(m);return c(y.rows,g)}}}function l(p){if(p instanceof Date)return p;if(p.constructor.name==="Date")return new Date(p);if(typeof p=="number")return new Date(p);if(typeof p!="string")return new Date(p.value);{let g=o.DateTime.fromISO(p,{zone:"UTC"});return g.isValid||(g=o.DateTime.fromSQL(p,{zone:"UTC"})),g.toJSDate()}}function c(p,m){function g(E,A){if(E===null)return{kind:"null_cell"};if(A.type.kind==="date_type"||A.type.kind==="timestamp_type"){const v=l(E).toISOString();return A.type.kind==="date_type"?{kind:"date_cell",date_value:v}:{kind:"timestamp_cell",timestamp_value:v}}else if(A.type.kind==="boolean_type"){if(typeof E=="number")return{kind:"boolean_cell",boolean_value:E!==0};if(typeof E!="boolean")throw new Error(`Invalid boolean ${E}`);return{kind:"boolean_cell",boolean_value:E}}else if(A.type.kind==="number_type"){if(typeof E!="number")throw new Error(`Invalid number ${E}`);return{kind:"number_cell",number_value:E}}else if(A.type.kind==="string_type"){if(typeof E!="string")throw new Error(`Invalid string ${E}`);return{kind:"string_cell",string_value:E}}else if(A.type.kind==="array_type"){if(!Array.isArray(E))throw new Error(`Invalid array ${E}`);return{kind:"array_cell",array_value:E.map(v=>g(v,{name:"array_element",type:A.type.element_type}))}}else{if(A.type.kind==="json_type")return{kind:"json_cell",json_value:JSON.stringify(E)};if(A.type.kind==="sql_native_type")return{kind:"sql_native_cell",sql_native_value:JSON.stringify(E)};{const v=A.type;if(v.kind!=="record_type")throw new Error(`Invalid record in result ${JSON.stringify(A)}, ${JSON.stringify(E)}`);return y(E,{kind:"join",relationship:"many",name:"array_element",schema:{fields:v.fields.map(C=>({kind:"dimension",...C}))}})}}}function y(E,A){const v=[];for(const C of A.schema.fields){const b=E[C.name];if(C.kind!=="dimension")throw new Error("Invalid result -- expected all fields to be dimensions");const S=g(b,C);v.push(S)}return{kind:"record_cell",record_value:v}}const _={kind:"join",schema:m,name:"root",relationship:"one"};return{kind:"array_cell",array_value:p.map(E=>y(E,_))}}function f(p){const m=p._queryResult.structs,g=m[m.length-1],y={fields:(0,s.convertFieldInfos)(g,g.fields)},_=(0,r.annotationToTaglines)(p.annotation).map(v=>({value:v})),E=g.resultMetadata?(0,s.getResultStructMetadataAnnotation)(g,g.resultMetadata):void 0;E&&_.push(E),_.push(...g.resultMetadata?[]:[]);const A=e.Tag.withPrefix("#(malloy) ");if(p.sourceExplore&&A.set(["source","name"],p.sourceExplore.name),p._sourceArguments){const v=Object.entries(p._sourceArguments);for(let C=0;C<v.length;C++){const[b,S]=v[C],R=x(S.value);R!==void 0&&(0,s.writeLiteralToTag)(A,["source","parameters",C,"value"],R),A.set(["source","parameters",C,"name"],b)}}return _.push({value:A.toString()}),_.push({value:e.Tag.withPrefix("#(malloy) ").set(["query_name"],p.resultExplore.name).toString()}),{schema:y,data:c(p.data.toObject(),y),connection_name:p.connectionName,annotations:_.length>0?_:void 0,query_timezone:p.data.field.queryTimezone,sql:p.sql}}function x(p){switch(p==null?void 0:p.node){case"numberLiteral":return{kind:"number_literal",number_value:Number.parseFloat(p.literal)};case"null":return{kind:"null_literal"};case"stringLiteral":return{kind:"string_literal",string_value:p.literal};case"filterLiteral":return{kind:"filter_expression_literal",filter_expression_value:p.filterSrc};case"true":return{kind:"boolean_literal",boolean_value:!0};case"false":return{kind:"boolean_literal",boolean_value:!1};case"timeLiteral":return p.typeDef.type==="date"?p.typeDef.timeframe===void 0||(0,i.isDateUnit)(p.typeDef.timeframe)?{kind:"date_literal",date_value:p.literal,timezone:p.timezone,granularity:p.typeDef.timeframe}:void 0:{kind:"timestamp_literal",timestamp_value:p.literal,timezone:p.timezone,granularity:p.typeDef.timeframe};default:return}}t.DEFAULT_LOG_RANGE={start:{line:0,character:0},end:{line:0,character:0}};function h(p,m){return p.map(g=>{var y,_,E,A;return{severity:g.severity,message:g.message,range:(_=(y=g.at)===null||y===void 0?void 0:y.range)!==null&&_!==void 0?_:t.DEFAULT_LOG_RANGE,url:(A=(E=g.at)===null||E===void 0?void 0:E.url)!==null&&A!==void 0?A:m}})}})(kE);var Ydt=T&&T.__createBinding||(Object.create?function(t,e,r,i){i===void 0&&(i=r);var s=Object.getOwnPropertyDescriptor(e,r);(!s||("get"in s?!e.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,i,s)}:function(t,e,r,i){i===void 0&&(i=r),t[i]=e[r]}),Kdt=T&&T.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),Jdt=T&&T.__importStar||function(){var t=function(e){return t=Object.getOwnPropertyNames||function(r){var i=[];for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(i[i.length]=s);return i},t(e)};return function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var i=t(e),s=0;s<i.length;s++)i[s]!=="default"&&Ydt(r,e,i[s]);return Kdt(r,e),r}}();Object.defineProperty(BE,"__esModule",{value:!0}),BE.MalloyToQuery=void 0,BE.malloyToQuery=rht;const Xdt=$p,Zdt=tp,gt=Jdt(F),Jxe=Zp,dd=cs,eht=We,tht=HT,Xxe=Bi,nht=kE,hd=Iy,hM="Malloy query documents";class Zxe extends Zdt.AbstractParseTreeVisitor{constructor(e,r){super(),this.parseInfo=e,this.msgLog=r}internalError(e,r){return this.contextError(e,"internal-translator-error",{message:r}),new Error(`Internal Translator Error: ${r}`)}getLocation(e){return{url:this.parseInfo.sourceURL,range:(0,Xxe.rangeFromContext)(this.parseInfo.sourceInfo,e)}}contextError(e,r,i,s){this.msgLog.log((0,Jxe.makeLogMessage)(r,i,{at:this.getLocation(e),...s}))}getNumber(e){return Number.parseInt(e.text)}defaultResult(){return null}getAnnotations(e){const r=e.ANNOTATION().map(i=>({value:i.text}));return r.length>0?r:void 0}getIsAnnotations(e){var r,i;if(e===void 0)return;const o=((r=this.getAnnotations(e._beforeIs))!==null&&r!==void 0?r:[]).concat((i=this.getAnnotations(e._afterIs))!==null&&i!==void 0?i:[]);return o.length>0?o:void 0}notAllowed(e,r){this.illegal(e,`${r} are not allowed in ${hM}`)}illegal(e,r){this.contextError(e,"invalid-malloy-query-document",r)}visitMalloyDocument(e){const r=e.malloyStatement();let i;for(const s of r)s.defineSourceStatement()?this.notAllowed(s,"Source definitions"):s.defineQuery()?this.notAllowed(s,"Query definitions"):s.importStatement()?this.notAllowed(s,"Import statements"):s.docAnnotations()?this.notAllowed(s,"Model annotations"):s.ignoredObjectAnnotations()?this.notAllowed(s,"Detatched object annotations"):s.experimentalStatementForTesting()?this.notAllowed(s,"Experimental testing statements"):i===void 0?i=s.runStatement():this.illegal(s,`${hM} may only have one run statement`);return i===void 0?(this.illegal(e,`${hM} must have a run statement`),null):this.visitRunStatement(i)}visitRunStatement(e){const r=e.topLevelAnonQueryDef(),i=this.getQueryDefinition(r.sqExpr()),s=this.getAnnotations(e.topLevelAnonQueryDef().tags());return i!==null?{annotations:s,definition:i}:null}getSourceArguments(e){const r=[];for(const i of e.sourceArgument()){const s=i.argumentId();if(s===void 0)return this.contextError(i,"unnamed-source-argument","Source argument must be named"),null;const o=(0,dd.getId)(s),u=this.getLiteralIncludingNegativeNumber(i.fieldExpr());if(u===null)return null;r.push({name:o,value:u})}return r}getQueryReference(e){const r=e.sourceArguments(),i=(0,dd.getId)(e);if(r){const s=this.getSourceArguments(r);return s===null?null:{name:i,parameters:s}}else return{name:i}}getQueryDefinition(e){if(e instanceof gt.SQIDContext){const r=this.getQueryReference(e);if(r!==null)return{kind:"query_reference",...r}}else{if(e instanceof gt.SQParensContext)return this.getQueryDefinition(e.sqExpr());if(e instanceof gt.SQComposeContext)this.notAllowed(e,"Source compositions");else if(e instanceof gt.SQRefinedQueryContext){const r=e.sqExpr(),i=this.getQueryDefinition(r),s=this.getRefinementSegment(e.segExpr());return s===null||i===null?null:(s.kind==="arrow"&&this.notAllowed(e,"Queries against refined queries"),{kind:"refinement",base:i,refinement:s})}else if(e instanceof gt.SQExtendedSourceContext)this.notAllowed(e,"Source extensions");else if(e instanceof gt.SQIncludeContext)this.notAllowed(e,"Source inclusions");else if(e instanceof gt.SQTableContext)this.notAllowed(e,"Table statements");else if(e instanceof gt.SQSQLContext)this.notAllowed(e,"SQL statements");else if(e instanceof gt.SQArrowContext){const r=e.sqExpr(),i=this.getQueryDefinition(r),s=this.getRefinementSegment(e.segExpr());return s===null||i===null?null:i.kind==="query_reference"?{kind:"arrow",source:{...i,kind:"source_reference"},view:s}:i.kind==="arrow"?{kind:"arrow",source:i.source,view:{kind:"arrow",source:i.view,view:s}}:{kind:"arrow",source:i,view:s}}}return null}getRefinementSegment(e){if(e instanceof gt.SegOpsContext){const r=e.queryProperties().queryStatement().flatMap(i=>this.getSegmentOperation(i));return r.some(i=>i===null)?null:{kind:"segment",operations:r}}else if(e instanceof gt.SegFieldContext){const{name:r,path:i}=this.getFieldPath(e.fieldPath());return{kind:"view_reference",name:r,path:i}}else{if(e instanceof gt.SegParenContext)return this.getViewExpression(e.vExpr());if(e instanceof gt.SegRefineContext){const r=this.getRefinementSegment(e._lhs),i=this.getRefinementSegment(e._rhs);return r===null||i===null?null:{kind:"refinement",base:r,refinement:i}}}return null}getGroupByStatement(e){const r=this.getAnnotations(e.tags()),s=e.queryFieldList().queryFieldEntry().map(o=>this.getQueryField(o));return s.some(o=>o===null)||s===null?null:s.map(o=>{var u;const a=[...r??[],...(u=o.field.annotations)!==null&&u!==void 0?u:[]];return{kind:"group_by",name:o.name,field:{...o.field,annotations:a.length>0?a:void 0}}})}getAggregateStatement(e){const r=this.getAnnotations(e.tags()),s=e.queryFieldList().queryFieldEntry().map(o=>this.getQueryField(o));return s.some(o=>o===null)||s===null?null:s.map(o=>{var u;const a=[...r??[],...(u=o.field.annotations)!==null&&u!==void 0?u:[]];return{kind:"aggregate",name:o.name,field:{...o.field,annotations:a.length>0?a:void 0}}})}getOrderByStatement(e){const r=e.ordering().orderBySpec(),i=[];for(const s of r)if(s.INTEGER_LITERAL())this.notAllowed(s,"Indexed order by statements");else if(s.fieldName()){const o=(0,dd.getId)(s.fieldName()),u=s.ASC()?"asc":s.DESC()?"desc":void 0;i.push({kind:"order_by",direction:u,field_reference:{name:o}})}else return null;return i}getNestStatement(e){const r=this.getAnnotations(e.tags()),i=e.nestedQueryList().nestEntry(),s=[];for(const o of i){if(!(o instanceof gt.NestDefContext))return this.internalError(o,"Expected nestDef"),null;const u=this.getAnnotations(o.tags()),a=this.getIsAnnotations(o.isDefine()),l=o.queryName(),c=l?(0,dd.getId)(l):void 0,f=this.getViewExpression(o.vExpr());if(f===null)return null;s.push({kind:"nest",name:c,view:{definition:f,annotations:this.combineAnnotations(r,u,a)}})}return s}getViewExpression(e){if(e instanceof gt.VSegContext)return this.getRefinementSegment(e.segExpr());if(e instanceof gt.VArrowContext){const r=this.getRefinementSegment(e),i=this.getViewExpression(e._rhs);return r===null||i===null?null:{kind:"arrow",source:r,view:i}}else return this.internalError(e,"Unexpected VExpr node"),null}getLimitStatement(e){return{kind:"limit",limit:this.getNumber(e.INTEGER_LITERAL())}}getSegmentOperation(e){if(e.groupByStatement()){const r=e.groupByStatement();return this.getGroupByStatement(r)}else if(e.aggregateStatement()){const r=e.aggregateStatement();return this.getAggregateStatement(r)}else if(e.limitStatement()){const r=e.limitStatement(),i=this.getLimitStatement(r);return i===null?null:[i]}else if(e.declareStatement())this.notAllowed(e,"Declare statements");else if(e.queryJoinStatement())this.notAllowed(e,"Query join statements");else if(e.queryExtend())this.notAllowed(e,"Query extend statements");else if(e.projectStatement())this.notAllowed(e,"Select statements");else if(e.indexStatement())this.notAllowed(e,"Index statements");else if(e.calculateStatement())this.notAllowed(e,"Calculate statements");else if(e.topStatement())this.notAllowed(e,"Top statements");else if(e.orderByStatement()){const r=e.orderByStatement();return this.getOrderByStatement(r)}else if(e.whereStatement()){const r=e.whereStatement(),i=this.getWhere(r);return i===null?null:i.map(s=>({kind:"where",...s}))}else if(e.drillStatement()){const r=e.drillStatement(),i=this.getDrill(r);return i===null?null:i.map(s=>({kind:"drill",...s}))}else if(e.havingStatement()){const r=e.havingStatement(),i=this.getHaving(r);return i===null?null:i.map(s=>({kind:"having",...s}))}else if(e.nestStatement()){const r=e.nestStatement();return this.getNestStatement(r)}else e.sampleStatement()?this.notAllowed(e,"Sample statements"):e.timezoneStatement()?this.notAllowed(e,"Timezone statements"):(e.queryAnnotation()||e.ignoredModelAnnotations())&&this.notAllowed(e,"Detached annotation statements");return null}getFieldPath(e){const r=e.fieldName().map(o=>(0,dd.getId)(o)),i=r[r.length-1],s=r.slice(0,-1);return{name:i,path:s.length>0?s:void 0}}getTimeframe(e){const r=e.text;return(0,eht.isTimestampUnit)(r)?r:(this.illegal(e,`Invalid timeframe ${r}`),null)}getQueryField(e){if(e.taggedRef()){const r=e.taggedRef(),i=this.getAnnotations(r.tags()),{name:s,path:o}=this.getFieldPath(r.fieldPath());if(r.refExpr()){const u=r.refExpr();if(u.timeframe()){const a=this.getTimeframe(u.timeframe());return a===null?null:{name:void 0,field:{annotations:i,expression:{kind:"time_truncation",field_reference:{name:s,path:o},truncation:a}}}}else u.aggregate()&&this.notAllowed(u,"Aggregate expressions")}else return{name:void 0,field:{annotations:i,expression:{kind:"field_reference",name:s,path:o}}}}else if(e.fieldDef()){const r=e.fieldDef(),i=this.getAnnotations(r.tags()),s=this.getIsAnnotations(r.isDefine()),o=(0,dd.getId)(r.fieldNameDef()),u=this.getFieldExpression(r.fieldExpr());return u===null?null:{name:o,field:{expression:u,annotations:this.combineAnnotations(i,s)}}}return null}getFieldExpression(e){if(e instanceof gt.ExprFieldPathContext){const{name:r,path:i}=this.getFieldPath(e.fieldPath());return{kind:"field_reference",name:r,path:i}}else if(e instanceof gt.ExprTimeTruncContext){const r=this.getTimeframe(e.timeframe()),i=e.fieldExpr(),s=this.getFieldExpression(i);return s===null||r===null?null:s.kind!=="field_reference"?(this.illegal(i,"Left hand side of time truncation must be a field reference"),null):{kind:"time_truncation",truncation:r,field_reference:{name:s.name,path:s.path,parameters:s.parameters}}}else if(e instanceof gt.ExprFieldPropsContext){const r=e.fieldExpr(),i=this.getFieldExpression(r);if(i===null)return null;if(i.kind!=="field_reference")return this.illegal(r,"Left hand side of filtered field must be a field reference"),null;const s=e.fieldProperties().fieldPropertyStatement(),o=[];for(const u of s){const a=u.whereStatement();if(a){const l=this.getWhere(a);if(l===null)return null;o.push(...l)}}return{kind:"filtered_field",field_reference:{name:i.name,path:i.path,parameters:i.parameters},where:o}}else{const r=this.getLiteralIncludingNegativeNumber(e);return r===null?null:{kind:"literal_value",literal_value:r}}}stripQuote(e,r){return e.slice(e.indexOf(r)+r.length,e.lastIndexOf(r))}getFilterString(e){const r=e.tripFilterString(),i=e.tickFilterString();if(r){const s=r.BQ3_FILTER(),o=r.DQ3_FILTER(),u=r.SQ3_FILTER();if(s)return this.stripQuote(s.text,"```");if(o)return this.stripQuote(o.text,'"""');if(u)return this.stripQuote(u.text,"'''")}else if(i){const s=i.BQ_FILTER(),o=i.DQ_FILTER(),u=i.SQ_FILTER();if(s)return this.stripQuote(s.text,"`");if(o)return this.stripQuote(o.text,'"');if(u)return this.stripQuote(u.text,"'")}return null}getFilterExpr(e){if(e instanceof gt.ExprCompareContext){if(e.compareOp().MATCH()){const r=e.fieldExpr()[0],i=e.fieldExpr()[1];if(r instanceof gt.ExprFieldPathContext&&i instanceof gt.ExprLiteralContext){const{path:s,name:o}=this.getFieldPath(r.fieldPath()),u=i.literal();if(u instanceof gt.FilterString_stubContext){const a=this.getFilterString(u.filterString());return a===null?null:{filter:{kind:"filter_string",field_reference:{name:o,path:s},filter:a}}}}}else if(e.compareOp().EQ()){const r=e.fieldExpr()[0],i=e.fieldExpr()[1];if(r instanceof gt.ExprFieldPathContext){const{path:s,name:o}=this.getFieldPath(r.fieldPath()),u=this.getLiteralIncludingNegativeNumber(i);return u===null?(this.notAllowed(e,"Filters other than comparisons with filter strings or equality with literals"),null):{filter:{kind:"literal_equality",field_reference:{name:o,path:s},value:u}}}}}return this.notAllowed(e,"Filters other than comparisons with filter strings or equality with literals"),null}getTimeLiteral(e,r){const i=r(e.text);if(!i)return this.contextError(e,"failed-to-parse-time-literal","Time data parse error"),null;const s=i.getValue(),o=s.timeframe;if(s.value.node!=="timeLiteral")return null;const u=s.value.literal,a=s.value.timezone;return s.type==="timestamp"?{kind:"timestamp_literal",timestamp_value:u,granularity:o,timezone:a}:o==="hour"||o==="minute"||o==="second"?null:{kind:"date_literal",date_value:u,granularity:o,timezone:a}}getLiteralIncludingNegativeNumber(e){if(e instanceof gt.ExprLiteralContext)return this.getLiteral(e.literal());if(e instanceof gt.ExprMinusContext){const r=e.fieldExpr();if(r instanceof gt.ExprLiteralContext){const i=this.getLiteral(r.literal());return i===null||i.kind!=="number_literal"?null:{kind:"number_literal",number_value:-i.number_value}}}return null}getLiteral(e){if(e instanceof gt.ExprTimeContext){const r=e.dateLiteral();return r instanceof gt.LiteralTimestampContext?this.getTimeLiteral(r,hd.LiteralTimestamp.parse):r instanceof gt.LiteralHourContext?this.getTimeLiteral(r,hd.LiteralHour.parse):r instanceof gt.LiteralDayContext?this.getTimeLiteral(r,hd.LiteralDay.parse):r instanceof gt.LiteralWeekContext?this.getTimeLiteral(r,hd.LiteralWeek.parse):r instanceof gt.LiteralMonthContext?this.getTimeLiteral(r,hd.LiteralMonth.parse):r instanceof gt.LiteralQuarterContext?this.getTimeLiteral(r,hd.LiteralQuarter.parse):r instanceof gt.LiteralYearContext?this.getTimeLiteral(r,hd.LiteralYear.parse):null}else{if(e instanceof gt.ExprArrayLiteralContext)return this.notAllowed(e,"array literals"),null;if(e instanceof gt.ExprLiteralRecordContext)return this.notAllowed(e,"record literals"),null;if(e instanceof gt.ExprStringContext){const[r,i]=(0,dd.getPlainString)(e);for(const s of i)s instanceof Xdt.ParserRuleContext&&this.contextError(s,"illegal-query-interpolation-outside-sql-block","%{ query } illegal in this string");return{kind:"string_literal",string_value:r??""}}else{if(e instanceof gt.ExprBoolContext)return{kind:"boolean_literal",boolean_value:e.TRUE()!==null};if(e instanceof gt.ExprNumberContext)return{kind:"number_literal",number_value:Number(e.text)};if(e instanceof gt.ExprNULLContext)return{kind:"null_literal"}}}return null}getDrill(e){const i=e.drillClauseList().fieldExpr().map(s=>this.getFilterExpr(s));return i.some(s=>s===null)?null:i}getWhere(e){const i=e.filterClauseList().fieldExpr().map(s=>this.getFilterExpr(s));return i.some(s=>s===null)?null:i}getHaving(e){const i=e.filterClauseList().fieldExpr().map(s=>this.getFilterExpr(s));return i.some(s=>s===null)?null:i}combineAnnotations(...e){const r=e.flatMap(i=>i??[]);return r.length>0?r:void 0}}BE.MalloyToQuery=Zxe;function rht(t){const e=(0,Xxe.getSourceInfo)(t),r=new Jxe.BaseMessageLogger(null),i="internal://query.malloy",s=(0,tht.runMalloyParser)(t,i,e,r),u=new Zxe(s,r).visit(s.root),a=(0,nht.mapLogs)(r.getLog(),i);if(u===null)return{logs:a};if(!("definition"in u))throw new Error("Expected a query");return{query:u,logs:a}}(function(t){Object.defineProperty(t,"__esModule",{value:!0}),t.malloyToQuery=t.exploreQueryWalkerBuilder=t.MalloyTranslation=t.MalloyTranslator=void 0;var e=Sc;Object.defineProperty(t,"MalloyTranslator",{enumerable:!0,get:function(){return e.MalloyTranslator}}),Object.defineProperty(t,"MalloyTranslation",{enumerable:!0,get:function(){return e.MalloyTranslation}});var r=$E;Object.defineProperty(t,"exploreQueryWalkerBuilder",{enumerable:!0,get:function(){return r.exploreQueryWalkerBuilder}});var i=BE;Object.defineProperty(t,"malloyToQuery",{enumerable:!0,get:function(){return i.malloyToQuery}})})(p4);var Fe={},UR={};Object.defineProperty(UR,"__esModule",{value:!0}),UR.MALLOY_VERSION=void 0,UR.MALLOY_VERSION="0.0.283",Object.defineProperty(Fe,"__esModule",{value:!0}),Fe.InMemoryModelCache=Fe.CacheManager=Fe.CSVWriter=Fe.JSONWriter=Fe.DataWriter=Fe.DataRecord=Fe.DataArray=Fe.Result=Fe.ExploreMaterializer=Fe.PreparedResultMaterializer=Fe.QueryMaterializer=Fe.ModelMaterializer=Fe.SingleConnectionRuntime=Fe.ConnectionRuntime=Fe.Runtime=Fe.ExploreField=Fe.JoinRelationship=Fe.QueryField=Fe.Query=Fe.StringField=Fe.UnsupportedField=Fe.JSONField=Fe.BooleanField=Fe.NumberField=Fe.TimestampField=Fe.DateField=Fe.TimestampTimeframe=Fe.DateTimeframe=Fe.AtomicField=Fe.AtomicFieldType=Fe.Explore=Fe.SourceRelationship=Fe.FixedConnectionMap=Fe.InMemoryURLReader=Fe.EmptyURLReader=Fe.PreparedResult=Fe.DocumentCompletion=Fe.DocumentSymbol=Fe.DocumentPosition=Fe.DocumentRange=Fe.DocumentTablePath=Fe.Parse=Fe.PreparedQuery=Fe.Model=Fe.MalloyError=Fe.Malloy=void 0;const ede=p4,ni=ei,tde=Ny,pM=Qp,iht=UR,sht=Gp,Fn=ws,oht=sd,uht=Bi,aht=RE,nde="internal://internal.malloy";let Zl=class FD{static get version(){return iht.MALLOY_VERSION}static _parse(e,r,i,s,o){r===void 0&&(r=new URL(nde));let u=r;s!=null&&s.importBaseURL&&(u=s==null?void 0:s.importBaseURL);const a=new ede.MalloyTranslator(r.toString(),u.toString(),{urls:{[r.toString()]:e}},i);return s!=null&&s.testEnvironment&&(a.allDialectsEnabled=!0),new ide(a,o)}static parse({url:e,urlReader:r,source:i,eventStream:s,options:o}){if(i!==void 0)return FD._parse(i,e,s,o);if(r===void 0)throw new Error("Internal Error: urlReader is required.");if(e===void 0)throw new Error("Internal Error: url is required if source not present.");return YR(r,e).then(({contents:u,invalidationKey:a})=>FD._parse(u,e,s,o,a))}static async compile({url:e,source:r,parse:i,urlReader:s,connections:o,model:u,refreshSchemaCache:a,noThrowOnError:l,eventStream:c,importBaseURL:f,cacheManager:x}){var h,p,m,g,y;let _;if(a&&(_=typeof a=="number"?a:Date.now()),e===void 0&&r===void 0&&i===void 0)throw new Error("Internal Error: url, source, or parse required.");e===void 0&&(i!==void 0?e=new URL(i._translator.sourceURL):e=new URL(nde));const E={};if(r===void 0&&x!==void 0){const C=await x.getCachedModelDef(s,e.toString());if(C)return new I2(C.modelDef,[],[e.toString(),...VR(C.modelDef.dependencies)])}f??(f=e);let A;const v=e.toString();if(i!==void 0){A=i._translator;const C=(h=i._invalidationKey)!==null&&h!==void 0?h:await DM(s,e);E[v]=C}else{if(r===void 0){const{contents:C,invalidationKey:b}=await YR(s,e);E[v]=b,r=C}else{const C=await DM(s,e);E[v]=C}A=new ede.MalloyTranslator(v,f.toString(),{urls:{[v]:r}},c)}for(;;){const C=A.translate(u==null?void 0:u._modelDef);if(C.final)if(C.modelDef){await(x==null?void 0:x.setCachedModelDef(e.toString(),{modelDef:C.modelDef,invalidationKeys:E}));for(const b of A.newlyTranslatedDependencies())await(x==null?void 0:x.setCachedModelDef(b.url,{modelDef:b.modelDef,invalidationKeys:E}));return new I2(C.modelDef,C.problems||[],[...(p=u==null?void 0:u.fromSources)!==null&&p!==void 0?p:[],...(m=C.fromSources)!==null&&m!==void 0?m:[]])}else if(l){const b={name:"modelDidNotCompile",exports:[],contents:{},dependencies:{},queryList:[]},S=(u==null?void 0:u._modelDef)||b;return new I2(S,C.problems||[],[...(g=u==null?void 0:u.fromSources)!==null&&g!==void 0?g:[],...(y=C.fromSources)!==null&&y!==void 0?y:[]])}else{const b=C.problems||[],S=A.prettyErrors();throw new rde(`Error(s) compiling model:
|
|
1395
1395
|
${S}`,b)}else{if(C.urls)for(const S of C.urls)try{if(KR(S))throw new Error("In order to use relative imports, you must compile a file via a URL.");if(x!==void 0){const D=await x.getCachedModelDef(s,S);if(D){for(const k in D.invalidationKeys)E[k]=D.invalidationKeys[k];A.update({translations:{[S]:D.modelDef}});continue}}const{contents:R,invalidationKey:O}=await YR(s,new URL(S)),$={[S]:R};E[S]=O,A.update({urls:$})}catch(R){A.update({errors:{urls:{[S]:R.message}}})}const{modelAnnotation:b}=A.modelAnnotation(u==null?void 0:u._modelDef);if(C.tables){const S=new Map;for(const R in C.tables){const{connectionName:O,tablePath:$}=C.tables[R],D=S.get(O);D===void 0?S.set(O,{[R]:$}):D[R]=$}for(const[R,O]of S)try{const $=await o.lookupConnection(R),{schemas:D,errors:k}=await FD.safelyFetchTableSchema($,O,{refreshTimestamp:_,modelAnnotation:b});A.update({tables:D,errors:{tables:k}})}catch($){const D={},k={};for(const j in O)k[j]=$.toString();A.update({tables:D,errors:{tables:k}})}}if(C.compileSQL){const S=C.compileSQL,R=S.connection,O=(0,oht.sqlKey)(S.connection,S.selectStr);try{const D=await(await o.lookupConnection(R)).fetchSchemaForSQLStruct(S,{refreshTimestamp:_,modelAnnotation:b});D.error&&A.update({errors:{compileSQL:{[O]:D.error}}}),D.structDef&&A.update({compileSQL:{[O]:D.structDef}})}catch($){const D={};D[O]=$.toString(),A.update({errors:{compileSQL:D}})}}}}}static async safelyFetchTableSchema(e,r,i){const s=await e.fetchSchemaForTables(r,i);for(const o of Object.keys(r))if(s.schemas[o]===void 0&&s.errors[o]===void 0)throw new Error(`Schema fetch error for ${e.name}, no response for ${o} from ${e.dialectName}`);return s}static async run({connections:e,preparedResult:r,sqlStruct:i,connection:s,options:o}){if(!s){if(!e)throw new Error("Internal Error: Connection or LookupConnection<Connection> must be provided.");const u=(i==null?void 0:i.connection)||(r==null?void 0:r.connectionName);s=await e.lookupConnection(u)}if(i){const u=await s.runSQL(i.selectStr);return new jE({structs:[i],sql:i.selectStr,result:u.rows,totalRows:u.totalRows,runStats:u.runStats,lastStageName:i.name,malloy:"",connectionName:i.connection,sourceExplore:"",sourceFilters:[],profilingUrl:u.profilingUrl},{name:"empty_model",exports:[],contents:{},queryList:[],dependencies:{}})}else if(r){const u=await s.runSQL(r.sql,o);return new jE({...r._rawQuery,result:u.rows,totalRows:u.totalRows,runStats:u.runStats,profilingUrl:u.profilingUrl},r._modelDef)}else throw new Error("Internal error: sqlStruct or preparedResult must be provided.")}static async*runStream({connections:e,preparedResult:r,sqlStruct:i,connection:s,options:o}){if(i===void 0&&r===void 0)throw new Error("Internal error: sqlBlock or preparedResult must be provided.");const u=(i==null?void 0:i.connection)||(r==null?void 0:r.connectionName);if(s===void 0){if(e===void 0)throw new Error("Internal Error: Connection or LookupConnection<Connection> must be provided.");s=await e.lookupConnection(u)}if(!s.canStream())throw new Error(`Connection '${u}' cannot stream results.`);let a,l;if(i)l=new $s(i),a=i.selectStr;else if(r!==void 0)l=r.resultExplore,a=r.sql;else throw new Error("Internal error: sqlStruct or preparedResult must be provided.");let c=0;for await(const f of s.runSQLStream(a,o))yield new md(f,c,l,void 0,void 0),c+=1}static async estimateQueryCost({connections:e,preparedResult:r,sqlStruct:i}){if(!e)throw new Error("Internal Error: Connection or LookupConnection<Connection> must be provided.");const s=(i==null?void 0:i.connection)||(r==null?void 0:r.connectionName),o=await e.lookupConnection(s);if(i)return await o.estimateQueryCost(i.selectStr);if(r)return await o.estimateQueryCost(r.sql);throw new Error("Internal error: sqlStruct or preparedResult must be provided.")}};Fe.Malloy=Zl;class rde extends Error{constructor(e,r=[]){super(e),this.problems=r}}Fe.MalloyError=rde;class I2{constructor(e,r,i){var s,o;this.modelDef=e,this.problems=r,this.fromSources=i,this.references=new aht.ReferenceList((s=i[0])!==null&&s!==void 0?s:"",(o=e.references)!==null&&o!==void 0?o:[])}tagParse(e){return(0,Fn.annotationToTag)(this.modelDef.annotation,e)}getTaglines(e){return(0,Fn.annotationToTaglines)(this.modelDef.annotation,e)}getReference(e){return this.references.find(e)}getImport(e){var r;return(r=this.modelDef.imports)===null||r===void 0?void 0:r.find(i=>(0,uht.locationContainsPosition)(i.location,e))}getPreparedQueryByName(e){const r=this.modelDef.contents[e];if((r==null?void 0:r.type)==="query")return new $2(r,this.modelDef,this.problems,e);throw new Error("Given query name does not refer to a named query.")}getPreparedQueryByIndex(e){if(e<0)throw new Error(`Invalid index ${e}.`);if(e>=this.modelDef.queryList.length)throw new Error(`Query index ${e} is out of bounds.`);return new $2(this.modelDef.queryList[e],this.modelDef,this.problems)}get preparedQuery(){return this.getPreparedQuery()}getPreparedQuery(){if(this.modelDef.queryList.length===0)throw new Error("Model has no queries.");return new $2(this.modelDef.queryList[this.modelDef.queryList.length-1],this.modelDef,this.problems)}getExploreByName(e){const r=this.modelDef.contents[e];if((0,ni.isSourceDef)(r))return new $s(r);throw new Error("'name' is not an explore")}get explores(){return Object.values(this.modelDef.contents).filter(ni.isSourceDef).map(e=>new $s(e))}get namedQueries(){const e=r=>r.type==="query";return Object.values(this.modelDef.contents).filter(e)}get exportedExplores(){return this.explores.filter(e=>this.modelDef.exports.includes(e.name))}get _modelDef(){return this.modelDef}}Fe.Model=I2;class $2{constructor(e,r,i,s){this.problems=i,this.name=s,this._query=e,this._modelDef=r}tagParse(e){const r=(0,Fn.annotationToTag)(this._modelDef.annotation).tag;return e=(0,Fn.addModelScope)(e,r),(0,Fn.annotationToTag)(this._query.annotation,e)}getTaglines(e){return(0,Fn.annotationToTaglines)(this._query.annotation,e)}get preparedResult(){return this.getPreparedResult()}getPreparedResult(e){const i=new ni.QueryModel(this._modelDef,e==null?void 0:e.eventStream).compileQuery(this._query,e);return new PE({...i,queryName:this.name||i.queryName},this._modelDef)}get dialect(){const e=this._query.structRef,r=typeof e=="string"?this._modelDef.contents[e]:e;if(!(0,ni.isSourceDef)(r))throw new Error("Invalid source for query");return r.dialect}getFlattenedQuery(e){return this}}Fe.PreparedQuery=$2;class ide{constructor(e,r){this.translator=e,this.invalidationKey=r}get symbols(){return(this.translator.metadata().symbols||[]).map(e=>new qR(e))}get tablePathInfo(){var e;return((e=this.translator.tablePathInfo().pathInfo)!==null&&e!==void 0?e:[]).map(i=>new sde(i))}get _translator(){return this.translator}get _invalidationKey(){return this.invalidationKey}completions(e){return(this.translator.completions(e).completions||[]).map(r=>new ode(r))}helpContext(e){return this.translator.helpContext(e).helpContext}}Fe.Parse=ide;class sde{constructor(e){this._range=B2.fromJSON(e.range),this._connectionId=e.connectionId,this._tablePath=e.tablePath}get range(){return this._range}get connectionId(){return this._connectionId}get tablePath(){return this._tablePath}}Fe.DocumentTablePath=sde;class B2{constructor(e,r){this._start=e,this._end=r}get start(){return this._start}get end(){return this._end}toJSON(){return{start:this.start.toJSON(),end:this.end.toJSON()}}static fromJSON(e){return new B2(new mM(e.start.line,e.start.character),new mM(e.end.line,e.end.character))}}Fe.DocumentRange=B2;class mM{constructor(e,r){this._line=e,this._character=r}get line(){return this._line}get character(){return this._character}toJSON(){return{line:this.line,character:this.character}}}Fe.DocumentPosition=mM;class qR{constructor(e){this._range=B2.fromJSON(e.range),this._lensRange=e.lensRange?B2.fromJSON(e.lensRange):void 0,this._type=e.type,this._name=e.name,this._children=e.children.map(r=>new qR(r))}get range(){return this._range}get lensRange(){var e;return(e=this._lensRange)!==null&&e!==void 0?e:this._range}get type(){return this._type}get name(){return this._name}get children(){return this._children}}Fe.DocumentSymbol=qR;class ode{constructor(e){this.type=e.type,this.text=e.text}}Fe.DocumentCompletion=ode;class PE{constructor(e,r){this.modelDef=r,this.inner=e}static fromJson({query:e,modelDef:r}){if(!e||!r)throw new Error("Missing required properties in JSON data");return new PE(e,r)}tagParse(e){const r=(0,Fn.annotationToTag)(this.modelDef.annotation).tag;return e=(0,Fn.addModelScope)(e,r),(0,Fn.annotationToTag)(this.inner.annotation,e)}getTaglines(e){return(0,Fn.annotationToTaglines)(this.inner.annotation,e)}get annotation(){return this.inner.annotation}get modelAnnotation(){return this.modelDef.annotation}get modelTag(){return(0,Fn.annotationToTag)(this.modelDef.annotation).tag}get connectionName(){return this.inner.connectionName}get _rawQuery(){return this.inner}get _modelDef(){return this.modelDef}get sql(){return this.inner.sql}get dependenciesToMaterialize(){return this.inner.dependenciesToMaterialize}get materialization(){return this.inner.materialization}get resultExplore(){if(this.inner.structs.length===0)throw new Error("Malformed query result.");const e=this.inner.structs[this.inner.structs.length-1],r={...e,annotation:this.inner.annotation,name:this.inner.queryName||e.name};try{return new $s(r,this.sourceExplore)}catch{return new $s(r)}}get sourceExplore(){const e=this.inner.sourceExplore,r=this.modelDef.contents[e];if(r&&(0,ni.isSourceDef)(r))return new $s(r)}get _sourceExploreName(){return this.inner.sourceExplore}get _sourceArguments(){return this.inner.sourceArguments}get _sourceFilters(){return this.inner.sourceFilters||[]}}Fe.PreparedResult=PE;class ude{async readURL(e){throw new Error("No files.")}async getInvalidationKey(e){throw new Error("No files.")}}Fe.EmptyURLReader=ude;class lht{constructor(e){this.files=e}async readURL(e){const r=this.files.get(e.toString());if(r!==void 0)return Promise.resolve({contents:r,invalidationKey:this.invalidationKey(e,r)});throw new Error(`File not found '${e}'`)}async getInvalidationKey(e){const r=this.files.get(e.toString());if(r!==void 0)return Promise.resolve(this.invalidationKey(e,r));throw new Error(`File not found '${e}'`)}invalidationKey(e,r){return KR(e.toString())?null:vde(r)}}Fe.InMemoryURLReader=lht;class HR{constructor(e,r){this.connections=e,this.defaultConnectionName=r}async getConnection(e){if(e===void 0)if(this.defaultConnectionName!==void 0)e=this.defaultConnectionName;else throw new Error("No default connection.");const r=this.connections.get(e);if(r!==void 0)return Promise.resolve(r);throw new Error(`No connection found with name ${e}.`)}listConnections(){return Array.from(this.connections.values())}async lookupConnection(e){return this.getConnection(e)}static fromArray(e){return new HR(new Map(e.map(r=>[r.name,r])))}}Fe.FixedConnectionMap=HR;var ade;(function(t){t.Nested="nested",t.BaseTable="base_table",t.Cross="cross",t.One="one",t.Many="many",t.Inline="inline"})(ade||(Fe.SourceRelationship=ade={}));class gM{constructor(e,r,i){this._name=e,this._parent=r,this._source=i}get source(){return this.source}get name(){return this._name}get sourceClasses(){const e=[];return this.source&&e.push(this.source.name),e.push(this.name),e}get fieldPath(){const e=[this.name];let r=this._parent;for(;r;)e.unshift(r.name),r=r._parent;return e}hasParentExplore(){return this._parent!==void 0}isExplore(){return this instanceof $s}isQuery(){return this instanceof SM}}class $s extends gM{constructor(e,r,i){super(e.as||e.name,r,i),this._structDef=e,this._parentExplore=r,this.sourceExplore=i}get source(){return this.sourceExplore}isIntrinsic(){return(0,ni.isAtomicFieldType)(this._structDef.type)?!("e"in this._structDef):!1}isExploreField(){return!1}tagParse(e){return(0,Fn.annotationToTag)(this._structDef.annotation,e)}getTaglines(e){return(0,Fn.annotationToTaglines)(this._structDef.annotation,e)}get modelTag(){return this.parsedModelTag||(this.parsedModelTag=(0,Fn.annotationToTag)(this._structDef.modelAnnotation).tag),this.parsedModelTag}get name(){return this.structDef.as||this.structDef.name}getQueryByName(e){const r=this.sourceStructDef;if(!r)throw new Error(`Cannot get query by name from a struct of type ${this.structDef.type}`);const i={type:"query",structRef:r,pipeline:[{type:"reduce",queryFields:[{type:"fieldref",path:[e]}]}]};return new $2(i,this.modelDef,[],e)}get modelDef(){if(!(0,ni.isSourceDef)(this.structDef))throw new Error(`Cannot create pseudo model for struct type ${this.structDef.type}`);return{name:"generated_model",exports:[],contents:{[this.structDef.name]:this.structDef},queryList:[],dependencies:{}}}getSingleExploreModel(){return new I2(this.modelDef,[],[])}get fieldMap(){var e;if(this._fieldMap===void 0){const r=((e=this.source)===null||e===void 0?void 0:e.fieldMap)||new Map;this._fieldMap=new Map(this.structDef.fields.map(i=>{const s=i.as||i.name,o=r.get(i.name);if((0,ni.isJoined)(i))return[s,new bM(i,this,o)];if(i.type==="turtle")return[s,new SM(i,this,o)];if(i.type==="string")return[s,new CM(i,this,o)];if(i.type==="number")return[s,new QR(i,this,o)];if(i.type==="date")return i.timeframe&&["day_of_month","day_of_week","day_of_year"].includes(i.timeframe)?[s,new QR({...i,type:"number"},this,o)]:[s,new yM(i,this,o)];if(i.type==="timestamp")return[s,new EM(i,this,o)];if(i.type==="boolean")return[s,new _M(i,this,o)];if(i.type==="json")return[s,new AM(i,this,o)];if(i.type==="sql native")return[s,new vM(i,this,o)]}))}return this._fieldMap}get allFields(){return[...this.fieldMap.values()]}get allFieldsWithOrder(){var e,r,i;if(!this._allFieldsWithOrder){const s=[...((i=(r=(e=this.sourceStructDef)===null||e===void 0?void 0:e.resultMetadata)===null||r===void 0?void 0:r.orderBy)===null||i===void 0?void 0:i.map(u=>{if(typeof u.field=="string")return{field:this.fieldMap.get(u.field),dir:u.dir};throw new Error("Does not support mapping order by from number.")}))||[]],o=new Set(s.map(u=>u.field.name));this._allFieldsWithOrder=[...s,...this.allFields.filter(u=>!o.has(u.name)).map(u=>({field:u,dir:"asc"}))]}return this._allFieldsWithOrder}get intrinsicFields(){return[...this.fieldMap.values()].filter(e=>e.isIntrinsic())}get dimensions(){return[...this.allFieldsWithOrder].filter(e=>e.field.isAtomicField()&&e.field.sourceWasDimension())}getFieldByName(e){const r=this.fieldMap.get(e);if(r===void 0)throw new Error(`No such field ${e}.`);return r}getFieldByNameIfExists(e){return this.fieldMap.get(e)}get primaryKey(){var e;return(e=this.sourceStructDef)===null||e===void 0?void 0:e.primaryKey}get parentExplore(){return this._parentExplore}hasParentExplore(){return this instanceof bM}get filters(){var e;return(0,ni.isSourceDef)(this.structDef)?((e=this.structDef.resultMetadata)===null||e===void 0?void 0:e.filterList)||[]:[]}get limit(){var e,r;return(r=(e=this.sourceStructDef)===null||e===void 0?void 0:e.resultMetadata)===null||r===void 0?void 0:r.limit}get structDef(){return this._structDef}get queryTimezone(){var e;return(e=this.sourceStructDef)===null||e===void 0?void 0:e.queryTimezone}get sourceStructDef(){if((0,ni.isSourceDef)(this.structDef))return this.structDef}toJSON(){var e,r;return{_structDef:this._structDef,sourceExplore:(e=this.sourceExplore)===null||e===void 0?void 0:e.toJSON(),_parentExplore:(r=this._parentExplore)===null||r===void 0?void 0:r.toJSON()}}static fromJSON(e){const r=e._parentExplore!==void 0?$s.fromJSON(e._parentExplore):void 0,i=e.sourceExplore!==void 0?$s.fromJSON(e.sourceExplore):void 0;return new $s(e._structDef,r,i)}get location(){return this.structDef.location}}Fe.Explore=$s;var La;(function(t){t.String="string",t.Number="number",t.Boolean="boolean",t.Date="date",t.Timestamp="timestamp",t.Json="json",t.NativeUnsupported="sql native",t.Error="error"})(La||(Fe.AtomicFieldType=La={}));class Qc extends gM{constructor(e,r,i){super(e.as||e.name,r,i),this.fieldTypeDef=e,this.parent=r}get type(){switch(this.fieldTypeDef.type){case"string":return La.String;case"boolean":return La.Boolean;case"date":return La.Date;case"timestamp":return La.Timestamp;case"number":return La.Number;case"json":return La.Json;case"sql native":return La.NativeUnsupported;case"error":return La.Error;case"record":case"array":throw new Error(`MTOY TODO IMPLEMENT Atomic ${this.fieldTypeDef.type}`);default:{const e=this.fieldTypeDef;throw new Error(`Can't make an atomic field from ${e}`)}}}tagParse(e){return e=(0,Fn.addModelScope)(e,this.parent.modelTag),(0,Fn.annotationToTag)(this.fieldTypeDef.annotation,e)}getTaglines(e){return(0,Fn.annotationToTaglines)(this.fieldTypeDef.annotation,e)}isIntrinsic(){return(0,ni.fieldIsIntrinsic)(this.fieldTypeDef)}isQueryField(){return!1}isExploreField(){return!1}isAtomicField(){return!0}isCalculation(){return(0,ni.expressionIsCalculation)(this.fieldTypeDef.expressionType)}get sourceField(){throw new Error}get sourceClasses(){const e=this.fieldTypeDef.name||this.fieldTypeDef.as;return e?[e]:[]}get referenceId(){var e;return(e=this.fieldTypeDef.resultMetadata)===null||e===void 0?void 0:e.referenceId}sourceWasMeasure(){var e;return((e=this.fieldTypeDef.resultMetadata)===null||e===void 0?void 0:e.fieldKind)==="measure"}sourceWasMeasureLike(){var e,r;return((e=this.fieldTypeDef.resultMetadata)===null||e===void 0?void 0:e.fieldKind)==="measure"||((r=this.fieldTypeDef.resultMetadata)===null||r===void 0?void 0:r.fieldKind)==="struct"}sourceWasDimension(){var e;return((e=this.fieldTypeDef.resultMetadata)===null||e===void 0?void 0:e.fieldKind)==="dimension"}hasParentExplore(){return!0}isString(){return this instanceof CM}isNumber(){return this instanceof QR}isDate(){return this instanceof yM}isBoolean(){return this instanceof _M}isJSON(){return this instanceof AM}isTimestamp(){return this instanceof EM}isUnsupported(){return this instanceof vM}get parentExplore(){return this.parent}get expression(){const e=".",r=this.fieldTypeDef.resultMetadata;return(r==null?void 0:r.sourceExpression)||(r!=null&&r.sourceField.includes(e)?r==null?void 0:r.sourceField:this.name)}get location(){return this.fieldTypeDef.location}}Fe.AtomicField=Qc;var pd;(function(t){t.Day="day",t.Week="week",t.Month="month",t.Quarter="quarter",t.Year="year"})(pd||(Fe.DateTimeframe=pd={}));var Ia;(function(t){t.Day="day",t.Week="week",t.Month="month",t.Quarter="quarter",t.Year="year",t.Second="second",t.Hour="hour",t.Minute="minute"})(Ia||(Fe.TimestampTimeframe=Ia={}));let yM=class extends Qc{constructor(e,r,i){super(e,r,i),this.fieldDateDef=e}get timeframe(){if(this.fieldDateDef.timeframe!==void 0)switch(this.fieldDateDef.timeframe){case"day":return pd.Day;case"week":return pd.Week;case"month":return pd.Month;case"quarter":return pd.Quarter;case"year":return pd.Year}}};Fe.DateField=yM;let EM=class extends Qc{constructor(e,r,i){super(e,r,i),this.fieldTimestampDef=e}get timeframe(){if(this.fieldTimestampDef.timeframe!==void 0)switch(this.fieldTimestampDef.timeframe){case"day":return Ia.Day;case"week":return Ia.Week;case"month":return Ia.Month;case"quarter":return Ia.Quarter;case"year":return Ia.Year;case"second":return Ia.Second;case"hour":return Ia.Hour;case"minute":return Ia.Minute}}};Fe.TimestampField=EM;let QR=class extends Qc{constructor(e,r,i){super(e,r,i),this.fieldNumberDef=e}};Fe.NumberField=QR;let _M=class extends Qc{constructor(e,r,i){super(e,r,i),this.fieldBooleanDef=e}};Fe.BooleanField=_M;let AM=class extends Qc{constructor(e,r,i){super(e,r,i),this.fieldJSONDef=e}};Fe.JSONField=AM;class vM extends Qc{constructor(e,r,i){super(e,r,i),this.fieldUnsupportedDef=e}get rawType(){return this.fieldUnsupportedDef.rawType}}Fe.UnsupportedField=vM;let CM=class extends Qc{constructor(e,r,i){super(e,r,i),this.fieldStringDef=e}};Fe.StringField=CM;class lde extends gM{constructor(e,r,i){super(e.as||e.name,r,i),this.turtleDef=e}get source(){return this.sourceQuery}isIntrinsic(){return!1}get location(){return this.turtleDef.location}}Fe.Query=lde;class SM extends lde{constructor(e,r,i){super(e,r,i),this.parent=r}tagParse(e){return e=(0,Fn.addModelScope)(e,this.parent.modelTag),(0,Fn.annotationToTag)(this.turtleDef.annotation,e)}getTaglines(e){return(0,Fn.annotationToTaglines)(this.turtleDef.annotation,e)}isQueryField(){return!0}isExploreField(){return!1}isAtomicField(){return!1}get sourceClasses(){const e=this.turtleDef.name||this.turtleDef.as;return e?[e]:[]}hasParentExplore(){return!0}get parentExplore(){return this.parent}get expression(){return this.name}}Fe.QueryField=SM;var k2;(function(t){t.OneToOne="one_to_one",t.OneToMany="one_to_many",t.ManyToOne="many_to_one"})(k2||(Fe.JoinRelationship=k2={}));class bM extends $s{constructor(e,r,i){super(e,r,i),this._parentExplore=r}get joinRelationship(){if((0,ni.isJoined)(this.structDef))switch(this.structDef.join){case"one":return k2.OneToOne;case"many":case"cross":return k2.ManyToOne}throw new Error("A source field must have a join relationship.")}get isRecord(){return this.joinRelationship===k2.OneToOne}get isArray(){return this.joinRelationship!==k2.OneToOne}tagParse(e){return e=(0,Fn.addModelScope)(e,this._parentExplore.modelTag),(0,Fn.annotationToTag)(this._structDef.annotation,e)}isQueryField(){return!1}isExploreField(){return!0}isAtomicField(){return!1}get parentExplore(){return this._parentExplore}get sourceClasses(){const e=this.structDef.name||this.structDef.as;return e?[e]:[]}}Fe.ExploreField=bM;class TM{constructor({urlReader:e,connections:r,connection:i,eventStream:s,cacheManager:o}){if(this.isTestRuntime=!1,r===void 0){if(i===void 0)throw new Error("A LookupConnection<Connection> or Connection is required.");r={lookupConnection:()=>Promise.resolve(i)}}e===void 0&&(e=new ude),this._urlReader=e,this._connections=r,this._eventStream=s,this._cacheManager=o}get cacheManager(){return this._cacheManager}get urlReader(){return this._urlReader}get connections(){return this._connections}get eventStream(){return this._eventStream}loadModel(e,r){const{refreshSchemaCache:i,noThrowOnError:s}=r||{};this.isTestRuntime&&(r===void 0?r={testEnvironment:!0}:r={...r,testEnvironment:!0});const o=e instanceof URL?{url:e}:{source:e};return new ME(this,async()=>Zl.compile({...o,urlReader:this.urlReader,connections:this.connections,refreshSchemaCache:i,noThrowOnError:s,eventStream:this.eventStream,replaceMaterializedReferences:r==null?void 0:r.replaceMaterializedReferences,materializedTablePrefix:r==null?void 0:r.materializedTablePrefix,importBaseURL:r==null?void 0:r.importBaseURL,testEnvironment:r==null?void 0:r.testEnvironment,cacheManager:this.cacheManager}),r)}_loadModelFromModelDef(e,r){return new ME(this,async()=>new I2(e,[],[]),r)}loadQuery(e,r){return this.loadModel(e,r).loadFinalQuery()}loadQueryByIndex(e,r,i){return this.loadModel(e,i).loadQueryByIndex(r,i)}loadQueryByName(e,r,i){return this.loadModel(e,i).loadQueryByName(r,i)}getModel(e,r){return this.loadModel(e,r).getModel()}getQuery(e,r){return this.loadQuery(e,r).getPreparedQuery()}getQueryByIndex(e,r,i){return this.loadQueryByIndex(e,r,i).getPreparedQuery()}getQueryByName(e,r,i){return this.loadQueryByName(e,r,i).getPreparedQuery()}}Fe.Runtime=TM;class cht extends TM{constructor({urlReader:e,connections:r}){super({connections:HR.fromArray(r),urlReader:e}),this.rawConnections=r}}Fe.ConnectionRuntime=cht;class fht extends TM{constructor({urlReader:e,connection:r,eventStream:i,cacheManager:s}){super({urlReader:e,eventStream:i,cacheManager:s,connection:r}),this.connection=r}get supportsNesting(){return(0,pM.getDialect)(this.connection.dialectName).supportsNesting}quote(e){return(0,pM.getDialect)(this.connection.dialectName).sqlMaybeQuoteIdentifier(e)}get dialect(){return(0,pM.getDialect)(this.connection.dialectName)}getQuoter(){return e=>this.quote(e.toString())}}Fe.SingleConnectionRuntime=fht;class zR{constructor(e,r){this.runtime=e,this._materialize=r}materialize(){return this.materialized===void 0?this.rematerialize():this.materialized}rematerialize(){return this.materialized=this._materialize(),this.materialized}makeQueryMaterializer(e,r){return new cde(this.runtime,e,r)}makeExploreMaterializer(e,r){return new xde(this.runtime,e,r)}makePreparedResultMaterializer(e){return new fde(this.runtime,e)}}class ME extends zR{constructor(e,r,i){super(e,r),this.runtime=e,this.compileQueryOptions=i}loadFinalQuery(e){return this.makeQueryMaterializer(async()=>(await this.materialize()).getPreparedQuery(),{...this.compileQueryOptions,...e})}loadQueryByIndex(e,r){return this.makeQueryMaterializer(async()=>(await this.materialize()).getPreparedQueryByIndex(e),{...this.compileQueryOptions,...r})}loadQueryByName(e,r){return this.makeQueryMaterializer(async()=>(await this.materialize()).getPreparedQueryByName(e),{...this.compileQueryOptions,...r})}loadQuery(e,r){const{refreshSchemaCache:i,noThrowOnError:s}=r||{};return this.makeQueryMaterializer(async()=>{const o=this.runtime.urlReader,u=this.runtime.connections;this.runtime.isTestRuntime&&(r===void 0?r={testEnvironment:!0}:r={...r,testEnvironment:!0});const a=e instanceof URL?{url:e}:{source:e},l=await this.getModel();return(await Zl.compile({...a,urlReader:o,connections:u,model:l,refreshSchemaCache:i,noThrowOnError:s,importBaseURL:r==null?void 0:r.importBaseURL,testEnvironment:r==null?void 0:r.testEnvironment,...this.compileQueryOptions})).preparedQuery})}extendModel(e,r){return this.runtime.isTestRuntime&&(r===void 0?r={testEnvironment:!0}:r={...r,testEnvironment:!0}),new ME(this.runtime,async()=>{const i=this.runtime.urlReader,s=this.runtime.connections,o=e instanceof URL?{url:e}:{source:e},u=await this.getModel();return await Zl.compile({...o,urlReader:i,connections:s,model:u,refreshSchemaCache:r==null?void 0:r.refreshSchemaCache,noThrowOnError:r==null?void 0:r.noThrowOnError,importBaseURL:r==null?void 0:r.importBaseURL,testEnvironment:r==null?void 0:r.testEnvironment,...this.compileQueryOptions})},r)}async search(e,r,i=1e3,s=void 0,o){const u=await this.materialize(),a=new ni.QueryModel(u._modelDef,o),l=u.getExploreByName(e).structDef;if(!(0,ni.isSourceDef)(l))throw new Error("Source to be searched was unexpectedly, not a source");const c=l.connection,f=await this.runtime.connections.lookupConnection(c);return await a.searchIndex(f,e,r,i,s)}async searchValueMap(e,r=10,i){const o=(await this.materialize()).getExploreByName(e);if(!(0,ni.isSourceDef)(o.structDef))throw new Error("Source to be searched was unexpectedly, not a source");let u="{index: *}";o.getFieldByNameIfExists("search_index")&&(u="search_index");const a=`
|
|
1396
1396
|
run: ${e}
|
|
1397
1397
|
-> ${u}
|