react-semaphor 0.1.387 → 0.1.389

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.
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("../chunks/operators-DrTQsJXv.js"),s=require("../chunks/validators-lWo8m0Q7.js"),o=require("../chunks/analyze-result-contract-CtXfp3nv.js"),i=require("../chunks/catalog-field-grounding-Bnx-3tE0.js"),l=require("../chunks/source-identity-C-xaeE_I.js");function m(e,a={}){const r=c(e),t={connectionId:a.connectionId,connectionType:e,path:["database","schema","table"],labels:{database:"Database",schema:"Schema",table:"Table"},prefixLevels:["database","schema","table"],dialect:"postgres",supportsFilterClause:!0};return r.includes("postgres")?{...t,prefixLevels:["schema","table"],dialect:"postgres"}:r.includes("mysql")?{...t,prefixLevels:["database","table"],dialect:"mysql",supportsFilterClause:!1}:r.includes("mssql")||r.includes("sqlserver")?{...t,dialect:"mssql",supportsFilterClause:!1}:r.includes("redshift")?{...t,prefixLevels:["schema","table"],dialect:"redshift"}:r.includes("snowflake")?{...t,dialect:"snowflake"}:r.includes("clickhouse")?{connectionId:a.connectionId,connectionType:e,path:["database","table"],labels:{database:"Database",table:"Table"},prefixLevels:["database","table"],dialect:"clickhouse",supportsFilterClause:!1}:r==="s3"||r==="api"?{connectionId:a.connectionId,connectionType:e,path:["table"],labels:{table:r==="api"?"API Table":"File Table"},prefixLevels:["table"],dialect:"duckdb",supportsFilterClause:!0}:r==="googlesheets"||r==="fileupload"?{connectionId:a.connectionId,connectionType:e,path:["table"],labels:{table:"Table"},prefixLevels:["table"],dialect:"postgres",supportsFilterClause:!0}:r==="s3tables"?{...t,labels:{database:"Database",schema:"Namespace",table:"Table"},dialect:"duckdb"}:r==="bigquery"?{...t,labels:{database:"Project",schema:"Dataset",table:"Table"},prefixLevels:["schema","table"],dialect:"bigquery",supportsFilterClause:!1}:t}function p(e){const a=c(e);switch(a){case"mysql":case"bigquery":case"redshift":case"snowflake":case"clickhouse":case"duckdb":case"sqlite":return a;case"mssql":case"sqlserver":return"mssql";case"postgres":case"postgresql":return"postgres";default:return"unknown"}}function b(e){return e.capabilities.prefixLevels.every(a=>!!u(e.source,a))}function h(e){const a=e.quoteIdentifier??f;return e.capabilities.prefixLevels.map(r=>u(e.source,r)).filter(r=>!!r).map(r=>a(r,e.capabilities.dialect)).join(".")}function u(e,a){return a==="database"?e.databaseName:a==="schema"?e.schemaName:e.tableName}function f(e,a){return a==="mysql"||a==="bigquery"||a==="clickhouse"||a==="duckdb"?`\`${e.replace(/`/g,"``")}\``:a==="mssql"?`[${e.replace(/]/g,"]]")}]`:`"${e.replace(/"/g,'""')}"`}function c(e){if(typeof e!="string")return"";const a=[];for(const r of e.trim().toLowerCase())y(r)&&a.push(r);return a.join("")}function y(e){const a=e.charCodeAt(0);return a>=48&&a<=57||a>=97&&a<=122}const n={kind:"semantic",domainId:"domain_sales",datasetName:"orders",connectionId:"conn_sales",label:"Orders"},S={revenueKpi:{version:1,kind:"metric",id:"revenue-kpi",label:"Revenue",source:n,measures:[{name:"revenue",role:"measure"}],primaryMeasure:{name:"revenue",role:"measure"},comparison:{kind:"previous_period"},limit:1},revenueTrend:{version:1,kind:"records",id:"revenue-trend",label:"Revenue trend",source:n,fields:[{name:"order_date",role:"date",dataType:"date",label:"Order Date"},{name:"revenue",role:"measure",dataType:"number"}],dateField:{name:"order_date",role:"date",dataType:"date"},timeGrain:"month",limit:100},topCustomersRecords:{version:1,kind:"records",id:"top-customers",label:"Top customers",source:n,fields:[{name:"customer_name",role:"dimension",dataType:"string"},{name:"segment",role:"dimension",dataType:"string"},{name:"revenue",role:"measure",dataType:"number"}],orderBy:{field:{name:"revenue",role:"measure"},direction:"desc"},limit:20},regionInputOptions:{version:1,kind:"inputOptions",id:"region-options",label:"Region options",inputId:"region",source:n,labelField:{name:"region",role:"dimension",dataType:"string"},valueField:{name:"region",role:"dimension",dataType:"string"},limit:100},previousPeriodRevenueComparison:{version:1,kind:"metric",id:"revenue-previous-period",label:"Revenue previous period comparison",source:n,measures:[{name:"revenue",role:"measure"}],primaryMeasure:{name:"revenue",role:"measure"},dateField:{name:"order_date",role:"date",dataType:"date"},timeGrain:"week",comparison:{kind:"previous_period"},limit:100},inboundSupplierConcentration:{version:1,kind:"metric",id:"inbound-supplier-concentration",label:"Inbound supplier concentration",source:n,measures:[{name:"net_tons",role:"measure"},{name:"ticket_value",role:"measure"}],primaryMeasure:{name:"net_tons",role:"measure"},dateField:{name:"ticket_date",role:"date",dataType:"date"},timeWindow:{unit:"month",value:6,anchor:"latest_available"},dimensions:[{name:"supplier_id",role:"dimension",dataType:"number"}],filters:[{field:{name:"direction",role:"dimension",dataType:"string"},operator:"=",values:["Inbound"]}],limit:15},boundedSqlRanking:{version:1,kind:"sql",id:"top-customer-ranking-sql",label:"Top customer ranking SQL",source:{kind:"sql",connectionId:"conn_sales",dialect:"postgres"},sql:"SELECT customer_name, SUM(revenue) AS revenue FROM public.orders GROUP BY customer_name ORDER BY revenue DESC LIMIT 20",limit:20,rationale:"Ranking is SQL-natural because it requires ordering grouped aggregate rows.",fields:[{name:"customer_name",role:"dimension",dataType:"string"},{name:"revenue",role:"measure",dataType:"number"}]}};exports.normalizeSemaphorAnalyticsFilterOperator=d.normalizeSemaphorAnalyticsFilterOperator;exports.normalizeSemaphorInputOperator=d.normalizeSemaphorInputOperator;exports.parseSemaphorIsoTimeWindowBoundary=s.parseSemaphorIsoTimeWindowBoundary;exports.validateSemaphorAnalyticsIntent=s.validateSemaphorAnalyticsIntent;exports.validateSemaphorAnalyticsRecoveryPlan=s.validateSemaphorAnalyticsRecoveryPlan;exports.validateSemaphorDashboardIntent=s.validateSemaphorDashboardIntent;exports.validateSemaphorDerivedFieldDefinition=s.validateSemaphorDerivedFieldDefinition;exports.validateSemaphorOperationIntent=s.validateSemaphorOperationIntent;exports.validateSemaphorResultCalculation=s.validateSemaphorResultCalculation;exports.SEMAPHOR_ANALYZE_RESULT_FIELD_CONTRACT=o.SEMAPHOR_ANALYZE_RESULT_FIELD_CONTRACT;exports.getSemaphorAnalyzeResultFieldNames=o.getSemaphorAnalyzeResultFieldNames;exports.isSemaphorAnalyzeResultFieldName=o.isSemaphorAnalyzeResultFieldName;exports.parseSemaphorAnalyzeResult=o.parseSemaphorAnalyzeResult;exports.buildAnalyticsCatalogFieldSummary=i.buildAnalyticsCatalogFieldSummary;exports.getAnalyticsCatalogFieldCandidates=i.getAnalyticsCatalogFieldCandidates;exports.getAnalyticsCatalogFieldName=i.getAnalyticsCatalogFieldName;exports.isAnalyticsCatalogDateField=i.isAnalyticsCatalogDateField;exports.isAnalyticsCatalogDimensionField=i.isAnalyticsCatalogDimensionField;exports.isAnalyticsCatalogMetricField=i.isAnalyticsCatalogMetricField;exports.isAnalyticsDateLikeDataType=i.isAnalyticsDateLikeDataType;exports.isAnalyticsMetricIdentifierField=i.isAnalyticsMetricIdentifierField;exports.isAnalyticsTechnicalIdentifierField=i.isAnalyticsTechnicalIdentifierField;exports.normalizeAnalyticsCatalogDataType=i.normalizeAnalyticsCatalogDataType;exports.normalizeAnalyticsCatalogName=i.normalizeAnalyticsCatalogName;exports.preferSemaphorFieldRefMetadata=l.preferSemaphorFieldRefMetadata;exports.preferSemaphorSourceMetadata=l.preferSemaphorSourceMetadata;exports.semaphorFieldRefsMatch=l.semaphorFieldRefsMatch;exports.semaphorSourceIdentityKey=l.semaphorSourceIdentityKey;exports.semaphorSourcesReferToSameDataset=l.semaphorSourcesReferToSameDataset;exports.SEMAPHOR_ANALYTICS_INTENT_FIXTURES=S;exports.buildSemaphorQualifiedSourcePath=h;exports.getSemaphorConnectionCapabilities=m;exports.normalizeSemaphorDialect=p;exports.semaphorSourceHasRequiredCoordinates=b;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const A=require("../chunks/operators-DrTQsJXv.js"),d=require("../chunks/validators-lWo8m0Q7.js"),b=require("../chunks/analyze-result-contract-CtXfp3nv.js"),o=require("../chunks/catalog-field-grounding-Bnx-3tE0.js"),y=require("../chunks/source-identity-C-xaeE_I.js"),g="semaphor-data-app-codegen-summary/v1";function R(a){return v(a).ok}function v(a){const i=[];if(!a||typeof a!="object")return{ok:!1,issues:["Summary must be an object."]};const e=a;return e.schemaVersion!==g&&i.push(`schemaVersion must be ${g}.`),(typeof e.title!="string"||!e.title.trim())&&i.push("title is required."),Array.isArray(e.sources)||i.push("sources must be an array."),Array.isArray(e.inputs)||i.push("inputs must be an array."),Array.isArray(e.views)||i.push("views must be an array."),Array.isArray(e.filterContracts)||i.push("filterContracts must be an array."),(!e.implementationChecklist||typeof e.implementationChecklist!="object")&&i.push("implementationChecklist must be an object."),e.implementationChecklist&&typeof e.implementationChecklist=="object"&&i.push(...T(e.implementationChecklist)),Array.isArray(e.sources)&&e.sources.forEach((t,r)=>{i.push(...k(t,`sources.${r}`))}),Array.isArray(e.inputs)&&e.inputs.forEach((t,r)=>{i.push(...F(t,`inputs.${r}`))}),Array.isArray(e.views)&&e.views.forEach((t,r)=>{i.push(...$(t,`views.${r}`))}),Array.isArray(e.filterContracts)&&e.filterContracts.forEach((t,r)=>{i.push(...q(t,`filterContracts.${r}`))}),{ok:i.length===0,issues:i}}function k(a,i){const e=s(a);return e?typeof e.sourceKey=="string"&&e.sourceKey.trim()?[]:e.kind==="semantic"&&typeof e.domainId=="string"&&e.domainId.trim()&&(typeof e.datasetName=="string"&&e.datasetName.trim()||typeof e.datasetId=="string"&&e.datasetId.trim())?[]:e.kind==="physical"&&typeof e.tableName=="string"&&e.tableName.trim()&&typeof e.connectionId=="string"&&e.connectionId.trim()?[]:e.kind==="sql"&&typeof e.connectionId=="string"&&e.connectionId.trim()?[]:[`${i} must include sourceKey or a supported source identity.`]:[`${i} must be an object.`]}function T(a){const i=s(a);if(!i)return["implementationChecklist must be an object."];const e=[],t=["requiredDevtools","requiredInputOptions","filterScopeByInput","bindingsByView","validationCommands","browserSmokeChecks"];for(const n of t)n in i||e.push(`implementationChecklist.${n} is required.`);const r=s(i.requiredDevtools);return r?typeof r.mountRootDevtools!="boolean"&&e.push("implementationChecklist.requiredDevtools.mountRootDevtools must be a boolean."):e.push("implementationChecklist.requiredDevtools must be an object."),Array.isArray(i.requiredInputOptions)||e.push("implementationChecklist.requiredInputOptions must be an array."),Array.isArray(i.filterScopeByInput)||e.push("implementationChecklist.filterScopeByInput must be an array."),s(i.bindingsByView)||e.push("implementationChecklist.bindingsByView must be an object."),l(i.validationCommands)||e.push("implementationChecklist.validationCommands must be an array of strings."),l(i.browserSmokeChecks)||e.push("implementationChecklist.browserSmokeChecks must be an array of strings."),e}function F(a,i){const e=s(a);if(!e)return[`${i} must be an object.`];const t=[];return(typeof e.id!="string"||!e.id.trim())&&t.push(`${i}.id is required.`),e.fieldRef&&t.push(...m(e.fieldRef,`${i}.fieldRef`)),t.push(...S(e.optionQuery,`${i}.optionQuery`)),l(e.appliesToViewIds)||t.push(`${i}.appliesToViewIds must be an array of strings.`),e.bindings!==void 0&&!Array.isArray(e.bindings)&&t.push(`${i}.bindings must be an array.`),Array.isArray(e.bindings)&&e.bindings.forEach((r,n)=>{const p=s(r);if(!p){t.push(`${i}.bindings.${n} must be an object.`);return}l(p.appliesToViewIds)||t.push(`${i}.bindings.${n}.appliesToViewIds must be an array of strings.`),t.push(...m(p.fieldRef,`${i}.bindings.${n}.fieldRef`))}),t}function $(a,i){const e=s(a);if(!e)return[`${i} must be an object.`];const t=[];return(typeof e.id!="string"||!e.id.trim())&&t.push(`${i}.id is required.`),Array.isArray(e.fields)?(e.fields.forEach((r,n)=>{t.push(...m(r,`${i}.fields.${n}`))}),t):(_(e)||t.push(`${i}.fields must be an array.`),t)}function q(a,i){const e=s(a);if(!e)return[`${i} must be an object.`];const t=[];if(e.fieldRef&&t.push(...m(e.fieldRef,`${i}.fieldRef`)),(typeof e.inputId!="string"||!e.inputId.trim())&&t.push(`${i}.inputId is required.`),t.push(...S(e.optionQuery,`${i}.optionQuery`)),l(e.appliesToViewIds)||t.push(`${i}.appliesToViewIds must be an array of strings.`),l(e.notAppliedToViewIds)||t.push(`${i}.notAppliedToViewIds must be an array of strings.`),!Array.isArray(e.bindings))t.push(`${i}.bindings must be an array.`);else{const r=l(e.appliesToViewIds)?new Set(e.appliesToViewIds):void 0,n=l(e.notAppliedToViewIds)?new Set(e.notAppliedToViewIds):void 0;e.bindings.forEach((p,f)=>{const u=s(p);if(!u){t.push(`${i}.bindings.${f} must be an object.`);return}typeof u.viewId!="string"||!u.viewId?t.push(`${i}.bindings.${f}.viewId is required.`):(r&&!r.has(u.viewId)&&t.push(`${i}.bindings.${f}.viewId must be included in appliesToViewIds.`),n!=null&&n.has(u.viewId)&&t.push(`${i}.bindings.${f}.viewId must not be listed in notAppliedToViewIds.`)),t.push(...m(u.fieldRef,`${i}.bindings.${f}.fieldRef`))})}return t}function S(a,i){if(a===void 0)return[];const e=s(a);return e?[...h(e.valueFieldRef,`${i}.valueFieldRef`),...h(e.labelFieldRef,`${i}.labelFieldRef`),...h(e.filterFieldRef,`${i}.filterFieldRef`)]:[`${i} must be an object.`]}function _(a){const i=s(a.computation),e=s(a.visualSpec);return(i==null?void 0:i.kind)==="presentation_only"||a.visual==="text_block"||(e==null?void 0:e.visualType)==="text_block"}function h(a,i){return a===void 0?[]:m(a,i)}function m(a,i){const e=s(a);if(!e)return[`${i} must be an object.`];const t=[];return(typeof e.name!="string"||!e.name.trim())&&t.push(`${i}.name is required.`),!e.source&&typeof e.sourceKey!="string"&&t.push(`${i} must include source or sourceKey.`),t}function s(a){return a&&typeof a=="object"&&!Array.isArray(a)?a:void 0}function l(a){return Array.isArray(a)&&a.every(i=>typeof i=="string")}function w(a,i={}){const e=I(a),t={connectionId:i.connectionId,connectionType:a,path:["database","schema","table"],labels:{database:"Database",schema:"Schema",table:"Table"},prefixLevels:["database","schema","table"],dialect:"postgres",supportsFilterClause:!0};return e.includes("postgres")?{...t,prefixLevels:["schema","table"],dialect:"postgres"}:e.includes("mysql")?{...t,prefixLevels:["database","table"],dialect:"mysql",supportsFilterClause:!1}:e.includes("mssql")||e.includes("sqlserver")?{...t,dialect:"mssql",supportsFilterClause:!1}:e.includes("redshift")?{...t,prefixLevels:["schema","table"],dialect:"redshift"}:e.includes("snowflake")?{...t,dialect:"snowflake"}:e.includes("clickhouse")?{connectionId:i.connectionId,connectionType:a,path:["database","table"],labels:{database:"Database",table:"Table"},prefixLevels:["database","table"],dialect:"clickhouse",supportsFilterClause:!1}:e==="s3"||e==="api"?{connectionId:i.connectionId,connectionType:a,path:["table"],labels:{table:e==="api"?"API Table":"File Table"},prefixLevels:["table"],dialect:"duckdb",supportsFilterClause:!0}:e==="googlesheets"||e==="fileupload"?{connectionId:i.connectionId,connectionType:a,path:["table"],labels:{table:"Table"},prefixLevels:["table"],dialect:"postgres",supportsFilterClause:!0}:e==="s3tables"?{...t,labels:{database:"Database",schema:"Namespace",table:"Table"},dialect:"duckdb"}:e==="bigquery"?{...t,labels:{database:"Project",schema:"Dataset",table:"Table"},prefixLevels:["schema","table"],dialect:"bigquery",supportsFilterClause:!1}:t}function D(a){const i=I(a);switch(i){case"mysql":case"bigquery":case"redshift":case"snowflake":case"clickhouse":case"duckdb":case"sqlite":return i;case"mssql":case"sqlserver":return"mssql";case"postgres":case"postgresql":return"postgres";default:return"unknown"}}function E(a){return a.capabilities.prefixLevels.every(i=>!!C(a.source,i))}function N(a){const i=a.quoteIdentifier??O;return a.capabilities.prefixLevels.map(e=>C(a.source,e)).filter(e=>!!e).map(e=>i(e,a.capabilities.dialect)).join(".")}function C(a,i){return i==="database"?a.databaseName:i==="schema"?a.schemaName:a.tableName}function O(a,i){return i==="mysql"||i==="bigquery"||i==="clickhouse"||i==="duckdb"?`\`${a.replace(/`/g,"``")}\``:i==="mssql"?`[${a.replace(/]/g,"]]")}]`:`"${a.replace(/"/g,'""')}"`}function I(a){if(typeof a!="string")return"";const i=[];for(const e of a.trim().toLowerCase())M(e)&&i.push(e);return i.join("")}function M(a){const i=a.charCodeAt(0);return i>=48&&i<=57||i>=97&&i<=122}const c={kind:"semantic",domainId:"domain_sales",datasetName:"orders",connectionId:"conn_sales",label:"Orders"},L={revenueKpi:{version:1,kind:"metric",id:"revenue-kpi",label:"Revenue",source:c,measures:[{name:"revenue",role:"measure"}],primaryMeasure:{name:"revenue",role:"measure"},comparison:{kind:"previous_period"},limit:1},revenueTrend:{version:1,kind:"records",id:"revenue-trend",label:"Revenue trend",source:c,fields:[{name:"order_date",role:"date",dataType:"date",label:"Order Date"},{name:"revenue",role:"measure",dataType:"number"}],dateField:{name:"order_date",role:"date",dataType:"date"},timeGrain:"month",limit:100},topCustomersRecords:{version:1,kind:"records",id:"top-customers",label:"Top customers",source:c,fields:[{name:"customer_name",role:"dimension",dataType:"string"},{name:"segment",role:"dimension",dataType:"string"},{name:"revenue",role:"measure",dataType:"number"}],orderBy:{field:{name:"revenue",role:"measure"},direction:"desc"},limit:20},regionInputOptions:{version:1,kind:"inputOptions",id:"region-options",label:"Region options",inputId:"region",source:c,labelField:{name:"region",role:"dimension",dataType:"string"},valueField:{name:"region",role:"dimension",dataType:"string"},limit:100},previousPeriodRevenueComparison:{version:1,kind:"metric",id:"revenue-previous-period",label:"Revenue previous period comparison",source:c,measures:[{name:"revenue",role:"measure"}],primaryMeasure:{name:"revenue",role:"measure"},dateField:{name:"order_date",role:"date",dataType:"date"},timeGrain:"week",comparison:{kind:"previous_period"},limit:100},inboundSupplierConcentration:{version:1,kind:"metric",id:"inbound-supplier-concentration",label:"Inbound supplier concentration",source:c,measures:[{name:"net_tons",role:"measure"},{name:"ticket_value",role:"measure"}],primaryMeasure:{name:"net_tons",role:"measure"},dateField:{name:"ticket_date",role:"date",dataType:"date"},timeWindow:{unit:"month",value:6,anchor:"latest_available"},dimensions:[{name:"supplier_id",role:"dimension",dataType:"number"}],filters:[{field:{name:"direction",role:"dimension",dataType:"string"},operator:"=",values:["Inbound"]}],limit:15},boundedSqlRanking:{version:1,kind:"sql",id:"top-customer-ranking-sql",label:"Top customer ranking SQL",source:{kind:"sql",connectionId:"conn_sales",dialect:"postgres"},sql:"SELECT customer_name, SUM(revenue) AS revenue FROM public.orders GROUP BY customer_name ORDER BY revenue DESC LIMIT 20",limit:20,rationale:"Ranking is SQL-natural because it requires ordering grouped aggregate rows.",fields:[{name:"customer_name",role:"dimension",dataType:"string"},{name:"revenue",role:"measure",dataType:"number"}]}};exports.normalizeSemaphorAnalyticsFilterOperator=A.normalizeSemaphorAnalyticsFilterOperator;exports.normalizeSemaphorInputOperator=A.normalizeSemaphorInputOperator;exports.parseSemaphorIsoTimeWindowBoundary=d.parseSemaphorIsoTimeWindowBoundary;exports.validateSemaphorAnalyticsIntent=d.validateSemaphorAnalyticsIntent;exports.validateSemaphorAnalyticsRecoveryPlan=d.validateSemaphorAnalyticsRecoveryPlan;exports.validateSemaphorDashboardIntent=d.validateSemaphorDashboardIntent;exports.validateSemaphorDerivedFieldDefinition=d.validateSemaphorDerivedFieldDefinition;exports.validateSemaphorOperationIntent=d.validateSemaphorOperationIntent;exports.validateSemaphorResultCalculation=d.validateSemaphorResultCalculation;exports.SEMAPHOR_ANALYZE_RESULT_FIELD_CONTRACT=b.SEMAPHOR_ANALYZE_RESULT_FIELD_CONTRACT;exports.getSemaphorAnalyzeResultFieldNames=b.getSemaphorAnalyzeResultFieldNames;exports.isSemaphorAnalyzeResultFieldName=b.isSemaphorAnalyzeResultFieldName;exports.parseSemaphorAnalyzeResult=b.parseSemaphorAnalyzeResult;exports.buildAnalyticsCatalogFieldSummary=o.buildAnalyticsCatalogFieldSummary;exports.getAnalyticsCatalogFieldCandidates=o.getAnalyticsCatalogFieldCandidates;exports.getAnalyticsCatalogFieldName=o.getAnalyticsCatalogFieldName;exports.isAnalyticsCatalogDateField=o.isAnalyticsCatalogDateField;exports.isAnalyticsCatalogDimensionField=o.isAnalyticsCatalogDimensionField;exports.isAnalyticsCatalogMetricField=o.isAnalyticsCatalogMetricField;exports.isAnalyticsDateLikeDataType=o.isAnalyticsDateLikeDataType;exports.isAnalyticsMetricIdentifierField=o.isAnalyticsMetricIdentifierField;exports.isAnalyticsTechnicalIdentifierField=o.isAnalyticsTechnicalIdentifierField;exports.normalizeAnalyticsCatalogDataType=o.normalizeAnalyticsCatalogDataType;exports.normalizeAnalyticsCatalogName=o.normalizeAnalyticsCatalogName;exports.preferSemaphorFieldRefMetadata=y.preferSemaphorFieldRefMetadata;exports.preferSemaphorSourceMetadata=y.preferSemaphorSourceMetadata;exports.semaphorFieldRefsMatch=y.semaphorFieldRefsMatch;exports.semaphorSourceIdentityKey=y.semaphorSourceIdentityKey;exports.semaphorSourcesReferToSameDataset=y.semaphorSourcesReferToSameDataset;exports.SEMAPHOR_ANALYTICS_INTENT_FIXTURES=L;exports.SEMAPHOR_DATA_APP_CODEGEN_SUMMARY_SCHEMA_VERSION=g;exports.buildSemaphorQualifiedSourcePath=N;exports.getSemaphorConnectionCapabilities=w;exports.isSemaphorDataAppCodegenSummary=R;exports.normalizeSemaphorDialect=D;exports.semaphorSourceHasRequiredCoordinates=E;exports.validateSemaphorDataAppCodegenSummary=v;
@@ -1,12 +1,170 @@
1
- import { a as h, n as v } from "../chunks/operators-C8TxpM4C.js";
2
- import { p as y, b as S, d as T, e as C, v as I, c as k, a as F } from "../chunks/validators-CHPH6ORs.js";
3
- import { S as q, g as R, i as _, p as L } from "../chunks/analyze-result-contract-DuhlklhI.js";
4
- import { j as x, a as N, g as M, c as O, h as z, f as E, i as w, e as P, d as B, b as j, n as Q } from "../chunks/catalog-field-grounding-CJKAqtiC.js";
5
- import { p as Y, c as G, s as H, a as $, b as K } from "../chunks/source-identity-CN4xiyKJ.js";
6
- function d(e, a = {}) {
7
- const r = n(e), s = {
8
- connectionId: a.connectionId,
9
- connectionType: e,
1
+ import { a as O, n as V } from "../chunks/operators-C8TxpM4C.js";
2
+ import { p as L, b as M, d as x, e as B, v as P, c as z, a as Q } from "../chunks/validators-CHPH6ORs.js";
3
+ import { S as H, g as U, i as Y, p as G } from "../chunks/analyze-result-contract-DuhlklhI.js";
4
+ import { j as X, a as Z, g as J, c as ee, h as ie, f as se, i as re, e as te, d as ae, b as ne, n as oe } from "../chunks/catalog-field-grounding-CJKAqtiC.js";
5
+ import { p as ue, c as de, s as ce, a as me, b as pe } from "../chunks/source-identity-CN4xiyKJ.js";
6
+ const f = "semaphor-data-app-codegen-summary/v1";
7
+ function T(s) {
8
+ return g(s).ok;
9
+ }
10
+ function g(s) {
11
+ const i = [];
12
+ if (!s || typeof s != "object")
13
+ return { ok: !1, issues: ["Summary must be an object."] };
14
+ const e = s;
15
+ return e.schemaVersion !== f && i.push(
16
+ `schemaVersion must be ${f}.`
17
+ ), (typeof e.title != "string" || !e.title.trim()) && i.push("title is required."), Array.isArray(e.sources) || i.push("sources must be an array."), Array.isArray(e.inputs) || i.push("inputs must be an array."), Array.isArray(e.views) || i.push("views must be an array."), Array.isArray(e.filterContracts) || i.push("filterContracts must be an array."), (!e.implementationChecklist || typeof e.implementationChecklist != "object") && i.push("implementationChecklist must be an object."), e.implementationChecklist && typeof e.implementationChecklist == "object" && i.push(
18
+ ...I(e.implementationChecklist)
19
+ ), Array.isArray(e.sources) && e.sources.forEach((r, t) => {
20
+ i.push(...v(r, `sources.${t}`));
21
+ }), Array.isArray(e.inputs) && e.inputs.forEach((r, t) => {
22
+ i.push(...A(r, `inputs.${t}`));
23
+ }), Array.isArray(e.views) && e.views.forEach((r, t) => {
24
+ i.push(...C(r, `views.${t}`));
25
+ }), Array.isArray(e.filterContracts) && e.filterContracts.forEach((r, t) => {
26
+ i.push(
27
+ ...k(r, `filterContracts.${t}`)
28
+ );
29
+ }), { ok: i.length === 0, issues: i };
30
+ }
31
+ function v(s, i) {
32
+ const e = a(s);
33
+ return e ? typeof e.sourceKey == "string" && e.sourceKey.trim() ? [] : e.kind === "semantic" && typeof e.domainId == "string" && e.domainId.trim() && (typeof e.datasetName == "string" && e.datasetName.trim() || typeof e.datasetId == "string" && e.datasetId.trim()) ? [] : e.kind === "physical" && typeof e.tableName == "string" && e.tableName.trim() && typeof e.connectionId == "string" && e.connectionId.trim() ? [] : e.kind === "sql" && typeof e.connectionId == "string" && e.connectionId.trim() ? [] : [`${i} must include sourceKey or a supported source identity.`] : [`${i} must be an object.`];
34
+ }
35
+ function I(s) {
36
+ const i = a(s);
37
+ if (!i)
38
+ return ["implementationChecklist must be an object."];
39
+ const e = [], r = [
40
+ "requiredDevtools",
41
+ "requiredInputOptions",
42
+ "filterScopeByInput",
43
+ "bindingsByView",
44
+ "validationCommands",
45
+ "browserSmokeChecks"
46
+ ];
47
+ for (const n of r)
48
+ n in i || e.push(`implementationChecklist.${n} is required.`);
49
+ const t = a(i.requiredDevtools);
50
+ return t ? typeof t.mountRootDevtools != "boolean" && e.push(
51
+ "implementationChecklist.requiredDevtools.mountRootDevtools must be a boolean."
52
+ ) : e.push("implementationChecklist.requiredDevtools must be an object."), Array.isArray(i.requiredInputOptions) || e.push(
53
+ "implementationChecklist.requiredInputOptions must be an array."
54
+ ), Array.isArray(i.filterScopeByInput) || e.push("implementationChecklist.filterScopeByInput must be an array."), a(i.bindingsByView) || e.push("implementationChecklist.bindingsByView must be an object."), o(i.validationCommands) || e.push(
55
+ "implementationChecklist.validationCommands must be an array of strings."
56
+ ), o(i.browserSmokeChecks) || e.push(
57
+ "implementationChecklist.browserSmokeChecks must be an array of strings."
58
+ ), e;
59
+ }
60
+ function A(s, i) {
61
+ const e = a(s);
62
+ if (!e)
63
+ return [`${i} must be an object.`];
64
+ const r = [];
65
+ return (typeof e.id != "string" || !e.id.trim()) && r.push(`${i}.id is required.`), e.fieldRef && r.push(...d(e.fieldRef, `${i}.fieldRef`)), r.push(...b(e.optionQuery, `${i}.optionQuery`)), o(e.appliesToViewIds) || r.push(`${i}.appliesToViewIds must be an array of strings.`), e.bindings !== void 0 && !Array.isArray(e.bindings) && r.push(`${i}.bindings must be an array.`), Array.isArray(e.bindings) && e.bindings.forEach((t, n) => {
66
+ const c = a(t);
67
+ if (!c) {
68
+ r.push(`${i}.bindings.${n} must be an object.`);
69
+ return;
70
+ }
71
+ o(c.appliesToViewIds) || r.push(
72
+ `${i}.bindings.${n}.appliesToViewIds must be an array of strings.`
73
+ ), r.push(
74
+ ...d(
75
+ c.fieldRef,
76
+ `${i}.bindings.${n}.fieldRef`
77
+ )
78
+ );
79
+ }), r;
80
+ }
81
+ function C(s, i) {
82
+ const e = a(s);
83
+ if (!e)
84
+ return [`${i} must be an object.`];
85
+ const r = [];
86
+ return (typeof e.id != "string" || !e.id.trim()) && r.push(`${i}.id is required.`), Array.isArray(e.fields) ? (e.fields.forEach((t, n) => {
87
+ r.push(...d(t, `${i}.fields.${n}`));
88
+ }), r) : (S(e) || r.push(`${i}.fields must be an array.`), r);
89
+ }
90
+ function k(s, i) {
91
+ const e = a(s);
92
+ if (!e)
93
+ return [`${i} must be an object.`];
94
+ const r = [];
95
+ if (e.fieldRef && r.push(
96
+ ...d(e.fieldRef, `${i}.fieldRef`)
97
+ ), (typeof e.inputId != "string" || !e.inputId.trim()) && r.push(`${i}.inputId is required.`), r.push(
98
+ ...b(e.optionQuery, `${i}.optionQuery`)
99
+ ), o(e.appliesToViewIds) || r.push(`${i}.appliesToViewIds must be an array of strings.`), o(e.notAppliedToViewIds) || r.push(`${i}.notAppliedToViewIds must be an array of strings.`), !Array.isArray(e.bindings))
100
+ r.push(`${i}.bindings must be an array.`);
101
+ else {
102
+ const t = o(e.appliesToViewIds) ? new Set(e.appliesToViewIds) : void 0, n = o(
103
+ e.notAppliedToViewIds
104
+ ) ? new Set(e.notAppliedToViewIds) : void 0;
105
+ e.bindings.forEach((c, m) => {
106
+ const l = a(c);
107
+ if (!l) {
108
+ r.push(`${i}.bindings.${m} must be an object.`);
109
+ return;
110
+ }
111
+ typeof l.viewId != "string" || !l.viewId ? r.push(`${i}.bindings.${m}.viewId is required.`) : (t && !t.has(l.viewId) && r.push(
112
+ `${i}.bindings.${m}.viewId must be included in appliesToViewIds.`
113
+ ), n != null && n.has(l.viewId) && r.push(
114
+ `${i}.bindings.${m}.viewId must not be listed in notAppliedToViewIds.`
115
+ )), r.push(
116
+ ...d(
117
+ l.fieldRef,
118
+ `${i}.bindings.${m}.fieldRef`
119
+ )
120
+ );
121
+ });
122
+ }
123
+ return r;
124
+ }
125
+ function b(s, i) {
126
+ if (s === void 0)
127
+ return [];
128
+ const e = a(s);
129
+ return e ? [
130
+ ...p(
131
+ e.valueFieldRef,
132
+ `${i}.valueFieldRef`
133
+ ),
134
+ ...p(
135
+ e.labelFieldRef,
136
+ `${i}.labelFieldRef`
137
+ ),
138
+ ...p(
139
+ e.filterFieldRef,
140
+ `${i}.filterFieldRef`
141
+ )
142
+ ] : [`${i} must be an object.`];
143
+ }
144
+ function S(s) {
145
+ const i = a(s.computation), e = a(s.visualSpec);
146
+ return (i == null ? void 0 : i.kind) === "presentation_only" || s.visual === "text_block" || (e == null ? void 0 : e.visualType) === "text_block";
147
+ }
148
+ function p(s, i) {
149
+ return s === void 0 ? [] : d(s, i);
150
+ }
151
+ function d(s, i) {
152
+ const e = a(s);
153
+ if (!e)
154
+ return [`${i} must be an object.`];
155
+ const r = [];
156
+ return (typeof e.name != "string" || !e.name.trim()) && r.push(`${i}.name is required.`), !e.source && typeof e.sourceKey != "string" && r.push(`${i} must include source or sourceKey.`), r;
157
+ }
158
+ function a(s) {
159
+ return s && typeof s == "object" && !Array.isArray(s) ? s : void 0;
160
+ }
161
+ function o(s) {
162
+ return Array.isArray(s) && s.every((i) => typeof i == "string");
163
+ }
164
+ function w(s, i = {}) {
165
+ const e = h(s), r = {
166
+ connectionId: i.connectionId,
167
+ connectionType: s,
10
168
  path: ["database", "schema", "table"],
11
169
  labels: {
12
170
  database: "Database",
@@ -17,29 +175,29 @@ function d(e, a = {}) {
17
175
  dialect: "postgres",
18
176
  supportsFilterClause: !0
19
177
  };
20
- return r.includes("postgres") ? {
21
- ...s,
178
+ return e.includes("postgres") ? {
179
+ ...r,
22
180
  prefixLevels: ["schema", "table"],
23
181
  dialect: "postgres"
24
- } : r.includes("mysql") ? {
25
- ...s,
182
+ } : e.includes("mysql") ? {
183
+ ...r,
26
184
  prefixLevels: ["database", "table"],
27
185
  dialect: "mysql",
28
186
  supportsFilterClause: !1
29
- } : r.includes("mssql") || r.includes("sqlserver") ? {
30
- ...s,
187
+ } : e.includes("mssql") || e.includes("sqlserver") ? {
188
+ ...r,
31
189
  dialect: "mssql",
32
190
  supportsFilterClause: !1
33
- } : r.includes("redshift") ? {
34
- ...s,
191
+ } : e.includes("redshift") ? {
192
+ ...r,
35
193
  prefixLevels: ["schema", "table"],
36
194
  dialect: "redshift"
37
- } : r.includes("snowflake") ? {
38
- ...s,
195
+ } : e.includes("snowflake") ? {
196
+ ...r,
39
197
  dialect: "snowflake"
40
- } : r.includes("clickhouse") ? {
41
- connectionId: a.connectionId,
42
- connectionType: e,
198
+ } : e.includes("clickhouse") ? {
199
+ connectionId: i.connectionId,
200
+ connectionType: s,
43
201
  path: ["database", "table"],
44
202
  labels: {
45
203
  database: "Database",
@@ -48,19 +206,19 @@ function d(e, a = {}) {
48
206
  prefixLevels: ["database", "table"],
49
207
  dialect: "clickhouse",
50
208
  supportsFilterClause: !1
51
- } : r === "s3" || r === "api" ? {
52
- connectionId: a.connectionId,
53
- connectionType: e,
209
+ } : e === "s3" || e === "api" ? {
210
+ connectionId: i.connectionId,
211
+ connectionType: s,
54
212
  path: ["table"],
55
213
  labels: {
56
- table: r === "api" ? "API Table" : "File Table"
214
+ table: e === "api" ? "API Table" : "File Table"
57
215
  },
58
216
  prefixLevels: ["table"],
59
217
  dialect: "duckdb",
60
218
  supportsFilterClause: !0
61
- } : r === "googlesheets" || r === "fileupload" ? {
62
- connectionId: a.connectionId,
63
- connectionType: e,
219
+ } : e === "googlesheets" || e === "fileupload" ? {
220
+ connectionId: i.connectionId,
221
+ connectionType: s,
64
222
  path: ["table"],
65
223
  labels: {
66
224
  table: "Table"
@@ -68,16 +226,16 @@ function d(e, a = {}) {
68
226
  prefixLevels: ["table"],
69
227
  dialect: "postgres",
70
228
  supportsFilterClause: !0
71
- } : r === "s3tables" ? {
72
- ...s,
229
+ } : e === "s3tables" ? {
230
+ ...r,
73
231
  labels: {
74
232
  database: "Database",
75
233
  schema: "Namespace",
76
234
  table: "Table"
77
235
  },
78
236
  dialect: "duckdb"
79
- } : r === "bigquery" ? {
80
- ...s,
237
+ } : e === "bigquery" ? {
238
+ ...r,
81
239
  labels: {
82
240
  database: "Project",
83
241
  schema: "Dataset",
@@ -86,11 +244,11 @@ function d(e, a = {}) {
86
244
  prefixLevels: ["schema", "table"],
87
245
  dialect: "bigquery",
88
246
  supportsFilterClause: !1
89
- } : s;
247
+ } : r;
90
248
  }
91
- function u(e) {
92
- const a = n(e);
93
- switch (a) {
249
+ function q(s) {
250
+ const i = h(s);
251
+ switch (i) {
94
252
  case "mysql":
95
253
  case "bigquery":
96
254
  case "redshift":
@@ -98,7 +256,7 @@ function u(e) {
98
256
  case "clickhouse":
99
257
  case "duckdb":
100
258
  case "sqlite":
101
- return a;
259
+ return i;
102
260
  case "mssql":
103
261
  case "sqlserver":
104
262
  return "mssql";
@@ -109,46 +267,46 @@ function u(e) {
109
267
  return "unknown";
110
268
  }
111
269
  }
112
- function c(e) {
113
- return e.capabilities.prefixLevels.every(
114
- (a) => !!t(e.source, a)
270
+ function F(s) {
271
+ return s.capabilities.prefixLevels.every(
272
+ (i) => !!y(s.source, i)
115
273
  );
116
274
  }
117
- function m(e) {
118
- const a = e.quoteIdentifier ?? l;
119
- return e.capabilities.prefixLevels.map((r) => t(e.source, r)).filter((r) => !!r).map((r) => a(r, e.capabilities.dialect)).join(".");
275
+ function _(s) {
276
+ const i = s.quoteIdentifier ?? R;
277
+ return s.capabilities.prefixLevels.map((e) => y(s.source, e)).filter((e) => !!e).map((e) => i(e, s.capabilities.dialect)).join(".");
120
278
  }
121
- function t(e, a) {
122
- return a === "database" ? e.databaseName : a === "schema" ? e.schemaName : e.tableName;
279
+ function y(s, i) {
280
+ return i === "database" ? s.databaseName : i === "schema" ? s.schemaName : s.tableName;
123
281
  }
124
- function l(e, a) {
125
- return a === "mysql" || a === "bigquery" || a === "clickhouse" || a === "duckdb" ? `\`${e.replace(/`/g, "``")}\`` : a === "mssql" ? `[${e.replace(/]/g, "]]")}]` : `"${e.replace(/"/g, '""')}"`;
282
+ function R(s, i) {
283
+ return i === "mysql" || i === "bigquery" || i === "clickhouse" || i === "duckdb" ? `\`${s.replace(/`/g, "``")}\`` : i === "mssql" ? `[${s.replace(/]/g, "]]")}]` : `"${s.replace(/"/g, '""')}"`;
126
284
  }
127
- function n(e) {
128
- if (typeof e != "string")
285
+ function h(s) {
286
+ if (typeof s != "string")
129
287
  return "";
130
- const a = [];
131
- for (const r of e.trim().toLowerCase())
132
- o(r) && a.push(r);
133
- return a.join("");
288
+ const i = [];
289
+ for (const e of s.trim().toLowerCase())
290
+ $(e) && i.push(e);
291
+ return i.join("");
134
292
  }
135
- function o(e) {
136
- const a = e.charCodeAt(0);
137
- return a >= 48 && a <= 57 || a >= 97 && a <= 122;
293
+ function $(s) {
294
+ const i = s.charCodeAt(0);
295
+ return i >= 48 && i <= 57 || i >= 97 && i <= 122;
138
296
  }
139
- const i = {
297
+ const u = {
140
298
  kind: "semantic",
141
299
  domainId: "domain_sales",
142
300
  datasetName: "orders",
143
301
  connectionId: "conn_sales",
144
302
  label: "Orders"
145
- }, p = {
303
+ }, D = {
146
304
  revenueKpi: {
147
305
  version: 1,
148
306
  kind: "metric",
149
307
  id: "revenue-kpi",
150
308
  label: "Revenue",
151
- source: i,
309
+ source: u,
152
310
  measures: [{ name: "revenue", role: "measure" }],
153
311
  primaryMeasure: { name: "revenue", role: "measure" },
154
312
  comparison: { kind: "previous_period" },
@@ -159,7 +317,7 @@ const i = {
159
317
  kind: "records",
160
318
  id: "revenue-trend",
161
319
  label: "Revenue trend",
162
- source: i,
320
+ source: u,
163
321
  fields: [
164
322
  { name: "order_date", role: "date", dataType: "date", label: "Order Date" },
165
323
  { name: "revenue", role: "measure", dataType: "number" }
@@ -173,7 +331,7 @@ const i = {
173
331
  kind: "records",
174
332
  id: "top-customers",
175
333
  label: "Top customers",
176
- source: i,
334
+ source: u,
177
335
  fields: [
178
336
  { name: "customer_name", role: "dimension", dataType: "string" },
179
337
  { name: "segment", role: "dimension", dataType: "string" },
@@ -188,7 +346,7 @@ const i = {
188
346
  id: "region-options",
189
347
  label: "Region options",
190
348
  inputId: "region",
191
- source: i,
349
+ source: u,
192
350
  labelField: { name: "region", role: "dimension", dataType: "string" },
193
351
  valueField: { name: "region", role: "dimension", dataType: "string" },
194
352
  limit: 100
@@ -198,7 +356,7 @@ const i = {
198
356
  kind: "metric",
199
357
  id: "revenue-previous-period",
200
358
  label: "Revenue previous period comparison",
201
- source: i,
359
+ source: u,
202
360
  measures: [{ name: "revenue", role: "measure" }],
203
361
  primaryMeasure: { name: "revenue", role: "measure" },
204
362
  dateField: { name: "order_date", role: "date", dataType: "date" },
@@ -211,7 +369,7 @@ const i = {
211
369
  kind: "metric",
212
370
  id: "inbound-supplier-concentration",
213
371
  label: "Inbound supplier concentration",
214
- source: i,
372
+ source: u,
215
373
  measures: [
216
374
  { name: "net_tons", role: "measure" },
217
375
  { name: "ticket_value", role: "measure" }
@@ -249,38 +407,41 @@ const i = {
249
407
  }
250
408
  };
251
409
  export {
252
- p as SEMAPHOR_ANALYTICS_INTENT_FIXTURES,
253
- q as SEMAPHOR_ANALYZE_RESULT_FIELD_CONTRACT,
254
- x as buildAnalyticsCatalogFieldSummary,
255
- m as buildSemaphorQualifiedSourcePath,
256
- N as getAnalyticsCatalogFieldCandidates,
257
- M as getAnalyticsCatalogFieldName,
258
- R as getSemaphorAnalyzeResultFieldNames,
259
- d as getSemaphorConnectionCapabilities,
260
- O as isAnalyticsCatalogDateField,
261
- z as isAnalyticsCatalogDimensionField,
262
- E as isAnalyticsCatalogMetricField,
263
- w as isAnalyticsDateLikeDataType,
264
- P as isAnalyticsMetricIdentifierField,
265
- B as isAnalyticsTechnicalIdentifierField,
266
- _ as isSemaphorAnalyzeResultFieldName,
267
- j as normalizeAnalyticsCatalogDataType,
268
- Q as normalizeAnalyticsCatalogName,
269
- h as normalizeSemaphorAnalyticsFilterOperator,
270
- u as normalizeSemaphorDialect,
271
- v as normalizeSemaphorInputOperator,
272
- L as parseSemaphorAnalyzeResult,
273
- y as parseSemaphorIsoTimeWindowBoundary,
274
- Y as preferSemaphorFieldRefMetadata,
275
- G as preferSemaphorSourceMetadata,
276
- H as semaphorFieldRefsMatch,
277
- c as semaphorSourceHasRequiredCoordinates,
278
- $ as semaphorSourceIdentityKey,
279
- K as semaphorSourcesReferToSameDataset,
280
- S as validateSemaphorAnalyticsIntent,
281
- T as validateSemaphorAnalyticsRecoveryPlan,
282
- C as validateSemaphorDashboardIntent,
283
- I as validateSemaphorDerivedFieldDefinition,
284
- k as validateSemaphorOperationIntent,
285
- F as validateSemaphorResultCalculation
410
+ D as SEMAPHOR_ANALYTICS_INTENT_FIXTURES,
411
+ H as SEMAPHOR_ANALYZE_RESULT_FIELD_CONTRACT,
412
+ f as SEMAPHOR_DATA_APP_CODEGEN_SUMMARY_SCHEMA_VERSION,
413
+ X as buildAnalyticsCatalogFieldSummary,
414
+ _ as buildSemaphorQualifiedSourcePath,
415
+ Z as getAnalyticsCatalogFieldCandidates,
416
+ J as getAnalyticsCatalogFieldName,
417
+ U as getSemaphorAnalyzeResultFieldNames,
418
+ w as getSemaphorConnectionCapabilities,
419
+ ee as isAnalyticsCatalogDateField,
420
+ ie as isAnalyticsCatalogDimensionField,
421
+ se as isAnalyticsCatalogMetricField,
422
+ re as isAnalyticsDateLikeDataType,
423
+ te as isAnalyticsMetricIdentifierField,
424
+ ae as isAnalyticsTechnicalIdentifierField,
425
+ Y as isSemaphorAnalyzeResultFieldName,
426
+ T as isSemaphorDataAppCodegenSummary,
427
+ ne as normalizeAnalyticsCatalogDataType,
428
+ oe as normalizeAnalyticsCatalogName,
429
+ O as normalizeSemaphorAnalyticsFilterOperator,
430
+ q as normalizeSemaphorDialect,
431
+ V as normalizeSemaphorInputOperator,
432
+ G as parseSemaphorAnalyzeResult,
433
+ L as parseSemaphorIsoTimeWindowBoundary,
434
+ ue as preferSemaphorFieldRefMetadata,
435
+ de as preferSemaphorSourceMetadata,
436
+ ce as semaphorFieldRefsMatch,
437
+ F as semaphorSourceHasRequiredCoordinates,
438
+ me as semaphorSourceIdentityKey,
439
+ pe as semaphorSourcesReferToSameDataset,
440
+ M as validateSemaphorAnalyticsIntent,
441
+ x as validateSemaphorAnalyticsRecoveryPlan,
442
+ B as validateSemaphorDashboardIntent,
443
+ g as validateSemaphorDataAppCodegenSummary,
444
+ P as validateSemaphorDerivedFieldDefinition,
445
+ z as validateSemaphorOperationIntent,
446
+ Q as validateSemaphorResultCalculation
286
447
  };