react-semaphor 0.1.493 → 0.1.495
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/analytics-protocol/index.cjs +1 -1
- package/dist/analytics-protocol/index.js +10 -10
- package/dist/brand-studio/index.cjs +1 -1
- package/dist/brand-studio/index.js +4 -4
- package/dist/briefings/index.cjs +1 -1
- package/dist/briefings/index.js +5 -5
- package/dist/chunks/{calculated-field-identity-D4VOHjBJ.cjs → calculated-field-identity-Cc-RlE-0.cjs} +1 -1
- package/dist/chunks/{calculated-field-identity-CSabKrXt.js → calculated-field-identity-D7ygZ7oN.js} +4 -4
- package/dist/chunks/{constants-D47EhfJR.js → constants-BjGBVFbu.js} +5 -5
- package/dist/chunks/{constants-BMfm1XgO.cjs → constants-C-GvudXp.cjs} +1 -1
- package/dist/chunks/{dashboard-briefing-launcher-CRhJMTTi.cjs → dashboard-briefing-launcher-DyYVbfXp.cjs} +1 -1
- package/dist/chunks/{dashboard-briefing-launcher-D2AgLfEB.js → dashboard-briefing-launcher-tYTkfNPj.js} +9 -9
- package/dist/chunks/{dashboard-controls-y48yx4SG.js → dashboard-controls-BR7hSzDh.js} +11 -11
- package/dist/chunks/{dashboard-controls-33NnnH_x.cjs → dashboard-controls-Hwo4ZnW4.cjs} +1 -1
- package/dist/chunks/{dashboard-date-comparison-definition-DCIUwJnZ.cjs → dashboard-date-comparison-definition-1NBx_7QQ.cjs} +1 -1
- package/dist/chunks/{dashboard-date-comparison-definition-CKXgDzSB.js → dashboard-date-comparison-definition-CpCZAGIz.js} +1 -1
- package/dist/chunks/{dashboard-json-DvLn9T3D.cjs → dashboard-json-B3CuJo_G.cjs} +1 -1
- package/dist/chunks/{dashboard-json-xNOgpaFi.js → dashboard-json-FDNan6Lc.js} +7 -7
- package/dist/chunks/{edit-dashboard-visual-ZTofLHbI.js → edit-dashboard-visual-DTJwFkdX.js} +7903 -7939
- package/dist/chunks/edit-dashboard-visual-aqW4Jtrr.cjs +172 -0
- package/dist/chunks/{editor-action-buttons-D35e_7YZ.cjs → editor-action-buttons-B3Dpnink.cjs} +1 -1
- package/dist/chunks/{editor-action-buttons-DfyupURG.js → editor-action-buttons-DSGiwWur.js} +6 -6
- package/dist/chunks/{field-aggregations-J7de9KZm.js → field-aggregations-Cy4hBBqe.js} +5 -5
- package/dist/chunks/{field-aggregations-hx8odlTh.cjs → field-aggregations-U54X9_Rt.cjs} +1 -1
- package/dist/chunks/{index-Df4YBtX5.cjs → index-B9FLuTyx.cjs} +1 -1
- package/dist/chunks/{index-D_rwIR1A.js → index-Ne0-ePdz.js} +34995 -34975
- package/dist/chunks/index-a9nBmD-v.cjs +1417 -0
- package/dist/chunks/{index-BDtC8et3.js → index-zKj-mqbS.js} +11 -11
- package/dist/chunks/{matrix-analytical-definition-B3p3vF0K.cjs → matrix-analytical-definition-B5oWAePu.cjs} +1 -1
- package/dist/chunks/{matrix-analytical-definition-DAFStKt2.js → matrix-analytical-definition-DSRmzber.js} +1 -1
- package/dist/chunks/{matrix-card-DzkJRoM4.cjs → matrix-card-BV7OPtq_.cjs} +1 -1
- package/dist/chunks/{matrix-card-5R39CCdj.js → matrix-card-CxTCV9HF.js} +2 -2
- package/dist/chunks/{matrix-control-sources-BWbqiGmN.cjs → matrix-control-sources-BLGlb4S9.cjs} +1 -1
- package/dist/chunks/{matrix-control-sources-DxjWV8ry.js → matrix-control-sources-DYMzccBY.js} +5 -5
- package/dist/chunks/{matrix-definition-BcJi7qGZ.js → matrix-definition-Djesv_9v.js} +1 -1
- package/dist/chunks/{matrix-definition-Z80mIEfu.cjs → matrix-definition-jy7ygO6J.cjs} +1 -1
- package/dist/chunks/{matrix-formatter-youWVghC.js → matrix-formatter-BhkdDosE.js} +4 -4
- package/dist/chunks/{matrix-formatter-3QR1mqhn.cjs → matrix-formatter-CuRTrMP2.cjs} +1 -1
- package/dist/chunks/{matrix-member-presentation-BEWAH5xK.js → matrix-member-presentation-BN6VD-fr.js} +1 -1
- package/dist/chunks/{matrix-member-presentation-DtLGyv8w.cjs → matrix-member-presentation-D82rMVDG.cjs} +1 -1
- package/dist/chunks/{matrix-operation-contract-D5I-t3i7.js → matrix-operation-contract-4q53iAUW.js} +1 -1
- package/dist/chunks/{matrix-operation-contract-BiUMcd6G.cjs → matrix-operation-contract-CbavkrJj.cjs} +1 -1
- package/dist/chunks/{metric-comparison-vr9j4Z_Z.js → metric-comparison-CPx_2iqI.js} +1 -1
- package/dist/chunks/{metric-comparison-D1VRq5Os.cjs → metric-comparison-l2X7Reol.cjs} +1 -1
- package/dist/chunks/{pivot-header-presentation-Dcd4IBM5.cjs → pivot-header-presentation-BDMb1Wlc.cjs} +1 -1
- package/dist/chunks/{pivot-header-presentation-BslEo_4O.js → pivot-header-presentation-utM9JrgD.js} +3 -3
- package/dist/chunks/{pivot-result-identity-CMz27nri.js → pivot-result-identity-BDntll93.js} +1 -1
- package/dist/chunks/{pivot-result-identity-CmvwpG4K.cjs → pivot-result-identity-Hm1sO9KE.cjs} +1 -1
- package/dist/chunks/{pivot-result-lifecycle-BCoOFUiU.js → pivot-result-lifecycle-Cu9hRFAp.js} +7 -7
- package/dist/chunks/{pivot-result-lifecycle-H_pntnd9.cjs → pivot-result-lifecycle-QiOUMsYd.cjs} +1 -1
- package/dist/chunks/{raw-temporal-YWo1GEmr.js → raw-temporal-CknUT-Fp.js} +2 -2
- package/dist/chunks/{raw-temporal-DcHmXurp.cjs → raw-temporal-DWuF9bt7.cjs} +1 -1
- package/dist/chunks/{raw-temporal-contract-Bg1mtRGE.cjs → raw-temporal-contract-B3YGcvzw.cjs} +1 -1
- package/dist/chunks/{raw-temporal-contract-DY-Jd4Sc.js → raw-temporal-contract-BVcDonCB.js} +1 -1
- package/dist/chunks/{report-preferences-dialog-BNZBihgX.cjs → report-preferences-dialog-BP_EdVHP.cjs} +1 -1
- package/dist/chunks/{report-preferences-dialog-C4bNcqxk.js → report-preferences-dialog-DsjMwa3m.js} +6 -6
- package/dist/chunks/{report-runtime-context-Bb0ejvVq.cjs → report-runtime-context-C-As8sq_.cjs} +1 -1
- package/dist/chunks/{report-runtime-context-nCHl3uHC.js → report-runtime-context-DTxVBKqP.js} +1 -1
- package/dist/chunks/{semantic-format-UvUAyZS-.js → semantic-format-BTEhH9ga.js} +2 -2
- package/dist/chunks/{semantic-format-CMPIcb8l.cjs → semantic-format-CyJWf8gZ.cjs} +1 -1
- package/dist/chunks/{source-entity-resolution-DeH38dTU.cjs → source-entity-resolution-BA8sdBbL.cjs} +1 -1
- package/dist/chunks/{source-entity-resolution-Dm4in31q.js → source-entity-resolution-DXjCZPuO.js} +1 -1
- package/dist/chunks/{switch-DHOv6xHT.js → switch-BmCGBb2F.js} +12 -12
- package/dist/chunks/{switch-CatLIoK-.cjs → switch-COujiMcB.cjs} +1 -1
- package/dist/chunks/{temporal-bucket-contract-Bx5TJXF3.js → temporal-bucket-contract-Bhsl_j4B.js} +1 -1
- package/dist/chunks/{temporal-bucket-contract-CPuYzg7A.cjs → temporal-bucket-contract-pW4c6N2M.cjs} +1 -1
- package/dist/chunks/{token-types-hl08eNuY.cjs → token-types-CsKRtJp0.cjs} +1 -1
- package/dist/chunks/{token-types-5buW2I6f.js → token-types-DpYncMPp.js} +1 -1
- package/dist/chunks/{update-policy-D3I1J2kl.js → update-policy-BoB26XrS.js} +2 -2
- package/dist/chunks/{update-policy-BP_2uCgs.cjs → update-policy-CtLb9ish.cjs} +1 -1
- package/dist/chunks/validators-CueUwVE4.cjs +1 -0
- package/dist/chunks/{validators-BpJDwDnG.js → validators-DgmJaRF4.js} +2 -0
- package/dist/dashboard/index.cjs +1 -1
- package/dist/dashboard/index.js +1 -1
- package/dist/dashboard-authoring/index.cjs +1 -1
- package/dist/dashboard-authoring/index.js +9 -9
- package/dist/data-app-builder/index.cjs +1 -1
- package/dist/data-app-builder/index.js +2 -2
- package/dist/data-app-codegen/index.cjs +1 -1
- package/dist/data-app-codegen/index.js +2 -2
- package/dist/data-app-codegen-node/index.cjs +1 -1
- package/dist/data-app-codegen-node/index.js +3 -3
- package/dist/data-app-sdk/index.cjs +1 -1
- package/dist/data-app-sdk/index.js +4 -4
- package/dist/data-app-sdk-adapters/index.cjs +1 -1
- package/dist/data-app-sdk-adapters/index.js +2 -2
- package/dist/data-app-sdk-validation/index.cjs +1 -1
- package/dist/data-app-sdk-validation/index.js +5 -5
- package/dist/format-utils/index.cjs +1 -1
- package/dist/format-utils/index.js +16 -16
- package/dist/index.cjs +1 -1
- package/dist/index.js +15 -15
- package/dist/report-runtime-context/index.cjs +1 -1
- package/dist/report-runtime-context/index.js +2 -2
- package/dist/style.css +1 -1
- package/dist/surfboard/index.cjs +1 -1
- package/dist/surfboard/index.js +2 -2
- package/dist/types/analytics-protocol.d.ts +9 -0
- package/dist/types/briefings.d.ts +9 -0
- package/dist/types/dashboard-assistant.d.ts +9 -0
- package/dist/types/dashboard-authoring.d.ts +9 -0
- package/dist/types/dashboard.d.ts +9 -0
- package/dist/types/data-app-builder.d.ts +9 -0
- package/dist/types/data-app-codegen-node.d.ts +9 -0
- package/dist/types/data-app-codegen.d.ts +9 -0
- package/dist/types/data-app-sdk-adapters.d.ts +9 -0
- package/dist/types/data-app-sdk-validation.d.ts +9 -0
- package/dist/types/data-app-sdk.d.ts +9 -0
- package/dist/types/format-utils.d.ts +9 -0
- package/dist/types/index.cjs +1 -1
- package/dist/types/index.js +4 -4
- package/dist/types/main.d.ts +11 -0
- package/dist/types/shared.d.ts +9 -0
- package/dist/types/surfboard.d.ts +9 -0
- package/dist/types/types.d.ts +9 -0
- package/package.json +1 -1
- package/dist/chunks/edit-dashboard-visual-BS0Su1sg.cjs +0 -172
- package/dist/chunks/index-FusXwvom.cjs +0 -1416
- package/dist/chunks/validators-4dRtYUI1.cjs +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";const g=require("./validators-
|
|
1
|
+
"use strict";const g=require("./validators-CueUwVE4.cjs"),b="higher_is_better",C={displayMode:"difference",showComparison:!0,indicatorStyle:"arrow_badge",showColor:!0,conditionalLabel:!1};function w(o){return g.parseSemaphorIsoInstant(o)!==null}function $(o){var i,e,s,t;if(((i=o.metricComparison)==null?void 0:i.mode)!=="off"){if(((e=o.metricComparison)==null?void 0:e.mode)==="explicit")return{source:"explicit",spec:o.metricComparison.spec};if(!((o.inheritGlobalComparison??((s=o.globalDateComparison)==null?void 0:s.inheritGlobalComparison))===!1||((t=o.globalDateComparison)==null?void 0:t.selection.mode)!=="period"))return{source:"inherited",spec:o.globalDateComparison.selection.spec,...o.globalDateComparison.owner?{owner:o.globalDateComparison.owner}:{}}}}function h(o){if(o.alias)return o.alias;const i=o.entityName&&o.entityName!=="SEMAPHOR_CALCULATED_FIELD"?o.entityName:void 0,e=i&&i!==o.name?`${i}_`:"";if(o.role!=="metric")return`${e}${o.name}`;let s=o.aggregate||"metric";if(o.expression){const t=o.expression.match(/^(COUNT|SUM|AVG|MIN|MAX|MEDIAN|DISTINCT)\s*\(/i);s=t?t[1].toLowerCase():"expr"}else s=s.toLowerCase();return`${e}${o.name}_${s}`}function n(o,i,e){return e?{code:o,message:i,path:e}:{code:o,message:i}}function p(o){return!!o&&typeof o=="object"&&!Array.isArray(o)}function a(o,i,e,s){Object.keys(o).forEach(t=>{i.includes(t)||s.push(n("invalid_comparison_spec",`Comparison kind does not accept field "${t}".`,`${e}.${t}`))})}function f(o,i,e){o.alignment!==void 0&&o.alignment!=="calendar"&&o.alignment!=="weekday"&&e.push(n("invalid_comparison_spec",'Comparison alignment must be "calendar" or "weekday".',`${i}.alignment`)),o.toDate!==void 0&&typeof o.toDate!="boolean"&&e.push(n("invalid_comparison_spec","Comparison toDate must be a boolean.",`${i}.toDate`))}function _(o,i,e){o!==void 0&&(typeof o!="number"||!Number.isSafeInteger(o)||o<=0)&&e.push(n("invalid_comparison_spec","Comparison offset must be a positive safe integer.",i))}function d(o,i="comparison"){const e=[];return p(o)?(o.kind==="previous_period"?(a(o,["kind","offsetPeriods","alignment","toDate"],i,e),_(o.offsetPeriods,`${i}.offsetPeriods`,e),f(o,i,e)):o.kind==="previous_year"?(a(o,["kind","offsetYears","alignment","toDate"],i,e),_(o.offsetYears,`${i}.offsetYears`,e),f(o,i,e)):o.kind==="target"?(a(o,["kind","targetValue"],i,e),(typeof o.targetValue!="number"||!Number.isFinite(o.targetValue))&&e.push(n("invalid_comparison_spec","Target comparison requires a finite targetValue.",`${i}.targetValue`))):e.push(n("invalid_comparison_spec","Comparison kind must be previous_period, previous_year, or target.",`${i}.kind`)),{ok:e.length===0,errors:e,warnings:[]}):{ok:!1,errors:[n("invalid_comparison_spec","Comparison spec must be an object.",i)],warnings:[]}}function D(o,i="comparison"){if(!p(o))return{ok:!1,errors:[n("invalid_comparison_config","Comparison config must be an object.",i)],warnings:[]};const e=[];return o.mode==="off"?a(o,["mode"],i,e):o.mode==="explicit"?(a(o,["mode","spec"],i,e),e.push(...d(o.spec,`${i}.spec`).errors)):e.push(n("invalid_comparison_config","Comparison mode must be off or explicit.",`${i}.mode`)),{ok:e.length===0,errors:e,warnings:[]}}function u(o,i="comparisonSelection"){if(!p(o))return{ok:!1,errors:[n("invalid_global_date_comparison","Global Date comparison selection must be an object.",i)],warnings:[]};const e=[];if(o.mode==="off")a(o,["mode"],i,e);else if(o.mode==="period"){a(o,["mode","spec"],i,e);const s=d(o.spec,`${i}.spec`);e.push(...s.errors),p(o.spec)&&o.spec.kind==="target"&&e.push(n("invalid_global_date_comparison","Global Date comparison supports previous_period or previous_year, not target.",`${i}.spec.kind`))}else e.push(n("invalid_global_date_comparison","Global Date comparison mode must be off or period.",`${i}.mode`));return{ok:e.length===0,errors:e,warnings:[]}}function I(o,i="globalDateComparison"){if(!p(o))return{ok:!1,errors:[n("invalid_global_date_comparison","Global Date comparison context must be an object.",i)],warnings:[]};const e=[];return a(o,["selection","inheritGlobalComparison","owner","referenceTime"],i,e),e.push(...u(o.selection,`${i}.selection`).errors),o.inheritGlobalComparison!==void 0&&o.inheritGlobalComparison!==!1&&e.push(n("invalid_global_date_comparison","inheritGlobalComparison may only be false when present.",`${i}.inheritGlobalComparison`)),o.owner!==void 0&&(p(o.owner)?o.owner.kind==="global_date"?a(o.owner,["kind"],`${i}.owner`,e):o.owner.kind==="field_date"?(a(o.owner,["kind","filterId","label"],`${i}.owner`,e),(typeof o.owner.filterId!="string"||!o.owner.filterId.trim())&&e.push(n("invalid_global_date_comparison","Field Date comparison owner requires a non-empty filterId.",`${i}.owner.filterId`)),(typeof o.owner.label!="string"||!o.owner.label.trim())&&e.push(n("invalid_global_date_comparison","Field Date comparison owner requires a non-empty label.",`${i}.owner.label`))):e.push(n("invalid_global_date_comparison","Comparison owner kind must be global_date or field_date.",`${i}.owner.kind`)):e.push(n("invalid_global_date_comparison","Comparison owner must be an object.",`${i}.owner`))),o.referenceTime!==void 0&&(typeof o.referenceTime!="string"||!w(o.referenceTime))&&e.push(n("invalid_global_date_comparison","referenceTime must be a valid ISO date-time string when present.",`${i}.referenceTime`)),{ok:e.length===0,errors:e,warnings:[]}}function M(o,i="comparisonPolarity"){return o==="higher_is_better"||o==="lower_is_better"||o==="neutral"?{ok:!0,errors:[],warnings:[]}:{ok:!1,errors:[n("invalid_comparison_polarity","Comparison polarity must be higher_is_better, lower_is_better, or neutral.",i)],warnings:[]}}function S(o,i="comparisonPresentation"){if(!p(o))return{ok:!1,errors:[n("invalid_comparison_presentation","Comparison presentation must be an object.",i)],warnings:[]};const e=[],s=["displayMode","showComparison","precision","indicatorStyle","showColor","position","conditionalLabel","labelName","conditionalLabels","colors"];return Object.keys(o).forEach(r=>{s.includes(r)||e.push(n("invalid_comparison_presentation",`Comparison presentation does not accept field "${r}".`,`${i}.${r}`))}),[["displayMode",["difference","percent_change","both","ratio"]],["indicatorStyle",["arrow_badge","arrow","badge","none"]],["position",["left","right","top"]]].forEach(([r,l])=>{o[r]!==void 0&&!l.includes(o[r])&&e.push(n("invalid_comparison_presentation",`Comparison presentation ${r} is invalid.`,`${i}.${r}`))}),["showComparison","showColor","conditionalLabel"].forEach(r=>{o[r]!==void 0&&typeof o[r]!="boolean"&&e.push(n("invalid_comparison_presentation",`Comparison presentation ${r} must be a boolean.`,`${i}.${r}`))}),o.precision!==void 0&&(typeof o.precision!="number"||!Number.isInteger(o.precision)||o.precision<0||o.precision>6)&&e.push(n("invalid_comparison_presentation","Comparison presentation precision must be an integer from 0 through 6.",`${i}.precision`)),o.labelName!==void 0&&typeof o.labelName!="string"&&e.push(n("invalid_comparison_presentation","Comparison presentation labelName must be a string.",`${i}.labelName`)),["conditionalLabels","colors"].forEach(r=>{const l=o[r];if(l!==void 0){if(!p(l)){e.push(n("invalid_comparison_presentation",`Comparison presentation ${r} must be an object.`,`${i}.${r}`));return}Object.keys(l).forEach(c=>{["increase","decrease","neutral"].includes(c)||e.push(n("invalid_comparison_presentation",`Comparison presentation ${r} does not accept field "${c}".`,`${i}.${r}.${c}`))}),Object.entries(l).forEach(([c,m])=>{m!==void 0&&typeof m!="string"&&e.push(n("invalid_comparison_presentation",`Comparison presentation ${r}.${c} must be a string.`,`${i}.${r}.${c}`))})}}),{ok:e.length===0,errors:e,warnings:[]}}function N(o){return o===null?"unknown":o>0?"increase":o<0?"decrease":"no_change"}function T(o,i){return o==="unknown"||o==="no_change"||i==="neutral"?"neutral":i==="higher_is_better"&&o==="increase"||i==="lower_is_better"&&o==="decrease"?"favorable":"unfavorable"}function y(o){const{currentValue:i,comparisonValue:e,polarity:s=b}=o,r=i!==null&&e!==null?i-e:null,l=r!==null&&e!==null&&e!==0?r/Math.abs(e):null,c=i!==null&&e!==null&&e!==0?i/e:null,m=N(r);return{status:e===null?"insufficient_history":"available",currentValue:i,comparisonValue:e,delta:r,percentChange:l,ratio:c,direction:m,sentiment:T(m,s)}}exports.COMPARISON_PRESENTATION_DEFAULTS=C;exports.DEFAULT_METRIC_COMPARISON_POLARITY=b;exports.evaluateMetricComparison=y;exports.resolveMetricComparisonRequest=$;exports.resolveMetricResultAlias=h;exports.validateComparisonPresentationSpec=S;exports.validateGlobalDateComparisonContext=I;exports.validateGlobalDateComparisonSelection=u;exports.validateMetricComparisonConfig=D;exports.validateMetricComparisonPolarity=M;exports.validateMetricComparisonSpec=d;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var v=Object.defineProperty;var X=(e,r,t)=>r in e?v(e,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[r]=t;var w=(e,r,t)=>X(e,typeof r!="symbol"?r+"":r,t);const D=require("./semantic-format-
|
|
1
|
+
"use strict";var v=Object.defineProperty;var X=(e,r,t)=>r in e?v(e,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[r]=t;var w=(e,r,t)=>X(e,typeof r!="symbol"?r+"":r,t);const D=require("./semantic-format-CyJWf8gZ.cjs"),k=require("./matrix-formatter-CuRTrMP2.cjs"),f=require("./raw-temporal-DWuF9bt7.cjs"),d=require("../pdf-export-policy/index.cjs"),G=require("./temporal-bucket-4YEPEKlJ.cjs");function B(e,r,t){const n={...r,locale:r.locale??t};if(n.type==="number")return f.formatNumericCanonical(e,n);const{prefix:o,suffix:a,...s}=n;return`${o??""}${f.formatNumericCanonical(e,{...s,negativeStyle:n.type==="currency"?n.negativeStyle:"minus"})}${a??""}`}function A(e,r,t){return e===null?{value:e,text:null}:!r||!D.isNumericCanonicalFormat(r)&&r.type!=="duration"?{value:e,text:f.formatNumericCanonical(e,{type:"number",locale:t})}:r.type==="duration"?{value:e,text:k.formatDuration(e,{inputUnit:r.inputUnit,outputStyle:r.outputStyle,largestUnit:r.largestUnit,smallestUnit:r.smallestUnit,maxUnits:r.maxUnits,prefix:r.prefix,suffix:r.suffix,negativeInParentheses:r.negativeStyle==="parentheses"})}:{value:e,text:B(e,r,t)}}function T(e,r,t,n){return e===null?{value:e,text:null}:n==="percent"?{value:e,text:f.formatNumericCanonical(e,{type:"percent",locale:t,minimumFractionDigits:r,maximumFractionDigits:r,percentValueMode:"fraction"})}:{value:e,text:f.formatNumericCanonical(e,{type:"number",locale:t,minimumFractionDigits:r,maximumFractionDigits:r,suffix:"×"})}}function _(e,r){if(e===void 0)return r;if(!Number.isInteger(e)||e<0||e>6)throw new RangeError("Comparison precision must be an integer from 0 to 6.");return e}function $(e,r){const t={mode:r.displayMode,current:A(e.currentValue,r.metricFormat,r.locale),comparison:A(e.comparisonValue,r.metricFormat,r.locale)};return(r.displayMode==="difference"||r.displayMode==="both")&&(t.difference=A(e.delta,r.metricFormat,r.locale)),(r.displayMode==="percent_change"||r.displayMode==="both")&&(t.percentChange=T(e.percentChange,_(r.precision,1),r.locale,"percent")),r.displayMode==="ratio"&&(t.ratio=T(e.ratio,_(r.precision,2),r.locale,"ratio")),t}function U(e){const r=e.trimStart().charAt(0);return["=","+","-","@"].includes(r)||[" ","\r",`
|
|
2
2
|
`].includes(e.charAt(0))?`'${e}`:e}function C(e,r=","){if(e==null)return"";const t=String(e);return t.includes(r)||t.includes('"')||t.includes(`
|
|
3
3
|
`)||t.includes("\r")?`"${t.replace(/"/g,'""')}"`:t}function b(e,r=","){return e.map(t=>C(t,r)).join(r)}function h(e,r={}){const{delimiter:t=",",lineEnding:n=`
|
|
4
4
|
`}=r;return e.map(o=>b(o,t)).join(n)}function N(e,r={}){if(e.length===0)return"";const{delimiter:t=",",lineEnding:n=`
|
package/dist/chunks/{pivot-header-presentation-BslEo_4O.js → pivot-header-presentation-utM9JrgD.js}
RENAMED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
var x = Object.defineProperty;
|
|
2
2
|
var T = (e, r, t) => r in e ? x(e, r, { enumerable: !0, configurable: !0, writable: !0, value: t }) : e[r] = t;
|
|
3
3
|
var y = (e, r, t) => T(e, typeof r != "symbol" ? r + "" : r, t);
|
|
4
|
-
import { i as C } from "./semantic-format-
|
|
5
|
-
import { d as _ } from "./matrix-formatter-
|
|
6
|
-
import { b as g } from "./raw-temporal-
|
|
4
|
+
import { i as C } from "./semantic-format-BTEhH9ga.js";
|
|
5
|
+
import { d as _ } from "./matrix-formatter-BhkdDosE.js";
|
|
6
|
+
import { b as g } from "./raw-temporal-CknUT-Fp.js";
|
|
7
7
|
import { PDF_SAFETY_LIMIT_EXCEEDED as S, getUtf8ByteLength as V, FAST_PDF_POLICY as M } from "../pdf-export-policy/index.js";
|
|
8
8
|
import { f as P } from "./temporal-bucket-B9hMwemw.js";
|
|
9
9
|
function R(e, r, t) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
var y = Object.defineProperty;
|
|
2
2
|
var c = (t, e, r) => e in t ? y(t, e, { enumerable: !0, configurable: !0, writable: !0, value: r }) : t[e] = r;
|
|
3
3
|
var u = (t, e, r) => c(t, typeof e != "symbol" ? e + "" : e, r);
|
|
4
|
-
import { v as d } from "./temporal-bucket-contract-
|
|
4
|
+
import { v as d } from "./temporal-bucket-contract-Bhsl_j4B.js";
|
|
5
5
|
function f(t) {
|
|
6
6
|
return !!(t != null && t.isSubtotal && t.subtotalScope === "pivot-value");
|
|
7
7
|
}
|
package/dist/chunks/{pivot-result-identity-CmvwpG4K.cjs → pivot-result-identity-Hm1sO9KE.cjs}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var v=Object.defineProperty;var m=(t,e,r)=>e in t?v(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var n=(t,e,r)=>m(t,typeof e!="symbol"?e+"":e,r);const f=require("./temporal-bucket-contract-
|
|
1
|
+
"use strict";var v=Object.defineProperty;var m=(t,e,r)=>e in t?v(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var n=(t,e,r)=>m(t,typeof e!="symbol"?e+"":e,r);const f=require("./temporal-bucket-contract-pW4c6N2M.cjs");function y(t){return!!(t!=null&&t.isSubtotal&&t.subtotalScope==="pivot-value")}function c(t){var e;return t.expectedPivotFieldIds.length===0?!0:!!((e=t.classification)!=null&&e.isSubtotal&&t.classification.subtotalScope==="grand-total")}class u extends Error{constructor(r){super(`missing_pivot_member_identity: ${r}`);n(this,"deliveryBlocking",!0);n(this,"code","missing_pivot_member_identity");this.name="PivotResultIdentityError"}}function d(t){const{identity:e,columnKey:r,expectedPivotFieldIds:i,allowPrefix:l=!1}=t,s=t.allowEmpty??((i==null?void 0:i.length)||0)===0;if(!e||typeof e!="object"||Array.isArray(e)||typeof e.metricId!="string"||!e.metricId||typeof e.metricAlias!="string"||!e.metricAlias||!Array.isArray(e.members))throw new u(`Physical pivot column "${r}" is missing stable metric or member identity.`);if(e.members.forEach((o,a)=>{if(!o||typeof o!="object"||Array.isArray(o)||typeof o.fieldId!="string"||!o.fieldId||o.value!==null&&typeof o.value!="string"||o.temporalBucket!==void 0&&!f.validateTemporalBucketMetadata(o.temporalBucket).ok)throw new u(`Physical pivot column "${r}" has invalid identity for member ${a}.`);if(i&&o.fieldId!==i[a])throw new u(`Physical pivot column "${r}" has member "${o.fieldId}" at tuple position ${a}; expected "${i[a]||"no member"}".`)}),e.members.length===0){if(s)return e.members;throw new u(`Physical pivot column "${r}" is missing its required pivot tuple.`)}if(i&&(!l&&e.members.length!==i.length||e.members.length>i.length))throw new u(`Physical pivot column "${r}" has ${e.members.length} members; expected ${l?"at most ":""}${i.length}.`);return e.members}function p(t,e){t.forEach(r=>{var l,s,o;if(r.pivotIdentity===void 0)return;const i=(l=e.columnClassifications)==null?void 0:l[r.key];d({identity:r.pivotIdentity,columnKey:r.key,expectedPivotFieldIds:e.expectedPivotFieldIds,allowPrefix:((s=e.allowPrefixForColumn)==null?void 0:s.call(e,r))??y(i),allowEmpty:((o=e.allowEmptyForColumn)==null?void 0:o.call(e,r))??c({expectedPivotFieldIds:e.expectedPivotFieldIds,classification:i})})})}function h(t,e,r){var l;const i=t==null?void 0:t.byRole;if(!(!i||typeof i!="object"||Array.isArray(i)))return(l=i[r])==null?void 0:l[e]}function P(t,e){if(!t)return;const r=t.byRole;if(!r||typeof r!="object"||Array.isArray(r))return;const i=Object.values(r).flatMap(s=>{const o=s==null?void 0:s[e];return o?[o]:[]});if(i.length!==1)return;const[l]=i;if(!(l.role==="metric"&&Object.values(t.byMetricAlias??{}).some(s=>s.role===l.role&&s.rawKey===l.rawKey&&s.outputKey===l.outputKey)))return l}exports.PivotResultIdentityError=u;exports.isPivotEmptyTupleAllowed=c;exports.isPivotSubtotalPrefix=y;exports.requirePivotHeaderMembers=d;exports.requirePivotResultColumnIdentities=p;exports.resolveQueryColumnKeyMapEntry=h;exports.resolveUniqueQueryColumnKeyMapEntry=P;
|
package/dist/chunks/{pivot-result-lifecycle-BCoOFUiU.js → pivot-result-lifecycle-Cu9hRFAp.js}
RENAMED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
var $ = Object.defineProperty;
|
|
2
2
|
var E = (e, o, t) => o in e ? $(e, o, { enumerable: !0, configurable: !0, writable: !0, value: t }) : e[o] = t;
|
|
3
3
|
var u = (e, o, t) => E(e, typeof o != "symbol" ? o + "" : o, t);
|
|
4
|
-
import { p as _, a as K } from "./raw-temporal-
|
|
5
|
-
import { b as j } from "./report-runtime-context-
|
|
4
|
+
import { p as _, a as K } from "./raw-temporal-CknUT-Fp.js";
|
|
5
|
+
import { b as j } from "./report-runtime-context-DTxVBKqP.js";
|
|
6
6
|
import { i as f, p as F } from "./temporal-bucket-B9hMwemw.js";
|
|
7
|
-
import { $ as S } from "./validators-
|
|
8
|
-
import "./matrix-operation-contract-
|
|
9
|
-
import { a as M } from "./metric-comparison-
|
|
10
|
-
import { a as P } from "./temporal-bucket-contract-
|
|
11
|
-
import { b as T, P as O } from "./pivot-result-identity-
|
|
7
|
+
import { $ as S } from "./validators-DgmJaRF4.js";
|
|
8
|
+
import "./matrix-operation-contract-4q53iAUW.js";
|
|
9
|
+
import { a as M } from "./metric-comparison-CPx_2iqI.js";
|
|
10
|
+
import { a as P } from "./temporal-bucket-contract-Bhsl_j4B.js";
|
|
11
|
+
import { b as T, P as O } from "./pivot-result-identity-BDntll93.js";
|
|
12
12
|
class x extends Error {
|
|
13
13
|
constructor(t) {
|
|
14
14
|
super(
|
package/dist/chunks/{pivot-result-lifecycle-H_pntnd9.cjs → pivot-result-lifecycle-QiOUMsYd.cjs}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var P=Object.defineProperty;var M=(e,o,t)=>o in e?P(e,o,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[o]=t;var p=(e,o,t)=>M(e,typeof o!="symbol"?o+"":o,t);const x=require("./raw-temporal-DcHmXurp.cjs"),T=require("./report-runtime-context-Bb0ejvVq.cjs"),u=require("./temporal-bucket-4YEPEKlJ.cjs"),q=require("./validators-4dRtYUI1.cjs");require("./matrix-operation-contract-BiUMcd6G.cjs");const O=require("./metric-comparison-D1VRq5Os.cjs"),B=require("./temporal-bucket-contract-CPuYzg7A.cjs"),k=require("./pivot-result-identity-CmvwpG4K.cjs");class b extends Error{constructor(t){super(`invalid_presentation_execution_snapshot: ${t} Resave this report before running it again.`);p(this,"code","invalid_presentation_execution_snapshot");p(this,"deliveryBlocking",!0);this.name="PresentationExecutionSnapshotError"}}class J extends Error{constructor(t){super(`missing_resolved_raw_temporal_format: Column "${t}" has no captured presentation. Resave this report before running it again.`);p(this,"code","missing_resolved_raw_temporal_format");p(this,"deliveryBlocking",!0);this.name="MissingResolvedRawTemporalFormatError"}}function v(e,o,t){const n=new Set(o),r=Object.keys(e).find(i=>!n.has(i));if(r)throw new Error(`${t} contains unknown property "${r}"`)}function _(e,o="scope"){if(!u.isPlainJsonRecord(e))throw new Error(`${o} must be an object`);v(e,["dashboardId","cardId","attachmentIndex"],o);const t=typeof e.dashboardId=="string"?e.dashboardId.trim():"";if(!t)throw new Error(`${o}.dashboardId is required`);const n=typeof e.cardId=="string"?e.cardId.trim():void 0;if(e.cardId!==void 0&&!n)throw new Error(`${o}.cardId must be a non-empty string`);const r=e.attachmentIndex;if(r!==void 0&&(typeof r!="number"||!Number.isInteger(r)||r<0))throw new Error(`${o}.attachmentIndex must be a non-negative integer`);return{dashboardId:t,...n?{cardId:n}:{},...typeof r=="number"?{attachmentIndex:r}:{}}}function y(e,o,t,n){if(e.kind!==o)return;v(e,["kind",t],n);const r=typeof e[t]=="string"?e[t].trim():"";if(!r)throw new Error(`${n}.${t} is required`);return r}function N(e,o){if(!u.isPlainJsonRecord(e))throw new Error(`${o} must be an object`);const t=y(e,"metric","metricId",o);if(t)return{kind:"metric",metricId:t};const n=y(e,"column","columnKey",o);if(n)return{kind:"column",columnKey:n};const r=y(e,"matrix_measure","measureId",o);if(r)return{kind:"matrix_measure",measureId:r};throw new Error(`${o} is not a valid numeric presentation target`)}function z(e,o){if(!u.isPlainJsonRecord(e))throw new Error(`${o} must be an object`);if(e.kind==="field"){v(e,["kind","fieldId","role"],o);const r=typeof e.fieldId=="string"?e.fieldId.trim():"";if(!r)throw new Error(`${o}.fieldId is required`);const i=e.role;if(i!==void 0&&i!=="groupby"&&i!=="pivotby")throw new Error(`${o}.role must be groupby or pivotby`);return{kind:"field",fieldId:r,...i?{role:i}:{}}}const t=y(e,"column","columnKey",o);if(t)return{kind:"column",columnKey:t};const n=y(e,"matrix_axis","axisInstanceId",o);if(n)return{kind:"matrix_axis",axisInstanceId:n};throw new Error(`${o} is not a valid temporal bucket presentation target`)}function L(e,o){if(!u.isPlainJsonRecord(e))throw new Error(`${o} must be an object`);const t=y(e,"column","columnKey",o);if(!t)throw new Error(`${o} must identify a column`);return{kind:"column",columnKey:t}}function D(e){return[e.dashboardId,e.cardId??null,e.attachmentIndex??null]}function h(e){switch(e.kind){case"metric":return[e.kind,e.metricId];case"column":return[e.kind,e.columnKey];case"matrix_measure":return[e.kind,e.measureId];case"field":return[e.kind,e.fieldId,e.role??""];case"matrix_axis":return[e.kind,e.axisInstanceId]}}function g(e,o){return e.dashboardId===o.dashboardId&&e.cardId===o.cardId&&e.attachmentIndex===o.attachmentIndex}function R(e,o){const t=h(e),n=h(o);return t.length===n.length&&t.every((r,i)=>r===n[i])}function K(e){if(!Array.isArray(e))throw new Error("resolvedFormats must be an array");const o=new Set;return e.map((t,n)=>{var m,f;const r=`resolvedFormats.${n}`;if(!u.isPlainJsonRecord(t))throw new Error(`${r} must be an object`);v(t,["scope","target","format"],r);const i=_(t.scope,`${r}.scope`);if(!u.isPlainJsonRecord(t.format))throw new Error(`${r}.format must be an object`);let s;switch(t.format.type){case"temporal_bucket":{const l=u.parseResolvedTemporalBucketFormat(t.format);if(!l.ok)throw new Error(`${r}.format is invalid: ${((m=l.issues[0])==null?void 0:m.message)??"invalid value"}`);s={scope:i,target:z(t.target,`${r}.target`),format:l.value};break}case"raw_temporal":s={scope:i,target:L(t.target,`${r}.target`),format:x.parseResolvedRawTemporalFormat(t.format)};break;case"number":case"currency":case"percent":case"scientific":{const l=x.parseResolvedNumericCanonicalFormat(t.format);if(!l.ok)throw new Error(`${r}.format is invalid: ${((f=l.issues[0])==null?void 0:f.message)??"invalid value"}`);s={scope:i,target:N(t.target,`${r}.target`),format:l.value};break}default:throw new Error(`${r}.format.type is unsupported`)}const c=JSON.stringify([...D(s.scope),...h(s.target)]);if(o.has(c))throw new Error(`${r} duplicates a scoped presentation target`);return o.add(c),s})}function F(e){try{if(!u.isPlainJsonRecord(e))throw new Error("presentation execution snapshot must be an object");if(v(e,["version","reportContext","resolvedFormats"],"presentation execution snapshot"),e.version!==1)throw new Error("presentation execution snapshot version must be 1");const o=T.parseReportRuntimeContext(e.reportContext);if(!o.ok){const t=o.issues[0];throw new Error(`presentation execution snapshot reportContext is invalid: ${t!=null&&t.path&&t.path!=="$"?`${t.path}: `:""}${(t==null?void 0:t.message)??"invalid value"}`)}return{version:1,reportContext:o.value,resolvedFormats:K(e.resolvedFormats)}}catch(o){throw o instanceof b?o:new b(o instanceof Error?o.message:"Snapshot is invalid.")}}function U(e){return F({version:1,reportContext:e.reportContext,resolvedFormats:[...e.resolvedFormats]})}function V(e){const o=e.snapshot.resolvedFormats.find(t=>t.format.type!=="temporal_bucket"&&t.format.type!=="raw_temporal"&&g(t.scope,e.scope)&&R(t.target,e.target));return o==null?void 0:o.format}function G(e){const o=e.snapshot.resolvedFormats.find(t=>t.format.type==="raw_temporal"&&g(t.scope,e.scope)&&R(t.target,e.target));return o==null?void 0:o.format}function H(e){const o=e.snapshot.resolvedFormats.find(t=>t.format.type==="temporal_bucket"&&g(t.scope,e.scope)&&R(t.target,e.target));return o==null?void 0:o.format}function Q(e){var r;const o=new Set,t=new Set;if(e.snapshot.resolvedFormats.forEach((i,s)=>{if(i.scope.attachmentIndex!==void 0)throw new Error(`resolvedFormats.${s}.scope.attachmentIndex is not valid for a card export`);if(i.scope.dashboardId!==e.expectedScope.dashboardId||i.scope.cardId!==e.expectedScope.cardId)throw new Error(`resolvedFormats.${s}.scope must match the executing dashboard/card`);if(i.target.kind==="field"&&i.format.type==="temporal_bucket"){const c=JSON.stringify(h(i.target));if(t.has(c))throw new Error(`resolvedFormats.${s} duplicates export field "${i.target.fieldId}"`);t.add(c);return}if(i.target.kind!=="column")throw new Error(`resolvedFormats.${s}.target must identify an export column or temporal pivot field`);if(o.has(i.target.columnKey))throw new Error(`resolvedFormats.${s} duplicates export column "${i.target.columnKey}"`);o.add(i.target.columnKey)}),!e.useFormattedValues)return;if(!((r=e.visibleColumns)!=null&&r.length))throw new Error("visibleColumns must identify every formatted export column");const n=e.visibleColumns.find(i=>!o.has(i));if(n)throw new Error(`resolvedFormats is missing visible export column "${n}"`)}function w(e){return Array.from(new Set((e??[]).flatMap(o=>typeof o.id=="string"&&o.id?[o.id]:[])))}function S(e){const o=new Map;return e.forEach(t=>{t.id&&o.set(t.id,(o.get(t.id)??0)+1)}),e.flatMap(t=>t.id&&(o.get(t.id)??0)>1?[O.resolveMetricResultAlias(t)]:[])}function W(e){const o=e.metricFields??[],t=w(o);return{expectedRoleFieldIds:{groupby:w(e.groupByFields),metric:t.length>0?t:[q.SEMAPHOR_GENERATED_COUNT_METRIC_ID],pivotby:w(e.pivotByFields),detail:w(e.detailFields)},expectedMetricAliases:S(o)}}class a extends Error{constructor(t,n){super(`invalid_pivot_result_lifecycle: ${t}`);p(this,"code","invalid_pivot_result_lifecycle");p(this,"deliveryBlocking",!0);this.cause=n,this.name="PivotResultLifecycleError"}}function X(e){if(!Array.isArray(e)||e.some(t=>!t||typeof t!="object"||Array.isArray(t)||typeof t.key!="string"||!t.key||typeof t.name!="string"||typeof t.label!="string"))throw new a("Canonical pivot columns must be an array of keyed, named result descriptors.");const o=e;if(new Set(o.map(t=>t.key)).size!==o.length)throw new a("Canonical pivot column keys must be unique.");for(const t of o){const n=B.validateTemporalBucketResultColumn(t,{metadataRequired:!1});if(!n.ok)throw new a(`Canonical pivot column "${t.key}" has invalid temporal metadata: ${n.error.message}`)}return o}function C(e){if(!e||typeof e!="object"||Array.isArray(e)||e.version!==1||e.source!=="explorer"||!e.byRole||typeof e.byRole!="object"||Array.isArray(e.byRole))throw new a("A loaded canonical pivot result requires its role-scoped column key map.");const o=e,t=new Set(["groupby","metric","pivotby","detail"]);for(const[n,r]of Object.entries(o.byRole)){if(!t.has(n)||!r||typeof r!="object"||Array.isArray(r))throw new a(`Canonical pivot role map contains invalid "${n}" bindings.`);for(const[i,s]of Object.entries(r))if(!i||!s||typeof s!="object"||Array.isArray(s)||s.role!==n||typeof s.rawKey!="string"||!s.rawKey||s.outputKey!==void 0&&(typeof s.outputKey!="string"||!s.outputKey))throw new a(`Canonical pivot role map contains an invalid "${n}:${i}" binding.`)}if(o.byMetricAlias!==void 0){if(!o.byMetricAlias||typeof o.byMetricAlias!="object"||Array.isArray(o.byMetricAlias))throw new a("Canonical pivot metric-alias bindings must be an object.");for(const[n,r]of Object.entries(o.byMetricAlias))if(!n||!r||typeof r!="object"||Array.isArray(r)||r.role!=="metric"||typeof r.rawKey!="string"||!r.rawKey||r.outputKey!==void 0&&(typeof r.outputKey!="string"||!r.outputKey))throw new a(`Canonical pivot metric-alias map contains an invalid "${n}" binding.`)}return o}function Y(e){if(e===void 0)return{};if(!e||typeof e!="object"||Array.isArray(e))throw new a("Canonical pivot column metadata must be an object.");for(const[o,t]of Object.entries(e)){if(!o||!t||typeof t!="object"||Array.isArray(t))throw new a(`Canonical pivot column metadata contains an invalid "${o}" classification.`);const{isSubtotal:n,subtotalScope:r}=t;if(n!==void 0&&typeof n!="boolean"||r!==void 0&&r!=="base"&&r!=="pivot-value"&&r!=="grand-total"||n===!0&&r!=="pivot-value"&&r!=="grand-total"||(r==="pivot-value"||r==="grand-total")&&n!==!0||r==="base"&&n===!0)throw new a(`Canonical pivot column metadata contains an incoherent "${o}" subtotal classification.`)}return e}function A(e,o){if(!Array.isArray(e)||e.some(t=>typeof t!="string"||!t)||new Set(e).size!==e.length)throw new a(`Canonical pivot contract ${o} must be an array of unique field identities.`);return e}function Z(e,o){if(!e||typeof e!="object"||Array.isArray(e)||e.version!==1)throw new a("A canonical pivot result requires its versioned result contract.");const t=e,n=t.expectedRoleFieldIds;if(!n||typeof n!="object"||Array.isArray(n))throw new a("Canonical pivot contract role identities must be an object.");const i=Object.fromEntries(["groupby","metric","pivotby","detail"].map(d=>[d,A(n[d],`expectedRoleFieldIds.${d}`)])),s=A(t.expectedMetricAliases,"expectedMetricAliases"),c=t.columnKinds;if(!c||typeof c!="object"||Array.isArray(c))throw new a("Canonical pivot contract column kinds must be an object.");const m=new Set(["row","pivot_metric","value"]),f=o.map(d=>d.key),l=Object.keys(c);if(l.length!==f.length||l.some(d=>!f.includes(d)||!m.has(c[d])))throw new a("Canonical pivot contract must classify every authoritative result column exactly once.");const I=Y(t.columnClassifications);if(Object.keys(I).some(d=>!f.includes(d)))throw new a("Canonical pivot contract contains a classification for an unknown result column.");return{version:1,expectedRoleFieldIds:i,expectedMetricAliases:s,columnKinds:c,columnClassifications:I}}function E(e,o){const t=["groupby","metric","pivotby","detail"];for(const i of t){const s=new Set(o.expectedRoleFieldIds[i]??[]),c=Object.keys(e.byRole[i]??{});if(c.length!==s.size||c.some(m=>!s.has(m)))throw new a(`The role-scoped ${i} bindings do not match the authored result fields.`)}const n=new Set(o.expectedMetricAliases),r=Object.keys(e.byMetricAlias??{});if(r.length!==n.size||r.some(i=>!n.has(i)))throw new a("The metric-alias bindings do not match the authored metric instances.")}function ee(e){if(!Array.isArray(e)||e.some(o=>!o||typeof o!="object"||Array.isArray(o)))throw new a("Canonical pivot records must be an array of row objects.");return e}function te(e,o){e.forEach((t,n)=>{o.forEach(r=>{if(!Object.prototype.hasOwnProperty.call(t,r.key)||t[r.key]===void 0)throw new a(`Canonical pivot column "${r.key}" is absent from row ${n}.`)})})}function oe(e,o,t){const n=new Set(o.map(r=>r.key));["groupby","detail"].forEach(r=>{Object.entries(e.byRole[r]??{}).forEach(([i,s])=>{const c=s.outputKey||s.rawKey;if(!n.has(c)||t.columnKinds[c]!=="row")throw new a(`The role-scoped ${r} binding for "${i}" does not name an authoritative result column.`)})})}function $(e,o){o.forEach(t=>{const n=e.columnKinds[t.key];if(n==="pivot_metric"&&t.pivotIdentity===void 0)throw new a(`Physical pivot result column "${t.key}" is missing its identity.`);if(n!=="pivot_metric"&&t.pivotIdentity!==void 0)throw new a(`Canonical pivot result column "${t.key}" carries pivot identity outside the physical pivot projection.`)})}function j(e){const o=ee(e.records),t=X(e.columns),n=Z(e.pivotResultContract,t),r=n.expectedRoleFieldIds.pivotby??[];if(e.pivotResultState==="loaded_empty"){if(o.length!==0)throw new a("A loaded_empty pivot result cannot carry records.");if(t.some(m=>n.columnKinds[m.key]==="pivot_metric"))throw new a("A loaded_empty pivot result cannot carry physical pivot columns.");$(n,t);const c=C(e.columnKeyMap);return E(c,n),{pivotResultState:"loaded_empty",records:[],columns:t,columnKeyMap:c,pivotResultContract:n}}if(e.pivotResultState!=="loaded_valid")throw new a("A canonical pivot result must declare loaded_empty or loaded_valid.");if(o.length===0)throw new a("A loaded_valid pivot result must carry at least one record.");const i=C(e.columnKeyMap);E(i,n),oe(i,t,n),$(n,t);const s=t.filter(c=>n.columnKinds[c.key]==="pivot_metric");if(r.length>0&&s.length===0)throw new a("A loaded_valid pivot result is missing its physical pivot columns.");try{k.requirePivotResultColumnIdentities(s,{expectedPivotFieldIds:r,columnClassifications:n.columnClassifications})}catch(c){throw c instanceof k.PivotResultIdentityError?new a(c.message,c):c}return te(o,t),{pivotResultState:"loaded_valid",records:o,columns:t,columnKeyMap:i,pivotResultContract:n}}function re(e){const o=new Set;["groupby","detail"].forEach(i=>{Object.values(e.columnKeyMap.byRole[i]??{}).forEach(s=>{o.add(s.outputKey||s.rawKey)})});const t=new Set(e.physicalPivotColumnKeys),n=new Set(e.columns.map(i=>i.key)),r={version:1,expectedRoleFieldIds:{groupby:Array.from(new Set(e.expectedRoleFieldIds.groupby??[])),metric:Array.from(new Set(e.expectedRoleFieldIds.metric??[])),pivotby:Array.from(new Set(e.expectedRoleFieldIds.pivotby??[])),detail:Array.from(new Set(e.expectedRoleFieldIds.detail??[]))},expectedMetricAliases:[...e.expectedMetricAliases??[]],columnKinds:Object.fromEntries(e.columns.map(i=>[i.key,o.has(i.key)?"row":t.has(i.key)?"pivot_metric":"value"])),columnClassifications:Object.fromEntries(Object.entries(e.columnMetadata??{}).filter(([i])=>n.has(i)))};return j({pivotResultState:e.records.length===0?"loaded_empty":"loaded_valid",pivotResultContract:r,records:e.records,columns:e.columns,columnKeyMap:e.columnKeyMap})}exports.MissingResolvedRawTemporalFormatError=J;exports.PivotResultLifecycleError=a;exports.PresentationExecutionSnapshotError=b;exports.createCanonicalPivotResultTransport=re;exports.createPresentationExecutionSnapshot=U;exports.deriveMetricInstanceAliasExpectations=S;exports.derivePivotResultContractExpectations=W;exports.findResolvedNumericFormat=V;exports.findResolvedRawTemporalFormat=G;exports.findResolvedTemporalBucketFormat=H;exports.parseCanonicalPivotResultTransport=j;exports.parsePresentationExecutionSnapshot=F;exports.parsePresentationScope=_;exports.parseResolvedPresentationEntries=K;exports.validateCardExportPresentationSnapshot=Q;
|
|
1
|
+
"use strict";var P=Object.defineProperty;var M=(e,o,t)=>o in e?P(e,o,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[o]=t;var p=(e,o,t)=>M(e,typeof o!="symbol"?o+"":o,t);const x=require("./raw-temporal-DWuF9bt7.cjs"),T=require("./report-runtime-context-C-As8sq_.cjs"),u=require("./temporal-bucket-4YEPEKlJ.cjs"),q=require("./validators-CueUwVE4.cjs");require("./matrix-operation-contract-CbavkrJj.cjs");const O=require("./metric-comparison-l2X7Reol.cjs"),B=require("./temporal-bucket-contract-pW4c6N2M.cjs"),k=require("./pivot-result-identity-Hm1sO9KE.cjs");class b extends Error{constructor(t){super(`invalid_presentation_execution_snapshot: ${t} Resave this report before running it again.`);p(this,"code","invalid_presentation_execution_snapshot");p(this,"deliveryBlocking",!0);this.name="PresentationExecutionSnapshotError"}}class J extends Error{constructor(t){super(`missing_resolved_raw_temporal_format: Column "${t}" has no captured presentation. Resave this report before running it again.`);p(this,"code","missing_resolved_raw_temporal_format");p(this,"deliveryBlocking",!0);this.name="MissingResolvedRawTemporalFormatError"}}function v(e,o,t){const n=new Set(o),r=Object.keys(e).find(i=>!n.has(i));if(r)throw new Error(`${t} contains unknown property "${r}"`)}function _(e,o="scope"){if(!u.isPlainJsonRecord(e))throw new Error(`${o} must be an object`);v(e,["dashboardId","cardId","attachmentIndex"],o);const t=typeof e.dashboardId=="string"?e.dashboardId.trim():"";if(!t)throw new Error(`${o}.dashboardId is required`);const n=typeof e.cardId=="string"?e.cardId.trim():void 0;if(e.cardId!==void 0&&!n)throw new Error(`${o}.cardId must be a non-empty string`);const r=e.attachmentIndex;if(r!==void 0&&(typeof r!="number"||!Number.isInteger(r)||r<0))throw new Error(`${o}.attachmentIndex must be a non-negative integer`);return{dashboardId:t,...n?{cardId:n}:{},...typeof r=="number"?{attachmentIndex:r}:{}}}function y(e,o,t,n){if(e.kind!==o)return;v(e,["kind",t],n);const r=typeof e[t]=="string"?e[t].trim():"";if(!r)throw new Error(`${n}.${t} is required`);return r}function N(e,o){if(!u.isPlainJsonRecord(e))throw new Error(`${o} must be an object`);const t=y(e,"metric","metricId",o);if(t)return{kind:"metric",metricId:t};const n=y(e,"column","columnKey",o);if(n)return{kind:"column",columnKey:n};const r=y(e,"matrix_measure","measureId",o);if(r)return{kind:"matrix_measure",measureId:r};throw new Error(`${o} is not a valid numeric presentation target`)}function z(e,o){if(!u.isPlainJsonRecord(e))throw new Error(`${o} must be an object`);if(e.kind==="field"){v(e,["kind","fieldId","role"],o);const r=typeof e.fieldId=="string"?e.fieldId.trim():"";if(!r)throw new Error(`${o}.fieldId is required`);const i=e.role;if(i!==void 0&&i!=="groupby"&&i!=="pivotby")throw new Error(`${o}.role must be groupby or pivotby`);return{kind:"field",fieldId:r,...i?{role:i}:{}}}const t=y(e,"column","columnKey",o);if(t)return{kind:"column",columnKey:t};const n=y(e,"matrix_axis","axisInstanceId",o);if(n)return{kind:"matrix_axis",axisInstanceId:n};throw new Error(`${o} is not a valid temporal bucket presentation target`)}function L(e,o){if(!u.isPlainJsonRecord(e))throw new Error(`${o} must be an object`);const t=y(e,"column","columnKey",o);if(!t)throw new Error(`${o} must identify a column`);return{kind:"column",columnKey:t}}function D(e){return[e.dashboardId,e.cardId??null,e.attachmentIndex??null]}function h(e){switch(e.kind){case"metric":return[e.kind,e.metricId];case"column":return[e.kind,e.columnKey];case"matrix_measure":return[e.kind,e.measureId];case"field":return[e.kind,e.fieldId,e.role??""];case"matrix_axis":return[e.kind,e.axisInstanceId]}}function g(e,o){return e.dashboardId===o.dashboardId&&e.cardId===o.cardId&&e.attachmentIndex===o.attachmentIndex}function R(e,o){const t=h(e),n=h(o);return t.length===n.length&&t.every((r,i)=>r===n[i])}function K(e){if(!Array.isArray(e))throw new Error("resolvedFormats must be an array");const o=new Set;return e.map((t,n)=>{var m,f;const r=`resolvedFormats.${n}`;if(!u.isPlainJsonRecord(t))throw new Error(`${r} must be an object`);v(t,["scope","target","format"],r);const i=_(t.scope,`${r}.scope`);if(!u.isPlainJsonRecord(t.format))throw new Error(`${r}.format must be an object`);let s;switch(t.format.type){case"temporal_bucket":{const l=u.parseResolvedTemporalBucketFormat(t.format);if(!l.ok)throw new Error(`${r}.format is invalid: ${((m=l.issues[0])==null?void 0:m.message)??"invalid value"}`);s={scope:i,target:z(t.target,`${r}.target`),format:l.value};break}case"raw_temporal":s={scope:i,target:L(t.target,`${r}.target`),format:x.parseResolvedRawTemporalFormat(t.format)};break;case"number":case"currency":case"percent":case"scientific":{const l=x.parseResolvedNumericCanonicalFormat(t.format);if(!l.ok)throw new Error(`${r}.format is invalid: ${((f=l.issues[0])==null?void 0:f.message)??"invalid value"}`);s={scope:i,target:N(t.target,`${r}.target`),format:l.value};break}default:throw new Error(`${r}.format.type is unsupported`)}const c=JSON.stringify([...D(s.scope),...h(s.target)]);if(o.has(c))throw new Error(`${r} duplicates a scoped presentation target`);return o.add(c),s})}function F(e){try{if(!u.isPlainJsonRecord(e))throw new Error("presentation execution snapshot must be an object");if(v(e,["version","reportContext","resolvedFormats"],"presentation execution snapshot"),e.version!==1)throw new Error("presentation execution snapshot version must be 1");const o=T.parseReportRuntimeContext(e.reportContext);if(!o.ok){const t=o.issues[0];throw new Error(`presentation execution snapshot reportContext is invalid: ${t!=null&&t.path&&t.path!=="$"?`${t.path}: `:""}${(t==null?void 0:t.message)??"invalid value"}`)}return{version:1,reportContext:o.value,resolvedFormats:K(e.resolvedFormats)}}catch(o){throw o instanceof b?o:new b(o instanceof Error?o.message:"Snapshot is invalid.")}}function U(e){return F({version:1,reportContext:e.reportContext,resolvedFormats:[...e.resolvedFormats]})}function V(e){const o=e.snapshot.resolvedFormats.find(t=>t.format.type!=="temporal_bucket"&&t.format.type!=="raw_temporal"&&g(t.scope,e.scope)&&R(t.target,e.target));return o==null?void 0:o.format}function G(e){const o=e.snapshot.resolvedFormats.find(t=>t.format.type==="raw_temporal"&&g(t.scope,e.scope)&&R(t.target,e.target));return o==null?void 0:o.format}function H(e){const o=e.snapshot.resolvedFormats.find(t=>t.format.type==="temporal_bucket"&&g(t.scope,e.scope)&&R(t.target,e.target));return o==null?void 0:o.format}function Q(e){var r;const o=new Set,t=new Set;if(e.snapshot.resolvedFormats.forEach((i,s)=>{if(i.scope.attachmentIndex!==void 0)throw new Error(`resolvedFormats.${s}.scope.attachmentIndex is not valid for a card export`);if(i.scope.dashboardId!==e.expectedScope.dashboardId||i.scope.cardId!==e.expectedScope.cardId)throw new Error(`resolvedFormats.${s}.scope must match the executing dashboard/card`);if(i.target.kind==="field"&&i.format.type==="temporal_bucket"){const c=JSON.stringify(h(i.target));if(t.has(c))throw new Error(`resolvedFormats.${s} duplicates export field "${i.target.fieldId}"`);t.add(c);return}if(i.target.kind!=="column")throw new Error(`resolvedFormats.${s}.target must identify an export column or temporal pivot field`);if(o.has(i.target.columnKey))throw new Error(`resolvedFormats.${s} duplicates export column "${i.target.columnKey}"`);o.add(i.target.columnKey)}),!e.useFormattedValues)return;if(!((r=e.visibleColumns)!=null&&r.length))throw new Error("visibleColumns must identify every formatted export column");const n=e.visibleColumns.find(i=>!o.has(i));if(n)throw new Error(`resolvedFormats is missing visible export column "${n}"`)}function w(e){return Array.from(new Set((e??[]).flatMap(o=>typeof o.id=="string"&&o.id?[o.id]:[])))}function S(e){const o=new Map;return e.forEach(t=>{t.id&&o.set(t.id,(o.get(t.id)??0)+1)}),e.flatMap(t=>t.id&&(o.get(t.id)??0)>1?[O.resolveMetricResultAlias(t)]:[])}function W(e){const o=e.metricFields??[],t=w(o);return{expectedRoleFieldIds:{groupby:w(e.groupByFields),metric:t.length>0?t:[q.SEMAPHOR_GENERATED_COUNT_METRIC_ID],pivotby:w(e.pivotByFields),detail:w(e.detailFields)},expectedMetricAliases:S(o)}}class a extends Error{constructor(t,n){super(`invalid_pivot_result_lifecycle: ${t}`);p(this,"code","invalid_pivot_result_lifecycle");p(this,"deliveryBlocking",!0);this.cause=n,this.name="PivotResultLifecycleError"}}function X(e){if(!Array.isArray(e)||e.some(t=>!t||typeof t!="object"||Array.isArray(t)||typeof t.key!="string"||!t.key||typeof t.name!="string"||typeof t.label!="string"))throw new a("Canonical pivot columns must be an array of keyed, named result descriptors.");const o=e;if(new Set(o.map(t=>t.key)).size!==o.length)throw new a("Canonical pivot column keys must be unique.");for(const t of o){const n=B.validateTemporalBucketResultColumn(t,{metadataRequired:!1});if(!n.ok)throw new a(`Canonical pivot column "${t.key}" has invalid temporal metadata: ${n.error.message}`)}return o}function C(e){if(!e||typeof e!="object"||Array.isArray(e)||e.version!==1||e.source!=="explorer"||!e.byRole||typeof e.byRole!="object"||Array.isArray(e.byRole))throw new a("A loaded canonical pivot result requires its role-scoped column key map.");const o=e,t=new Set(["groupby","metric","pivotby","detail"]);for(const[n,r]of Object.entries(o.byRole)){if(!t.has(n)||!r||typeof r!="object"||Array.isArray(r))throw new a(`Canonical pivot role map contains invalid "${n}" bindings.`);for(const[i,s]of Object.entries(r))if(!i||!s||typeof s!="object"||Array.isArray(s)||s.role!==n||typeof s.rawKey!="string"||!s.rawKey||s.outputKey!==void 0&&(typeof s.outputKey!="string"||!s.outputKey))throw new a(`Canonical pivot role map contains an invalid "${n}:${i}" binding.`)}if(o.byMetricAlias!==void 0){if(!o.byMetricAlias||typeof o.byMetricAlias!="object"||Array.isArray(o.byMetricAlias))throw new a("Canonical pivot metric-alias bindings must be an object.");for(const[n,r]of Object.entries(o.byMetricAlias))if(!n||!r||typeof r!="object"||Array.isArray(r)||r.role!=="metric"||typeof r.rawKey!="string"||!r.rawKey||r.outputKey!==void 0&&(typeof r.outputKey!="string"||!r.outputKey))throw new a(`Canonical pivot metric-alias map contains an invalid "${n}" binding.`)}return o}function Y(e){if(e===void 0)return{};if(!e||typeof e!="object"||Array.isArray(e))throw new a("Canonical pivot column metadata must be an object.");for(const[o,t]of Object.entries(e)){if(!o||!t||typeof t!="object"||Array.isArray(t))throw new a(`Canonical pivot column metadata contains an invalid "${o}" classification.`);const{isSubtotal:n,subtotalScope:r}=t;if(n!==void 0&&typeof n!="boolean"||r!==void 0&&r!=="base"&&r!=="pivot-value"&&r!=="grand-total"||n===!0&&r!=="pivot-value"&&r!=="grand-total"||(r==="pivot-value"||r==="grand-total")&&n!==!0||r==="base"&&n===!0)throw new a(`Canonical pivot column metadata contains an incoherent "${o}" subtotal classification.`)}return e}function A(e,o){if(!Array.isArray(e)||e.some(t=>typeof t!="string"||!t)||new Set(e).size!==e.length)throw new a(`Canonical pivot contract ${o} must be an array of unique field identities.`);return e}function Z(e,o){if(!e||typeof e!="object"||Array.isArray(e)||e.version!==1)throw new a("A canonical pivot result requires its versioned result contract.");const t=e,n=t.expectedRoleFieldIds;if(!n||typeof n!="object"||Array.isArray(n))throw new a("Canonical pivot contract role identities must be an object.");const i=Object.fromEntries(["groupby","metric","pivotby","detail"].map(d=>[d,A(n[d],`expectedRoleFieldIds.${d}`)])),s=A(t.expectedMetricAliases,"expectedMetricAliases"),c=t.columnKinds;if(!c||typeof c!="object"||Array.isArray(c))throw new a("Canonical pivot contract column kinds must be an object.");const m=new Set(["row","pivot_metric","value"]),f=o.map(d=>d.key),l=Object.keys(c);if(l.length!==f.length||l.some(d=>!f.includes(d)||!m.has(c[d])))throw new a("Canonical pivot contract must classify every authoritative result column exactly once.");const I=Y(t.columnClassifications);if(Object.keys(I).some(d=>!f.includes(d)))throw new a("Canonical pivot contract contains a classification for an unknown result column.");return{version:1,expectedRoleFieldIds:i,expectedMetricAliases:s,columnKinds:c,columnClassifications:I}}function E(e,o){const t=["groupby","metric","pivotby","detail"];for(const i of t){const s=new Set(o.expectedRoleFieldIds[i]??[]),c=Object.keys(e.byRole[i]??{});if(c.length!==s.size||c.some(m=>!s.has(m)))throw new a(`The role-scoped ${i} bindings do not match the authored result fields.`)}const n=new Set(o.expectedMetricAliases),r=Object.keys(e.byMetricAlias??{});if(r.length!==n.size||r.some(i=>!n.has(i)))throw new a("The metric-alias bindings do not match the authored metric instances.")}function ee(e){if(!Array.isArray(e)||e.some(o=>!o||typeof o!="object"||Array.isArray(o)))throw new a("Canonical pivot records must be an array of row objects.");return e}function te(e,o){e.forEach((t,n)=>{o.forEach(r=>{if(!Object.prototype.hasOwnProperty.call(t,r.key)||t[r.key]===void 0)throw new a(`Canonical pivot column "${r.key}" is absent from row ${n}.`)})})}function oe(e,o,t){const n=new Set(o.map(r=>r.key));["groupby","detail"].forEach(r=>{Object.entries(e.byRole[r]??{}).forEach(([i,s])=>{const c=s.outputKey||s.rawKey;if(!n.has(c)||t.columnKinds[c]!=="row")throw new a(`The role-scoped ${r} binding for "${i}" does not name an authoritative result column.`)})})}function $(e,o){o.forEach(t=>{const n=e.columnKinds[t.key];if(n==="pivot_metric"&&t.pivotIdentity===void 0)throw new a(`Physical pivot result column "${t.key}" is missing its identity.`);if(n!=="pivot_metric"&&t.pivotIdentity!==void 0)throw new a(`Canonical pivot result column "${t.key}" carries pivot identity outside the physical pivot projection.`)})}function j(e){const o=ee(e.records),t=X(e.columns),n=Z(e.pivotResultContract,t),r=n.expectedRoleFieldIds.pivotby??[];if(e.pivotResultState==="loaded_empty"){if(o.length!==0)throw new a("A loaded_empty pivot result cannot carry records.");if(t.some(m=>n.columnKinds[m.key]==="pivot_metric"))throw new a("A loaded_empty pivot result cannot carry physical pivot columns.");$(n,t);const c=C(e.columnKeyMap);return E(c,n),{pivotResultState:"loaded_empty",records:[],columns:t,columnKeyMap:c,pivotResultContract:n}}if(e.pivotResultState!=="loaded_valid")throw new a("A canonical pivot result must declare loaded_empty or loaded_valid.");if(o.length===0)throw new a("A loaded_valid pivot result must carry at least one record.");const i=C(e.columnKeyMap);E(i,n),oe(i,t,n),$(n,t);const s=t.filter(c=>n.columnKinds[c.key]==="pivot_metric");if(r.length>0&&s.length===0)throw new a("A loaded_valid pivot result is missing its physical pivot columns.");try{k.requirePivotResultColumnIdentities(s,{expectedPivotFieldIds:r,columnClassifications:n.columnClassifications})}catch(c){throw c instanceof k.PivotResultIdentityError?new a(c.message,c):c}return te(o,t),{pivotResultState:"loaded_valid",records:o,columns:t,columnKeyMap:i,pivotResultContract:n}}function re(e){const o=new Set;["groupby","detail"].forEach(i=>{Object.values(e.columnKeyMap.byRole[i]??{}).forEach(s=>{o.add(s.outputKey||s.rawKey)})});const t=new Set(e.physicalPivotColumnKeys),n=new Set(e.columns.map(i=>i.key)),r={version:1,expectedRoleFieldIds:{groupby:Array.from(new Set(e.expectedRoleFieldIds.groupby??[])),metric:Array.from(new Set(e.expectedRoleFieldIds.metric??[])),pivotby:Array.from(new Set(e.expectedRoleFieldIds.pivotby??[])),detail:Array.from(new Set(e.expectedRoleFieldIds.detail??[]))},expectedMetricAliases:[...e.expectedMetricAliases??[]],columnKinds:Object.fromEntries(e.columns.map(i=>[i.key,o.has(i.key)?"row":t.has(i.key)?"pivot_metric":"value"])),columnClassifications:Object.fromEntries(Object.entries(e.columnMetadata??{}).filter(([i])=>n.has(i)))};return j({pivotResultState:e.records.length===0?"loaded_empty":"loaded_valid",pivotResultContract:r,records:e.records,columns:e.columns,columnKeyMap:e.columnKeyMap})}exports.MissingResolvedRawTemporalFormatError=J;exports.PivotResultLifecycleError=a;exports.PresentationExecutionSnapshotError=b;exports.createCanonicalPivotResultTransport=re;exports.createPresentationExecutionSnapshot=U;exports.deriveMetricInstanceAliasExpectations=S;exports.derivePivotResultContractExpectations=W;exports.findResolvedNumericFormat=V;exports.findResolvedRawTemporalFormat=G;exports.findResolvedTemporalBucketFormat=H;exports.parseCanonicalPivotResultTransport=j;exports.parsePresentationExecutionSnapshot=F;exports.parsePresentationScope=_;exports.parseResolvedPresentationEntries=K;exports.validateCardExportPresentationSnapshot=Q;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
var W = Object.defineProperty;
|
|
2
2
|
var Q = (e, t, r) => t in e ? W(e, t, { enumerable: !0, configurable: !0, writable: !0, value: r }) : e[t] = r;
|
|
3
3
|
var b = (e, t, r) => Q(e, typeof t != "symbol" ? t + "" : t, r);
|
|
4
|
-
import { aY as K, aZ as J, e as T } from "./validators-
|
|
4
|
+
import { aY as K, aZ as J, e as T } from "./validators-DgmJaRF4.js";
|
|
5
5
|
import { canonicalizeSupportedLocale as M, canonicalizeSupportedCurrencyCode as z } from "../value-format-preferences/index.js";
|
|
6
6
|
import { i as g, t as L } from "./temporal-bucket-B9hMwemw.js";
|
|
7
|
-
import { p as ee } from "./raw-temporal-contract-
|
|
7
|
+
import { p as ee } from "./raw-temporal-contract-BVcDonCB.js";
|
|
8
8
|
import { f as te } from "./index-CACdoqu3.js";
|
|
9
9
|
let I;
|
|
10
10
|
function C(e, t) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var Q=Object.defineProperty;var ee=(e,t,r)=>t in e?Q(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var b=(e,t,r)=>ee(e,typeof t!="symbol"?t+"":t,r);const h=require("./validators-4dRtYUI1.cjs"),w=require("../value-format-preferences/index.cjs"),g=require("./temporal-bucket-4YEPEKlJ.cjs"),te=require("./raw-temporal-contract-Bg1mtRGE.cjs"),re=require("./index-F25jnH0p.cjs");let I;function p(e,t){const r=e.format;return r(t)}function ae(e,t){if(I??(I=p(new Intl.NumberFormat("en-US",{useGrouping:!1,maximumFractionDigits:6}),"9007199254740993.000009")==="9007199254740993.000009"),!I)throw new RangeError("This runtime cannot format exact decimal strings.");const r=Number(e);if(!Number.isFinite(r)||r===0&&e!=="0")throw new RangeError("Exact value is outside the Intl formatting range; use raw text.");return p(t,e)}function _(e){return typeof e=="number"?e<0:e.value.startsWith("-")}function N(e){return typeof e=="number"?Math.abs(e):_(e)?{...e,value:e.value.slice(1)}:e}function V(e,t){return typeof e=="number"?e*t:{kind:"exact_number",type:"decimal",value:h.scaleExactDecimal(e.value,t)}}function F(e,t){return t===0?e:typeof e=="number"?e/10**t:{kind:"exact_number",type:"decimal",value:h.scaleExactDecimal(e.value,`1e-${t}`)}}function v(e,t){return typeof e=="number"?t.format(e):ae(e.value,t)}function A(e){if(!e)return!1;const t=e.toLowerCase().replace("_","-");return t==="en-in"||t.startsWith("en-in-")}function L(e,t){const r=N(e),a=i=>typeof r=="number"?r>=i:h.compareExactDecimal(r.value,String(i))>=0;return a(1e12)?{power:12,suffix:"T"}:a(1e9)?{power:9,suffix:"B"}:A(t)&&a(1e7)?{power:7,suffix:"Cr"}:a(1e6)?{power:6,suffix:"M"}:A(t)&&a(1e5)?{power:5,suffix:"L"}:a(1e3)?{power:3,suffix:"K"}:{power:0,suffix:""}}function C(e,t){try{const r=x(t);return L(e,r)}catch{return L(e,"en-US")}}function ne(e){try{return new Intl.NumberFormat(e),!0}catch{return!1}}function x(e){return e&&ne(e)?e:"en-US"}function z(e,t){if(e==null||Number.isNaN(e))return"";const r=x(t==null?void 0:t.locale);let a=e;if(t!=null&&t.multiplyBy&&(a=V(a,t.multiplyBy)),t!=null&&t.useSuffix){const{power:n,suffix:c}=C(a,r);a=F(a,n);const m=v(a,new Intl.NumberFormat(r,{minimumFractionDigits:(t==null?void 0:t.minimumFractionDigits)??0,maximumFractionDigits:(t==null?void 0:t.maximumFractionDigits)??2,useGrouping:(t==null?void 0:t.useGrouping)??!0}));return`${(t==null?void 0:t.prefix)??""}${m}${c}${(t==null?void 0:t.suffix)??""}`}const i=v(a,new Intl.NumberFormat(r,{minimumFractionDigits:(t==null?void 0:t.minimumFractionDigits)??0,maximumFractionDigits:(t==null?void 0:t.maximumFractionDigits)??2,useGrouping:(t==null?void 0:t.useGrouping)??!0}));if(t!=null&&t.negativeInParentheses&&_(a)){const n=i.replace("-","");return`(${(t==null?void 0:t.prefix)??""}${n}${(t==null?void 0:t.suffix)??""})`}return`${(t==null?void 0:t.prefix)??""}${i}${(t==null?void 0:t.suffix)??""}`}function R(e,t){if(e==null||Number.isNaN(e))return"";const r=x(t==null?void 0:t.locale),a=(t==null?void 0:t.currency)||"USD",i=_(e),n=!!(t!=null&&t.negativeInParentheses&&i),c=n?N(e):e;try{if(t!=null&&t.useSuffix){const{power:l,suffix:o}=C(c,r),s=F(c,l),f=`${v(s,new Intl.NumberFormat(r,{style:"currency",currency:a,minimumFractionDigits:(t==null?void 0:t.minimumFractionDigits)??0,maximumFractionDigits:(t==null?void 0:t.maximumFractionDigits)??2,useGrouping:(t==null?void 0:t.useGrouping)??!0}))}${o}`;return n?`(${f})`:f}const m=v(c,new Intl.NumberFormat(r,{style:"currency",currency:a,minimumFractionDigits:(t==null?void 0:t.minimumFractionDigits)??0,maximumFractionDigits:(t==null?void 0:t.maximumFractionDigits)??2,useGrouping:(t==null?void 0:t.useGrouping)??!0}));return n?`(${m})`:m}catch{const m=N(e),l=t!=null&&t.useSuffix?C(m,r):{power:0,suffix:""},o=z(F(m,l.power),{locale:r,minimumFractionDigits:(t==null?void 0:t.minimumFractionDigits)??0,maximumFractionDigits:(t==null?void 0:t.maximumFractionDigits)??2,useGrouping:(t==null?void 0:t.useGrouping)??!0}),s=`${a} ${o}${l.suffix}`;return i?t!=null&&t.negativeInParentheses?`(${s})`:`-${s}`:s}}function M(e,t){if(e==null||Number.isNaN(e))return"";const r=x(t==null?void 0:t.locale),i=(t==null?void 0:t.alreadyPercent)??(t==null?void 0:t.percentValueMode)==="whole"?F(e,2):e;return v(i,new Intl.NumberFormat(r,{style:"percent",minimumFractionDigits:(t==null?void 0:t.minimumFractionDigits)??0,maximumFractionDigits:(t==null?void 0:t.maximumFractionDigits)??2,useGrouping:(t==null?void 0:t.useGrouping)??!0}))}function P(e,t){if(e==null||Number.isNaN(e))return"";const r=x(t==null?void 0:t.locale);return v(e,new Intl.NumberFormat(r,{notation:"scientific",minimumFractionDigits:(t==null?void 0:t.minimumFractionDigits)??0,maximumFractionDigits:(t==null?void 0:t.maximumFractionDigits)??2}))}function O(e,t){if(e==null||Number.isNaN(e))return"";const r=t.scale===void 0?e:V(e,t.scale),a=t.negativeStyle==="parentheses"&&_(r),i=a?N(r):r,n={style:t.type==="number"?"decimal":t.type,locale:t.locale,currency:t.currency,minimumFractionDigits:t.minimumFractionDigits,maximumFractionDigits:t.maximumFractionDigits,useGrouping:t.useGrouping,percentValueMode:t.percentValueMode,useSuffix:t.compact};let c;switch(t.type){case"currency":c=R(i,n);break;case"percent":c=M(i,n);break;case"scientific":c=P(i,n);break;default:c=z(i,n);break}const m=`${t.prefix??""}${c}${t.suffix??""}`;return a?`(${m})`:m}function ie(e,t,r="en-US"){if(e==null||typeof e=="number"&&isNaN(e))return"";const a=x((t==null?void 0:t.locale)||r),i=(t==null?void 0:t.style)||"decimal",n=i==="decimal"?"number":i;return n==="currency"&&new Intl.NumberFormat(a,{style:"currency",currency:(t==null?void 0:t.currency)||"USD"}),O(e,{type:n,locale:a,currency:n==="currency"?(t==null?void 0:t.currency)||"USD":void 0,minimumFractionDigits:(t==null?void 0:t.minimumFractionDigits)??0,maximumFractionDigits:(t==null?void 0:t.maximumFractionDigits)??2,useGrouping:(t==null?void 0:t.useGrouping)??!0,percentValueMode:n==="percent"?(t==null?void 0:t.percentValueMode)??"whole":void 0,scale:t==null?void 0:t.scale,compact:t==null?void 0:t.compact,negativeStyle:t==null?void 0:t.negativeStyle,prefix:t==null?void 0:t.prefix,suffix:t==null?void 0:t.suffix})}function ce(e,t,r){const a={style:t==="currency"?"currency":t==="percent"?"percent":"decimal",locale:r==null?void 0:r.locale,currency:r==null?void 0:r.currency,minimumFractionDigits:r==null?void 0:r.decimalPlaces,maximumFractionDigits:r==null?void 0:r.decimalPlaces,useSuffix:r==null?void 0:r.useSuffix,prefix:r==null?void 0:r.prefix,suffix:r==null?void 0:r.suffix,negativeInParentheses:r==null?void 0:r.negativeInParentheses,multiplyBy:r==null?void 0:r.multiplyBy};switch(t){case"currency":return R(e,a);case"percent":return M(e,a);case"scientific":return P(e,a);default:return z(e,a)}}const se=["type","locale","minimumFractionDigits","maximumFractionDigits","useGrouping","prefix","suffix","negativeStyle","compact","scale","currency","percentValueMode"];function G(e){if(!g.isPlainJsonRecord(e))return{ok:!1,issues:[{path:"$",message:"Numeric format must be an object."}]};const t=[],r=new Set(se);Object.keys(e).filter(n=>!r.has(n)).forEach(n=>t.push({path:n,message:`Unknown property "${n}".`})),e.type!=="number"&&e.type!=="currency"&&e.type!=="percent"&&e.type!=="scientific"&&t.push({path:"type",message:"Expected number, currency, percent, or scientific."});const a=e.locale===void 0?void 0:w.canonicalizeSupportedLocale(e.locale);e.locale!==void 0&&!a&&t.push({path:"locale",message:"Expected a supported BCP 47 locale."});const i=e.currency===void 0?void 0:w.canonicalizeSupportedCurrencyCode(e.currency);e.currency!==void 0&&!i&&t.push({path:"currency",message:"Expected a supported ISO 4217 currency code."});for(const n of["minimumFractionDigits","maximumFractionDigits"]){const c=e[n];c!==void 0&&(!Number.isInteger(c)||typeof c!="number"||c<0||c>20)&&t.push({path:n,message:"Expected an integer from 0 to 20."})}typeof e.minimumFractionDigits=="number"&&typeof e.maximumFractionDigits=="number"&&e.minimumFractionDigits>e.maximumFractionDigits&&t.push({path:"maximumFractionDigits",message:"Must be greater than or equal to minimumFractionDigits."});for(const n of["useGrouping","compact"])e[n]!==void 0&&typeof e[n]!="boolean"&&t.push({path:n,message:"Expected a boolean."});for(const n of["prefix","suffix"])e[n]!==void 0&&typeof e[n]!="string"&&t.push({path:n,message:"Expected a string."});return e.negativeStyle!==void 0&&e.negativeStyle!=="minus"&&e.negativeStyle!=="parentheses"&&t.push({path:"negativeStyle",message:"Expected minus or parentheses."}),e.percentValueMode!==void 0&&e.percentValueMode!=="fraction"&&e.percentValueMode!=="whole"&&t.push({path:"percentValueMode",message:"Expected fraction or whole."}),e.scale!==void 0&&(typeof e.scale!="number"||!Number.isFinite(e.scale))&&t.push({path:"scale",message:"Expected a finite number."}),t.length>0?{ok:!1,issues:t}:{ok:!0,value:{type:e.type,...a?{locale:a}:{},...e.minimumFractionDigits!==void 0?{minimumFractionDigits:e.minimumFractionDigits}:{},...e.maximumFractionDigits!==void 0?{maximumFractionDigits:e.maximumFractionDigits}:{},...e.useGrouping!==void 0?{useGrouping:e.useGrouping}:{},...e.prefix!==void 0?{prefix:e.prefix}:{},...e.suffix!==void 0?{suffix:e.suffix}:{},...e.negativeStyle!==void 0?{negativeStyle:e.negativeStyle}:{},...e.compact!==void 0?{compact:e.compact}:{},...e.scale!==void 0?{scale:e.scale}:{},...i?{currency:i}:{},...e.percentValueMode!==void 0?{percentValueMode:e.percentValueMode}:{}}}}function me(e){const t=G(e);if(!t.ok)return t;const r=[];return t.value.locale||r.push({path:"locale",message:"Resolved numeric formats require an explicit locale."}),t.value.minimumFractionDigits===void 0&&r.push({path:"minimumFractionDigits",message:"Resolved numeric formats require minimumFractionDigits."}),t.value.maximumFractionDigits===void 0&&r.push({path:"maximumFractionDigits",message:"Resolved numeric formats require maximumFractionDigits."}),t.value.type==="currency"&&!t.value.currency&&r.push({path:"currency",message:"Resolved currency formats require an explicit currency."}),r.length>0?{ok:!1,issues:r}:t}function ue(e){var a;const t=new Set;if(e.snapshot.resolvedFormats.forEach((i,n)=>{if(i.format.type!=="temporal_bucket"){if(i.scope.attachmentIndex!==void 0)throw new Error(`resolvedFormats.${n}.scope.attachmentIndex is not valid for a card export`);if(i.scope.dashboardId!==e.expectedScope.dashboardId||i.scope.cardId!==e.expectedScope.cardId)throw new Error(`resolvedFormats.${n}.scope must match the executing dashboard/card`);if(i.target.kind!=="column")throw new Error(`resolvedFormats.${n}.target must identify an export column`);if(t.has(i.target.columnKey))throw new Error(`resolvedFormats.${n} duplicates export column "${i.target.columnKey}"`);t.add(i.target.columnKey)}}),!e.useFormattedValues)return;if(!((a=e.visibleColumns)!=null&&a.length))throw new Error("visibleColumns must identify every formatted export column");const r=e.visibleColumns.find(i=>!t.has(i));if(r)throw new Error(`resolvedFormats is missing visible export column "${r}"`)}function Z(e,t){const r=new Intl.NumberFormat(e,{style:"currency",currency:t}).resolvedOptions();return{minimumFractionDigits:r.minimumFractionDigits,maximumFractionDigits:r.maximumFractionDigits}}function oe(e){if(e.minimumFractionDigits!==void 0||e.maximumFractionDigits!==void 0){const r=e.minimumFractionDigits??0;return{minimumFractionDigits:r,maximumFractionDigits:e.maximumFractionDigits??Math.max(r,2)}}const t=e.type==="percent"?1:e.type==="scientific"?2:0;return{minimumFractionDigits:t,maximumFractionDigits:t}}function le(e,t,r){const a=w.canonicalizeSupportedLocale(e.locale)??t.locale,i=e.type==="number"||e.type==="currency"?w.canonicalizeSupportedCurrencyCode(r):void 0;if(!(e.type==="currency"||i!==void 0))return{...e,locale:a,...oe(e)};const c=i??w.canonicalizeSupportedCurrencyCode(e.currency)??t.defaultCurrency,m=Z(a,c),l=m.minimumFractionDigits??0,o=m.maximumFractionDigits??l,s=e.minimumFractionDigits??Math.min(l,e.maximumFractionDigits??l),d=e.maximumFractionDigits??Math.max(s,o);return{...e,type:"currency",locale:a,currency:c,minimumFractionDigits:s,maximumFractionDigits:d}}class S extends Error{constructor(r,a){super(a);b(this,"code");this.name="RawTemporalFormatContractError",this.code=r}}const de=["SSSSSSSSS","SSSSSSSS","SSSSSSS","SSSSSS","SSSSS","SSSS","SSS","SS","S"],q=/^(\d{4})-(\d{2})-(\d{2})$/,U=/^(\d{4})-(\d{2})-(\d{2})[T ](\d{2}):(\d{2})(?::(\d{2})(?:\.(\d{1,9}))?)?$/,B=/^(\d{4})-(\d{2})-(\d{2})[T ](\d{2}):(\d{2})(?::(\d{2})(?:\.(\d{1,9}))?)?(Z|[+-]\d{2}:\d{2})$/,fe=["yyyy","MMMM","LLLL","zzz","XXX","MMM","LLL","yy","MM","dd","HH","hh","mm","ss","M","d","H","h","m","s","a"],ge=new Set(["HH","H","hh","h","mm","m","ss","s","a",...de]),ye=new Set(["zzz","XXX"]),k=new Set(["short","medium","long"]);function y(e,t){return Object.keys(e).length===t.length&&t.every(a=>a in e)}function u(e){throw new S("invalid_raw_temporal_format",e)}function j(e){if(!e||e.trim()!==e||e.length>256)return u("date_fns patterns must be non-empty, trimmed, and at most 256 characters.");const t=[],r=i=>{const n=t[t.length-1];(n==null?void 0:n.kind)==="literal"?n.value+=i:t.push({kind:"literal",value:i})};let a=0;for(;a<e.length;){if(e[a]==="'"){if(e[a+1]==="'"){r("'"),a+=2;continue}let c="",m=!1;for(a+=1;a<e.length;){if(e[a]==="'"){if(e[a+1]==="'"){c+="'",a+=2;continue}m=!0,a+=1;break}c+=e[a],a+=1}if(!m)return u("date_fns pattern has an unclosed quote.");r(c);continue}if(e[a]==="S"){let c=a+1;for(;e[c]==="S";)c+=1;const m=e.slice(a,c);if(m.length>9)return u("date_fns fractional-second tokens support at most nine digits.");t.push({kind:"token",value:m}),a=c;continue}const i=fe.find(c=>e.startsWith(c,a));if(i){t.push({kind:"token",value:i}),a+=i.length;continue}const n=e[a];if(/[A-Za-z]/.test(n))return u(`Unsupported date_fns pattern token beginning at "${e.slice(a)}".`);r(n),a+=1}return t.some(i=>i.kind==="token")?t:u("date_fns patterns must contain at least one token.")}function H(e,t){if(e==="semaphor_tokens"){const r=g.tokenizeTemporalBucketPattern(t);r.ok||u(r.message);return}j(t)}function he(e){return!g.isPlainJsonRecord(e)||!y(e,["dateStyle","dateTime"])?u("Automatic raw temporal styles are incomplete."):k.has(e.dateStyle)?!g.isPlainJsonRecord(e.dateTime)||!y(e.dateTime,["dateStyle","timeStyle"])||!k.has(e.dateTime.dateStyle)||!k.has(e.dateTime.timeStyle)?u("Automatic dateTime styles are incomplete or invalid."):{dateStyle:e.dateStyle,dateTime:{dateStyle:e.dateTime.dateStyle,timeStyle:e.dateTime.timeStyle}}:u("Automatic dateStyle is invalid.")}function $(e){const t=["type","locale","calendarTimezone","presentation"],r=[...t,"sourceTimezone"];if(!g.isPlainJsonRecord(e)||!y(e,t)&&!y(e,r)||e.type!=="raw_temporal")return u("Resolved raw temporal format has an invalid shape.");const a=w.canonicalizeSupportedLocale(e.locale);return a?typeof e.calendarTimezone!="string"||!h.isValidIanaTimeZone(e.calendarTimezone)?u("Raw temporal calendarTimezone must be a valid IANA timezone."):e.sourceTimezone!==void 0&&(typeof e.sourceTimezone!="string"||!h.isValidIanaTimeZone(e.sourceTimezone))?u("Raw temporal sourceTimezone must be a valid IANA timezone."):g.isPlainJsonRecord(e.presentation)?e.presentation.mode==="auto"?y(e.presentation,["mode","styles"])?{type:"raw_temporal",locale:a,calendarTimezone:e.calendarTimezone,...e.sourceTimezone?{sourceTimezone:e.sourceTimezone}:{},presentation:{mode:"auto",styles:he(e.presentation.styles)}}:u("Automatic raw temporal presentation has unknown fields."):e.presentation.mode!=="pattern"||!y(e.presentation,["mode","dialect","pattern"])||e.presentation.dialect!=="semaphor_tokens"&&e.presentation.dialect!=="date_fns"||typeof e.presentation.pattern!="string"?u("Pattern raw temporal presentation has an invalid shape."):(H(e.presentation.dialect,e.presentation.pattern),{type:"raw_temporal",locale:a,calendarTimezone:e.calendarTimezone,...e.sourceTimezone?{sourceTimezone:e.sourceTimezone}:{},presentation:{mode:"pattern",dialect:e.presentation.dialect,pattern:e.presentation.pattern}}):u("Raw temporal presentation must be an object."):u("Raw temporal locale is invalid or unsupported.")}function Se(e){var m,l,o;if(e.format){if(!g.isPlainJsonRecord(e.format))return u("Authored raw temporal format has an invalid shape.");const s=Object.keys(e.format);if(!s.includes("type")||!s.includes("presentation")||s.some(f=>f!=="type"&&f!=="presentation"&&f!=="timezone"&&f!=="sourceTimezone")||e.format.type!=="raw_temporal"||!g.isPlainJsonRecord(e.format.presentation))return u("Authored raw temporal format has an invalid shape.");const d=e.format.presentation;if(d.mode==="auto"){if(!y(d,["mode"]))return u("Automatic authored raw temporal format has unknown fields.")}else{if(d.mode!=="pattern"||!y(d,["mode","dialect","pattern"])||d.dialect!=="semaphor_tokens"&&d.dialect!=="date_fns"||typeof d.pattern!="string")return u("Authored raw temporal pattern has an invalid shape.");H(d.dialect,d.pattern)}}const t=(m=e.format)==null?void 0:m.timezone,r=(l=e.format)==null?void 0:l.sourceTimezone,a=t&&t!=="auto"?t:e.calendar.tz,i=r&&r!=="auto"?r==="local"?Intl.DateTimeFormat().resolvedOptions().timeZone:r:void 0;if(t!==void 0&&t!=="auto"&&!h.isValidIanaTimeZone(a)||i!==void 0&&!h.isValidIanaTimeZone(i))return u("Authored raw temporal timezone is invalid.");const n=((o=e.format)==null?void 0:o.presentation)??{mode:"auto"},c={type:"raw_temporal",locale:e.preferences.locale,calendarTimezone:a,...i?{sourceTimezone:i}:{},presentation:n.mode==="pattern"?{...n}:{mode:"auto",styles:{dateStyle:e.preferences.dateStyle,dateTime:{...e.preferences.dateTime}}}};return $(c)}function we(e){if(q.test(e))return"date";if(B.test(e))return"instant";if(U.test(e))return"wall_datetime"}function ve(e){const t=new Set;let r=!1;for(const a of e.values){if(a===null)continue;r=!0;const i=we(a);i&&t.add(i)}if(!r)return{status:"empty"};if(t.size===0)return{status:"invalid_only"};if(t.size>1)throw new S("mixed_sql_temporal_semantics",`Declared SQL temporal column "${e.columnKey}" mixes date, wall-datetime, or instant semantics. Normalize it to one kind.`);return{status:"classified",metadata:{kind:"raw_temporal",valueKind:[...t][0]}}}function xe(e){return{version:1,columns:Object.fromEntries([...e].map(([t,r])=>[t,r.status==="classified"?r.metadata.valueKind:r.status]))}}function Y(e){if(!g.isPlainJsonRecord(e)||e.version!==1||!g.isPlainJsonRecord(e.columns)||Object.keys(e).some(a=>a!=="version"&&a!=="columns"))throw new S("invalid_raw_temporal_format","Raw temporal chunk classification evidence is malformed.");const t={},r=new Set(["empty","invalid_only","date","wall_datetime","instant"]);for(const[a,i]of Object.entries(e.columns)){if(!a.trim()||!r.has(i))throw new S("invalid_raw_temporal_format","Raw temporal chunk classification evidence contains an invalid column or status.");t[a]=i}return{version:1,columns:t}}function Te(e){if(e.length===0)return;const t=e.map(Y),r=Object.keys(t[0].columns).sort();for(let a=1;a<t.length;a+=1){const i=Object.keys(t[a].columns).sort();if(i.length!==r.length||i.some((n,c)=>n!==r[c]))throw new S("invalid_raw_temporal_format","Raw temporal chunk classification evidence has inconsistent columns.")}for(const a of r)if(new Set(t.map(n=>n.columns[a]).filter(n=>n!=="empty"&&n!=="invalid_only")).size>1)throw new S("mixed_sql_temporal_semantics",`Declared SQL temporal column "${a}" has inconsistent semantics across export chunks. Normalize it to one kind.`)}function De(e){return e%4===0&&(e%100!==0||e%400===0)}function Ne(e,t){return t===2?De(e)?29:28:[4,6,9,11].includes(t)?30:31}function Fe(e){return e.year>=1&&e.year<=9999&&e.month>=1&&e.month<=12&&e.day>=1&&e.day<=Ne(e.year,e.month)&&e.hour>=0&&e.hour<=23&&e.minute>=0&&e.minute<=59&&e.second>=0&&e.second<=59}function _e(e){return{year:Number(e[1]),month:Number(e[2]),day:Number(e[3]),hour:Number(e[4]??0),minute:Number(e[5]??0),second:Number(e[6]??0),fraction:e[7]??""}}function ze(e,t){const r=t==="date"?e.match(q):t==="wall_datetime"?e.match(U):e.match(B);if(!r)return{status:"invalid_shape"};const a=_e(r);if(!Fe(a))return{status:"out_of_range"};if(t==="instant"){const i=r[8];if(i&&i!=="Z"){const[c,m]=i.slice(1).split(":").map(Number);if(c>23||m>59)return{status:"out_of_range"}}const n=new Date(e.replace(" ","T"));return Number.isNaN(n.getTime())?{status:"out_of_range"}:{status:"valid",fields:a,instant:n}}return{status:"valid",fields:a}}function E(e){const t=new Date(0);return t.setUTCFullYear(e.year,e.month-1,e.day),t.setUTCHours(e.hour,e.minute,e.second,0),t}function J(e,t){const r=e.fraction?`.${e.fraction.padEnd(3,"0").slice(0,3)}`:"";return re.fromZonedTime(`${String(e.year).padStart(4,"0")}-${String(e.month).padStart(2,"0")}-${String(e.day).padStart(2,"0")}T${String(e.hour).padStart(2,"0")}:${String(e.minute).padStart(2,"0")}:${String(e.second).padStart(2,"0")}${r}`,t)}function ke(e,t){const r=new Map,a=new Map;let i,n,c,m;return{number(l,o=1){let s=r.get(o);return s||(s=new Intl.NumberFormat(e,{useGrouping:!1,minimumIntegerDigits:o,maximumFractionDigits:0}),r.set(o,s)),s.format(l)},month(l,o,s){var T;const d=`${o}:${s?"standalone":"contextual"}`;let f=a.get(d);if(!f){const D={calendar:"gregory",timeZone:"UTC",month:o};s||(D.day="numeric"),f=new Intl.DateTimeFormat(e,D),a.set(d,f)}return((T=f.formatToParts(l).find(D=>D.type==="month"))==null?void 0:T.value)??""},dayPeriod(l){var o;return i??(i=new Intl.DateTimeFormat(e,{calendar:"gregory",timeZone:"UTC",hour:"numeric",hour12:!0})),((o=i.formatToParts(l).find(s=>s.type==="dayPeriod"))==null?void 0:o.value)??""},instantFields(l){n??(n=new Intl.DateTimeFormat("en-CA",{calendar:"gregory",numberingSystem:"latn",timeZone:t,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hourCycle:"h23"}));const o=n.formatToParts(l),s=d=>{var f;return Number((f=o.find(T=>T.type===d))==null?void 0:f.value)};return{year:s("year"),month:s("month"),day:s("day"),hour:s("hour"),minute:s("minute"),second:s("second"),fraction:""}},timezoneName(l){var o;return c??(c=new Intl.DateTimeFormat(e,{calendar:"gregory",timeZone:t,timeZoneName:"short"})),((o=c.formatToParts(l).find(s=>s.type==="timeZoneName"))==null?void 0:o.value)??""},timezoneOffset(l){var d;m??(m=new Intl.DateTimeFormat("en-US",{calendar:"gregory",timeZone:t,timeZoneName:"longOffset"}));const o=(d=m.formatToParts(l).find(f=>f.type==="timeZoneName"))==null?void 0:d.value;if(!o)return u("Unable to resolve the instant timezone offset.");const s=o.replace(/^GMT/,"");return s===""||/^[+-]00:00$/.test(s)?"Z":s}}}function Ce(e,t,r,a,i){if(/^S{1,9}$/.test(e)){const n=t.fraction.padEnd(e.length,"0").slice(0,e.length);return a.number(Number(n),e.length)}switch(e){case"YYYY":case"yyyy":return a.number(t.year,4);case"YY":case"yy":return a.number(t.year%100,2);case"MMMM":return a.month(r,"long",!1);case"LLLL":return a.month(r,"long",!0);case"MMM":return a.month(r,"short",!1);case"LLL":return a.month(r,"short",!0);case"MM":return a.number(t.month,2);case"M":return a.number(t.month);case"DD":case"dd":return a.number(t.day,2);case"d":return a.number(t.day);case"HH":return a.number(t.hour,2);case"H":return a.number(t.hour);case"hh":return a.number(t.hour%12||12,2);case"h":return a.number(t.hour%12||12);case"mm":return a.number(t.minute,2);case"m":return a.number(t.minute);case"ss":return a.number(t.second,2);case"s":return a.number(t.second);case"a":return a.dayPeriod(r);case"zzz":return i?a.timezoneName(i):u("Timezone pattern tokens require an instant value.");case"XXX":return i?a.timezoneOffset(i):u("Timezone pattern tokens require an instant value.");default:return u(`Unsupported raw temporal pattern token "${e}".`)}}function Ee(e,t,r,a){const i=E(t);return e.map(n=>n.kind==="literal"?n.value:Ce(n.value,t,i,r,a)).join("")}function W(e,t,r){const a=t==="date_fns"?j(r):(()=>{const n=g.tokenizeTemporalBucketPattern(r);return n.ok?n.segments:u(n.message)})(),i=a.filter(n=>n.kind==="token").map(n=>n.value);return e==="date"&&i.some(n=>ge.has(n))?u("Date patterns cannot contain time tokens."):e!=="instant"&&i.some(n=>ye.has(n))?u("Timezone pattern tokens require an instant value."):a}function Re(e){W(e.valueKind??"instant",e.dialect,e.pattern)}function Me(e,t,r,a){const i=W(e.valueKind,r,a),n=ke(t.locale,t.calendarTimezone);return c=>{const m=e.valueKind==="wall_datetime"&&t.sourceTimezone?J(c.fields,t.sourceTimezone):void 0,l=e.valueKind==="instant"?{...n.instantFields(c.instant),fraction:c.fields.fraction}:m?{...n.instantFields(m),fraction:c.fields.fraction}:c.fields;return Ee(i,l,n,c.instant??m)}}function Pe(e,t){const r=t.presentation.mode==="auto"?t.presentation.styles:u("Automatic raw temporal formatting requires styles.");if(e.valueKind==="date"){const c=new Intl.DateTimeFormat(t.locale,{calendar:"gregory",timeZone:"UTC",dateStyle:r.dateStyle});return m=>c.format(E(m.fields))}const a=e.valueKind==="instant",i=!a&&r.dateTime.timeStyle==="long"?"medium":r.dateTime.timeStyle,n=new Intl.DateTimeFormat(t.locale,{calendar:"gregory",timeZone:a||e.valueKind==="wall_datetime"&&t.sourceTimezone?t.calendarTimezone:"UTC",dateStyle:r.dateTime.dateStyle,timeStyle:i});return c=>a?n.format(c.instant):e.valueKind==="wall_datetime"&&t.sourceTimezone?n.format(J(c.fields,t.sourceTimezone)):n.format(E(c.fields))}function K(e,t,r){return{ok:!1,text:e,diagnostic:{code:r,message:`Raw temporal ${t.valueKind} value is ${r==="invalid_raw_temporal_value"?"malformed":"out of range"}.`}}}function X(e){const t=te.parseRawTemporalValueMetadata(e.metadata),r=$(e.format),a=r.presentation.mode==="auto"?Pe(t,r):Me(t,r,r.presentation.dialect,r.presentation.pattern);return i=>{if(i===null)return{ok:!0,text:"",status:"empty"};const n=ze(i,t.valueKind);return n.status==="invalid_shape"?K(i,t,"invalid_raw_temporal_value"):n.status==="out_of_range"?K(i,t,"out_of_range_raw_temporal_value"):{ok:!0,text:a(n),status:"formatted"}}}function $e(e){return X({metadata:e.metadata,format:e.format})(e.value)}exports.RawTemporalFormatContractError=S;exports.assertRawTemporalChunkClassificationAgreement=Te;exports.classifyDeclaredSqlTemporalColumn=ve;exports.createRawTemporalChunkClassificationEvidence=xe;exports.formatCurrency=R;exports.formatNumber=z;exports.formatNumberCustom=ce;exports.formatNumberWithColumnSettings=ie;exports.formatNumericCanonical=O;exports.formatPercent=M;exports.formatRawTemporalValue=$e;exports.formatScientific=P;exports.parseNumericCanonicalFormat=G;exports.parseRawTemporalChunkClassificationEvidence=Y;exports.parseResolvedNumericCanonicalFormat=me;exports.parseResolvedRawTemporalFormat=$;exports.prepareRawTemporalFormatter=X;exports.resolveCurrencyFractionDigits=Z;exports.resolveNumericPresentation=le;exports.resolveRawTemporalFormat=Se;exports.validateCardExportNumericPresentationSnapshot=ue;exports.validateRawTemporalPattern=Re;
|
|
1
|
+
"use strict";var Q=Object.defineProperty;var ee=(e,t,r)=>t in e?Q(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var b=(e,t,r)=>ee(e,typeof t!="symbol"?t+"":t,r);const h=require("./validators-CueUwVE4.cjs"),w=require("../value-format-preferences/index.cjs"),g=require("./temporal-bucket-4YEPEKlJ.cjs"),te=require("./raw-temporal-contract-B3YGcvzw.cjs"),re=require("./index-F25jnH0p.cjs");let I;function p(e,t){const r=e.format;return r(t)}function ae(e,t){if(I??(I=p(new Intl.NumberFormat("en-US",{useGrouping:!1,maximumFractionDigits:6}),"9007199254740993.000009")==="9007199254740993.000009"),!I)throw new RangeError("This runtime cannot format exact decimal strings.");const r=Number(e);if(!Number.isFinite(r)||r===0&&e!=="0")throw new RangeError("Exact value is outside the Intl formatting range; use raw text.");return p(t,e)}function _(e){return typeof e=="number"?e<0:e.value.startsWith("-")}function N(e){return typeof e=="number"?Math.abs(e):_(e)?{...e,value:e.value.slice(1)}:e}function V(e,t){return typeof e=="number"?e*t:{kind:"exact_number",type:"decimal",value:h.scaleExactDecimal(e.value,t)}}function F(e,t){return t===0?e:typeof e=="number"?e/10**t:{kind:"exact_number",type:"decimal",value:h.scaleExactDecimal(e.value,`1e-${t}`)}}function v(e,t){return typeof e=="number"?t.format(e):ae(e.value,t)}function A(e){if(!e)return!1;const t=e.toLowerCase().replace("_","-");return t==="en-in"||t.startsWith("en-in-")}function L(e,t){const r=N(e),a=i=>typeof r=="number"?r>=i:h.compareExactDecimal(r.value,String(i))>=0;return a(1e12)?{power:12,suffix:"T"}:a(1e9)?{power:9,suffix:"B"}:A(t)&&a(1e7)?{power:7,suffix:"Cr"}:a(1e6)?{power:6,suffix:"M"}:A(t)&&a(1e5)?{power:5,suffix:"L"}:a(1e3)?{power:3,suffix:"K"}:{power:0,suffix:""}}function C(e,t){try{const r=x(t);return L(e,r)}catch{return L(e,"en-US")}}function ne(e){try{return new Intl.NumberFormat(e),!0}catch{return!1}}function x(e){return e&&ne(e)?e:"en-US"}function z(e,t){if(e==null||Number.isNaN(e))return"";const r=x(t==null?void 0:t.locale);let a=e;if(t!=null&&t.multiplyBy&&(a=V(a,t.multiplyBy)),t!=null&&t.useSuffix){const{power:n,suffix:c}=C(a,r);a=F(a,n);const m=v(a,new Intl.NumberFormat(r,{minimumFractionDigits:(t==null?void 0:t.minimumFractionDigits)??0,maximumFractionDigits:(t==null?void 0:t.maximumFractionDigits)??2,useGrouping:(t==null?void 0:t.useGrouping)??!0}));return`${(t==null?void 0:t.prefix)??""}${m}${c}${(t==null?void 0:t.suffix)??""}`}const i=v(a,new Intl.NumberFormat(r,{minimumFractionDigits:(t==null?void 0:t.minimumFractionDigits)??0,maximumFractionDigits:(t==null?void 0:t.maximumFractionDigits)??2,useGrouping:(t==null?void 0:t.useGrouping)??!0}));if(t!=null&&t.negativeInParentheses&&_(a)){const n=i.replace("-","");return`(${(t==null?void 0:t.prefix)??""}${n}${(t==null?void 0:t.suffix)??""})`}return`${(t==null?void 0:t.prefix)??""}${i}${(t==null?void 0:t.suffix)??""}`}function R(e,t){if(e==null||Number.isNaN(e))return"";const r=x(t==null?void 0:t.locale),a=(t==null?void 0:t.currency)||"USD",i=_(e),n=!!(t!=null&&t.negativeInParentheses&&i),c=n?N(e):e;try{if(t!=null&&t.useSuffix){const{power:l,suffix:o}=C(c,r),s=F(c,l),f=`${v(s,new Intl.NumberFormat(r,{style:"currency",currency:a,minimumFractionDigits:(t==null?void 0:t.minimumFractionDigits)??0,maximumFractionDigits:(t==null?void 0:t.maximumFractionDigits)??2,useGrouping:(t==null?void 0:t.useGrouping)??!0}))}${o}`;return n?`(${f})`:f}const m=v(c,new Intl.NumberFormat(r,{style:"currency",currency:a,minimumFractionDigits:(t==null?void 0:t.minimumFractionDigits)??0,maximumFractionDigits:(t==null?void 0:t.maximumFractionDigits)??2,useGrouping:(t==null?void 0:t.useGrouping)??!0}));return n?`(${m})`:m}catch{const m=N(e),l=t!=null&&t.useSuffix?C(m,r):{power:0,suffix:""},o=z(F(m,l.power),{locale:r,minimumFractionDigits:(t==null?void 0:t.minimumFractionDigits)??0,maximumFractionDigits:(t==null?void 0:t.maximumFractionDigits)??2,useGrouping:(t==null?void 0:t.useGrouping)??!0}),s=`${a} ${o}${l.suffix}`;return i?t!=null&&t.negativeInParentheses?`(${s})`:`-${s}`:s}}function M(e,t){if(e==null||Number.isNaN(e))return"";const r=x(t==null?void 0:t.locale),i=(t==null?void 0:t.alreadyPercent)??(t==null?void 0:t.percentValueMode)==="whole"?F(e,2):e;return v(i,new Intl.NumberFormat(r,{style:"percent",minimumFractionDigits:(t==null?void 0:t.minimumFractionDigits)??0,maximumFractionDigits:(t==null?void 0:t.maximumFractionDigits)??2,useGrouping:(t==null?void 0:t.useGrouping)??!0}))}function P(e,t){if(e==null||Number.isNaN(e))return"";const r=x(t==null?void 0:t.locale);return v(e,new Intl.NumberFormat(r,{notation:"scientific",minimumFractionDigits:(t==null?void 0:t.minimumFractionDigits)??0,maximumFractionDigits:(t==null?void 0:t.maximumFractionDigits)??2}))}function O(e,t){if(e==null||Number.isNaN(e))return"";const r=t.scale===void 0?e:V(e,t.scale),a=t.negativeStyle==="parentheses"&&_(r),i=a?N(r):r,n={style:t.type==="number"?"decimal":t.type,locale:t.locale,currency:t.currency,minimumFractionDigits:t.minimumFractionDigits,maximumFractionDigits:t.maximumFractionDigits,useGrouping:t.useGrouping,percentValueMode:t.percentValueMode,useSuffix:t.compact};let c;switch(t.type){case"currency":c=R(i,n);break;case"percent":c=M(i,n);break;case"scientific":c=P(i,n);break;default:c=z(i,n);break}const m=`${t.prefix??""}${c}${t.suffix??""}`;return a?`(${m})`:m}function ie(e,t,r="en-US"){if(e==null||typeof e=="number"&&isNaN(e))return"";const a=x((t==null?void 0:t.locale)||r),i=(t==null?void 0:t.style)||"decimal",n=i==="decimal"?"number":i;return n==="currency"&&new Intl.NumberFormat(a,{style:"currency",currency:(t==null?void 0:t.currency)||"USD"}),O(e,{type:n,locale:a,currency:n==="currency"?(t==null?void 0:t.currency)||"USD":void 0,minimumFractionDigits:(t==null?void 0:t.minimumFractionDigits)??0,maximumFractionDigits:(t==null?void 0:t.maximumFractionDigits)??2,useGrouping:(t==null?void 0:t.useGrouping)??!0,percentValueMode:n==="percent"?(t==null?void 0:t.percentValueMode)??"whole":void 0,scale:t==null?void 0:t.scale,compact:t==null?void 0:t.compact,negativeStyle:t==null?void 0:t.negativeStyle,prefix:t==null?void 0:t.prefix,suffix:t==null?void 0:t.suffix})}function ce(e,t,r){const a={style:t==="currency"?"currency":t==="percent"?"percent":"decimal",locale:r==null?void 0:r.locale,currency:r==null?void 0:r.currency,minimumFractionDigits:r==null?void 0:r.decimalPlaces,maximumFractionDigits:r==null?void 0:r.decimalPlaces,useSuffix:r==null?void 0:r.useSuffix,prefix:r==null?void 0:r.prefix,suffix:r==null?void 0:r.suffix,negativeInParentheses:r==null?void 0:r.negativeInParentheses,multiplyBy:r==null?void 0:r.multiplyBy};switch(t){case"currency":return R(e,a);case"percent":return M(e,a);case"scientific":return P(e,a);default:return z(e,a)}}const se=["type","locale","minimumFractionDigits","maximumFractionDigits","useGrouping","prefix","suffix","negativeStyle","compact","scale","currency","percentValueMode"];function G(e){if(!g.isPlainJsonRecord(e))return{ok:!1,issues:[{path:"$",message:"Numeric format must be an object."}]};const t=[],r=new Set(se);Object.keys(e).filter(n=>!r.has(n)).forEach(n=>t.push({path:n,message:`Unknown property "${n}".`})),e.type!=="number"&&e.type!=="currency"&&e.type!=="percent"&&e.type!=="scientific"&&t.push({path:"type",message:"Expected number, currency, percent, or scientific."});const a=e.locale===void 0?void 0:w.canonicalizeSupportedLocale(e.locale);e.locale!==void 0&&!a&&t.push({path:"locale",message:"Expected a supported BCP 47 locale."});const i=e.currency===void 0?void 0:w.canonicalizeSupportedCurrencyCode(e.currency);e.currency!==void 0&&!i&&t.push({path:"currency",message:"Expected a supported ISO 4217 currency code."});for(const n of["minimumFractionDigits","maximumFractionDigits"]){const c=e[n];c!==void 0&&(!Number.isInteger(c)||typeof c!="number"||c<0||c>20)&&t.push({path:n,message:"Expected an integer from 0 to 20."})}typeof e.minimumFractionDigits=="number"&&typeof e.maximumFractionDigits=="number"&&e.minimumFractionDigits>e.maximumFractionDigits&&t.push({path:"maximumFractionDigits",message:"Must be greater than or equal to minimumFractionDigits."});for(const n of["useGrouping","compact"])e[n]!==void 0&&typeof e[n]!="boolean"&&t.push({path:n,message:"Expected a boolean."});for(const n of["prefix","suffix"])e[n]!==void 0&&typeof e[n]!="string"&&t.push({path:n,message:"Expected a string."});return e.negativeStyle!==void 0&&e.negativeStyle!=="minus"&&e.negativeStyle!=="parentheses"&&t.push({path:"negativeStyle",message:"Expected minus or parentheses."}),e.percentValueMode!==void 0&&e.percentValueMode!=="fraction"&&e.percentValueMode!=="whole"&&t.push({path:"percentValueMode",message:"Expected fraction or whole."}),e.scale!==void 0&&(typeof e.scale!="number"||!Number.isFinite(e.scale))&&t.push({path:"scale",message:"Expected a finite number."}),t.length>0?{ok:!1,issues:t}:{ok:!0,value:{type:e.type,...a?{locale:a}:{},...e.minimumFractionDigits!==void 0?{minimumFractionDigits:e.minimumFractionDigits}:{},...e.maximumFractionDigits!==void 0?{maximumFractionDigits:e.maximumFractionDigits}:{},...e.useGrouping!==void 0?{useGrouping:e.useGrouping}:{},...e.prefix!==void 0?{prefix:e.prefix}:{},...e.suffix!==void 0?{suffix:e.suffix}:{},...e.negativeStyle!==void 0?{negativeStyle:e.negativeStyle}:{},...e.compact!==void 0?{compact:e.compact}:{},...e.scale!==void 0?{scale:e.scale}:{},...i?{currency:i}:{},...e.percentValueMode!==void 0?{percentValueMode:e.percentValueMode}:{}}}}function me(e){const t=G(e);if(!t.ok)return t;const r=[];return t.value.locale||r.push({path:"locale",message:"Resolved numeric formats require an explicit locale."}),t.value.minimumFractionDigits===void 0&&r.push({path:"minimumFractionDigits",message:"Resolved numeric formats require minimumFractionDigits."}),t.value.maximumFractionDigits===void 0&&r.push({path:"maximumFractionDigits",message:"Resolved numeric formats require maximumFractionDigits."}),t.value.type==="currency"&&!t.value.currency&&r.push({path:"currency",message:"Resolved currency formats require an explicit currency."}),r.length>0?{ok:!1,issues:r}:t}function ue(e){var a;const t=new Set;if(e.snapshot.resolvedFormats.forEach((i,n)=>{if(i.format.type!=="temporal_bucket"){if(i.scope.attachmentIndex!==void 0)throw new Error(`resolvedFormats.${n}.scope.attachmentIndex is not valid for a card export`);if(i.scope.dashboardId!==e.expectedScope.dashboardId||i.scope.cardId!==e.expectedScope.cardId)throw new Error(`resolvedFormats.${n}.scope must match the executing dashboard/card`);if(i.target.kind!=="column")throw new Error(`resolvedFormats.${n}.target must identify an export column`);if(t.has(i.target.columnKey))throw new Error(`resolvedFormats.${n} duplicates export column "${i.target.columnKey}"`);t.add(i.target.columnKey)}}),!e.useFormattedValues)return;if(!((a=e.visibleColumns)!=null&&a.length))throw new Error("visibleColumns must identify every formatted export column");const r=e.visibleColumns.find(i=>!t.has(i));if(r)throw new Error(`resolvedFormats is missing visible export column "${r}"`)}function Z(e,t){const r=new Intl.NumberFormat(e,{style:"currency",currency:t}).resolvedOptions();return{minimumFractionDigits:r.minimumFractionDigits,maximumFractionDigits:r.maximumFractionDigits}}function oe(e){if(e.minimumFractionDigits!==void 0||e.maximumFractionDigits!==void 0){const r=e.minimumFractionDigits??0;return{minimumFractionDigits:r,maximumFractionDigits:e.maximumFractionDigits??Math.max(r,2)}}const t=e.type==="percent"?1:e.type==="scientific"?2:0;return{minimumFractionDigits:t,maximumFractionDigits:t}}function le(e,t,r){const a=w.canonicalizeSupportedLocale(e.locale)??t.locale,i=e.type==="number"||e.type==="currency"?w.canonicalizeSupportedCurrencyCode(r):void 0;if(!(e.type==="currency"||i!==void 0))return{...e,locale:a,...oe(e)};const c=i??w.canonicalizeSupportedCurrencyCode(e.currency)??t.defaultCurrency,m=Z(a,c),l=m.minimumFractionDigits??0,o=m.maximumFractionDigits??l,s=e.minimumFractionDigits??Math.min(l,e.maximumFractionDigits??l),d=e.maximumFractionDigits??Math.max(s,o);return{...e,type:"currency",locale:a,currency:c,minimumFractionDigits:s,maximumFractionDigits:d}}class S extends Error{constructor(r,a){super(a);b(this,"code");this.name="RawTemporalFormatContractError",this.code=r}}const de=["SSSSSSSSS","SSSSSSSS","SSSSSSS","SSSSSS","SSSSS","SSSS","SSS","SS","S"],q=/^(\d{4})-(\d{2})-(\d{2})$/,U=/^(\d{4})-(\d{2})-(\d{2})[T ](\d{2}):(\d{2})(?::(\d{2})(?:\.(\d{1,9}))?)?$/,B=/^(\d{4})-(\d{2})-(\d{2})[T ](\d{2}):(\d{2})(?::(\d{2})(?:\.(\d{1,9}))?)?(Z|[+-]\d{2}:\d{2})$/,fe=["yyyy","MMMM","LLLL","zzz","XXX","MMM","LLL","yy","MM","dd","HH","hh","mm","ss","M","d","H","h","m","s","a"],ge=new Set(["HH","H","hh","h","mm","m","ss","s","a",...de]),ye=new Set(["zzz","XXX"]),k=new Set(["short","medium","long"]);function y(e,t){return Object.keys(e).length===t.length&&t.every(a=>a in e)}function u(e){throw new S("invalid_raw_temporal_format",e)}function j(e){if(!e||e.trim()!==e||e.length>256)return u("date_fns patterns must be non-empty, trimmed, and at most 256 characters.");const t=[],r=i=>{const n=t[t.length-1];(n==null?void 0:n.kind)==="literal"?n.value+=i:t.push({kind:"literal",value:i})};let a=0;for(;a<e.length;){if(e[a]==="'"){if(e[a+1]==="'"){r("'"),a+=2;continue}let c="",m=!1;for(a+=1;a<e.length;){if(e[a]==="'"){if(e[a+1]==="'"){c+="'",a+=2;continue}m=!0,a+=1;break}c+=e[a],a+=1}if(!m)return u("date_fns pattern has an unclosed quote.");r(c);continue}if(e[a]==="S"){let c=a+1;for(;e[c]==="S";)c+=1;const m=e.slice(a,c);if(m.length>9)return u("date_fns fractional-second tokens support at most nine digits.");t.push({kind:"token",value:m}),a=c;continue}const i=fe.find(c=>e.startsWith(c,a));if(i){t.push({kind:"token",value:i}),a+=i.length;continue}const n=e[a];if(/[A-Za-z]/.test(n))return u(`Unsupported date_fns pattern token beginning at "${e.slice(a)}".`);r(n),a+=1}return t.some(i=>i.kind==="token")?t:u("date_fns patterns must contain at least one token.")}function H(e,t){if(e==="semaphor_tokens"){const r=g.tokenizeTemporalBucketPattern(t);r.ok||u(r.message);return}j(t)}function he(e){return!g.isPlainJsonRecord(e)||!y(e,["dateStyle","dateTime"])?u("Automatic raw temporal styles are incomplete."):k.has(e.dateStyle)?!g.isPlainJsonRecord(e.dateTime)||!y(e.dateTime,["dateStyle","timeStyle"])||!k.has(e.dateTime.dateStyle)||!k.has(e.dateTime.timeStyle)?u("Automatic dateTime styles are incomplete or invalid."):{dateStyle:e.dateStyle,dateTime:{dateStyle:e.dateTime.dateStyle,timeStyle:e.dateTime.timeStyle}}:u("Automatic dateStyle is invalid.")}function $(e){const t=["type","locale","calendarTimezone","presentation"],r=[...t,"sourceTimezone"];if(!g.isPlainJsonRecord(e)||!y(e,t)&&!y(e,r)||e.type!=="raw_temporal")return u("Resolved raw temporal format has an invalid shape.");const a=w.canonicalizeSupportedLocale(e.locale);return a?typeof e.calendarTimezone!="string"||!h.isValidIanaTimeZone(e.calendarTimezone)?u("Raw temporal calendarTimezone must be a valid IANA timezone."):e.sourceTimezone!==void 0&&(typeof e.sourceTimezone!="string"||!h.isValidIanaTimeZone(e.sourceTimezone))?u("Raw temporal sourceTimezone must be a valid IANA timezone."):g.isPlainJsonRecord(e.presentation)?e.presentation.mode==="auto"?y(e.presentation,["mode","styles"])?{type:"raw_temporal",locale:a,calendarTimezone:e.calendarTimezone,...e.sourceTimezone?{sourceTimezone:e.sourceTimezone}:{},presentation:{mode:"auto",styles:he(e.presentation.styles)}}:u("Automatic raw temporal presentation has unknown fields."):e.presentation.mode!=="pattern"||!y(e.presentation,["mode","dialect","pattern"])||e.presentation.dialect!=="semaphor_tokens"&&e.presentation.dialect!=="date_fns"||typeof e.presentation.pattern!="string"?u("Pattern raw temporal presentation has an invalid shape."):(H(e.presentation.dialect,e.presentation.pattern),{type:"raw_temporal",locale:a,calendarTimezone:e.calendarTimezone,...e.sourceTimezone?{sourceTimezone:e.sourceTimezone}:{},presentation:{mode:"pattern",dialect:e.presentation.dialect,pattern:e.presentation.pattern}}):u("Raw temporal presentation must be an object."):u("Raw temporal locale is invalid or unsupported.")}function Se(e){var m,l,o;if(e.format){if(!g.isPlainJsonRecord(e.format))return u("Authored raw temporal format has an invalid shape.");const s=Object.keys(e.format);if(!s.includes("type")||!s.includes("presentation")||s.some(f=>f!=="type"&&f!=="presentation"&&f!=="timezone"&&f!=="sourceTimezone")||e.format.type!=="raw_temporal"||!g.isPlainJsonRecord(e.format.presentation))return u("Authored raw temporal format has an invalid shape.");const d=e.format.presentation;if(d.mode==="auto"){if(!y(d,["mode"]))return u("Automatic authored raw temporal format has unknown fields.")}else{if(d.mode!=="pattern"||!y(d,["mode","dialect","pattern"])||d.dialect!=="semaphor_tokens"&&d.dialect!=="date_fns"||typeof d.pattern!="string")return u("Authored raw temporal pattern has an invalid shape.");H(d.dialect,d.pattern)}}const t=(m=e.format)==null?void 0:m.timezone,r=(l=e.format)==null?void 0:l.sourceTimezone,a=t&&t!=="auto"?t:e.calendar.tz,i=r&&r!=="auto"?r==="local"?Intl.DateTimeFormat().resolvedOptions().timeZone:r:void 0;if(t!==void 0&&t!=="auto"&&!h.isValidIanaTimeZone(a)||i!==void 0&&!h.isValidIanaTimeZone(i))return u("Authored raw temporal timezone is invalid.");const n=((o=e.format)==null?void 0:o.presentation)??{mode:"auto"},c={type:"raw_temporal",locale:e.preferences.locale,calendarTimezone:a,...i?{sourceTimezone:i}:{},presentation:n.mode==="pattern"?{...n}:{mode:"auto",styles:{dateStyle:e.preferences.dateStyle,dateTime:{...e.preferences.dateTime}}}};return $(c)}function we(e){if(q.test(e))return"date";if(B.test(e))return"instant";if(U.test(e))return"wall_datetime"}function ve(e){const t=new Set;let r=!1;for(const a of e.values){if(a===null)continue;r=!0;const i=we(a);i&&t.add(i)}if(!r)return{status:"empty"};if(t.size===0)return{status:"invalid_only"};if(t.size>1)throw new S("mixed_sql_temporal_semantics",`Declared SQL temporal column "${e.columnKey}" mixes date, wall-datetime, or instant semantics. Normalize it to one kind.`);return{status:"classified",metadata:{kind:"raw_temporal",valueKind:[...t][0]}}}function xe(e){return{version:1,columns:Object.fromEntries([...e].map(([t,r])=>[t,r.status==="classified"?r.metadata.valueKind:r.status]))}}function Y(e){if(!g.isPlainJsonRecord(e)||e.version!==1||!g.isPlainJsonRecord(e.columns)||Object.keys(e).some(a=>a!=="version"&&a!=="columns"))throw new S("invalid_raw_temporal_format","Raw temporal chunk classification evidence is malformed.");const t={},r=new Set(["empty","invalid_only","date","wall_datetime","instant"]);for(const[a,i]of Object.entries(e.columns)){if(!a.trim()||!r.has(i))throw new S("invalid_raw_temporal_format","Raw temporal chunk classification evidence contains an invalid column or status.");t[a]=i}return{version:1,columns:t}}function Te(e){if(e.length===0)return;const t=e.map(Y),r=Object.keys(t[0].columns).sort();for(let a=1;a<t.length;a+=1){const i=Object.keys(t[a].columns).sort();if(i.length!==r.length||i.some((n,c)=>n!==r[c]))throw new S("invalid_raw_temporal_format","Raw temporal chunk classification evidence has inconsistent columns.")}for(const a of r)if(new Set(t.map(n=>n.columns[a]).filter(n=>n!=="empty"&&n!=="invalid_only")).size>1)throw new S("mixed_sql_temporal_semantics",`Declared SQL temporal column "${a}" has inconsistent semantics across export chunks. Normalize it to one kind.`)}function De(e){return e%4===0&&(e%100!==0||e%400===0)}function Ne(e,t){return t===2?De(e)?29:28:[4,6,9,11].includes(t)?30:31}function Fe(e){return e.year>=1&&e.year<=9999&&e.month>=1&&e.month<=12&&e.day>=1&&e.day<=Ne(e.year,e.month)&&e.hour>=0&&e.hour<=23&&e.minute>=0&&e.minute<=59&&e.second>=0&&e.second<=59}function _e(e){return{year:Number(e[1]),month:Number(e[2]),day:Number(e[3]),hour:Number(e[4]??0),minute:Number(e[5]??0),second:Number(e[6]??0),fraction:e[7]??""}}function ze(e,t){const r=t==="date"?e.match(q):t==="wall_datetime"?e.match(U):e.match(B);if(!r)return{status:"invalid_shape"};const a=_e(r);if(!Fe(a))return{status:"out_of_range"};if(t==="instant"){const i=r[8];if(i&&i!=="Z"){const[c,m]=i.slice(1).split(":").map(Number);if(c>23||m>59)return{status:"out_of_range"}}const n=new Date(e.replace(" ","T"));return Number.isNaN(n.getTime())?{status:"out_of_range"}:{status:"valid",fields:a,instant:n}}return{status:"valid",fields:a}}function E(e){const t=new Date(0);return t.setUTCFullYear(e.year,e.month-1,e.day),t.setUTCHours(e.hour,e.minute,e.second,0),t}function J(e,t){const r=e.fraction?`.${e.fraction.padEnd(3,"0").slice(0,3)}`:"";return re.fromZonedTime(`${String(e.year).padStart(4,"0")}-${String(e.month).padStart(2,"0")}-${String(e.day).padStart(2,"0")}T${String(e.hour).padStart(2,"0")}:${String(e.minute).padStart(2,"0")}:${String(e.second).padStart(2,"0")}${r}`,t)}function ke(e,t){const r=new Map,a=new Map;let i,n,c,m;return{number(l,o=1){let s=r.get(o);return s||(s=new Intl.NumberFormat(e,{useGrouping:!1,minimumIntegerDigits:o,maximumFractionDigits:0}),r.set(o,s)),s.format(l)},month(l,o,s){var T;const d=`${o}:${s?"standalone":"contextual"}`;let f=a.get(d);if(!f){const D={calendar:"gregory",timeZone:"UTC",month:o};s||(D.day="numeric"),f=new Intl.DateTimeFormat(e,D),a.set(d,f)}return((T=f.formatToParts(l).find(D=>D.type==="month"))==null?void 0:T.value)??""},dayPeriod(l){var o;return i??(i=new Intl.DateTimeFormat(e,{calendar:"gregory",timeZone:"UTC",hour:"numeric",hour12:!0})),((o=i.formatToParts(l).find(s=>s.type==="dayPeriod"))==null?void 0:o.value)??""},instantFields(l){n??(n=new Intl.DateTimeFormat("en-CA",{calendar:"gregory",numberingSystem:"latn",timeZone:t,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hourCycle:"h23"}));const o=n.formatToParts(l),s=d=>{var f;return Number((f=o.find(T=>T.type===d))==null?void 0:f.value)};return{year:s("year"),month:s("month"),day:s("day"),hour:s("hour"),minute:s("minute"),second:s("second"),fraction:""}},timezoneName(l){var o;return c??(c=new Intl.DateTimeFormat(e,{calendar:"gregory",timeZone:t,timeZoneName:"short"})),((o=c.formatToParts(l).find(s=>s.type==="timeZoneName"))==null?void 0:o.value)??""},timezoneOffset(l){var d;m??(m=new Intl.DateTimeFormat("en-US",{calendar:"gregory",timeZone:t,timeZoneName:"longOffset"}));const o=(d=m.formatToParts(l).find(f=>f.type==="timeZoneName"))==null?void 0:d.value;if(!o)return u("Unable to resolve the instant timezone offset.");const s=o.replace(/^GMT/,"");return s===""||/^[+-]00:00$/.test(s)?"Z":s}}}function Ce(e,t,r,a,i){if(/^S{1,9}$/.test(e)){const n=t.fraction.padEnd(e.length,"0").slice(0,e.length);return a.number(Number(n),e.length)}switch(e){case"YYYY":case"yyyy":return a.number(t.year,4);case"YY":case"yy":return a.number(t.year%100,2);case"MMMM":return a.month(r,"long",!1);case"LLLL":return a.month(r,"long",!0);case"MMM":return a.month(r,"short",!1);case"LLL":return a.month(r,"short",!0);case"MM":return a.number(t.month,2);case"M":return a.number(t.month);case"DD":case"dd":return a.number(t.day,2);case"d":return a.number(t.day);case"HH":return a.number(t.hour,2);case"H":return a.number(t.hour);case"hh":return a.number(t.hour%12||12,2);case"h":return a.number(t.hour%12||12);case"mm":return a.number(t.minute,2);case"m":return a.number(t.minute);case"ss":return a.number(t.second,2);case"s":return a.number(t.second);case"a":return a.dayPeriod(r);case"zzz":return i?a.timezoneName(i):u("Timezone pattern tokens require an instant value.");case"XXX":return i?a.timezoneOffset(i):u("Timezone pattern tokens require an instant value.");default:return u(`Unsupported raw temporal pattern token "${e}".`)}}function Ee(e,t,r,a){const i=E(t);return e.map(n=>n.kind==="literal"?n.value:Ce(n.value,t,i,r,a)).join("")}function W(e,t,r){const a=t==="date_fns"?j(r):(()=>{const n=g.tokenizeTemporalBucketPattern(r);return n.ok?n.segments:u(n.message)})(),i=a.filter(n=>n.kind==="token").map(n=>n.value);return e==="date"&&i.some(n=>ge.has(n))?u("Date patterns cannot contain time tokens."):e!=="instant"&&i.some(n=>ye.has(n))?u("Timezone pattern tokens require an instant value."):a}function Re(e){W(e.valueKind??"instant",e.dialect,e.pattern)}function Me(e,t,r,a){const i=W(e.valueKind,r,a),n=ke(t.locale,t.calendarTimezone);return c=>{const m=e.valueKind==="wall_datetime"&&t.sourceTimezone?J(c.fields,t.sourceTimezone):void 0,l=e.valueKind==="instant"?{...n.instantFields(c.instant),fraction:c.fields.fraction}:m?{...n.instantFields(m),fraction:c.fields.fraction}:c.fields;return Ee(i,l,n,c.instant??m)}}function Pe(e,t){const r=t.presentation.mode==="auto"?t.presentation.styles:u("Automatic raw temporal formatting requires styles.");if(e.valueKind==="date"){const c=new Intl.DateTimeFormat(t.locale,{calendar:"gregory",timeZone:"UTC",dateStyle:r.dateStyle});return m=>c.format(E(m.fields))}const a=e.valueKind==="instant",i=!a&&r.dateTime.timeStyle==="long"?"medium":r.dateTime.timeStyle,n=new Intl.DateTimeFormat(t.locale,{calendar:"gregory",timeZone:a||e.valueKind==="wall_datetime"&&t.sourceTimezone?t.calendarTimezone:"UTC",dateStyle:r.dateTime.dateStyle,timeStyle:i});return c=>a?n.format(c.instant):e.valueKind==="wall_datetime"&&t.sourceTimezone?n.format(J(c.fields,t.sourceTimezone)):n.format(E(c.fields))}function K(e,t,r){return{ok:!1,text:e,diagnostic:{code:r,message:`Raw temporal ${t.valueKind} value is ${r==="invalid_raw_temporal_value"?"malformed":"out of range"}.`}}}function X(e){const t=te.parseRawTemporalValueMetadata(e.metadata),r=$(e.format),a=r.presentation.mode==="auto"?Pe(t,r):Me(t,r,r.presentation.dialect,r.presentation.pattern);return i=>{if(i===null)return{ok:!0,text:"",status:"empty"};const n=ze(i,t.valueKind);return n.status==="invalid_shape"?K(i,t,"invalid_raw_temporal_value"):n.status==="out_of_range"?K(i,t,"out_of_range_raw_temporal_value"):{ok:!0,text:a(n),status:"formatted"}}}function $e(e){return X({metadata:e.metadata,format:e.format})(e.value)}exports.RawTemporalFormatContractError=S;exports.assertRawTemporalChunkClassificationAgreement=Te;exports.classifyDeclaredSqlTemporalColumn=ve;exports.createRawTemporalChunkClassificationEvidence=xe;exports.formatCurrency=R;exports.formatNumber=z;exports.formatNumberCustom=ce;exports.formatNumberWithColumnSettings=ie;exports.formatNumericCanonical=O;exports.formatPercent=M;exports.formatRawTemporalValue=$e;exports.formatScientific=P;exports.parseNumericCanonicalFormat=G;exports.parseRawTemporalChunkClassificationEvidence=Y;exports.parseResolvedNumericCanonicalFormat=me;exports.parseResolvedRawTemporalFormat=$;exports.prepareRawTemporalFormatter=X;exports.resolveCurrencyFractionDigits=Z;exports.resolveNumericPresentation=le;exports.resolveRawTemporalFormat=Se;exports.validateCardExportNumericPresentationSnapshot=ue;exports.validateRawTemporalPattern=Re;
|
package/dist/chunks/{raw-temporal-contract-Bg1mtRGE.cjs → raw-temporal-contract-B3YGcvzw.cjs}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var l=Object.defineProperty;var i=(a,e,t)=>e in a?l(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t;var n=(a,e,t)=>i(a,typeof e!="symbol"?e+"":e,t);const s=require("./validators-
|
|
1
|
+
"use strict";var l=Object.defineProperty;var i=(a,e,t)=>e in a?l(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t;var n=(a,e,t)=>i(a,typeof e!="symbol"?e+"":e,t);const s=require("./validators-CueUwVE4.cjs");class r extends Error{constructor(t){super(t);n(this,"code");this.name="RawTemporalMetadataContractError",this.code=s.RAW_TEMPORAL_CONTRACT_ERROR_CODES.invalidMetadata}}function m(a){if(a===null||typeof a!="object"||Array.isArray(a))return!1;const e=Object.getPrototypeOf(a);return e===null||e===Object.prototype}function d(a){if(!m(a))throw new r("Raw temporal metadata must be an object.");const e=Object.keys(a);if(e.length!==2||!e.includes("kind")||!e.includes("valueKind"))throw new r("Raw temporal metadata must contain only kind and valueKind.");if(a.kind!=="raw_temporal")throw new r("Raw temporal metadata kind must be raw_temporal.");if(a.valueKind!=="date"&&a.valueKind!=="wall_datetime"&&a.valueKind!=="instant")throw new r("Raw temporal valueKind must be date, wall_datetime, or instant.");return{kind:"raw_temporal",valueKind:a.valueKind}}function w(a,e){if(!a.rawTemporal){if(e.metadataRequired)throw new r("Activated raw temporal result is missing metadata.");return}if(a.temporalBucket)throw new r("A result column cannot carry both raw and grouped temporal metadata.");const t=d(a.rawTemporal),o=t.valueKind==="date"?"date":"datetime";if(a.dataType!==o)throw new r(`${t.valueKind} raw temporal values require dataType ${o}.`);return t}exports.RawTemporalMetadataContractError=r;exports.parseRawTemporalValueMetadata=d;exports.validateRawTemporalResultColumn=w;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
var d = Object.defineProperty;
|
|
2
2
|
var i = (a, e, t) => e in a ? d(a, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : a[e] = t;
|
|
3
3
|
var n = (a, e, t) => i(a, typeof e != "symbol" ? e + "" : e, t);
|
|
4
|
-
import { R as l } from "./validators-
|
|
4
|
+
import { R as l } from "./validators-DgmJaRF4.js";
|
|
5
5
|
class r extends Error {
|
|
6
6
|
constructor(t) {
|
|
7
7
|
super(t);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";const e=require("react/jsx-runtime"),o=require("react"),d=require("./index-FusXwvom.cjs"),s=require("./switch-CatLIoK-.cjs"),V=require("./report-runtime-context-Bb0ejvVq.cjs");require("./x-B6ghREd2.cjs");require("./constants-BMfm1XgO.cjs");require("./validators-4dRtYUI1.cjs");require("./matrix-operation-contract-BiUMcd6G.cjs");const L=require("../value-format-preferences/index.cjs");function G(a={}){const{authToken:c,tokenProps:t}=d.useSemaphorContext(),m=s.useDashboardStore(p=>p.actions.applyResolvedCalendarPreferences),r=a.enabled??!0,i=(c==null?void 0:c.accessToken)??null,h=(t==null?void 0:t.apiServiceUrl)??null,[g,S]=o.useState(!1),[b,C]=o.useState(!1),[f,j]=o.useState(!1),[T,x]=o.useState(null),[w,P]=o.useState(null),v=o.useRef(i);v.current=i,o.useEffect(()=>{P(null),x(null),S(!1),C(!1),j(!1)},[i]);const N=o.useCallback(async p=>{const n=V.parseCalendarPreferencesResponse(await p.json());if(!n.ok)throw new Error("Calendar preferences response is invalid");return n.value},[]),k=o.useCallback(async()=>{if(!r||!i||!h)return;const p=i;S(!0),x(null);try{const n=await fetch(`${h}/v1/user-preferences/calendar`,{method:"GET",headers:{Authorization:`Bearer ${i}`}});if(!n.ok){const y=await n.json().catch(()=>({}));throw new Error(y.error||"Failed to fetch preferences")}const l=await N(n);v.current===p&&P(l)}catch(n){v.current===p&&x(n instanceof Error?n.message:"Unknown error")}finally{v.current===p&&S(!1)}},[i,h,r,N]);o.useEffect(()=>{r&&k()},[r,k]);const E=o.useCallback(async p=>{if(!i||!h)return x("Not authenticated"),!1;const n=i;C(!0),x(null);try{const l=await fetch(`${h}/v1/user-preferences/calendar`,{method:"PATCH",headers:{"Content-Type":"application/json",Authorization:`Bearer ${i}`},body:JSON.stringify(p)});if(!l.ok){const D=await l.json().catch(()=>({}));throw new Error(D.error||"Failed to update preferences")}const y=await N(l);return v.current!==n?!1:(P(y),m(y.resolved,y.sources),!0)}catch(l){return v.current===n&&x(l instanceof Error?l.message:"Unknown error"),!1}finally{v.current===n&&C(!1)}},[i,h,m,N]),A=o.useCallback(async()=>{if(!i||!h)return x("Not authenticated"),!1;const p=i;j(!0),x(null);try{const n=await fetch(`${h}/v1/user-preferences/calendar`,{method:"DELETE",headers:{Authorization:`Bearer ${i}`}});if(!n.ok){const y=await n.json().catch(()=>({}));throw new Error(y.error||"Failed to clear preferences")}const l=await N(n);return v.current!==p?!1:(P(l),m(l.resolved,l.sources),!0)}catch(n){return v.current===p&&x(n instanceof Error?n.message:"Unknown error"),!1}finally{v.current===p&&j(!1)}},[i,h,m,N]);return{preferences:w,isLoading:g,isSaving:b,isClearing:f,error:T,updatePreferences:E,clearPreferences:A,refetch:k}}const F=[{value:"America/New_York",label:"Eastern Time (US & Canada)"},{value:"America/Chicago",label:"Central Time (US & Canada)"},{value:"America/Denver",label:"Mountain Time (US & Canada)"},{value:"America/Los_Angeles",label:"Pacific Time (US & Canada)"},{value:"America/Phoenix",label:"Arizona"},{value:"America/Anchorage",label:"Alaska"},{value:"Pacific/Honolulu",label:"Hawaii"},{value:"Europe/London",label:"London"},{value:"Europe/Paris",label:"Paris, Berlin, Rome"},{value:"Asia/Tokyo",label:"Tokyo"},{value:"Asia/Shanghai",label:"Beijing, Shanghai"},{value:"Asia/Kolkata",label:"Mumbai, New Delhi"},{value:"Australia/Sydney",label:"Sydney"},{value:"UTC",label:"UTC"}],B=[{value:0,label:"Sunday"},{value:1,label:"Monday"},{value:6,label:"Saturday"}],R="text-[10px] font-medium uppercase tracking-[0.08em] text-muted-foreground";function W(){try{const a=Intl;if(a.supportedValuesOf)return a.supportedValuesOf("timeZone")}catch{}return F.map(a=>a.value)}function H(a){if(!a)return"default";if(a.tz!==a.weekStart)return"inherited";switch(a.tz){case"viewer_tenant":return"tenant";case"viewer_organization":return"organization";case"system_default":return"system";case"session_initial":return"embedded";default:return"default"}}function U(a){const c=F.find(t=>t.value===a);return c?c.label:a}function K(a){const c=B.find(t=>t.value===a);return c?c.label:String(a)}function J({active:a,onClose:c}){const{preferences:t,isLoading:m,isSaving:r,isClearing:i,updatePreferences:h,clearPreferences:g}=G({enabled:a}),S=d.useCalendarContext(),b=(t==null?void 0:t.resolved.tz)||(S==null?void 0:S.tz)||"UTC",C=(t==null?void 0:t.resolved.weekStart)??(S==null?void 0:S.weekStart)??1,[f,j]=o.useState((t==null?void 0:t.stored)===null),[T,x]=o.useState(!1),[w,P]=o.useState(b),[v,N]=o.useState(C),[k,E]=o.useState(!1),A=o.useMemo(()=>W(),[]),p=o.useMemo(()=>A.filter(u=>!F.some(M=>M.value===u)),[A]),n=o.useMemo(()=>U(w),[w]),l=t!=null&&t.inherited?U(t.inherited.tz):"UTC",y=t!=null&&t.inherited?K(t.inherited.weekStart):"Monday",D=H(t==null?void 0:t.inheritedSources);o.useEffect(()=>{if(!a){x(!1);return}T||(t&&j(t.stored===null),P(b),N(C))},[a,T,t,b,C]);const O=async()=>{if(m){s.ue.error("Preferences are still loading. Please try again.");return}f?await g()?(s.ue.success("Now using default settings."),c()):s.ue.error("Failed to save preferences. Please try again."):await h({tz:w,weekStart:v})?(s.ue.success("Preferences saved."),c()):s.ue.error("Failed to save preferences. Please try again.")},_=()=>{c()},z=r||i,$=z||m;return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-4 py-1",children:[e.jsxs(d.RadioGroup,{value:f?"defaults":"custom",onValueChange:u=>{x(!0),j(u==="defaults")},className:"space-y-0.5",children:[e.jsxs("label",{htmlFor:"mode-defaults",className:s.cn("flex cursor-pointer items-start gap-2 rounded-control px-2 py-1.5 hover:bg-muted/50",f&&"bg-muted/50"),onClick:()=>{x(!0),j(!0)},children:[e.jsx(d.RadioGroupItem,{value:"defaults",id:"mode-defaults",className:"mt-0.5"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("p",{className:"text-[13px] font-medium text-foreground",children:["Use ",D," defaults"]}),e.jsxs("p",{className:"text-[12px] text-muted-foreground",children:[l,", week starts ",y]})]})]}),e.jsxs("label",{htmlFor:"mode-custom",className:s.cn("flex cursor-pointer items-start gap-2 rounded-control px-2 py-1.5 hover:bg-muted/50",!f&&"bg-muted/50"),onClick:()=>{x(!0),j(!1)},children:[e.jsx(d.RadioGroupItem,{value:"custom",id:"mode-custom",className:"mt-0.5"}),e.jsx("p",{className:"flex-1 text-[13px] font-medium text-foreground",children:"Use custom settings"})]})]}),e.jsxs("div",{className:s.cn("space-y-4 border-t border-border/60 pt-4 transition-opacity",f&&"pointer-events-none opacity-50"),children:[e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(s.Label,{className:R,children:"Timezone"}),e.jsxs(s.Popover,{open:k,onOpenChange:E,modal:!0,children:[e.jsx(s.PopoverTrigger,{asChild:!0,children:e.jsxs(s.Button,{variant:"outline",size:"xs",role:"combobox","aria-expanded":k,className:"w-full justify-between text-[12px] font-normal",disabled:f,children:[e.jsx("span",{className:"truncate",children:n}),e.jsx(d.ChevronsUpDown,{className:"ml-2 h-3.5 w-3.5 shrink-0 opacity-50"})]})}),e.jsx(s.PopoverContent,{className:"z-50 w-[--radix-popover-trigger-width] p-0",align:"start",children:e.jsxs(d.Command,{className:"overflow-visible",children:[e.jsx(d.CommandInput,{placeholder:"Search timezones…"}),e.jsxs(d.CommandList,{children:[e.jsx(d.CommandEmpty,{children:"No timezone found."}),e.jsx(d.CommandGroup,{heading:"Common",children:F.map(u=>e.jsxs(d.CommandItem,{value:`${u.value} ${u.label}`,onSelect:()=>{x(!0),P(u.value),E(!1)},children:[e.jsx(s.Check,{className:s.cn("h-3.5 w-3.5",w===u.value?"opacity-100":"opacity-0")}),e.jsx("span",{className:"flex-1",children:u.label}),e.jsx("span",{className:"text-[11px] text-muted-foreground",children:u.value})]},u.value))}),e.jsx(d.CommandSeparator,{}),e.jsx(d.CommandGroup,{heading:"All timezones",children:p.map(u=>e.jsxs(d.CommandItem,{value:u,onSelect:()=>{x(!0),P(u),E(!1)},children:[e.jsx(s.Check,{className:s.cn("h-3.5 w-3.5",w===u?"opacity-100":"opacity-0")}),u]},u))})]})]})})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(s.Label,{className:R,children:"Week starts on"}),e.jsx(d.RadioGroup,{value:String(v),onValueChange:u=>{x(!0),N(Number(u))},className:"flex gap-4",disabled:f,children:B.map(u=>e.jsxs("label",{htmlFor:`week-start-${u.value}`,className:s.cn("flex cursor-pointer items-center gap-2 text-[13px]",f&&"cursor-not-allowed"),children:[e.jsx(d.RadioGroupItem,{value:String(u.value),id:`week-start-${u.value}`,disabled:f}),u.label]},u.value))})]})]})]}),e.jsxs(d.DialogFooter,{children:[e.jsx(s.Button,{variant:"outline",size:"xs",onClick:_,disabled:z,children:"Cancel"}),e.jsx(s.Button,{size:"xs",onClick:O,disabled:$,children:z?e.jsxs(e.Fragment,{children:[e.jsx(s.LoaderCircle,{className:"h-3.5 w-3.5 animate-spin"}),"Saving…"]}):"Save"})]})]})}function Y(a={}){const{authToken:c,tokenProps:t}=d.useSemaphorContext(),m=s.useDashboardStore(n=>n.actions.applyResolvedValueFormatPreferences),r=a.enabled??!0,i=(c==null?void 0:c.accessToken)??null,h=(t==null?void 0:t.apiServiceUrl)??null,g=o.useRef(i);g.current=i;const[S,b]=o.useState(null),[C,f]=o.useState(!1),[j,T]=o.useState(!1),[x,w]=o.useState(!1),[P,v]=o.useState(null);o.useEffect(()=>{b(null),v(null),f(!1),T(!1),w(!1)},[i]);const N=o.useCallback(async n=>{const l=L.parseValueFormatPreferencesResponse(await n.json());if(!l.ok)throw new Error("Value format preferences response is invalid");return l.value},[]),k=o.useCallback(async(n,l)=>{if(!i||!h)throw new Error("Not authenticated");const y=await fetch(`${h}/v1/user-preferences/value-format`,{method:n,headers:{Authorization:`Bearer ${i}`,...l?{"Content-Type":"application/json"}:{}},body:l?JSON.stringify(l):void 0});if(!y.ok){const D=await y.json().catch(()=>({}));throw new Error(D.error||"Failed to update preferences")}return N(y)},[i,h,N]),E=o.useCallback(async()=>{if(!r||!i||!h)return;const n=i;f(!0),v(null);try{const l=await k("GET");g.current===n&&b(l)}catch(l){g.current===n&&v(l instanceof Error?l.message:"Unknown error")}finally{g.current===n&&f(!1)}},[i,h,r,k]);o.useEffect(()=>{r&&E()},[r,E]);const A=o.useCallback(async n=>{const l=i;T(!0),v(null);try{const y=await k("PATCH",n);return g.current!==l?!1:(b(y),m(y.resolved,y.sources),!0)}catch(y){return g.current===l&&v(y instanceof Error?y.message:"Unknown error"),!1}finally{g.current===l&&T(!1)}},[i,m,k]),p=o.useCallback(async()=>{const n=i;w(!0),v(null);try{const l=await k("DELETE");return g.current!==n?!1:(b(l),m(l.resolved,l.sources),!0)}catch(l){return g.current===n&&v(l instanceof Error?l.message:"Unknown error"),!1}finally{g.current===n&&w(!1)}},[i,m,k]);return{preferences:S,isLoading:C,isSaving:j,isClearing:x,error:P,updatePreferences:A,clearPreferences:p,refetch:E}}const I=["locale","dateStyle","dateTime.dateStyle","dateTime.timeStyle","defaultCurrency"];function q(a,c){var t,m;switch(c){case"locale":return a==null?void 0:a.locale;case"dateStyle":return a==null?void 0:a.dateStyle;case"dateTime.dateStyle":return(t=a==null?void 0:a.dateTime)==null?void 0:t.dateStyle;case"dateTime.timeStyle":return(m=a==null?void 0:a.dateTime)==null?void 0:m.timeStyle;case"defaultCurrency":return a==null?void 0:a.defaultCurrency}}function Z(a){var m,r;const c=(m=a==null?void 0:a.dateTime)==null?void 0:m.dateStyle,t=(r=a==null?void 0:a.dateTime)==null?void 0:r.timeStyle;return{locale:a==null?void 0:a.locale,dateStyle:a==null?void 0:a.dateStyle,dateTime:c===void 0&&t===void 0?void 0:{dateStyle:c,timeStyle:t},defaultCurrency:a==null?void 0:a.defaultCurrency}}function Q({active:a,onClose:c}){var g,S,b,C,f,j,T;const{preferences:t,isLoading:m,isSaving:r,updatePreferences:i}=Y({enabled:a});if(!a)return null;if(!t)return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"py-2",children:e.jsx("div",{className:"flex min-h-36 items-center justify-center text-[12px] text-muted-foreground",children:m?"Loading preferences…":"Preferences unavailable."})}),e.jsxs(d.DialogFooter,{className:"justify-between sm:justify-between",children:[e.jsx(s.Button,{variant:"ghost",size:"xs",disabled:!0,children:"Reset display formats"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(s.Button,{variant:"outline",size:"xs",onClick:c,children:"Cancel"}),e.jsx(s.Button,{size:"xs",disabled:!0,children:"Save"})]})]})]});const h=[((g=t.stored)==null?void 0:g.locale)??"",((S=t.stored)==null?void 0:S.dateStyle)??"",((C=(b=t.stored)==null?void 0:b.dateTime)==null?void 0:C.dateStyle)??"",((j=(f=t.stored)==null?void 0:f.dateTime)==null?void 0:j.timeStyle)??"",((T=t.stored)==null?void 0:T.defaultCurrency)??""].join(":");return e.jsx(X,{preferences:t,isSaving:r,updatePreferences:i,onClose:c},h)}function X({preferences:a,isSaving:c,updatePreferences:t,onClose:m}){var b,C;const[r,i]=o.useState(()=>Z(a.stored)),h=(r.locale===void 0||L.canonicalizeSupportedLocale(r.locale)!==void 0)&&(r.defaultCurrency===void 0||L.canonicalizeSupportedCurrencyCode(r.defaultCurrency)!==void 0)&&(r.dateStyle===void 0||["short","medium","long"].includes(r.dateStyle))&&(((b=r.dateTime)==null?void 0:b.dateStyle)===void 0||["short","medium","long"].includes(r.dateTime.dateStyle))&&(((C=r.dateTime)==null?void 0:C.timeStyle)===void 0||["short","medium","long"].includes(r.dateTime.timeStyle)),g=async()=>{const f={...r.locale!==void 0?{locale:r.locale}:{},...r.dateStyle!==void 0?{dateStyle:r.dateStyle}:{},...r.dateTime?{dateTime:{...r.dateTime}}:{},...r.defaultCurrency!==void 0?{defaultCurrency:r.defaultCurrency}:{}},j=I.filter(w=>q(r,w)===void 0&&q(a.stored,w)!==void 0),T={...Object.keys(f).length>0?{set:f}:{},...j.length>0?{clear:j}:{}};(Object.keys(T).length===0?!0:await t(T))?(s.ue.success("Display format preferences saved."),m()):s.ue.error("Failed to save preferences. Please try again.")},S=async()=>{await t({clear:[...I]})?(s.ue.success("Display format preferences reset."),m()):s.ue.error("Failed to reset display format preferences. Please try again.")};return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"py-2",children:e.jsx(d.DisplayFormatPreferencesFields,{value:r,inherited:a.inherited,inheritedSources:a.inheritedSources,onChange:i,disabled:c})}),e.jsxs(d.DialogFooter,{className:"justify-between sm:justify-between",children:[e.jsx(s.Button,{variant:"ghost",size:"xs",onClick:S,disabled:c||a.stored===null,children:"Reset display formats"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(s.Button,{variant:"outline",size:"xs",onClick:m,disabled:c,children:"Cancel"}),e.jsx(s.Button,{size:"xs",onClick:g,disabled:c||!h,children:c?e.jsxs(e.Fragment,{children:[e.jsx(s.LoaderCircle,{className:"h-3.5 w-3.5 animate-spin"}),"Saving…"]}):"Save"})]})]})]})}function ee({open:a,onOpenChange:c}){const[t,m]=o.useState("display"),r=()=>c(!1);return e.jsx(d.Dialog,{open:a,onOpenChange:c,children:e.jsxs(d.DialogContent,{className:"rounded-control border-border/60 sm:max-w-[440px] sm:rounded-control",children:[e.jsxs(d.DialogHeader,{children:[e.jsx(d.DialogTitle,{className:"text-[15px]",children:"Report preferences"}),e.jsx(d.DialogDescription,{className:"text-[13px] leading-5",children:"Set how values and Calendar periods appear for you."})]}),e.jsxs(s.Tabs,{value:t,onValueChange:m,children:[e.jsxs(s.TabsList,{variant:"underline",className:"w-full justify-start",children:[e.jsx(s.TabsTrigger,{value:"display",children:"Display formats"}),e.jsx(s.TabsTrigger,{value:"calendar",children:"Calendar"})]}),e.jsx(s.TabsContent,{value:"display",children:e.jsx(Q,{active:a&&t==="display",onClose:r})}),e.jsx(s.TabsContent,{value:"calendar",children:e.jsx(J,{active:a&&t==="calendar",onClose:r})})]})]})})}exports.ReportPreferencesDialog=ee;
|
|
1
|
+
"use strict";const e=require("react/jsx-runtime"),o=require("react"),d=require("./index-a9nBmD-v.cjs"),s=require("./switch-COujiMcB.cjs"),V=require("./report-runtime-context-C-As8sq_.cjs");require("./x-B6ghREd2.cjs");require("./constants-C-GvudXp.cjs");require("./validators-CueUwVE4.cjs");require("./matrix-operation-contract-CbavkrJj.cjs");const L=require("../value-format-preferences/index.cjs");function G(a={}){const{authToken:c,tokenProps:t}=d.useSemaphorContext(),m=s.useDashboardStore(p=>p.actions.applyResolvedCalendarPreferences),r=a.enabled??!0,i=(c==null?void 0:c.accessToken)??null,h=(t==null?void 0:t.apiServiceUrl)??null,[g,S]=o.useState(!1),[b,C]=o.useState(!1),[f,j]=o.useState(!1),[T,x]=o.useState(null),[w,P]=o.useState(null),v=o.useRef(i);v.current=i,o.useEffect(()=>{P(null),x(null),S(!1),C(!1),j(!1)},[i]);const N=o.useCallback(async p=>{const n=V.parseCalendarPreferencesResponse(await p.json());if(!n.ok)throw new Error("Calendar preferences response is invalid");return n.value},[]),k=o.useCallback(async()=>{if(!r||!i||!h)return;const p=i;S(!0),x(null);try{const n=await fetch(`${h}/v1/user-preferences/calendar`,{method:"GET",headers:{Authorization:`Bearer ${i}`}});if(!n.ok){const y=await n.json().catch(()=>({}));throw new Error(y.error||"Failed to fetch preferences")}const l=await N(n);v.current===p&&P(l)}catch(n){v.current===p&&x(n instanceof Error?n.message:"Unknown error")}finally{v.current===p&&S(!1)}},[i,h,r,N]);o.useEffect(()=>{r&&k()},[r,k]);const E=o.useCallback(async p=>{if(!i||!h)return x("Not authenticated"),!1;const n=i;C(!0),x(null);try{const l=await fetch(`${h}/v1/user-preferences/calendar`,{method:"PATCH",headers:{"Content-Type":"application/json",Authorization:`Bearer ${i}`},body:JSON.stringify(p)});if(!l.ok){const D=await l.json().catch(()=>({}));throw new Error(D.error||"Failed to update preferences")}const y=await N(l);return v.current!==n?!1:(P(y),m(y.resolved,y.sources),!0)}catch(l){return v.current===n&&x(l instanceof Error?l.message:"Unknown error"),!1}finally{v.current===n&&C(!1)}},[i,h,m,N]),A=o.useCallback(async()=>{if(!i||!h)return x("Not authenticated"),!1;const p=i;j(!0),x(null);try{const n=await fetch(`${h}/v1/user-preferences/calendar`,{method:"DELETE",headers:{Authorization:`Bearer ${i}`}});if(!n.ok){const y=await n.json().catch(()=>({}));throw new Error(y.error||"Failed to clear preferences")}const l=await N(n);return v.current!==p?!1:(P(l),m(l.resolved,l.sources),!0)}catch(n){return v.current===p&&x(n instanceof Error?n.message:"Unknown error"),!1}finally{v.current===p&&j(!1)}},[i,h,m,N]);return{preferences:w,isLoading:g,isSaving:b,isClearing:f,error:T,updatePreferences:E,clearPreferences:A,refetch:k}}const F=[{value:"America/New_York",label:"Eastern Time (US & Canada)"},{value:"America/Chicago",label:"Central Time (US & Canada)"},{value:"America/Denver",label:"Mountain Time (US & Canada)"},{value:"America/Los_Angeles",label:"Pacific Time (US & Canada)"},{value:"America/Phoenix",label:"Arizona"},{value:"America/Anchorage",label:"Alaska"},{value:"Pacific/Honolulu",label:"Hawaii"},{value:"Europe/London",label:"London"},{value:"Europe/Paris",label:"Paris, Berlin, Rome"},{value:"Asia/Tokyo",label:"Tokyo"},{value:"Asia/Shanghai",label:"Beijing, Shanghai"},{value:"Asia/Kolkata",label:"Mumbai, New Delhi"},{value:"Australia/Sydney",label:"Sydney"},{value:"UTC",label:"UTC"}],B=[{value:0,label:"Sunday"},{value:1,label:"Monday"},{value:6,label:"Saturday"}],R="text-[10px] font-medium uppercase tracking-[0.08em] text-muted-foreground";function W(){try{const a=Intl;if(a.supportedValuesOf)return a.supportedValuesOf("timeZone")}catch{}return F.map(a=>a.value)}function H(a){if(!a)return"default";if(a.tz!==a.weekStart)return"inherited";switch(a.tz){case"viewer_tenant":return"tenant";case"viewer_organization":return"organization";case"system_default":return"system";case"session_initial":return"embedded";default:return"default"}}function U(a){const c=F.find(t=>t.value===a);return c?c.label:a}function K(a){const c=B.find(t=>t.value===a);return c?c.label:String(a)}function J({active:a,onClose:c}){const{preferences:t,isLoading:m,isSaving:r,isClearing:i,updatePreferences:h,clearPreferences:g}=G({enabled:a}),S=d.useCalendarContext(),b=(t==null?void 0:t.resolved.tz)||(S==null?void 0:S.tz)||"UTC",C=(t==null?void 0:t.resolved.weekStart)??(S==null?void 0:S.weekStart)??1,[f,j]=o.useState((t==null?void 0:t.stored)===null),[T,x]=o.useState(!1),[w,P]=o.useState(b),[v,N]=o.useState(C),[k,E]=o.useState(!1),A=o.useMemo(()=>W(),[]),p=o.useMemo(()=>A.filter(u=>!F.some(M=>M.value===u)),[A]),n=o.useMemo(()=>U(w),[w]),l=t!=null&&t.inherited?U(t.inherited.tz):"UTC",y=t!=null&&t.inherited?K(t.inherited.weekStart):"Monday",D=H(t==null?void 0:t.inheritedSources);o.useEffect(()=>{if(!a){x(!1);return}T||(t&&j(t.stored===null),P(b),N(C))},[a,T,t,b,C]);const O=async()=>{if(m){s.ue.error("Preferences are still loading. Please try again.");return}f?await g()?(s.ue.success("Now using default settings."),c()):s.ue.error("Failed to save preferences. Please try again."):await h({tz:w,weekStart:v})?(s.ue.success("Preferences saved."),c()):s.ue.error("Failed to save preferences. Please try again.")},_=()=>{c()},z=r||i,$=z||m;return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-4 py-1",children:[e.jsxs(d.RadioGroup,{value:f?"defaults":"custom",onValueChange:u=>{x(!0),j(u==="defaults")},className:"space-y-0.5",children:[e.jsxs("label",{htmlFor:"mode-defaults",className:s.cn("flex cursor-pointer items-start gap-2 rounded-control px-2 py-1.5 hover:bg-muted/50",f&&"bg-muted/50"),onClick:()=>{x(!0),j(!0)},children:[e.jsx(d.RadioGroupItem,{value:"defaults",id:"mode-defaults",className:"mt-0.5"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("p",{className:"text-[13px] font-medium text-foreground",children:["Use ",D," defaults"]}),e.jsxs("p",{className:"text-[12px] text-muted-foreground",children:[l,", week starts ",y]})]})]}),e.jsxs("label",{htmlFor:"mode-custom",className:s.cn("flex cursor-pointer items-start gap-2 rounded-control px-2 py-1.5 hover:bg-muted/50",!f&&"bg-muted/50"),onClick:()=>{x(!0),j(!1)},children:[e.jsx(d.RadioGroupItem,{value:"custom",id:"mode-custom",className:"mt-0.5"}),e.jsx("p",{className:"flex-1 text-[13px] font-medium text-foreground",children:"Use custom settings"})]})]}),e.jsxs("div",{className:s.cn("space-y-4 border-t border-border/60 pt-4 transition-opacity",f&&"pointer-events-none opacity-50"),children:[e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(s.Label,{className:R,children:"Timezone"}),e.jsxs(s.Popover,{open:k,onOpenChange:E,modal:!0,children:[e.jsx(s.PopoverTrigger,{asChild:!0,children:e.jsxs(s.Button,{variant:"outline",size:"xs",role:"combobox","aria-expanded":k,className:"w-full justify-between text-[12px] font-normal",disabled:f,children:[e.jsx("span",{className:"truncate",children:n}),e.jsx(d.ChevronsUpDown,{className:"ml-2 h-3.5 w-3.5 shrink-0 opacity-50"})]})}),e.jsx(s.PopoverContent,{className:"z-50 w-[--radix-popover-trigger-width] p-0",align:"start",children:e.jsxs(d.Command,{className:"overflow-visible",children:[e.jsx(d.CommandInput,{placeholder:"Search timezones…"}),e.jsxs(d.CommandList,{children:[e.jsx(d.CommandEmpty,{children:"No timezone found."}),e.jsx(d.CommandGroup,{heading:"Common",children:F.map(u=>e.jsxs(d.CommandItem,{value:`${u.value} ${u.label}`,onSelect:()=>{x(!0),P(u.value),E(!1)},children:[e.jsx(s.Check,{className:s.cn("h-3.5 w-3.5",w===u.value?"opacity-100":"opacity-0")}),e.jsx("span",{className:"flex-1",children:u.label}),e.jsx("span",{className:"text-[11px] text-muted-foreground",children:u.value})]},u.value))}),e.jsx(d.CommandSeparator,{}),e.jsx(d.CommandGroup,{heading:"All timezones",children:p.map(u=>e.jsxs(d.CommandItem,{value:u,onSelect:()=>{x(!0),P(u),E(!1)},children:[e.jsx(s.Check,{className:s.cn("h-3.5 w-3.5",w===u?"opacity-100":"opacity-0")}),u]},u))})]})]})})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(s.Label,{className:R,children:"Week starts on"}),e.jsx(d.RadioGroup,{value:String(v),onValueChange:u=>{x(!0),N(Number(u))},className:"flex gap-4",disabled:f,children:B.map(u=>e.jsxs("label",{htmlFor:`week-start-${u.value}`,className:s.cn("flex cursor-pointer items-center gap-2 text-[13px]",f&&"cursor-not-allowed"),children:[e.jsx(d.RadioGroupItem,{value:String(u.value),id:`week-start-${u.value}`,disabled:f}),u.label]},u.value))})]})]})]}),e.jsxs(d.DialogFooter,{children:[e.jsx(s.Button,{variant:"outline",size:"xs",onClick:_,disabled:z,children:"Cancel"}),e.jsx(s.Button,{size:"xs",onClick:O,disabled:$,children:z?e.jsxs(e.Fragment,{children:[e.jsx(s.LoaderCircle,{className:"h-3.5 w-3.5 animate-spin"}),"Saving…"]}):"Save"})]})]})}function Y(a={}){const{authToken:c,tokenProps:t}=d.useSemaphorContext(),m=s.useDashboardStore(n=>n.actions.applyResolvedValueFormatPreferences),r=a.enabled??!0,i=(c==null?void 0:c.accessToken)??null,h=(t==null?void 0:t.apiServiceUrl)??null,g=o.useRef(i);g.current=i;const[S,b]=o.useState(null),[C,f]=o.useState(!1),[j,T]=o.useState(!1),[x,w]=o.useState(!1),[P,v]=o.useState(null);o.useEffect(()=>{b(null),v(null),f(!1),T(!1),w(!1)},[i]);const N=o.useCallback(async n=>{const l=L.parseValueFormatPreferencesResponse(await n.json());if(!l.ok)throw new Error("Value format preferences response is invalid");return l.value},[]),k=o.useCallback(async(n,l)=>{if(!i||!h)throw new Error("Not authenticated");const y=await fetch(`${h}/v1/user-preferences/value-format`,{method:n,headers:{Authorization:`Bearer ${i}`,...l?{"Content-Type":"application/json"}:{}},body:l?JSON.stringify(l):void 0});if(!y.ok){const D=await y.json().catch(()=>({}));throw new Error(D.error||"Failed to update preferences")}return N(y)},[i,h,N]),E=o.useCallback(async()=>{if(!r||!i||!h)return;const n=i;f(!0),v(null);try{const l=await k("GET");g.current===n&&b(l)}catch(l){g.current===n&&v(l instanceof Error?l.message:"Unknown error")}finally{g.current===n&&f(!1)}},[i,h,r,k]);o.useEffect(()=>{r&&E()},[r,E]);const A=o.useCallback(async n=>{const l=i;T(!0),v(null);try{const y=await k("PATCH",n);return g.current!==l?!1:(b(y),m(y.resolved,y.sources),!0)}catch(y){return g.current===l&&v(y instanceof Error?y.message:"Unknown error"),!1}finally{g.current===l&&T(!1)}},[i,m,k]),p=o.useCallback(async()=>{const n=i;w(!0),v(null);try{const l=await k("DELETE");return g.current!==n?!1:(b(l),m(l.resolved,l.sources),!0)}catch(l){return g.current===n&&v(l instanceof Error?l.message:"Unknown error"),!1}finally{g.current===n&&w(!1)}},[i,m,k]);return{preferences:S,isLoading:C,isSaving:j,isClearing:x,error:P,updatePreferences:A,clearPreferences:p,refetch:E}}const I=["locale","dateStyle","dateTime.dateStyle","dateTime.timeStyle","defaultCurrency"];function q(a,c){var t,m;switch(c){case"locale":return a==null?void 0:a.locale;case"dateStyle":return a==null?void 0:a.dateStyle;case"dateTime.dateStyle":return(t=a==null?void 0:a.dateTime)==null?void 0:t.dateStyle;case"dateTime.timeStyle":return(m=a==null?void 0:a.dateTime)==null?void 0:m.timeStyle;case"defaultCurrency":return a==null?void 0:a.defaultCurrency}}function Z(a){var m,r;const c=(m=a==null?void 0:a.dateTime)==null?void 0:m.dateStyle,t=(r=a==null?void 0:a.dateTime)==null?void 0:r.timeStyle;return{locale:a==null?void 0:a.locale,dateStyle:a==null?void 0:a.dateStyle,dateTime:c===void 0&&t===void 0?void 0:{dateStyle:c,timeStyle:t},defaultCurrency:a==null?void 0:a.defaultCurrency}}function Q({active:a,onClose:c}){var g,S,b,C,f,j,T;const{preferences:t,isLoading:m,isSaving:r,updatePreferences:i}=Y({enabled:a});if(!a)return null;if(!t)return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"py-2",children:e.jsx("div",{className:"flex min-h-36 items-center justify-center text-[12px] text-muted-foreground",children:m?"Loading preferences…":"Preferences unavailable."})}),e.jsxs(d.DialogFooter,{className:"justify-between sm:justify-between",children:[e.jsx(s.Button,{variant:"ghost",size:"xs",disabled:!0,children:"Reset display formats"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(s.Button,{variant:"outline",size:"xs",onClick:c,children:"Cancel"}),e.jsx(s.Button,{size:"xs",disabled:!0,children:"Save"})]})]})]});const h=[((g=t.stored)==null?void 0:g.locale)??"",((S=t.stored)==null?void 0:S.dateStyle)??"",((C=(b=t.stored)==null?void 0:b.dateTime)==null?void 0:C.dateStyle)??"",((j=(f=t.stored)==null?void 0:f.dateTime)==null?void 0:j.timeStyle)??"",((T=t.stored)==null?void 0:T.defaultCurrency)??""].join(":");return e.jsx(X,{preferences:t,isSaving:r,updatePreferences:i,onClose:c},h)}function X({preferences:a,isSaving:c,updatePreferences:t,onClose:m}){var b,C;const[r,i]=o.useState(()=>Z(a.stored)),h=(r.locale===void 0||L.canonicalizeSupportedLocale(r.locale)!==void 0)&&(r.defaultCurrency===void 0||L.canonicalizeSupportedCurrencyCode(r.defaultCurrency)!==void 0)&&(r.dateStyle===void 0||["short","medium","long"].includes(r.dateStyle))&&(((b=r.dateTime)==null?void 0:b.dateStyle)===void 0||["short","medium","long"].includes(r.dateTime.dateStyle))&&(((C=r.dateTime)==null?void 0:C.timeStyle)===void 0||["short","medium","long"].includes(r.dateTime.timeStyle)),g=async()=>{const f={...r.locale!==void 0?{locale:r.locale}:{},...r.dateStyle!==void 0?{dateStyle:r.dateStyle}:{},...r.dateTime?{dateTime:{...r.dateTime}}:{},...r.defaultCurrency!==void 0?{defaultCurrency:r.defaultCurrency}:{}},j=I.filter(w=>q(r,w)===void 0&&q(a.stored,w)!==void 0),T={...Object.keys(f).length>0?{set:f}:{},...j.length>0?{clear:j}:{}};(Object.keys(T).length===0?!0:await t(T))?(s.ue.success("Display format preferences saved."),m()):s.ue.error("Failed to save preferences. Please try again.")},S=async()=>{await t({clear:[...I]})?(s.ue.success("Display format preferences reset."),m()):s.ue.error("Failed to reset display format preferences. Please try again.")};return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"py-2",children:e.jsx(d.DisplayFormatPreferencesFields,{value:r,inherited:a.inherited,inheritedSources:a.inheritedSources,onChange:i,disabled:c})}),e.jsxs(d.DialogFooter,{className:"justify-between sm:justify-between",children:[e.jsx(s.Button,{variant:"ghost",size:"xs",onClick:S,disabled:c||a.stored===null,children:"Reset display formats"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(s.Button,{variant:"outline",size:"xs",onClick:m,disabled:c,children:"Cancel"}),e.jsx(s.Button,{size:"xs",onClick:g,disabled:c||!h,children:c?e.jsxs(e.Fragment,{children:[e.jsx(s.LoaderCircle,{className:"h-3.5 w-3.5 animate-spin"}),"Saving…"]}):"Save"})]})]})]})}function ee({open:a,onOpenChange:c}){const[t,m]=o.useState("display"),r=()=>c(!1);return e.jsx(d.Dialog,{open:a,onOpenChange:c,children:e.jsxs(d.DialogContent,{className:"rounded-control border-border/60 sm:max-w-[440px] sm:rounded-control",children:[e.jsxs(d.DialogHeader,{children:[e.jsx(d.DialogTitle,{className:"text-[15px]",children:"Report preferences"}),e.jsx(d.DialogDescription,{className:"text-[13px] leading-5",children:"Set how values and Calendar periods appear for you."})]}),e.jsxs(s.Tabs,{value:t,onValueChange:m,children:[e.jsxs(s.TabsList,{variant:"underline",className:"w-full justify-start",children:[e.jsx(s.TabsTrigger,{value:"display",children:"Display formats"}),e.jsx(s.TabsTrigger,{value:"calendar",children:"Calendar"})]}),e.jsx(s.TabsContent,{value:"display",children:e.jsx(Q,{active:a&&t==="display",onClose:r})}),e.jsx(s.TabsContent,{value:"calendar",children:e.jsx(J,{active:a&&t==="calendar",onClose:r})})]})]})})}exports.ReportPreferencesDialog=ee;
|
package/dist/chunks/{report-preferences-dialog-C4bNcqxk.js → report-preferences-dialog-DsjMwa3m.js}
RENAMED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { jsxs as o, Fragment as j, jsx as t } from "react/jsx-runtime";
|
|
2
2
|
import oe, { useState as S, useRef as X, useEffect as U, useCallback as E, useMemo as _ } from "react";
|
|
3
|
-
import { ay as ee, az as ce, aA as B, aB as $, aC as de, g as ue, h as me, i as fe, j as he, k as M, l as H, aD as ve, aE as V, b as ye, aF as pe, aG as ge, aH as Se, aI as be, aJ as Te } from "./index-
|
|
4
|
-
import { u as ae, c as F, O as W, P as we, a as Ce, B as D, b as ke, d as q, L as te, a4 as z, T as xe, F as Ne, G, I as J } from "./switch-
|
|
5
|
-
import { a as Pe } from "./report-runtime-context-
|
|
3
|
+
import { ay as ee, az as ce, aA as B, aB as $, aC as de, g as ue, h as me, i as fe, j as he, k as M, l as H, aD as ve, aE as V, b as ye, aF as pe, aG as ge, aH as Se, aI as be, aJ as Te } from "./index-Ne0-ePdz.js";
|
|
4
|
+
import { u as ae, c as F, O as W, P as we, a as Ce, B as D, b as ke, d as q, L as te, a4 as z, T as xe, F as Ne, G, I as J } from "./switch-BmCGBb2F.js";
|
|
5
|
+
import { a as Pe } from "./report-runtime-context-DTxVBKqP.js";
|
|
6
6
|
import "./x-CXDkqdur.js";
|
|
7
|
-
import "./constants-
|
|
8
|
-
import "./validators-
|
|
9
|
-
import "./matrix-operation-contract-
|
|
7
|
+
import "./constants-BjGBVFbu.js";
|
|
8
|
+
import "./validators-DgmJaRF4.js";
|
|
9
|
+
import "./matrix-operation-contract-4q53iAUW.js";
|
|
10
10
|
import { parseValueFormatPreferencesResponse as Ae, canonicalizeSupportedLocale as Ee, canonicalizeSupportedCurrencyCode as ze } from "../value-format-preferences/index.js";
|
|
11
11
|
function De(e = {}) {
|
|
12
12
|
const { authToken: i, tokenProps: a } = ee(), d = ae(
|
package/dist/chunks/{report-runtime-context-Bb0ejvVq.cjs → report-runtime-context-C-As8sq_.cjs}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";const p=require("../value-format-preferences/index.cjs"),f=require("./validators-
|
|
1
|
+
"use strict";const p=require("../value-format-preferences/index.cjs"),f=require("./validators-CueUwVE4.cjs"),g={tz:"UTC",weekStart:1,anchor:"now"},b=["tz","weekStart","anchor","fiscalCalendar"],E=["kind","yearStartMonth"],w=["calendar","valueFormat","preferenceSources"],T=["calendar","valueFormat"],y=["tz","weekStart"],F=["stored","inherited","inheritedSources","resolved","sources"],z=["locale","dateStyle","dateTime","defaultCurrency"],R=["dateStyle","timeStyle"];function o(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;const a=Object.getPrototypeOf(e);return a===null||Object.getPrototypeOf(a)===null}function n(e,a,r){const t=new Set(a);return Object.keys(e).filter(s=>!t.has(s)).map(s=>({path:r==="$"?s:`${r}.${s}`,code:"unknown_property",message:`Unknown property "${s}"`}))}function _(e){return Number.isInteger(e)&&typeof e=="number"&&e>=0&&e<=6}function d(e,a,r){if(!o(e))return{ok:!1,issues:[{path:a,code:"invalid_type",message:"Calendar preferences must be an object"}]};const t=n(e,["tz","weekStart"],a);return(!r||e.tz!==void 0)&&(typeof e.tz!="string"||!f.isValidIanaTimeZone(e.tz))&&t.push({path:`${a}.tz`,code:"invalid_timezone",message:"tz must be a valid IANA timezone"}),(!r||e.weekStart!==void 0)&&!_(e.weekStart)&&t.push({path:`${a}.weekStart`,code:"invalid_week_start",message:"weekStart must be an integer from 0 to 6"}),t.length?{ok:!1,issues:t}:{ok:!0,value:{...e.tz!==void 0?{tz:e.tz}:{},...e.weekStart!==void 0?{weekStart:e.weekStart}:{}}}}function A(e){if(e==="now")return{ok:!0,value:"now"};if(!o(e))return{ok:!1,issues:[{path:"anchor",code:"invalid_anchor",message:'anchor must be "now" or an object with an ISO timestamp'}]};const a=n(e,["iso"],"anchor"),r=e.iso;return f.parseSemaphorIsoInstant(r)===null&&a.push({path:"anchor.iso",code:"invalid_anchor",message:"anchor.iso must be an ISO timestamp with an explicit offset"}),a.length?{ok:!1,issues:a}:{ok:!0,value:{iso:r}}}function O(e){if(!o(e))return{ok:!1,issues:[{path:"fiscalCalendar",code:"invalid_fiscal_calendar",message:"fiscalCalendar must be an object"}]};const a=n(e,E,"fiscalCalendar");return e.kind!=="month_aligned"&&a.push({path:"fiscalCalendar.kind",code:"invalid_fiscal_calendar",message:'fiscalCalendar.kind must be "month_aligned"'}),(!Number.isInteger(e.yearStartMonth)||typeof e.yearStartMonth!="number"||e.yearStartMonth<1||e.yearStartMonth>12)&&a.push({path:"fiscalCalendar.yearStartMonth",code:"invalid_fiscal_calendar",message:"fiscalCalendar.yearStartMonth must be an integer from 1 to 12"}),a.length?{ok:!1,issues:a}:{ok:!0,value:{kind:"month_aligned",yearStartMonth:e.yearStartMonth}}}function C(e){if(!o(e))return{ok:!1,issues:[{path:"$",code:"invalid_type",message:"Calendar context must be an object"}]};const a=n(e,b,"$");(typeof e.tz!="string"||!f.isValidIanaTimeZone(e.tz))&&a.push({path:"tz",code:"invalid_timezone",message:"tz must be a valid IANA timezone"}),_(e.weekStart)||a.push({path:"weekStart",code:"invalid_week_start",message:"weekStart must be an integer from 0 to 6"});const r=A(e.anchor);r.ok||a.push(...r.issues);let t;if(e.fiscalCalendar!==void 0){const s=O(e.fiscalCalendar);s.ok?t=s.value:a.push(...s.issues)}return a.length||!r.ok?{ok:!1,issues:a}:{ok:!0,value:{tz:e.tz,weekStart:e.weekStart,anchor:r.value,...t?{fiscalCalendar:t}:{}}}}function l(e,a,r){if(!p.isReportPreferenceSource(e)){r.push({path:a,code:"invalid_preference_source",message:"Preference source is invalid"});return}return e}function k(e,a){if(!o(e))return{ok:!1,issues:[{path:a,code:"invalid_type",message:"Calendar preference sources must be an object"}]};const r=n(e,y,a),t=l(e.tz,`${a}.tz`,r),s=l(e.weekStart,`${a}.weekStart`,r);return r.length||!t||!s?{ok:!1,issues:r}:{ok:!0,value:{tz:t,weekStart:s}}}function $(e){if(!o(e))return{ok:!1,issues:[{path:"$",code:"invalid_type",message:"Calendar preference response must be an object"}]};const a=n(e,F,"$"),r=e.stored===null?{ok:!0,value:null}:d(e.stored,"stored",!0),t=d(e.inherited,"inherited",!1),s=k(e.inheritedSources,"inheritedSources"),c=d(e.resolved,"resolved",!1),i=k(e.sources,"sources");for(const u of[r,t,s,c,i])u.ok||a.push(...u.issues);return a.length||!r.ok||!t.ok||!s.ok||!c.ok||!i.ok?{ok:!1,issues:a}:{ok:!0,value:{stored:r.value,inherited:t.value,inheritedSources:s.value,resolved:c.value,sources:i.value}}}function P(e){if(!o(e))return{ok:!1,issues:[{path:"preferenceSources",code:"invalid_type",message:"preferenceSources must be an object"}]};const a=n(e,T,"preferenceSources"),r=e.calendar,t=e.valueFormat;if(o(r)||a.push({path:"preferenceSources.calendar",code:"invalid_type",message:"Calendar preference sources must be an object"}),o(t)||a.push({path:"preferenceSources.valueFormat",code:"invalid_type",message:"Value-format preference sources must be an object"}),!o(r)||!o(t))return{ok:!1,issues:a};a.push(...n(r,y,"preferenceSources.calendar"),...n(t,z,"preferenceSources.valueFormat"));const s=t.dateTime;o(s)?a.push(...n(s,R,"preferenceSources.valueFormat.dateTime")):a.push({path:"preferenceSources.valueFormat.dateTime",code:"invalid_type",message:"Datetime preference sources must be an object"});const c=l(r.tz,"preferenceSources.calendar.tz",a),i=l(r.weekStart,"preferenceSources.calendar.weekStart",a),u=l(t.locale,"preferenceSources.valueFormat.locale",a),m=l(t.dateStyle,"preferenceSources.valueFormat.dateStyle",a),S=o(s)?l(s.dateStyle,"preferenceSources.valueFormat.dateTime.dateStyle",a):void 0,v=o(s)?l(s.timeStyle,"preferenceSources.valueFormat.dateTime.timeStyle",a):void 0,h=l(t.defaultCurrency,"preferenceSources.valueFormat.defaultCurrency",a);return a.length||!c||!i||!u||!m||!S||!v||!h?{ok:!1,issues:a}:{ok:!0,value:{calendar:{tz:c,weekStart:i},valueFormat:{locale:u,dateStyle:m,dateTime:{dateStyle:S,timeStyle:v},defaultCurrency:h}}}}function j(e){var t;const a=p.parseValueFormatPreferences(e);if(!a.ok)return{ok:!1,issues:a.issues.map(s=>({path:`valueFormat.${s.path}`,code:"invalid_value_format",message:s.message}))};const r=a.value;return r.locale===void 0||r.dateStyle===void 0||((t=r.dateTime)==null?void 0:t.dateStyle)===void 0||r.dateTime.timeStyle===void 0||r.defaultCurrency===void 0?{ok:!1,issues:[{path:"valueFormat",code:"invalid_value_format",message:"Resolved value-format preferences must be complete"}]}:{ok:!0,value:{locale:r.locale,dateStyle:r.dateStyle,dateTime:{dateStyle:r.dateTime.dateStyle,timeStyle:r.dateTime.timeStyle},defaultCurrency:r.defaultCurrency}}}function N(e){if(!o(e))return{ok:!1,issues:[{path:"$",code:"invalid_type",message:"Report runtime context must be an object"}]};const a=n(e,w,"$"),r=C(e.calendar),t=j(e.valueFormat),s=P(e.preferenceSources);return r.ok||a.push(...r.issues.map(c=>({...c,path:c.path==="$"?"calendar":`calendar.${c.path}`}))),t.ok||a.push(...t.issues),s.ok||a.push(...s.issues),a.length||!r.ok||!t.ok||!s.ok?{ok:!1,issues:a}:{ok:!0,value:{calendar:r.value,valueFormat:t.value,preferenceSources:s.value}}}exports.DEFAULT_CALENDAR_CONTEXT=g;exports.parseCalendarContext=C;exports.parseCalendarPreferencesResponse=$;exports.parseReportRuntimeContext=N;
|
package/dist/chunks/{report-runtime-context-nCHl3uHC.js → report-runtime-context-DTxVBKqP.js}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { parseValueFormatPreferences as _, isReportPreferenceSource as C } from "../value-format-preferences/index.js";
|
|
2
|
-
import { e as k, w as g } from "./validators-
|
|
2
|
+
import { e as k, w as g } from "./validators-DgmJaRF4.js";
|
|
3
3
|
const M = {
|
|
4
4
|
tz: "UTC",
|
|
5
5
|
weekStart: 1,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { d as se, e as K } from "./constants-DeLIHVAW.js";
|
|
2
2
|
import { t as ee, a as te } from "./index-CACdoqu3.js";
|
|
3
|
-
import { ao as oe } from "./validators-
|
|
4
|
-
import "./matrix-operation-contract-
|
|
3
|
+
import { ao as oe } from "./validators-DgmJaRF4.js";
|
|
4
|
+
import "./matrix-operation-contract-4q53iAUW.js";
|
|
5
5
|
function ne(e) {
|
|
6
6
|
if (!e || typeof e != "object") return !1;
|
|
7
7
|
const t = e.type;
|