react-semaphor 0.1.414 → 0.1.416

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,35 +1,35 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const Z=require("../chunks/analyze-result-contract-8nxUOWp8.js"),$=require("../chunks/update-policy-CWg9c08k.js"),ye=require("node:crypto"),Ve="src/semaphor/generated",_=`// Generated by Semaphor Agent Plugin. Do not hand-edit analytics wiring here.
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const Z=require("../chunks/analyze-result-contract-8nxUOWp8.js"),$=require("../chunks/update-policy-CWg9c08k.js"),ye=require("node:crypto"),Re="src/semaphor/generated",_=`// Generated by Semaphor Agent Plugin. Do not hand-edit analytics wiring here.
2
2
  // Regenerate from the accepted semaphor_plan_data_app codegenSummary when the plan changes.
3
- `;function be(e,n={}){$.assertValidCodegenSummary(e);const r=Re(e);if(r.views.length===0&&!n.allowEmpty)throw new Error("Contract generation produced zero executable views. Stop and ask for a different domain/goal or semantic model improvement; pass --allow-empty only for an explicit model-gap report.");const o=Ce(r),t=Ne({contract:r,files:o,generatorName:n.generatorName||"react-semaphor/data-app-codegen/node",generatorVersion:n.generatorVersion||"unknown"}),a={...o,"contract.manifest.json":`${JSON.stringify(t,null,2)}
4
- `};return{schemaVersion:$.GENERATED_CONTRACT_SCHEMA_VERSION,files:a,manifest:t,contentHash:String(t.generatedContentHash||""),usageExample:Ee(r),warnings:r.warnings,stats:{inputCount:r.inputs.length,executableViewCount:r.views.length,presentationViewCount:r.presentationViews.length,queryCount:r.views.length,optionQueryCount:r.optionQueries.length}}}function Re(e){var c,u,d,m,l,w,b,V,O,A,R,N;const n=[],r=[];for(const s of e.inputs){g(r,s.fieldRef);for(const S of s.bindings||[])g(r,S.fieldRef);g(r,(c=s.optionQuery)==null?void 0:c.valueFieldRef),g(r,(u=s.optionQuery)==null?void 0:u.labelFieldRef),g(r,(d=s.optionQuery)==null?void 0:d.filterFieldRef),j(r,(m=s.optionQuery)==null?void 0:m.spec)}for(const s of e.filterContracts){g(r,s.fieldRef),g(r,(l=s.optionQuery)==null?void 0:l.valueFieldRef),g(r,(w=s.optionQuery)==null?void 0:w.labelFieldRef),g(r,(b=s.optionQuery)==null?void 0:b.filterFieldRef),j(r,(V=s.optionQuery)==null?void 0:V.spec);for(const S of s.bindings||[])g(r,S.fieldRef)}for(const s of e.views){for(const S of s.fields||[])g(r,S);j(r,(O=s.sdkSpec)==null?void 0:O.spec),j(r,s.visualSpec)}const o=e.implementationChecklist||{};for(const s of Object.values(o.bindingsByView||{}))for(const S of Array.isArray(s)?s:[])g(r,S.fieldRef),g(r,S.optionValueField),g(r,S.optionLabelField);for(const s of o.requiredInputOptions||[])g(r,s.visibleLabelField),g(r,s.optionValueField),g(r,s.runtimeFilterField);const t=on([...e.sources.map(s=>({raw:s,key:we(s),aliases:Ie(s),name:""})),...r.map(s=>nn(s)).filter(x)]);K(t,s=>{const S=I(s.raw);return Q(s.raw.label||(S==null?void 0:S.datasetName)||(S==null?void 0:S.datasetId)||(S==null?void 0:S.name)||s.raw.kind||"source")});const a=sn(t),p=ne(r.filter(s=>s.name).map(s=>({raw:s,key:U(s),name:""})),s=>s.key);K(p,s=>Q([s.raw.sourceKey?ln(s.raw.sourceKey):"",s.raw.aggregate?s.raw.aggregate.toLowerCase():"",s.raw.name].filter(Boolean).join("_")));const f=new Map(p.map(s=>[s.key,s.name])),h=e.inputs.map(s=>({raw:s,name:Q(s.id||s.label||"input")}));K(h,s=>s.name);const y=h.filter(s=>!!s.raw.optionQuery).map(s=>({input:s,name:`${s.name}Options`,raw:s.raw.optionQuery}));K(y,s=>s.name);for(const s of y)rn(s.raw.labelFieldRef,s.raw.valueFieldRef)&&tn(s.raw.valueFieldRef)&&n.push(`Input option query ${((A=s.raw.spec)==null?void 0:A.inputId)||s.input.raw.id||s.name} uses identifier field ${s.raw.valueFieldRef.name} as both label and value. It can execute, but the UI will show key values unless the semantic model exposes a human-readable label through a modeled relationship.`);const i=e.views.filter(s=>{var S,B;return!!((S=s.sdkSpec)!=null&&S.builder&&((B=s.sdkSpec)!=null&&B.spec))}).map(s=>({raw:s,name:Q(s.id||s.title||"query")}));K(i,s=>s.name);const F=e.views.filter(s=>fe(s)&&!("sdkSpec"in s)).map(s=>en(s));for(const s of e.views)(!("sdkSpec"in s)||!((R=s.sdkSpec)!=null&&R.builder)||!((N=s.sdkSpec)!=null&&N.spec))&&!fe(s)&&n.push(`Skipped view ${s.id||s.title||"unknown"} because it has no sdkSpec.`);return ke({inputs:h,views:i,filterContracts:e.filterContracts}),{summary:e,title:e.title||"Semaphor Data App",sources:t,fields:p,inputs:h,optionQueries:y,views:i,presentationViews:F,filterContracts:e.filterContracts,checklist:o,sourceNameByKey:a,fieldNameByKey:f,warnings:n}}function ke({inputs:e,views:n,filterContracts:r}){const o=new Set(e.map(a=>a.raw.id).filter(Boolean)),t=new Set(n.map(a=>a.raw.id).filter(Boolean));for(const[a,p]of r.entries()){if(!o.has(p.inputId))throw new Error(`filterContracts.${a}.inputId must reference a generated input.`);const f=new Set(p.appliesToViewIds||[]),h=new Set(p.notAppliedToViewIds||[]);for(const[y,i]of(p.appliesToViewIds||[]).entries())if(!t.has(i))throw new Error(`filterContracts.${a}.appliesToViewIds.${y} must reference an executable generated view.`);for(const[y,i]of(p.notAppliedToViewIds||[]).entries())if(!t.has(i))throw new Error(`filterContracts.${a}.notAppliedToViewIds.${y} must reference an executable generated view.`);for(const[y,i]of(p.bindings||[]).entries()){if(!t.has(i.viewId))throw new Error(`filterContracts.${a}.bindings.${y}.viewId must reference an executable generated view.`);if(!f.has(i.viewId))throw new Error(`filterContracts.${a}.bindings.${y}.viewId must be included in appliesToViewIds.`);if(h.has(i.viewId))throw new Error(`filterContracts.${a}.bindings.${y}.viewId must not be listed in notAppliedToViewIds.`)}}}function Ce(e){return{"sources.ts":Ge(e),"fields.ts":_e(e),"inputs.ts":He(e),"queries.ts":qe(e),"bindings.ts":Pe(e),"accessors.ts":Ue(e),"metadata.ts":Je(e),"index.ts":ze()}}function Ne({contract:e,files:n,generatorName:r,generatorVersion:o}){return{schemaVersion:$.CONTRACT_MANIFEST_SCHEMA_VERSION,generatedContractSchemaVersion:$.GENERATED_CONTRACT_SCHEMA_VERSION,generator:{name:r,version:o},generatedContentHash:Me(n),codegenSummaryValidatorVersion:$.CODEGEN_SUMMARY_VALIDATOR_VERSION,codegenSummaryHash:Oe(e.summary),codegenSummary:e.summary}}function Me(e){const n=ye.createHash("sha256");for(const r of Object.keys(e).sort())n.update(r),n.update("\0"),n.update(e[r]),n.update("\0");return`sha256:${n.digest("hex")}`}function Oe(e){return`sha256:${ye.createHash("sha256").update(ue(e)).digest("hex")}`}function ue(e){if(e===null||typeof e!="object")return JSON.stringify(e);if(Array.isArray(e))return`[${e.map(o=>ue(o)).join(",")}]`;const n=e;return`{${Object.keys(n).sort().filter(o=>n[o]!==void 0).map(o=>`${JSON.stringify(o)}:${ue(n[o])}`).join(",")}}`}function Ee(e){const n=e.views.find(y=>G(y)&&T(y));if(n)return['import { appInputSpecs, createInputHandleMap, queries, queryOptionsForView, recordsSortOptionsForView, rowValuesForView, semaphorGeneratedContractMetadata } from "./semaphor/generated";',"const handles = useSemaphorInputs(appInputSpecs);","const inputHandles = createInputHandleMap(handles);",`const sortOption = recordsSortOptionsForView.${n.name}[0];`,'const sort = sortOption ? { key: sortOption.key, direction: "asc" as const } : undefined;',`const query = queries.${n.name}({ page, pageSize, sort });`,`const result = useSemaphorQuery(query, queryOptionsForView.${n.name}(inputHandles));`,`const rows = result.records.map((row) => rowValuesForView.${n.name}(row, result.columns));`,"const presentationViews = semaphorGeneratedContractMetadata.presentationViews;"].join(`
3
+ `;function ke(e,n={}){$.assertValidCodegenSummary(e);const r=Ce(e);if(r.views.length===0&&!n.allowEmpty)throw new Error("Contract generation produced zero executable views. Stop and ask for a different domain/goal or semantic model improvement; pass --allow-empty only for an explicit model-gap report.");const o=Me(r),t=Oe({contract:r,files:o,generatorName:n.generatorName||"react-semaphor/data-app-codegen/node",generatorVersion:n.generatorVersion||"unknown"}),a={...o,"contract.manifest.json":`${JSON.stringify(t,null,2)}
4
+ `};return{schemaVersion:$.GENERATED_CONTRACT_SCHEMA_VERSION,files:a,manifest:t,contentHash:String(t.generatedContentHash||""),usageExample:Ae(r),warnings:r.warnings,stats:{inputCount:r.inputs.length,executableViewCount:r.views.length,presentationViewCount:r.presentationViews.length,queryCount:r.views.length,optionQueryCount:r.optionQueries.length}}}function Ce(e){var l,u,d,m,c,w,b,V,O,A,R,N;const n=[],r=[];for(const s of e.inputs){g(r,s.fieldRef);for(const S of s.bindings||[])g(r,S.fieldRef);g(r,(l=s.optionQuery)==null?void 0:l.valueFieldRef),g(r,(u=s.optionQuery)==null?void 0:u.labelFieldRef),g(r,(d=s.optionQuery)==null?void 0:d.filterFieldRef),j(r,(m=s.optionQuery)==null?void 0:m.spec)}for(const s of e.filterContracts){g(r,s.fieldRef),g(r,(c=s.optionQuery)==null?void 0:c.valueFieldRef),g(r,(w=s.optionQuery)==null?void 0:w.labelFieldRef),g(r,(b=s.optionQuery)==null?void 0:b.filterFieldRef),j(r,(V=s.optionQuery)==null?void 0:V.spec);for(const S of s.bindings||[])g(r,S.fieldRef)}for(const s of e.views){for(const S of s.fields||[])g(r,S);j(r,(O=s.sdkSpec)==null?void 0:O.spec),j(r,s.visualSpec)}const o=e.implementationChecklist||{};for(const s of Object.values(o.bindingsByView||{}))for(const S of Array.isArray(s)?s:[])g(r,S.fieldRef),g(r,S.optionValueField),g(r,S.optionLabelField);for(const s of o.requiredInputOptions||[])g(r,s.visibleLabelField),g(r,s.optionValueField),g(r,s.runtimeFilterField);const t=an([...e.sources.map(s=>({raw:s,key:Ie(s),aliases:$e(s),name:""})),...r.map(s=>tn(s)).filter(x)]);K(t,s=>{const S=I(s.raw);return Q(s.raw.label||(S==null?void 0:S.datasetName)||(S==null?void 0:S.datasetId)||(S==null?void 0:S.name)||s.raw.kind||"source")});const a=un(t),p=ne(r.filter(s=>s.name).map(s=>({raw:s,key:U(s),name:""})),s=>s.key);K(p,s=>Q([s.raw.sourceKey?cn(s.raw.sourceKey):"",s.raw.aggregate?s.raw.aggregate.toLowerCase():"",s.raw.name].filter(Boolean).join("_")));const f=new Map(p.map(s=>[s.key,s.name])),h=e.inputs.map(s=>({raw:s,name:Q(s.id||s.label||"input")}));K(h,s=>s.name);const y=h.filter(s=>!!s.raw.optionQuery).map(s=>({input:s,name:`${s.name}Options`,raw:s.raw.optionQuery}));K(y,s=>s.name);for(const s of y)on(s.raw.labelFieldRef,s.raw.valueFieldRef)&&sn(s.raw.valueFieldRef)&&n.push(`Input option query ${((A=s.raw.spec)==null?void 0:A.inputId)||s.input.raw.id||s.name} uses identifier field ${s.raw.valueFieldRef.name} as both label and value. It can execute, but the UI will show key values unless the semantic model exposes a human-readable label through a modeled relationship.`);const i=e.views.filter(s=>{var S,B;return!!((S=s.sdkSpec)!=null&&S.builder&&((B=s.sdkSpec)!=null&&B.spec))}).map(s=>({raw:s,name:Q(s.id||s.title||"query")}));K(i,s=>s.name);const F=e.views.filter(s=>fe(s)&&!("sdkSpec"in s)).map(s=>rn(s));for(const s of e.views)(!("sdkSpec"in s)||!((R=s.sdkSpec)!=null&&R.builder)||!((N=s.sdkSpec)!=null&&N.spec))&&!fe(s)&&n.push(`Skipped view ${s.id||s.title||"unknown"} because it has no sdkSpec.`);return Ne({inputs:h,views:i,filterContracts:e.filterContracts}),{summary:e,title:e.title||"Semaphor Data App",sources:t,fields:p,inputs:h,optionQueries:y,views:i,presentationViews:F,filterContracts:e.filterContracts,checklist:o,sourceNameByKey:a,fieldNameByKey:f,warnings:n}}function Ne({inputs:e,views:n,filterContracts:r}){const o=new Set(e.map(a=>a.raw.id).filter(Boolean)),t=new Set(n.map(a=>a.raw.id).filter(Boolean));for(const[a,p]of r.entries()){if(!o.has(p.inputId))throw new Error(`filterContracts.${a}.inputId must reference a generated input.`);const f=new Set(p.appliesToViewIds||[]),h=new Set(p.notAppliedToViewIds||[]);for(const[y,i]of(p.appliesToViewIds||[]).entries())if(!t.has(i))throw new Error(`filterContracts.${a}.appliesToViewIds.${y} must reference an executable generated view.`);for(const[y,i]of(p.notAppliedToViewIds||[]).entries())if(!t.has(i))throw new Error(`filterContracts.${a}.notAppliedToViewIds.${y} must reference an executable generated view.`);for(const[y,i]of(p.bindings||[]).entries()){if(!t.has(i.viewId))throw new Error(`filterContracts.${a}.bindings.${y}.viewId must reference an executable generated view.`);if(!f.has(i.viewId))throw new Error(`filterContracts.${a}.bindings.${y}.viewId must be included in appliesToViewIds.`);if(h.has(i.viewId))throw new Error(`filterContracts.${a}.bindings.${y}.viewId must not be listed in notAppliedToViewIds.`)}}}function Me(e){return{"sources.ts":_e(e),"fields.ts":He(e),"inputs.ts":qe(e),"queries.ts":je(e),"bindings.ts":Ue(e),"accessors.ts":Je(e),"metadata.ts":Ye(e),"index.ts":We()}}function Oe({contract:e,files:n,generatorName:r,generatorVersion:o}){return{schemaVersion:$.CONTRACT_MANIFEST_SCHEMA_VERSION,generatedContractSchemaVersion:$.GENERATED_CONTRACT_SCHEMA_VERSION,generator:{name:r,version:o},generatedContentHash:Ee(n),codegenSummaryValidatorVersion:$.CODEGEN_SUMMARY_VALIDATOR_VERSION,codegenSummaryHash:xe(e.summary),codegenSummary:e.summary}}function Ee(e){const n=ye.createHash("sha256");for(const r of Object.keys(e).sort())n.update(r),n.update("\0"),n.update(e[r]),n.update("\0");return`sha256:${n.digest("hex")}`}function xe(e){return`sha256:${ye.createHash("sha256").update(ue(e)).digest("hex")}`}function ue(e){if(e===null||typeof e!="object")return JSON.stringify(e);if(Array.isArray(e))return`[${e.map(o=>ue(o)).join(",")}]`;const n=e;return`{${Object.keys(n).sort().filter(o=>n[o]!==void 0).map(o=>`${JSON.stringify(o)}:${ue(n[o])}`).join(",")}}`}function Ae(e){const n=e.views.find(y=>G(y)&&T(y));if(n)return['import { appInputSpecs, createInputHandleMap, queries, queryOptionsForView, recordsSortOptionsForView, rowValuesForView, semaphorGeneratedContractMetadata } from "./semaphor/generated";',"const handles = useSemaphorInputs(appInputSpecs);","const inputHandles = createInputHandleMap(handles);",`const sortOption = recordsSortOptionsForView.${n.name}[0];`,'const sort = sortOption ? { key: sortOption.key, direction: "asc" as const } : undefined;',`const query = queries.${n.name}({ page, pageSize, sort });`,`const result = useSemaphorQuery(query, queryOptionsForView.${n.name}(inputHandles));`,`const rows = result.records.map((row) => rowValuesForView.${n.name}(row, result.columns));`,"const presentationViews = semaphorGeneratedContractMetadata.presentationViews;"].join(`
5
5
  `);const r=e.views.find(y=>G(y));if(r)return['import { appInputSpecs, createInputHandleMap, queries, queryOptionsForView, recordsSortOptionsForView, rowValuesForView, semaphorGeneratedContractMetadata } from "./semaphor/generated";',"const handles = useSemaphorInputs(appInputSpecs);","const inputHandles = createInputHandleMap(handles);",`const sortOption = recordsSortOptionsForView.${r.name}[0];`,'const sort = sortOption ? { key: sortOption.key, direction: "asc" as const } : undefined;',`const query = queries.${r.name}({ sort });`,`const result = useSemaphorQuery(query, queryOptionsForView.${r.name}(inputHandles));`,`const rows = result.records.map((row) => rowValuesForView.${r.name}(row, result.columns));`,"const presentationViews = semaphorGeneratedContractMetadata.presentationViews;"].join(`
6
6
  `);const o=e.views.find(y=>X(y)&&T(y));if(o)return['import { appInputSpecs, createInputHandleMap, queries, queryOptionsForView, rowValuesForView, semaphorGeneratedContractMetadata } from "./semaphor/generated";',"const handles = useSemaphorInputs(appInputSpecs);","const inputHandles = createInputHandleMap(handles);",`const query = queries.${o.name}({ page, pageSize });`,`const result = useSemaphorQuery(query, queryOptionsForView.${o.name}(inputHandles));`,`const rows = result.records.map((row) => rowValuesForView.${o.name}(row, result.columns));`,"const presentationViews = semaphorGeneratedContractMetadata.presentationViews;"].join(`
7
- `);const t=e.views.find(y=>le(y)&&T(y));if(t)return['import { appInputSpecs, createInputHandleMap, queries, queryOptionsForView, rowValuesForView, semaphorGeneratedContractMetadata } from "./semaphor/generated";',"const handles = useSemaphorInputs(appInputSpecs);","const inputHandles = createInputHandleMap(handles);",`const query = queries.${t.name}({ page, pageSize });`,`const result = useSemaphorQuery(query, queryOptionsForView.${t.name}(inputHandles));`,`const rows = result.records.map((row) => rowValuesForView.${t.name}(row, result.columns));`,"const presentationViews = semaphorGeneratedContractMetadata.presentationViews;"].join(`
8
- `);const a=e.views.find(y=>{var i;return un((i=y.raw.sdkSpec)==null?void 0:i.builder)});if(a)return['import { appInputSpecs, createInputHandleMap, queries, queryOptionsForView, rowValuesForView, semaphorGeneratedContractMetadata } from "./semaphor/generated";',"const handles = useSemaphorInputs(appInputSpecs);","const inputHandles = createInputHandleMap(handles);",`const result = useSemaphorQuery(queries.${a.name}(), queryOptionsForView.${a.name}(inputHandles));`,`const rows = result.records.map((row) => rowValuesForView.${a.name}(row, result.columns));`,"const presentationViews = semaphorGeneratedContractMetadata.presentationViews;"].join(`
9
- `);const p=e.views.find(y=>xe(y));if(p)return['import { appInputSpecs, createInputHandleMap, metricValuesForView, queries, queryOptionsForView, semaphorGeneratedContractMetadata } from "./semaphor/generated";',"const handles = useSemaphorInputs(appInputSpecs);","const inputHandles = createInputHandleMap(handles);",`const result = useSemaphorQuery(queries.${p.name}(), queryOptionsForView.${p.name}(inputHandles));`,`const metrics = metricValuesForView.${p.name}(result);`,"const presentationViews = semaphorGeneratedContractMetadata.presentationViews;"].join(`
7
+ `);const t=e.views.find(y=>pe(y)&&T(y));if(t)return['import { appInputSpecs, createInputHandleMap, queries, queryOptionsForView, rowValuesForView, semaphorGeneratedContractMetadata } from "./semaphor/generated";',"const handles = useSemaphorInputs(appInputSpecs);","const inputHandles = createInputHandleMap(handles);",`const query = queries.${t.name}({ page, pageSize });`,`const result = useSemaphorQuery(query, queryOptionsForView.${t.name}(inputHandles));`,`const rows = result.records.map((row) => rowValuesForView.${t.name}(row, result.columns));`,"const presentationViews = semaphorGeneratedContractMetadata.presentationViews;"].join(`
8
+ `);const a=e.views.find(y=>{var i;return pn((i=y.raw.sdkSpec)==null?void 0:i.builder)});if(a)return['import { appInputSpecs, createInputHandleMap, queries, queryOptionsForView, rowValuesForView, semaphorGeneratedContractMetadata } from "./semaphor/generated";',"const handles = useSemaphorInputs(appInputSpecs);","const inputHandles = createInputHandleMap(handles);",`const result = useSemaphorQuery(queries.${a.name}(), queryOptionsForView.${a.name}(inputHandles));`,`const rows = result.records.map((row) => rowValuesForView.${a.name}(row, result.columns));`,"const presentationViews = semaphorGeneratedContractMetadata.presentationViews;"].join(`
9
+ `);const p=e.views.find(y=>Ge(y));if(p)return['import { appInputSpecs, createInputHandleMap, metricValuesForView, queries, queryOptionsForView, semaphorGeneratedContractMetadata } from "./semaphor/generated";',"const handles = useSemaphorInputs(appInputSpecs);","const inputHandles = createInputHandleMap(handles);",`const result = useSemaphorQuery(queries.${p.name}(), queryOptionsForView.${p.name}(inputHandles));`,`const metrics = metricValuesForView.${p.name}(result);`,"const presentationViews = semaphorGeneratedContractMetadata.presentationViews;"].join(`
10
10
  `);const f=e.views[0];return['import { appInputSpecs, createInputHandleMap, queries, queryOptionsForView, semaphorGeneratedContractMetadata } from "./semaphor/generated";',"const handles = useSemaphorInputs(appInputSpecs);","const inputHandles = createInputHandleMap(handles);",f?`const result = useSemaphorQuery(queries.${f.name}(), queryOptionsForView.${f.name}(inputHandles));`:"const result = undefined;","const presentationViews = semaphorGeneratedContractMetadata.presentationViews;"].join(`
11
- `)}function X(e){var n;return q((n=e.raw.sdkSpec)==null?void 0:n.builder)==="records"}function xe(e){var n;return q((n=e.raw.sdkSpec)==null?void 0:n.builder)==="metric"}function G(e){var n,r,o;return X(e)&&((o=(r=(n=e.raw.visualSpec)==null?void 0:n.tableBehavior)==null?void 0:r.sorting)==null?void 0:o.mode)==="server"}function le(e){var n;return q((n=e.raw.sdkSpec)==null?void 0:n.builder)==="sql"}function T(e){var n,r,o;return((o=(r=(n=e.raw.visualSpec)==null?void 0:n.tableBehavior)==null?void 0:r.pagination)==null?void 0:o.mode)==="server"}function Ae(e){return X(e)&&(T(e)||G(e))||le(e)&&T(e)}function Ge(e){const n=e.sources.map(({name:o,raw:t})=>{const a=Te(t);return` ${o}: ${a},`}).join(`
11
+ `)}function X(e){var n;return q((n=e.raw.sdkSpec)==null?void 0:n.builder)==="records"}function Ge(e){var n;return q((n=e.raw.sdkSpec)==null?void 0:n.builder)==="metric"}function G(e){var n,r,o;return X(e)&&((o=(r=(n=e.raw.visualSpec)==null?void 0:n.tableBehavior)==null?void 0:r.sorting)==null?void 0:o.mode)==="server"}function pe(e){var n;return q((n=e.raw.sdkSpec)==null?void 0:n.builder)==="sql"}function T(e){var n,r,o;return((o=(r=(n=e.raw.visualSpec)==null?void 0:n.tableBehavior)==null?void 0:r.pagination)==null?void 0:o.mode)==="server"}function Te(e){return X(e)&&(T(e)||G(e))||pe(e)&&T(e)}function _e(e){const n=e.sources.map(({name:o,raw:t})=>{const a=Ke(t);return` ${o}: ${a},`}).join(`
12
12
  `),r=e.sources.some(o=>o.raw.kind==="semantic")?`import { semaphor } from "react-semaphor/data-app-sdk";
13
13
 
14
14
  `:"";return`${_}
15
15
  ${r}export const sources = {
16
16
  ${n}
17
17
  } as const;
18
- `}function Te(e){if(e.kind==="semantic"){const n={domainId:e.domainId,datasetId:e.datasetId,datasetName:e.datasetName,label:e.label};return`semaphor.source.semantic(${k(v(n))})`}return`${k(v({...e,sourceKey:void 0}))} as const`}function _e(e){const n=e.fields.map(({name:o,raw:t})=>{const a=Ke(t,e);return` ${o}: ${a},`}).join(`
18
+ `}function Ke(e){if(e.kind==="semantic"){const n={domainId:e.domainId,datasetId:e.datasetId,datasetName:e.datasetName,label:e.label};return`semaphor.source.semantic(${k(v(n))})`}return`${k(v({...e,sourceKey:void 0}))} as const`}function He(e){const n=e.fields.map(({name:o,raw:t})=>{const a=ve(t,e);return` ${o}: ${a},`}).join(`
19
19
  `),r=n.includes("sources.")?`import { sources } from "./sources";
20
20
 
21
21
  `:"";return`${_}
22
22
  ${r}export const fields = {
23
23
  ${n}
24
24
  } as const;
25
- `}function Ke(e,n){const r={name:e.name,label:e.label,role:e.role,dataType:e.dataType,aggregate:e.aggregate},o=an(e),t=o?n.sourceNameByKey.get(o):void 0;if(o&&!t)throw new Error(`Field ${e.name} references source ${o}, but that source is not renderable. Include the source in codegenSummary.sources or provide field.source.`);const a=Object.entries(v(r)).map(([p,f])=>`${JSON.stringify(p)}: ${E(f,n)}`);return t&&a.push(`"source": sources.${t}`),`{ ${a.join(", ")} }`}function He(e){const n=e.inputs.map(d=>{const m=C(d.raw.fieldRef,e),l=[`id: ${JSON.stringify(d.raw.id)}`,`label: ${JSON.stringify(d.raw.label||d.raw.id)}`,`operator: ${JSON.stringify(dn(d.raw))}`];if(m&&l.push(`field: fields.${m}`),d.raw.relationshipHint&&l.push(`relationshipHint: ${k(d.raw.relationshipHint)}`),!m)throw new Error(`Input ${d.raw.id||d.name} is missing a generated field reference.`);return` ${d.name}: semaphor.filter({ ${l.join(", ")} }),`}).join(`
26
- `),r=e.inputs.map(d=>`filterSpecs.${d.name}`).join(", "),o=e.inputs.map(d=>JSON.stringify(d.raw.id)).join(", "),t=e.optionQueries.map(d=>{const m=d.input.raw,l=d.raw,w=I(l.spec)||{},{id:b,inputId:V,source:O,sourceKey:A,valueField:R,labelField:N,population:s,dependencies:S,limit:B,...re}=w,L=l.sourceKey?{sourceKey:l.sourceKey}:l.source||O||(typeof A=="string"?{sourceKey:A}:void 0),te=Se(L,e),oe=C(l.valueFieldRef,e),se=C(l.labelFieldRef,e),ae={...re,id:l.id||w.id||`${m.id}-options`,inputId:m.id,source:L,valueField:l.valueFieldRef,labelField:l.labelFieldRef,population:l.population||s,dependencies:l.dependencies||S,limit:l.limit||B||100};if(!te||!oe||!se)throw new Error(`Input option query ${l.id||`${m.id}-options`} is missing source, valueField, or labelField.`);const ie=Object.entries(v(ae)).map(([$e,Fe])=>`${JSON.stringify($e)}: ${E(Fe,e)}`);return` ${d.name}: semaphor.inputOptions({ ${ie.join(", ")} }),`}).join(`
27
- `),a=e.optionQueries.map(d=>{const l=ve(e,d).map(w=>{const b=C(w.raw.fieldRef,e);if(!b)throw new Error(`Input option query ${d.raw.id||`${d.input.raw.id}-options`} references input ${w.raw.id} without a generated field reference.`);const V=`inputHandles[${JSON.stringify(w.raw.id)}]`;return` if (${V}) {
25
+ `}function ve(e,n){const r={name:e.name,label:e.label,role:e.role,dataType:e.dataType,aggregate:e.aggregate},o=dn(e),t=o?n.sourceNameByKey.get(o):void 0;if(o&&!t)throw new Error(`Field ${e.name} references source ${o}, but that source is not renderable. Include the source in codegenSummary.sources or provide field.source.`);const a=Object.entries(v(r)).map(([p,f])=>`${JSON.stringify(p)}: ${E(f,n)}`);return t&&a.push(`"source": sources.${t}`),`{ ${a.join(", ")} }`}function qe(e){const n=e.inputs.map(d=>{const m=C(d.raw.fieldRef,e),c=[`id: ${JSON.stringify(d.raw.id)}`,`label: ${JSON.stringify(d.raw.label||d.raw.id)}`,`operator: ${JSON.stringify(ln(d.raw))}`];if(m&&c.push(`field: fields.${m}`),d.raw.relationshipHint&&c.push(`relationshipHint: ${k(d.raw.relationshipHint)}`),!m)throw new Error(`Input ${d.raw.id||d.name} is missing a generated field reference.`);return` ${d.name}: semaphor.filter({ ${c.join(", ")} }),`}).join(`
26
+ `),r=e.inputs.map(d=>`filterSpecs.${d.name}`).join(", "),o=e.inputs.map(d=>JSON.stringify(d.raw.id)).join(", "),t=e.optionQueries.map(d=>{const m=d.input.raw,c=d.raw,w=I(c.spec)||{},{id:b,inputId:V,source:O,sourceKey:A,valueField:R,labelField:N,population:s,dependencies:S,limit:B,...re}=w,L=c.sourceKey?{sourceKey:c.sourceKey}:c.source||O||(typeof A=="string"?{sourceKey:A}:void 0),te=we(L,e),oe=C(c.valueFieldRef,e),se=C(c.labelFieldRef,e),ae=ge(d),ie={...re,id:c.id||w.id||`${m.id}-options`,inputId:m.id,source:L,valueField:c.valueFieldRef,labelField:c.labelFieldRef,population:c.population||s,dependencies:ae,limit:c.limit||B||100};if(!te||!oe||!se)throw new Error(`Input option query ${c.id||`${m.id}-options`} is missing source, valueField, or labelField.`);const Fe=Object.entries(v(ie)).map(([Ve,be])=>`${JSON.stringify(Ve)}: ${E(be,e)}`);return` ${d.name}: semaphor.inputOptions({ ${Fe.join(", ")} }),`}).join(`
27
+ `),a=e.optionQueries.map(d=>{const c=Be(e,d).map(w=>{const b=C(w.raw.fieldRef,e);if(!b)throw new Error(`Input option query ${d.raw.id||`${d.input.raw.id}-options`} references input ${w.raw.id} without a generated field reference.`);const V=`inputHandles[${JSON.stringify(w.raw.id)}]`;return` if (${V}) {
28
28
  inputs.push(semaphor.bindInput(${V}, { field: fields.${b} }));
29
29
  }`}).join(`
30
30
  `);return` ${d.name}(inputHandles: SemaphorGeneratedInputHandleMap): SemaphorInputReference[] {
31
31
  const inputs: SemaphorInputReference[] = [];
32
- ${l}
32
+ ${c}
33
33
  return inputs;
34
34
  },`}).join(`
35
35
 
@@ -41,7 +41,7 @@ ${l}
41
41
 
42
42
  `),f=e.optionQueries.map(d=>` case ${JSON.stringify(d.raw.id||`${d.input.raw.id}-options`)}:
43
43
  return queryOptionsForInputOptionQuery.${d.name}(inputHandles);`).join(`
44
- `),h=e.inputs.length>0,y=e.optionQueries.length>0,i=y?"inputOptionQueryId":"_inputOptionQueryId",F=y?"inputHandles":"_inputHandles",c=["SemaphorInputHandle",y?"SemaphorInputReference":void 0,"SemaphorQueryRuntimeOptions"].filter(x).join(", "),u=[h||y?'import { semaphor } from "react-semaphor/data-app-sdk";':void 0,`import type { ${c} } from "react-semaphor/data-app-sdk";`,h||y?'import { fields } from "./fields";':void 0,y?'import { sources } from "./sources";':void 0,'import type { SemaphorGeneratedInputId, SemaphorGeneratedInputOptionQueryId } from "./metadata";'].filter(x).join(`
44
+ `),h=e.inputs.length>0,y=e.optionQueries.length>0,i=y?"inputOptionQueryId":"_inputOptionQueryId",F=y?"inputHandles":"_inputHandles",l=["SemaphorInputHandle",y?"SemaphorInputReference":void 0,"SemaphorQueryRuntimeOptions"].filter(x).join(", "),u=[h||y?'import { semaphor } from "react-semaphor/data-app-sdk";':void 0,`import type { ${l} } from "react-semaphor/data-app-sdk";`,h||y?'import { fields } from "./fields";':void 0,y?'import { sources } from "./sources";':void 0,'import type { SemaphorGeneratedInputId, SemaphorGeneratedInputOptionQueryId } from "./metadata";'].filter(x).join(`
45
45
  `);return`${_}
46
46
  ${u}
47
47
 
@@ -79,7 +79,7 @@ ${f}
79
79
  }
80
80
  throw new Error(\`Unknown generated Semaphor input option query id: \${${i}}\`);
81
81
  }
82
- `}function ve(e,n){const r=n.raw.dependencies;if((r==null?void 0:r.mode)==="independent")return[];const o=new Set([n.input.raw.id,...(r==null?void 0:r.excludeInputIds)||[]]),t=(r==null?void 0:r.mode)==="explicit"?new Set(r.includeInputIds||[]):void 0;return e.inputs.filter(a=>o.has(a.raw.id)?!1:t?t.has(a.raw.id):!!a.raw.fieldRef)}function qe(e){const n=e.views.map(u=>{var l,w,b,V,O,A;const d=q(u.raw.sdkSpec.builder),m=Be(u);if(X(u)&&Ae(u)){const R=(l=u.raw.visualSpec)==null?void 0:l.tableBehavior,N=I(m.pagination),s=T(u),S=G(u),B=((w=R==null?void 0:R.pagination)==null?void 0:w.pageSize)||z(N==null?void 0:N.pageSize)||z(m.limit)||100,re=S?Y(u,e):[],L=S?je({view:u,contract:e,sortFields:re,defaultField:(b=R==null?void 0:R.sorting)==null?void 0:b.defaultField}):void 0,te=S?(V=R==null?void 0:R.sorting)==null?void 0:V.defaultDirection:void 0,oe=Qe({viewName:u.name,supportsPagination:s,supportsSort:S}),se=S?` const orderBy = resolveRecordsOrderBy(
82
+ `}function Be(e,n){const r=ge(n);if(!r||r.mode==="independent")return[];if(r.mode!=="explicit")return[];const o=new Set(r.includeInputIds||[]),t=new Set([n.input.raw.id,...r.excludeInputIds||[]]);return e.inputs.filter(a=>t.has(a.raw.id)?!1:o.has(a.raw.id))}function ge(e){var n;return e.raw.dependencies||((n=e.raw.spec)==null?void 0:n.dependencies)}function je(e){const n=e.views.map(u=>{var c,w,b,V,O,A;const d=q(u.raw.sdkSpec.builder),m=Qe(u);if(X(u)&&Te(u)){const R=(c=u.raw.visualSpec)==null?void 0:c.tableBehavior,N=I(m.pagination),s=T(u),S=G(u),B=((w=R==null?void 0:R.pagination)==null?void 0:w.pageSize)||z(N==null?void 0:N.pageSize)||z(m.limit)||100,re=S?Y(u,e):[],L=S?Pe({view:u,contract:e,sortFields:re,defaultField:(b=R==null?void 0:R.sorting)==null?void 0:b.defaultField}):void 0,te=S?(V=R==null?void 0:R.sorting)==null?void 0:V.defaultDirection:void 0,oe=De({viewName:u.name,supportsPagination:s,supportsSort:S}),se=S?` const orderBy = resolveRecordsOrderBy(
83
83
  recordsSortFieldsForView.${u.name},
84
84
  params.sort,
85
85
  ${E(L,e)},
@@ -93,7 +93,7 @@ ${f}
93
93
  ${se} return semaphor.${d}({
94
94
  ...${E(m,e)},
95
95
  ${ae}${ie} });
96
- },`}if(le(u)&&T(u)){const R=(O=u.raw.visualSpec)==null?void 0:O.tableBehavior,N=I(m.pagination),s=((A=R==null?void 0:R.pagination)==null?void 0:A.pageSize)||z(N==null?void 0:N.pageSize)||z(m.limit)||100;return` ${u.name}(
96
+ },`}if(pe(u)&&T(u)){const R=(O=u.raw.visualSpec)==null?void 0:O.tableBehavior,N=I(m.pagination),s=((A=R==null?void 0:R.pagination)==null?void 0:A.pageSize)||z(N==null?void 0:N.pageSize)||z(m.limit)||100;return` ${u.name}(
97
97
  params: SemaphorGeneratedServerPaginationParams = {},
98
98
  ) {
99
99
  return semaphor.${d}({
@@ -101,11 +101,11 @@ ${ae}${ie} });
101
101
  pagination: resolveServerTablePagination(params, ${JSON.stringify(s)}),
102
102
  });
103
103
  },`}return` ${u.name}: () => semaphor.${d}(${E(m,e)}),`}).join(`
104
- `),r=e.views.filter(u=>G(u)).map(u=>{const m=Y(u,e).map(l=>` ${JSON.stringify(l.key)}: fields.${l.fieldName},`).join(`
104
+ `),r=e.views.filter(u=>G(u)).map(u=>{const m=Y(u,e).map(c=>` ${JSON.stringify(c.key)}: fields.${c.fieldName},`).join(`
105
105
  `);return` ${u.name}: {
106
106
  ${m}
107
107
  },`}).join(`
108
- `),o=e.views.filter(u=>G(u)).map(u=>{const m=Y(u,e).map(l=>` { key: ${JSON.stringify(l.key)}, label: ${JSON.stringify(l.label)}, field: fields.${l.fieldName} },`).join(`
108
+ `),o=e.views.filter(u=>G(u)).map(u=>{const m=Y(u,e).map(c=>` { key: ${JSON.stringify(c.key)}, label: ${JSON.stringify(c.label)}, field: fields.${c.fieldName} },`).join(`
109
109
  `);return` ${u.name}: [
110
110
  ${m}
111
111
  ],`}).join(`
@@ -174,10 +174,10 @@ ${a?`function resolveServerTablePagination(
174
174
  };
175
175
  }
176
176
  `:""}
177
- `}function Be(e){var a,p;const n=I((a=e.raw.sdkSpec)==null?void 0:a.spec)||{},{kind:r,id:o,...t}=n;return{...t,id:e.raw.id,label:((p=e.raw.visualSpec)==null?void 0:p.title)||e.raw.title||t.label}}function Y(e,n){var a,p;const r=[],o=I((a=e.raw.sdkSpec)==null?void 0:a.spec)||{};for(const f of H(o.fields))g(r,f);g(r,o.dateField),g(r,(p=I(o.orderBy))==null?void 0:p.field);for(const f of e.raw.fields||[])g(r,f);return ne(r.map(f=>{const h=C(f,n);if(!(!f.name||!h))return{key:h,fieldName:h,rawName:f.name,label:f.label||f.name}}).filter(x),f=>f.key)}function je({view:e,contract:n,sortFields:r,defaultField:o}){var h,y;const t=new Set(r.map(i=>i.key));if(o&&t.has(o))return o;const a=r.filter(i=>i.rawName===o);if(a.length===1)return a[0].key;const p=I((h=e.raw.sdkSpec)==null?void 0:h.spec),f=C((y=I(p==null?void 0:p.orderBy))==null?void 0:y.field,n);return f&&t.has(f)?f:void 0}function Qe({viewName:e,supportsPagination:n,supportsSort:r}){return n&&r?`SemaphorGeneratedRecordsQueryParams<Extract<keyof typeof recordsSortFieldsForView.${e}, string>>`:r?`SemaphorGeneratedRecordsSortParams<Extract<keyof typeof recordsSortFieldsForView.${e}, string>>`:"SemaphorGeneratedServerPaginationParams"}function Pe(e){const n=e.views.map(i=>{const c=De(e,i.raw.id).map(u=>{const d=u.inputId,m=C(u.fieldRef,e);if(!d||!m)return"";const l=[`field: fields.${m}`];if(u.relationshipHint)l.push(`relationshipHint: ${k(u.relationshipHint)}`);else if(Array.isArray(u.relationshipsUsed)&&u.relationshipsUsed.length>0){const b=u.relationshipsUsed.map(V=>{var O;return(O=I(V))==null?void 0:O.id}).filter(V=>typeof V=="string"&&V.length>0);b.length>0&&l.push(`relationshipHint: ${k({relationshipIds:b})}`)}const w=`inputHandles[${JSON.stringify(d)}]`;return` if (${w}) {
178
- inputs.push(semaphor.bindInput(${w}, { ${l.join(", ")} }));
177
+ `}function Qe(e){var a,p;const n=I((a=e.raw.sdkSpec)==null?void 0:a.spec)||{},{kind:r,id:o,...t}=n;return{...t,id:e.raw.id,label:((p=e.raw.visualSpec)==null?void 0:p.title)||e.raw.title||t.label}}function Y(e,n){var a,p;const r=[],o=I((a=e.raw.sdkSpec)==null?void 0:a.spec)||{};for(const f of H(o.fields))g(r,f);g(r,o.dateField),g(r,(p=I(o.orderBy))==null?void 0:p.field);for(const f of e.raw.fields||[])g(r,f);return ne(r.map(f=>{const h=C(f,n);if(!(!f.name||!h))return{key:h,fieldName:h,rawName:f.name,label:f.label||f.name}}).filter(x),f=>f.key)}function Pe({view:e,contract:n,sortFields:r,defaultField:o}){var h,y;const t=new Set(r.map(i=>i.key));if(o&&t.has(o))return o;const a=r.filter(i=>i.rawName===o);if(a.length===1)return a[0].key;const p=I((h=e.raw.sdkSpec)==null?void 0:h.spec),f=C((y=I(p==null?void 0:p.orderBy))==null?void 0:y.field,n);return f&&t.has(f)?f:void 0}function De({viewName:e,supportsPagination:n,supportsSort:r}){return n&&r?`SemaphorGeneratedRecordsQueryParams<Extract<keyof typeof recordsSortFieldsForView.${e}, string>>`:r?`SemaphorGeneratedRecordsSortParams<Extract<keyof typeof recordsSortFieldsForView.${e}, string>>`:"SemaphorGeneratedServerPaginationParams"}function Ue(e){const n=e.views.map(i=>{const l=Le(e,i.raw.id).map(u=>{const d=u.inputId,m=C(u.fieldRef,e);if(!d||!m)return"";const c=[`field: fields.${m}`];if(u.relationshipHint)c.push(`relationshipHint: ${k(u.relationshipHint)}`);else if(Array.isArray(u.relationshipsUsed)&&u.relationshipsUsed.length>0){const b=u.relationshipsUsed.map(V=>{var O;return(O=I(V))==null?void 0:O.id}).filter(V=>typeof V=="string"&&V.length>0);b.length>0&&c.push(`relationshipHint: ${k({relationshipIds:b})}`)}const w=`inputHandles[${JSON.stringify(d)}]`;return` if (${w}) {
178
+ inputs.push(semaphor.bindInput(${w}, { ${c.join(", ")} }));
179
179
  }`}).filter(Boolean).join(`
180
- `);return{view:i,renderedBindings:c}}),r=n.some(i=>i.renderedBindings.length>0),o=n.map(({view:i,renderedBindings:F})=>{const c=F?"inputHandles":"_inputHandles";return` ${i.name}(${c}: SemaphorGeneratedInputHandleMap): SemaphorInputReference[] {
180
+ `);return{view:i,renderedBindings:l}}),r=n.some(i=>i.renderedBindings.length>0),o=n.map(({view:i,renderedBindings:F})=>{const l=F?"inputHandles":"_inputHandles";return` ${i.name}(${l}: SemaphorGeneratedInputHandleMap): SemaphorInputReference[] {
181
181
  const inputs: SemaphorInputReference[] = [];
182
182
  ${F}
183
183
  return inputs;
@@ -225,26 +225,26 @@ ${p}
225
225
  }
226
226
  throw new Error(\`Unknown generated Semaphor view id: \${viewId}\`);
227
227
  }
228
- `}function De(e,n){return e.filterContracts.flatMap(r=>(r.bindings||[]).filter(o=>o.viewId===n).map(o=>({inputId:r.inputId,fieldRef:o.fieldRef,relationshipHint:o.relationshipHint,relationshipsUsed:o.relationshipsUsed})))}function Ue(e){const n=e.views.map(c=>{const d=W(c,e).map(m=>{const l=C(m.raw,e);return l?` ${m.name}: fields.${l},`:""}).filter(Boolean).join(`
229
- `);return` ${c.name}: {
228
+ `}function Le(e,n){return e.filterContracts.flatMap(r=>(r.bindings||[]).filter(o=>o.viewId===n).map(o=>({inputId:r.inputId,fieldRef:o.fieldRef,relationshipHint:o.relationshipHint,relationshipsUsed:o.relationshipsUsed})))}function Je(e){const n=e.views.map(l=>{const d=W(l,e).map(m=>{const c=C(m.raw,e);return c?` ${m.name}: fields.${c},`:""}).filter(Boolean).join(`
229
+ `);return` ${l.name}: {
230
230
  ${d}
231
231
  },`}).join(`
232
- `),r=e.views.map(c=>{const d=J(c,e).map(m=>{const l=C(m.raw,e);return l?` ${m.name}: fields.${l},`:""}).filter(Boolean).join(`
233
- `);return` ${c.name}: {
232
+ `),r=e.views.map(l=>{const d=J(l,e).map(m=>{const c=C(m.raw,e);return c?` ${m.name}: fields.${c},`:""}).filter(Boolean).join(`
233
+ `);return` ${l.name}: {
234
234
  ${d}
235
235
  },`}).join(`
236
- `),o=e.views.map(c=>{const u=J(c,e),d=Ze(u),m=We(u),l=u.map(w=>{const b=Array.from(new Set(ge(w.raw).filter(V=>m.has(V))));return` ${w.name}: metricKeysForField(metricFieldsForView.${c.name}.${w.name}, { allowNameFallback: ${d.has(w.raw.name)?"false":"true"}, excludedKeys: ${k(b)} }),`}).join(`
237
- `);return` ${c.name}: {
238
- ${l}
236
+ `),o=e.views.map(l=>{const u=J(l,e),d=en(u),m=Xe(u),c=u.map(w=>{const b=Array.from(new Set(he(w.raw).filter(V=>m.has(V))));return` ${w.name}: metricKeysForField(metricFieldsForView.${l.name}.${w.name}, { allowNameFallback: ${d.has(w.raw.name)?"false":"true"}, excludedKeys: ${k(b)} }),`}).join(`
237
+ `);return` ${l.name}: {
238
+ ${c}
239
239
  },`}).join(`
240
- `),t=e.views.map(c=>{const d=J(c,e).map(m=>` ${m.name}: semaphorMetricMeasureBindingKey(metricFieldsForView.${c.name}.${m.name}),`).join(`
241
- `);return` ${c.name}: {
240
+ `),t=e.views.map(l=>{const d=J(l,e).map(m=>` ${m.name}: semaphorMetricMeasureBindingKey(metricFieldsForView.${l.name}.${m.name}),`).join(`
241
+ `);return` ${l.name}: {
242
242
  ${d}
243
243
  },`}).join(`
244
- `),a=e.views.map(c=>{const u=J(c,e);if(u.length===0)return` ${c.name}(): Record<keyof typeof metricFieldsForView.${c.name}, unknown> {
244
+ `),a=e.views.map(l=>{const u=J(l,e);if(u.length===0)return` ${l.name}(): Record<keyof typeof metricFieldsForView.${l.name}, unknown> {
245
245
  return {};
246
- },`;const d=Ye(c,u),m=u.map(l=>{const w=`metricMeasureKeysForView.${c.name}.${l.name}`,b=`metricMeasureBindingKeysForView.${c.name}.${l.name}`,V=d.has(l.name)?`readMetricValueByBindingWithFallback(measures, measureBindings, ${b}, ${w}, scalarValue)`:`readMetricValueByBinding(measures, measureBindings, ${b}, ${w})`;return` ${l.name}: ${V},`}).join(`
247
- `);return` ${c.name}(result: SemaphorGeneratedMetricResult): Record<keyof typeof metricFieldsForView.${c.name}, unknown> {
246
+ },`;const d=Ze(l,u),m=u.map(c=>{const w=`metricMeasureKeysForView.${l.name}.${c.name}`,b=`metricMeasureBindingKeysForView.${l.name}.${c.name}`,V=d.has(c.name)?`readMetricValueByBindingWithFallback(measures, measureBindings, ${b}, ${w}, scalarValue)`:`readMetricValueByBinding(measures, measureBindings, ${b}, ${w})`;return` ${c.name}: ${V},`}).join(`
247
+ `);return` ${l.name}(result: SemaphorGeneratedMetricResult): Record<keyof typeof metricFieldsForView.${l.name}, unknown> {
248
248
  const measures = result?.measures;
249
249
  const measureBindings = result?.measureBindings;
250
250
  const scalarValue = result?.value;
@@ -253,16 +253,16 @@ ${m}
253
253
  };
254
254
  },`}).join(`
255
255
 
256
- `),p=e.views.map(c=>{const u=Le(c,e);return` ${c.name}: ${k(u)},`}).join(`
257
- `),f=e.views.map(c=>{const d=W(c,e).map(m=>` ${m.name}: resolveColumnKey(columns, fieldsForView.${c.name}.${m.name}),`).join(`
258
- `);return` ${c.name}(columns: SemaphorGeneratedColumns): Record<keyof typeof fieldsForView.${c.name}, string | undefined> {
256
+ `),p=e.views.map(l=>{const u=ze(l,e);return` ${l.name}: ${k(u)},`}).join(`
257
+ `),f=e.views.map(l=>{const d=W(l,e).map(m=>` ${m.name}: resolveColumnKey(columns, fieldsForView.${l.name}.${m.name}),`).join(`
258
+ `);return` ${l.name}(columns: SemaphorGeneratedColumns): Record<keyof typeof fieldsForView.${l.name}, string | undefined> {
259
259
  return {
260
260
  ${d}
261
261
  };
262
262
  },`}).join(`
263
263
 
264
- `),h=e.views.map(c=>{const d=W(c,e).map(m=>` ${m.name}: readCell(row, columns, fieldsForView.${c.name}.${m.name}),`).join(`
265
- `);return` ${c.name}(row: SemaphorGeneratedRow, columns: SemaphorGeneratedColumns): Record<keyof typeof fieldsForView.${c.name}, unknown> {
264
+ `),h=e.views.map(l=>{const d=W(l,e).map(m=>` ${m.name}: readCell(row, columns, fieldsForView.${l.name}.${m.name}),`).join(`
265
+ `);return` ${l.name}(row: SemaphorGeneratedRow, columns: SemaphorGeneratedColumns): Record<keyof typeof fieldsForView.${l.name}, unknown> {
266
266
  return {
267
267
  ${d}
268
268
  };
@@ -615,7 +615,7 @@ function sourcesReferToSameDataset(
615
615
  }
616
616
  return false;
617
617
  }
618
- `}function Le(e,n){const r=W(e,n),o=new Map((G(e)?Y(e,n):[]).map(t=>[t.fieldName,t.key]));return r.map(t=>{const a=C(t.raw,n),p=a?o.get(a):void 0;return v({key:t.name,label:t.raw.label||t.raw.name,dataType:t.raw.dataType,sortable:!!p,sortKey:p})})}function Je(e){const n=e.checklist.filterScopeByInput||[],r=e.checklist.requiredDevtools||{},o=e.summary.views.map(i=>i.id).filter(Boolean),t=e.views.map(i=>i.raw.id).filter(Boolean),a=e.inputs.map(i=>i.raw.id).filter(Boolean),p=e.optionQueries.map(i=>i.raw.id||`${i.input.raw.id}-options`).filter(Boolean),f=Object.fromEntries(t.map(i=>[i,e.filterContracts.filter(F=>Array.isArray(F.appliesToViewIds)&&F.appliesToViewIds.includes(i)).map(F=>F.inputId)])),h=Object.fromEntries(e.views.map(i=>[i.raw.id,{title:i.raw.title,visual:i.raw.visual,visualSpec:i.raw.visualSpec,queryKind:i.raw.queryKind,sdkBuilder:i.raw.sdkBuilder}])),y=Object.fromEntries(e.views.map(i=>{var F,c,u;return[i.name,v({viewId:i.raw.id,viewTitle:((F=i.raw.visualSpec)==null?void 0:F.title)||i.raw.title,visualType:(c=i.raw.visualSpec)==null?void 0:c.visualType,title:((u=i.raw.visualSpec)==null?void 0:u.title)||i.raw.title})]}));return`${_}
618
+ `}function ze(e,n){const r=W(e,n),o=new Map((G(e)?Y(e,n):[]).map(t=>[t.fieldName,t.key]));return r.map(t=>{const a=C(t.raw,n),p=a?o.get(a):void 0;return v({key:t.name,label:t.raw.label||t.raw.name,dataType:t.raw.dataType,sortable:!!p,sortKey:p})})}function Ye(e){const n=e.checklist.filterScopeByInput||[],r=e.checklist.requiredDevtools||{},o=e.summary.views.map(i=>i.id).filter(Boolean),t=e.views.map(i=>i.raw.id).filter(Boolean),a=e.inputs.map(i=>i.raw.id).filter(Boolean),p=e.optionQueries.map(i=>i.raw.id||`${i.input.raw.id}-options`).filter(Boolean),f=Object.fromEntries(t.map(i=>[i,e.filterContracts.filter(F=>Array.isArray(F.appliesToViewIds)&&F.appliesToViewIds.includes(i)).map(F=>F.inputId)])),h=Object.fromEntries(e.views.map(i=>[i.raw.id,{title:i.raw.title,visual:i.raw.visual,visualSpec:i.raw.visualSpec,queryKind:i.raw.queryKind,sdkBuilder:i.raw.sdkBuilder}])),y=Object.fromEntries(e.views.map(i=>{var F,l,u;return[i.name,v({viewId:i.raw.id,viewTitle:((F=i.raw.visualSpec)==null?void 0:F.title)||i.raw.title,visualType:(l=i.raw.visualSpec)==null?void 0:l.visualType,title:((u=i.raw.visualSpec)==null?void 0:u.title)||i.raw.title})]}));return`${_}
619
619
  export const generatedViewIds = ${k(o)} as const;
620
620
  export const generatedQueryViewIds = ${k(t)} as const;
621
621
  export const generatedInputIds = ${k(a)} as const;
@@ -650,7 +650,7 @@ export function filterContractsForView(viewId: SemaphorGeneratedQueryViewId) {
650
650
  export const queryDebugForView = ${k(y)} as const;
651
651
 
652
652
  export const semaphorGeneratedContractMetadata = ${k({schemaVersion:"semaphor-generated-data-app-contract/v1",title:e.title,requiredDevtools:r,filterContracts:e.filterContracts,filterScopeByInput:n,generatedViewIds:o,generatedQueryViewIds:t,generatedInputIds:a,generatedInputOptionQueryIds:p,generatedInputIdsForView:f,visualSpecs:h,presentationViews:e.presentationViews})} as const;
653
- `}function ze(){return`${_}
653
+ `}function We(){return`${_}
654
654
  export * from "./sources";
655
655
  export * from "./fields";
656
656
  export * from "./inputs";
@@ -658,4 +658,4 @@ export * from "./queries";
658
658
  export * from "./bindings";
659
659
  export * from "./accessors";
660
660
  export * from "./metadata";
661
- `}function j(e,n){if(!(!n||typeof n!="object")){if(Array.isArray(n)){for(const r of n)j(e,r);return}M(n)&&g(e,D(n));for(const r of Object.values(n))j(e,r)}}function W(e,n){const r=[];if(Xe(r,e.raw.sdkSpec),r.length===0)for(const t of e.raw.fields||[])g(r,t);const o=ne(r.filter(t=>t.name&&C(t,n)).map(t=>({raw:t,key:U(t),name:""})),t=>t.key);return K(o,t=>Q(t.raw.label||t.raw.name||"field")),o}function J(e,n){if(q(e.raw.sdkSpec.builder)!=="metric")return[];const r=I(e.raw.sdkSpec.spec),o=[];g(o,r==null?void 0:r.primaryMeasure);for(const a of H(r==null?void 0:r.measures))g(o,a);const t=ne(o.filter(a=>a.name&&C(a,n)).map(a=>({raw:a,key:U(a),name:""})),a=>a.key);return K(t,a=>Q(a.raw.label||a.raw.name||"metric")),t}function Ye(e,n){if(n.length===1)return new Set([n[0].name]);const r=I(e.raw.sdkSpec.spec);if(!M(r==null?void 0:r.primaryMeasure))return new Set;const o=U(D(r.primaryMeasure)),t=n.find(a=>a.key===o);return t?new Set([t.name]):new Set}function We(e){const n=new Map;for(const r of e)for(const o of new Set(ge(r.raw)))n.set(o,(n.get(o)||0)+1);return new Set(Array.from(n.entries()).filter(([,r])=>r>1).map(([r])=>r))}function ge(e){const n=(e.aggregate||"SUM").toUpperCase();return P([`${n.toLowerCase()}_${e.name}`,`${n}_${e.name}`,`${e.name}_${n.toLowerCase()}`,`${e.name}_${n}`,e.name])}function Ze(e){const n=new Map;for(const r of e)n.set(r.raw.name,(n.get(r.raw.name)||0)+1);return new Set(Array.from(n.entries()).filter(([,r])=>r>1).map(([r])=>r))}function Xe(e,n){const r=I(n.spec);if(!r)return;const o=q(n.builder);if(o==="records"){for(const t of H(r.fields))g(e,t);return}if(o==="sql"){for(const t of H(r.fields))g(e,t);return}if(o==="analysis"||o==="metric"){g(e,r.primaryMeasure);for(const t of H(r.measures))g(e,t);for(const t of H(r.dimensions))g(e,t);g(e,r.dateField);return}if(o==="matrix"){const t=ce(r.rows),a=ce(r.columns),p=H(r.values);for(const f of t)me(e,f);for(const f of a)me(e,f);for(const f of p){const h=I(f);g(e,h==null?void 0:h.field),g(e,h==null?void 0:h.measure)}}}function ce(e){if(Array.isArray(e))return e;const n=I(e);return Array.isArray(n==null?void 0:n.levels)?n.levels:[]}function me(e,n){var r;if(M(n)){g(e,n);return}g(e,(r=I(n))==null?void 0:r.field)}function fe(e){var n,r,o,t;return((n=e==null?void 0:e.computation)==null?void 0:n.kind)==="presentation_only"||((r=e==null?void 0:e.computation)==null?void 0:r.kind)==="derived"||((o=e==null?void 0:e.computation)==null?void 0:o.kind)==="unsupported"||(e==null?void 0:e.visual)==="text_block"||((t=e==null?void 0:e.visualSpec)==null?void 0:t.visualType)==="text_block"}function en(e){const n=I(e)||{};return v({id:e.id,title:e.title,purpose:e.purpose,visual:e.visual,visualSpec:e.visualSpec,computation:e.computation,uxExpectations:e.uxExpectations,validation:e.validation,sourceViewIds:n.sourceViewIds,content:n.content,description:n.description})}function g(e,n){M(n)&&e.push(D(n))}function D(e){return{name:e.name,label:e.label,role:e.role,dataType:e.dataType,aggregate:e.aggregate,sourceKey:e.sourceKey||(e.source?pe(e.source):void 0),...e.source?{source:e.source}:{}}}function nn(e){if(!e.source)return;const n={...e.source,...e.sourceKey?{sourceKey:e.sourceKey}:{}},r=we(n);if(r)return{raw:n,key:r,aliases:Ie(n),name:""}}function M(e){const n=I(e);return!!(n&&typeof n.name=="string"&&(typeof n.role=="string"||typeof n.dataType=="string"||typeof n.aggregate=="string"||n.source||n.sourceKey))}function he(e){const n=I(e);return!!(n&&(typeof n.sourceKey=="string"||n.kind==="semantic"||typeof n.datasetName=="string"&&typeof n.domainId=="string"))}function E(e,n){if(e===void 0)return"undefined";if(e===null||typeof e=="number"||typeof e=="boolean"||typeof e=="string")return JSON.stringify(e);if(Array.isArray(e))return`[${e.map(t=>E(t,n)).join(", ")}]`;if(M(e)){const t=C(D(e),n);if(t)return`fields.${t}`}if(he(e)){const t=Se(e,n);if(t)return`sources.${t}`}const r=I(e);return r?`{ ${Object.entries(r).filter(([,t])=>t!==void 0).map(([t,a])=>`${JSON.stringify(t)}: ${E(a,n)}`).join(", ")} }`:JSON.stringify(e)}function k(e){return JSON.stringify(e,null,2)}function C(e,n){if(M(e))return n.fieldNameByKey.get(U(D(e)))}function Se(e,n){if(he(e))for(const r of ee(e)){const o=n.sourceNameByKey.get(r);if(o)return o}}function U(e){return[e.sourceKey||"",e.name||"",e.role||"",e.aggregate||""].join("|")}function rn(e,n){return!M(e)||!M(n)||e.name!==n.name?!1:de(e).some(r=>de(n).includes(r))}function tn(e){return M(e)&&e.role==="id"}function on(e){const n=[],r=new Map;for(const o of e){const t=P(o.aliases.length?o.aliases:[o.key]),a=t.map(p=>r.get(p)).find(x);if(a){a.aliases=P([...a.aliases,...t]);continue}o.aliases=t,n.push(o);for(const p of t)r.set(p,o)}return n}function sn(e){const n=new Map;for(const r of e)for(const o of P([r.key,...r.aliases])){const t=n.get(o);if(t&&t!==r.name)throw new Error(`Source identity ${o} resolves to multiple generated sources.`);n.set(o,r.name)}return n}function P(e){return Array.from(new Set(e.filter(Boolean)))}function we(e){return ee(e)[0]||pe(e)}function ee(e){const n=I(e);if(!n)return[];const r=[];if(typeof n.sourceKey=="string"&&r.push(n.sourceKey),n.kind==="semantic"||n.datasetName){const o=typeof n.domainId=="string"?n.domainId:"";o&&typeof n.datasetId=="string"&&r.push(`semantic:${o}:datasetId:${n.datasetId}`),o&&typeof n.datasetName=="string"&&r.push(`semantic:${o}:datasetName:${n.datasetName}`)}return r.length===0&&r.push(pe(e)),P(r)}function Ie(e){return ee(e)}function pe(e){const n=I(e);return n?typeof n.sourceKey=="string"?n.sourceKey:JSON.stringify(n):""}function an(e){return M(e)&&de(e)[0]||""}function de(e){return M(e)?P([...typeof e.sourceKey=="string"?[e.sourceKey]:[],...e.source?ee(e.source):[]]):[]}function q(e){const n=String(e||"").replace(/^semaphor\./,"");if(!["metric","records","analysis","matrix","sql"].includes(n))throw new Error(`Unsupported sdkSpec builder: ${e}`);return n}function un(e){const n=q(e);return n==="records"||n==="sql"}function dn(e){const n=I(e);return typeof(n==null?void 0:n.operator)=="string"?n.operator:e.type==="date_range"?"between":e.type==="multi_select"||e.type==="select"?"in":"="}function K(e,n){const r=new Map;for(const o of e){const t=n(o)||"item",a=r.get(t)||0;r.set(t,a+1),o.name=a===0?t:`${t}${a+1}`}}function ne(e,n){const r=new Set,o=[];for(const t of e){const a=n(t);!a||r.has(a)||(r.add(a),o.push(t))}return o}function Q(e){const n=String(e||"").replace(/[^A-Za-z0-9]+/g," ").trim().split(/\s+/).filter(Boolean);if(n.length===0)return"item";const[r,...o]=n,t=[r.toLowerCase(),...o.map(a=>a.charAt(0).toUpperCase()+a.slice(1).toLowerCase())].join("");return/^[A-Za-z_$]/.test(t)?t:`item${t}`}function ln(e){const n=String(e).split(":");return n[n.length-1]||String(e)}function v(e){return Object.fromEntries(Object.entries(e).filter(([,n])=>n!==void 0))}function I(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:void 0}function H(e){return Array.isArray(e)?e:[]}function z(e){return typeof e=="number"&&Number.isFinite(e)?e:void 0}function x(e){return e!==void 0}exports.SEMAPHOR_DATA_APP_CODEGEN_SUMMARY_SCHEMA_VERSION=Z.SEMAPHOR_DATA_APP_CODEGEN_SUMMARY_SCHEMA_VERSION;exports.SEMAPHOR_DATA_APP_CODEGEN_SUMMARY_VALIDATOR_VERSION=Z.SEMAPHOR_DATA_APP_CODEGEN_SUMMARY_VALIDATOR_VERSION;exports.isSemaphorDataAppCodegenSummary=Z.isSemaphorDataAppCodegenSummary;exports.validateSemaphorDataAppCodegenSummary=Z.validateSemaphorDataAppCodegenSummary;exports.CODEGEN_SUMMARY_SCHEMA_VERSION=$.CODEGEN_SUMMARY_SCHEMA_VERSION;exports.CODEGEN_SUMMARY_VALIDATOR_VERSION=$.CODEGEN_SUMMARY_VALIDATOR_VERSION;exports.CONTRACT_MANIFEST_SCHEMA_VERSION=$.CONTRACT_MANIFEST_SCHEMA_VERSION;exports.GENERATED_CONTRACT_SCHEMA_VERSION=$.GENERATED_CONTRACT_SCHEMA_VERSION;exports.GENERATED_CONTRACT_TYPESCRIPT_FILES=$.GENERATED_CONTRACT_TYPESCRIPT_FILES;exports.REQUIRED_GENERATED_CONTRACT_FILES=$.REQUIRED_GENERATED_CONTRACT_FILES;exports.assertValidCodegenSummary=$.assertValidCodegenSummary;exports.buildSemaphorGeneratedActiveInput=$.buildSemaphorGeneratedActiveInput;exports.buildSemaphorGeneratedInputOptionIntent=$.buildSemaphorGeneratedInputOptionIntent;exports.buildSemaphorGeneratedViewExecutionRequest=$.buildSemaphorGeneratedViewExecutionRequest;exports.buildSemaphorGeneratedViewExecutionRequests=$.buildSemaphorGeneratedViewExecutionRequests;exports.evaluateSemaphorDataAppContractUpdatePolicy=$.evaluateSemaphorDataAppContractUpdatePolicy;exports.validateCodegenSummary=$.validateCodegenSummary;exports.validateSemaphorGeneratedContract=$.validateSemaphorGeneratedContract;exports.DEFAULT_GENERATED_CONTRACT_OUTPUT_DIR=Ve;exports.generateSemaphorDataAppContract=be;
661
+ `}function j(e,n){if(!(!n||typeof n!="object")){if(Array.isArray(n)){for(const r of n)j(e,r);return}M(n)&&g(e,D(n));for(const r of Object.values(n))j(e,r)}}function W(e,n){const r=[];if(nn(r,e.raw.sdkSpec),r.length===0)for(const t of e.raw.fields||[])g(r,t);const o=ne(r.filter(t=>t.name&&C(t,n)).map(t=>({raw:t,key:U(t),name:""})),t=>t.key);return K(o,t=>Q(t.raw.label||t.raw.name||"field")),o}function J(e,n){if(q(e.raw.sdkSpec.builder)!=="metric")return[];const r=I(e.raw.sdkSpec.spec),o=[];g(o,r==null?void 0:r.primaryMeasure);for(const a of H(r==null?void 0:r.measures))g(o,a);const t=ne(o.filter(a=>a.name&&C(a,n)).map(a=>({raw:a,key:U(a),name:""})),a=>a.key);return K(t,a=>Q(a.raw.label||a.raw.name||"metric")),t}function Ze(e,n){if(n.length===1)return new Set([n[0].name]);const r=I(e.raw.sdkSpec.spec);if(!M(r==null?void 0:r.primaryMeasure))return new Set;const o=U(D(r.primaryMeasure)),t=n.find(a=>a.key===o);return t?new Set([t.name]):new Set}function Xe(e){const n=new Map;for(const r of e)for(const o of new Set(he(r.raw)))n.set(o,(n.get(o)||0)+1);return new Set(Array.from(n.entries()).filter(([,r])=>r>1).map(([r])=>r))}function he(e){const n=(e.aggregate||"SUM").toUpperCase();return P([`${n.toLowerCase()}_${e.name}`,`${n}_${e.name}`,`${e.name}_${n.toLowerCase()}`,`${e.name}_${n}`,e.name])}function en(e){const n=new Map;for(const r of e)n.set(r.raw.name,(n.get(r.raw.name)||0)+1);return new Set(Array.from(n.entries()).filter(([,r])=>r>1).map(([r])=>r))}function nn(e,n){const r=I(n.spec);if(!r)return;const o=q(n.builder);if(o==="records"){for(const t of H(r.fields))g(e,t);return}if(o==="sql"){for(const t of H(r.fields))g(e,t);return}if(o==="analysis"||o==="metric"){g(e,r.primaryMeasure);for(const t of H(r.measures))g(e,t);for(const t of H(r.dimensions))g(e,t);g(e,r.dateField);return}if(o==="matrix"){const t=ce(r.rows),a=ce(r.columns),p=H(r.values);for(const f of t)me(e,f);for(const f of a)me(e,f);for(const f of p){const h=I(f);g(e,h==null?void 0:h.field),g(e,h==null?void 0:h.measure)}}}function ce(e){if(Array.isArray(e))return e;const n=I(e);return Array.isArray(n==null?void 0:n.levels)?n.levels:[]}function me(e,n){var r;if(M(n)){g(e,n);return}g(e,(r=I(n))==null?void 0:r.field)}function fe(e){var n,r,o,t;return((n=e==null?void 0:e.computation)==null?void 0:n.kind)==="presentation_only"||((r=e==null?void 0:e.computation)==null?void 0:r.kind)==="derived"||((o=e==null?void 0:e.computation)==null?void 0:o.kind)==="unsupported"||(e==null?void 0:e.visual)==="text_block"||((t=e==null?void 0:e.visualSpec)==null?void 0:t.visualType)==="text_block"}function rn(e){const n=I(e)||{};return v({id:e.id,title:e.title,purpose:e.purpose,visual:e.visual,visualSpec:e.visualSpec,computation:e.computation,uxExpectations:e.uxExpectations,validation:e.validation,sourceViewIds:n.sourceViewIds,content:n.content,description:n.description})}function g(e,n){M(n)&&e.push(D(n))}function D(e){return{name:e.name,label:e.label,role:e.role,dataType:e.dataType,aggregate:e.aggregate,sourceKey:e.sourceKey||(e.source?le(e.source):void 0),...e.source?{source:e.source}:{}}}function tn(e){if(!e.source)return;const n={...e.source,...e.sourceKey?{sourceKey:e.sourceKey}:{}},r=Ie(n);if(r)return{raw:n,key:r,aliases:$e(n),name:""}}function M(e){const n=I(e);return!!(n&&typeof n.name=="string"&&(typeof n.role=="string"||typeof n.dataType=="string"||typeof n.aggregate=="string"||n.source||n.sourceKey))}function Se(e){const n=I(e);return!!(n&&(typeof n.sourceKey=="string"||n.kind==="semantic"||typeof n.datasetName=="string"&&typeof n.domainId=="string"))}function E(e,n){if(e===void 0)return"undefined";if(e===null||typeof e=="number"||typeof e=="boolean"||typeof e=="string")return JSON.stringify(e);if(Array.isArray(e))return`[${e.map(t=>E(t,n)).join(", ")}]`;if(M(e)){const t=C(D(e),n);if(t)return`fields.${t}`}if(Se(e)){const t=we(e,n);if(t)return`sources.${t}`}const r=I(e);return r?`{ ${Object.entries(r).filter(([,t])=>t!==void 0).map(([t,a])=>`${JSON.stringify(t)}: ${E(a,n)}`).join(", ")} }`:JSON.stringify(e)}function k(e){return JSON.stringify(e,null,2)}function C(e,n){if(M(e))return n.fieldNameByKey.get(U(D(e)))}function we(e,n){if(Se(e))for(const r of ee(e)){const o=n.sourceNameByKey.get(r);if(o)return o}}function U(e){return[e.sourceKey||"",e.name||"",e.role||"",e.aggregate||""].join("|")}function on(e,n){return!M(e)||!M(n)||e.name!==n.name?!1:de(e).some(r=>de(n).includes(r))}function sn(e){return M(e)&&e.role==="id"}function an(e){const n=[],r=new Map;for(const o of e){const t=P(o.aliases.length?o.aliases:[o.key]),a=t.map(p=>r.get(p)).find(x);if(a){a.aliases=P([...a.aliases,...t]);continue}o.aliases=t,n.push(o);for(const p of t)r.set(p,o)}return n}function un(e){const n=new Map;for(const r of e)for(const o of P([r.key,...r.aliases])){const t=n.get(o);if(t&&t!==r.name)throw new Error(`Source identity ${o} resolves to multiple generated sources.`);n.set(o,r.name)}return n}function P(e){return Array.from(new Set(e.filter(Boolean)))}function Ie(e){return ee(e)[0]||le(e)}function ee(e){const n=I(e);if(!n)return[];const r=[];if(typeof n.sourceKey=="string"&&r.push(n.sourceKey),n.kind==="semantic"||n.datasetName){const o=typeof n.domainId=="string"?n.domainId:"";o&&typeof n.datasetId=="string"&&r.push(`semantic:${o}:datasetId:${n.datasetId}`),o&&typeof n.datasetName=="string"&&r.push(`semantic:${o}:datasetName:${n.datasetName}`)}return r.length===0&&r.push(le(e)),P(r)}function $e(e){return ee(e)}function le(e){const n=I(e);return n?typeof n.sourceKey=="string"?n.sourceKey:JSON.stringify(n):""}function dn(e){return M(e)&&de(e)[0]||""}function de(e){return M(e)?P([...typeof e.sourceKey=="string"?[e.sourceKey]:[],...e.source?ee(e.source):[]]):[]}function q(e){const n=String(e||"").replace(/^semaphor\./,"");if(!["metric","records","analysis","matrix","sql"].includes(n))throw new Error(`Unsupported sdkSpec builder: ${e}`);return n}function pn(e){const n=q(e);return n==="records"||n==="sql"}function ln(e){const n=I(e);return typeof(n==null?void 0:n.operator)=="string"?n.operator:e.type==="date_range"?"between":e.type==="multi_select"||e.type==="select"?"in":"="}function K(e,n){const r=new Map;for(const o of e){const t=n(o)||"item",a=r.get(t)||0;r.set(t,a+1),o.name=a===0?t:`${t}${a+1}`}}function ne(e,n){const r=new Set,o=[];for(const t of e){const a=n(t);!a||r.has(a)||(r.add(a),o.push(t))}return o}function Q(e){const n=String(e||"").replace(/[^A-Za-z0-9]+/g," ").trim().split(/\s+/).filter(Boolean);if(n.length===0)return"item";const[r,...o]=n,t=[r.toLowerCase(),...o.map(a=>a.charAt(0).toUpperCase()+a.slice(1).toLowerCase())].join("");return/^[A-Za-z_$]/.test(t)?t:`item${t}`}function cn(e){const n=String(e).split(":");return n[n.length-1]||String(e)}function v(e){return Object.fromEntries(Object.entries(e).filter(([,n])=>n!==void 0))}function I(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:void 0}function H(e){return Array.isArray(e)?e:[]}function z(e){return typeof e=="number"&&Number.isFinite(e)?e:void 0}function x(e){return e!==void 0}exports.SEMAPHOR_DATA_APP_CODEGEN_SUMMARY_SCHEMA_VERSION=Z.SEMAPHOR_DATA_APP_CODEGEN_SUMMARY_SCHEMA_VERSION;exports.SEMAPHOR_DATA_APP_CODEGEN_SUMMARY_VALIDATOR_VERSION=Z.SEMAPHOR_DATA_APP_CODEGEN_SUMMARY_VALIDATOR_VERSION;exports.isSemaphorDataAppCodegenSummary=Z.isSemaphorDataAppCodegenSummary;exports.validateSemaphorDataAppCodegenSummary=Z.validateSemaphorDataAppCodegenSummary;exports.CODEGEN_SUMMARY_SCHEMA_VERSION=$.CODEGEN_SUMMARY_SCHEMA_VERSION;exports.CODEGEN_SUMMARY_VALIDATOR_VERSION=$.CODEGEN_SUMMARY_VALIDATOR_VERSION;exports.CONTRACT_MANIFEST_SCHEMA_VERSION=$.CONTRACT_MANIFEST_SCHEMA_VERSION;exports.GENERATED_CONTRACT_SCHEMA_VERSION=$.GENERATED_CONTRACT_SCHEMA_VERSION;exports.GENERATED_CONTRACT_TYPESCRIPT_FILES=$.GENERATED_CONTRACT_TYPESCRIPT_FILES;exports.REQUIRED_GENERATED_CONTRACT_FILES=$.REQUIRED_GENERATED_CONTRACT_FILES;exports.assertValidCodegenSummary=$.assertValidCodegenSummary;exports.buildSemaphorGeneratedActiveInput=$.buildSemaphorGeneratedActiveInput;exports.buildSemaphorGeneratedInputOptionIntent=$.buildSemaphorGeneratedInputOptionIntent;exports.buildSemaphorGeneratedViewExecutionRequest=$.buildSemaphorGeneratedViewExecutionRequest;exports.buildSemaphorGeneratedViewExecutionRequests=$.buildSemaphorGeneratedViewExecutionRequests;exports.evaluateSemaphorDataAppContractUpdatePolicy=$.evaluateSemaphorDataAppContractUpdatePolicy;exports.validateCodegenSummary=$.validateCodegenSummary;exports.validateSemaphorGeneratedContract=$.validateSemaphorGeneratedContract;exports.DEFAULT_GENERATED_CONTRACT_OUTPUT_DIR=Re;exports.generateSemaphorDataAppContract=ke;