@powerhousedao/connect 6.0.0-dev.53 → 6.0.0-dev.54
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/assets/AddDriveModal-CUlc2LVq.js +2 -0
- package/dist/assets/AddDriveModal-CUlc2LVq.js.map +1 -0
- package/dist/assets/AnalyticsSubscriptionManager-B5G_L5RP.js +3 -0
- package/dist/assets/AnalyticsSubscriptionManager-B5G_L5RP.js.map +1 -0
- package/dist/assets/ClearStorageModal-xiZInXK_.js +2 -0
- package/dist/assets/ClearStorageModal-xiZInXK_.js.map +1 -0
- package/dist/assets/CookiesPolicyModal-DVXJp787.js +2 -0
- package/dist/assets/CookiesPolicyModal-DVXJp787.js.map +1 -0
- package/dist/assets/CreateDocumentModal-Cjpq1PBD.js +2 -0
- package/dist/assets/CreateDocumentModal-Cjpq1PBD.js.map +1 -0
- package/dist/assets/DebugSettingsModal-BvEPWw2E.js +7 -0
- package/dist/assets/DebugSettingsModal-BvEPWw2E.js.map +1 -0
- package/dist/assets/DeleteDriveModal-BEq8v3-E.js +2 -0
- package/dist/assets/DeleteDriveModal-BEq8v3-E.js.map +1 -0
- package/dist/assets/DeleteItemModal-B3ziER8J.js +2 -0
- package/dist/assets/DeleteItemModal-B3ziER8J.js.map +1 -0
- package/dist/assets/DisclaimerModal-CFnBcICu.js +2 -0
- package/dist/assets/DisclaimerModal-CFnBcICu.js.map +1 -0
- package/dist/assets/DriveSettingsModal-BOdnkWJn.js +2 -0
- package/dist/assets/DriveSettingsModal-BOdnkWJn.js.map +1 -0
- package/dist/assets/ExportDocumentWithErrorsModal--uHwELhU.js +2 -0
- package/dist/assets/ExportDocumentWithErrorsModal--uHwELhU.js.map +1 -0
- package/dist/assets/SettingsModal-BntFjuQb.js +2 -0
- package/dist/assets/SettingsModal-BntFjuQb.js.map +1 -0
- package/dist/assets/UpgradeDriveModal-DmbwNsbG.js +2 -0
- package/dist/assets/UpgradeDriveModal-DmbwNsbG.js.map +1 -0
- package/dist/assets/__vite-browser-external-D7Ct-6yo.js +2 -0
- package/dist/assets/__vite-browser-external-D7Ct-6yo.js.map +1 -0
- package/dist/assets/_virtual_ph_external-packages-CM1tCR4L.js +1 -0
- package/dist/assets/_virtual_ph_external-packages-CM1tCR4L.js.map +1 -0
- package/dist/assets/analytics-2CJbiDed.js +3 -0
- package/dist/assets/analytics-2CJbiDed.js.map +1 -0
- package/dist/assets/ccip-BEAjQRKG.js +2 -0
- package/dist/assets/ccip-BEAjQRKG.js.map +1 -0
- package/dist/assets/confirmation-modal-BOwR5ZQq.js +2 -0
- package/dist/assets/confirmation-modal-BOwR5ZQq.js.map +1 -0
- package/dist/assets/core-BmuZEe8D.js +2 -0
- package/dist/assets/core-BmuZEe8D.js.map +1 -0
- package/dist/assets/disclosure-BhnV_XS1.js +2 -0
- package/dist/assets/disclosure-BhnV_XS1.js.map +1 -0
- package/dist/assets/drive-by-id-DvdlB_kB.js +2 -0
- package/dist/assets/drive-by-id-DvdlB_kB.js.map +1 -0
- package/dist/assets/drives-DjHuIXXn.js +2 -0
- package/dist/assets/drives-DjHuIXXn.js.map +1 -0
- package/dist/assets/dropdown-menu-BzZBDp_E.js +2 -0
- package/dist/assets/dropdown-menu-BzZBDp_E.js.map +1 -0
- package/dist/assets/editor-DBekHIfI.js +2 -0
- package/dist/assets/editor-DBekHIfI.js.map +1 -0
- package/dist/assets/editor-DV2TvDV5.js +46 -0
- package/dist/assets/editor-DV2TvDV5.js.map +1 -0
- package/dist/assets/exports-CQVZRuji.js +3 -0
- package/dist/assets/exports-CQVZRuji.js.map +1 -0
- package/dist/assets/form-input-CPs_z-6y.js +2 -0
- package/dist/assets/form-input-CPs_z-6y.js.map +1 -0
- package/dist/assets/graphql-editor-CcDLLpoK.js +74 -0
- package/dist/assets/graphql-editor-CcDLLpoK.js.map +1 -0
- package/dist/assets/hmr-BfH10IPs.js +2 -0
- package/dist/assets/hmr-BfH10IPs.js.map +1 -0
- package/dist/assets/hmr-LMNkvzP7.js +1 -0
- package/dist/assets/hmr-LMNkvzP7.js.map +1 -0
- package/dist/assets/{hooks-53pCkdY-.js → hooks--iZen3H-.js} +13 -12
- package/dist/assets/hooks--iZen3H-.js.map +1 -0
- package/dist/assets/index-BDI8rK1R.js +2 -0
- package/dist/assets/index-BDI8rK1R.js.map +1 -0
- package/dist/assets/index-BWgPOeS2.js +500 -0
- package/dist/assets/index-BWgPOeS2.js.map +1 -0
- package/dist/assets/index-BeyYTlkr.js +2 -0
- package/dist/assets/index-BeyYTlkr.js.map +1 -0
- package/dist/assets/index-CUlo2oTb.js +199 -0
- package/dist/assets/index-CUlo2oTb.js.map +1 -0
- package/dist/assets/index-DN20Z-2K.js +222 -0
- package/dist/assets/index-DN20Z-2K.js.map +1 -0
- package/dist/assets/index-DPCEN2cB.js +2 -0
- package/dist/assets/index-DPCEN2cB.js.map +1 -0
- package/dist/assets/index-DcvFnjR9.css +1 -0
- package/dist/assets/index-RTtoSfzq.js +2 -0
- package/dist/assets/index-RTtoSfzq.js.map +1 -0
- package/dist/assets/index-WdPlK4TH.js +32 -0
- package/dist/assets/index-WdPlK4TH.js.map +1 -0
- package/dist/assets/index.esm-BeYGM8vk.js +2 -0
- package/dist/assets/index.esm-BeYGM8vk.js.map +1 -0
- package/dist/assets/index.modern-BKQ3hpRq.js +2 -0
- package/dist/assets/index.modern-BKQ3hpRq.js.map +1 -0
- package/dist/assets/json-editor-CfHUc1UK.js +2 -0
- package/dist/assets/json-editor-CfHUc1UK.js.map +1 -0
- package/dist/assets/load-D23NmM_n.js +4 -0
- package/dist/assets/load-D23NmM_n.js.map +1 -0
- package/dist/assets/location-info-N8RPWokW.js +2 -0
- package/dist/assets/location-info-N8RPWokW.js.map +1 -0
- package/dist/assets/message-list-0i5gk_8j.js +2 -0
- package/dist/assets/message-list-0i5gk_8j.js.map +1 -0
- package/dist/assets/migrator-CmQyl4ZK.js +78 -0
- package/dist/assets/migrator-CmQyl4ZK.js.map +1 -0
- package/dist/assets/node-input-DnUl9CxT.js +2 -0
- package/dist/assets/node-input-DnUl9CxT.js.map +1 -0
- package/dist/assets/nodefs-BP-sxN1O.js +2 -0
- package/dist/assets/nodefs-BP-sxN1O.js.map +1 -0
- package/dist/assets/nodefs-_NvywCGz.js +1 -0
- package/dist/assets/nodefs-_NvywCGz.js.map +1 -0
- package/dist/assets/opfs-ahp-DN9nZuJs.js +1 -0
- package/dist/assets/opfs-ahp-DN9nZuJs.js.map +1 -0
- package/dist/assets/opfs-ahp-DtmzPaVs.js +4 -0
- package/dist/assets/opfs-ahp-DtmzPaVs.js.map +1 -0
- package/dist/assets/options-CBc6-sTL.js +2 -0
- package/dist/assets/options-CBc6-sTL.js.map +1 -0
- package/dist/assets/pglite.db-B2bT8QML.js +133 -0
- package/dist/assets/pglite.db-B2bT8QML.js.map +1 -0
- package/dist/assets/pglite.worker-Ca6pWokV.js +1 -0
- package/dist/assets/pglite.worker-Ca6pWokV.js.map +1 -0
- package/dist/assets/processor-host-module-B89Dt9nZ.js +3 -0
- package/dist/assets/processor-host-module-B89Dt9nZ.js.map +1 -0
- package/dist/assets/queue-CxFgA-r3.js +2 -0
- package/dist/assets/queue-CxFgA-r3.js.map +1 -0
- package/dist/assets/reactor-7tK-WVaY.js +16 -0
- package/dist/assets/reactor-7tK-WVaY.js.map +1 -0
- package/dist/assets/reactor-Bsjwm88i.js +193 -0
- package/dist/assets/reactor-Bsjwm88i.js.map +1 -0
- package/dist/assets/reactor-CRqBKYEo.css +1 -0
- package/dist/assets/read-required-modal-BKEkfucI.js +2 -0
- package/dist/assets/read-required-modal-BKEkfucI.js.map +1 -0
- package/dist/assets/renown-CgfQ6oBU.js +2 -0
- package/dist/assets/renown-CgfQ6oBU.js.map +1 -0
- package/dist/assets/state-schemas-DK8TnzfC.js +3 -0
- package/dist/assets/state-schemas-DK8TnzfC.js.map +1 -0
- package/dist/assets/tabs-DY_DEdtI.js +2 -0
- package/dist/assets/tabs-DY_DEdtI.js.map +1 -0
- package/dist/assets/use-get-switchboard-link-B47eB8lt.js +12 -0
- package/dist/assets/use-get-switchboard-link-B47eB8lt.js.map +1 -0
- package/dist/assets/user-permissions-BJ8c2UOP.js +2 -0
- package/dist/assets/user-permissions-BJ8c2UOP.js.map +1 -0
- package/dist/assets/vetra-Bu3fuZWc.js +221 -0
- package/dist/assets/vetra-Bu3fuZWc.js.map +1 -0
- package/dist/index.html +2 -20
- package/lib/package.copy.json +3 -4
- package/lib/src/components/app-loader.d.ts.map +1 -1
- package/lib/src/components/app-loader.js +5 -16
- package/lib/src/components/app-loader.js.map +1 -1
- package/lib/src/components/index.d.ts +0 -1
- package/lib/src/components/index.d.ts.map +1 -1
- package/lib/src/components/index.js +0 -1
- package/lib/src/components/index.js.map +1 -1
- package/lib/src/components/load.d.ts +8 -0
- package/lib/src/components/load.d.ts.map +1 -0
- package/lib/src/components/load.js +17 -0
- package/lib/src/components/load.js.map +1 -0
- package/lib/src/components/modal/modals/InspectorModal/InspectorModal.d.ts.map +1 -1
- package/lib/src/components/modal/modals/InspectorModal/InspectorModal.js +2 -1
- package/lib/src/components/modal/modals/InspectorModal/InspectorModal.js.map +1 -1
- package/lib/src/components/modal/modals/InspectorModal/useRemotesInspector.d.ts +1 -0
- package/lib/src/components/modal/modals/InspectorModal/useRemotesInspector.d.ts.map +1 -1
- package/lib/src/components/modal/modals/InspectorModal/useRemotesInspector.js +2 -0
- package/lib/src/components/modal/modals/InspectorModal/useRemotesInspector.js.map +1 -1
- package/lib/src/components/modal/modals/SettingsModal.d.ts.map +1 -1
- package/lib/src/components/modal/modals/SettingsModal.js +4 -1
- package/lib/src/components/modal/modals/SettingsModal.js.map +1 -1
- package/lib/src/components/modal/modals-container.d.ts +1 -1
- package/lib/src/components/modal/modals-container.d.ts.map +1 -1
- package/lib/src/components/modal/modals-container.js +12 -8
- package/lib/src/components/modal/modals-container.js.map +1 -1
- package/lib/src/main.js +3 -0
- package/lib/src/main.js.map +1 -1
- package/lib/src/services/storage/base-storage.d.ts.map +1 -1
- package/lib/src/services/storage/base-storage.js.map +1 -1
- package/lib/src/store/processor-host-module.d.ts.map +1 -1
- package/lib/src/store/processor-host-module.js +2 -2
- package/lib/src/store/processor-host-module.js.map +1 -1
- package/lib/src/store/reactor.d.ts.map +1 -1
- package/lib/src/store/reactor.js +1 -1
- package/lib/src/store/reactor.js.map +1 -1
- package/lib/style.css +15 -0
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/lib/vite.config.d.ts.map +1 -1
- package/lib/vite.config.js +1 -29
- package/lib/vite.config.js.map +1 -1
- package/package.copy.json +3 -4
- package/package.json +12 -13
- package/dist/assets/AddDriveModal-BZ11MHBB.js +0 -1
- package/dist/assets/ClearStorageModal-BC3gq6BT.js +0 -1
- package/dist/assets/CookiesPolicyModal-Bdf-jIqf.js +0 -1
- package/dist/assets/CreateDocumentModal-CExWso4S.js +0 -1
- package/dist/assets/DebugSettingsModal-MIi3iDrt.js +0 -1
- package/dist/assets/DeleteDriveModal-Cj_y-Bmk.js +0 -1
- package/dist/assets/DeleteItemModal-DLPEfn21.js +0 -1
- package/dist/assets/DisclaimerModal-uqaE0dfB.js +0 -1
- package/dist/assets/DriveSettingsModal-0o6Em8ZV.js +0 -1
- package/dist/assets/ExportDocumentWithErrorsModal-BWd92B7i.js +0 -1
- package/dist/assets/SettingsModal-Ca4V2Rxs.js +0 -1
- package/dist/assets/UpgradeDriveModal-ByNuxxET.js +0 -1
- package/dist/assets/config-0mYxXHFp.js +0 -1
- package/dist/assets/design_system-Q9KmzSmh.js +0 -45
- package/dist/assets/design_system_connect-MVhUhmHT.js +0 -47
- package/dist/assets/design_system_ui-BQ-CYVFb.js +0 -1
- package/dist/assets/document_drive-DiwReQ7A.js +0 -154
- package/dist/assets/document_engineering-BMBT2RYA.js +0 -1
- package/dist/assets/document_model-ly1Z8uco.js +0 -241
- package/dist/assets/document_model_editor-D_cNq26d.js +0 -25
- package/dist/assets/drive_explorer-508O2XxT.js +0 -2
- package/dist/assets/editor-DAyyI5MD.js +0 -1
- package/dist/assets/graphql-BXSeDpaV.js +0 -75
- package/dist/assets/graphql-editor-Buhxp36K.js +0 -73
- package/dist/assets/graphql_request-BHyPFzlZ.js +0 -3
- package/dist/assets/index-B6A7sjLB.css +0 -1
- package/dist/assets/index-D0gnc_IY.js +0 -208
- package/dist/assets/index-DQyPoyxC.js +0 -149
- package/dist/assets/index-DnR9iRBe.js +0 -29
- package/dist/assets/json-editor-dXLfmMol.js +0 -1
- package/dist/assets/nodefs-2HQmaeC9.js +0 -1
- package/dist/assets/nodefs-DzAAA-1u.js +0 -1
- package/dist/assets/opfs-ahp-CwNbpJAw.js +0 -3
- package/dist/assets/opfs-ahp-xYZANhiQ.js +0 -3
- package/dist/assets/postgres-CkP7QCDB.data +0 -0
- package/dist/assets/postgres-CyuUVpXN.wasm +0 -0
- package/dist/assets/react/jsx-runtime-DldvXD6N.js +0 -1
- package/dist/assets/react-D_vzfE_e.js +0 -1
- package/dist/assets/react-dom/client-SoBEzBdt.js +0 -9
- package/dist/assets/react-dom-Cz_KAjfm.js +0 -1
- package/dist/assets/reactor_browser-D2taHyRs.js +0 -136
- package/dist/assets/sentry_browser-TIBDlywD.js +0 -498
- package/dist/assets/sentry_react-CVx4Qq7f.js +0 -3
- package/dist/assets/state-schemas-C876MuV7.js +0 -2
- package/dist/assets/tailwind_merge-CXl88Wxt.js +0 -1
- package/dist/assets/zod-Cc38s6JG.js +0 -39
- package/lib/src/components/modal/index.d.ts +0 -18
- package/lib/src/components/modal/index.d.ts.map +0 -1
- package/lib/src/components/modal/index.js +0 -18
- package/lib/src/components/modal/index.js.map +0 -1
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{D as f,I as _,P as w,A as b}from"./AnalyticsSubscriptionManager-B5G_L5RP.js";import{a as R,b as j,c as N,N as A}from"./AnalyticsSubscriptionManager-B5G_L5RP.js";var S;(function(s){s[s.Budget=0]="Budget",s[s.Forecast=1]="Forecast",s[s.Actuals=2]="Actuals",s[s.PaymentsOnChain=3]="PaymentsOnChain",s[s.PaymentsOffChainIncluded=4]="PaymentsOffChainIncluded",s[s.FTEs=5]="FTEs"})(S||(S={}));var u;(function(s){s[s.VectorAdd=0]="VectorAdd",s[s.VectorSubtract=1]="VectorSubtract",s[s.ScalarMultiply=2]="ScalarMultiply",s[s.ScalarDivide=3]="ScalarDivide"})(u||(u={}));var d;(function(s){s[s.Total=0]="Total",s[s.Annual=1]="Annual",s[s.SemiAnnual=2]="SemiAnnual",s[s.Quarterly=3]="Quarterly",s[s.Monthly=4]="Monthly",s[s.Weekly=5]="Weekly",s[s.Daily=6]="Daily",s[s.Hourly=7]="Hourly"})(d||(d={}));const x=s=>{const t=[],e=D(s);let r=e.next();for(;r;)t.push(r),r=e.next();return t},D=s=>({...s,next:$(s)}),$=s=>{let t=s.start;return()=>{if(t==null)return null;let e=null;switch(s.granularity){case d.Total:e=V(t,s.end);break;case d.Annual:e=P(t,s.end);break;case d.SemiAnnual:e=k(t,s.end);break;case d.Quarterly:e=O(t,s.end);break;case d.Monthly:e=v(t,s.end);break;case d.Weekly:e=C(t,s.end);break;case d.Daily:e=T(t,s.end);break;case d.Hourly:e=U(t,s.end)}return e===null?t=null:t=e.end.plus({milliseconds:1}),e}},V=(s,t)=>t<=s?null:{period:"total",start:s,end:t},P=(s,t)=>{if(t<=s)return null;const e=s.toUTC(),r=f.utc(e.year,e.month,e.day).plus({years:1});return{period:"annual",start:s,end:r}},k=(s,t)=>{if(t<=s)return null;const e=f.utc(s.year,7,1),r=f.utc(s.year,12,31,23,59,59,999);let n;return e>s?n=e:n=r,n>t&&(n=t),{period:"semiAnnual",start:s,end:n}},O=(s,t)=>{if(t<=s)return null;let e;const r=s.toUTC(),n=r.month;return n<3?e=f.utc(r.year,4,1):n<6?e=f.utc(r.year,7,1):n<9?e=f.utc(r.year,10,1):e=f.utc(r.year,12,31,23,59,59,999),e>t&&(e=t),{period:"quarterly",start:s,end:e}},v=(s,t)=>{if(t<=s)return null;const e=s.toUTC();let r=f.utc(e.year,e.month,e.day).plus({months:1}).startOf("month");return r>t&&(s.hasSame(t,"month")||(r=t)),{period:"monthly",start:s,end:r}},C=(s,t)=>{if(t<=s)return null;const e=s.toUTC(),r=f.utc(e.year,e.month,e.day).plus({weeks:1}).startOf("week");return r>t&&!r.hasSame(t,"day")?{period:"weekly",start:s,end:t}:{period:"weekly",start:s,end:r}},T=(s,t)=>{if(t<=s)return null;let r=s.toUTC().plus({days:1}).startOf("day");return(r>t||r.hasSame(t,"day"))&&(r=t),{period:"daily",start:s,end:r}},U=(s,t)=>{if(t<=s)return null;let r=s.toUTC().plus({hours:1});return r>t&&s.hour!==t.hour&&(r=t.toUTC()),{period:"hourly",start:s,end:r}},I=s=>Math.floor((s.month-1)/3)+1;class m{static discretize(t,e,r,n,o){const a=this._buildIndex(t,e),c=x(this._calculateRange(r,n,o,t)),i=this._discretizeNode(a,{},e,c);return this._groupResultsByPeriod(c,i)}static _calculateRange(t,e,r,n){let o=t||null,a=e||null;if(o==null||a==null)for(const c of n){o==null&&(o=c.start);const i=c.end||c.start;(a==null||a<i)&&(a=i)}if(o==null||a==null)throw new Error("Cannot determine query start and/or end.");return{start:o,end:a,granularity:r}}static _groupResultsByPeriod(t,e){const r={};for(const n of t){const o=n.start.toISO()+"-"+n.period,a=m._getPeriodString(n);r[o]={period:a,start:n.start,end:n.end,rows:[]}}for(const n of e)for(const o of Object.keys(n.series))r[o].rows.push({dimensions:n.dimensions,metric:n.metric,unit:n.unit=="__NULL__"?null:n.unit,value:n.series[o].inc,sum:n.series[o].sum});return Object.values(r)}static _getPeriodString(t){switch(t.period){case"annual":return t.start.year.toString();case"semiAnnual":return`${t.start.year}/${t.start.month<7?"H1":"H2"}`;case"quarterly":return`${t.start.year}/Q${I(t.start)}`;case"monthly":const e=t.start.toUTC().month,r=e<10?`0${e}`:`${e}`;return`${t.start.year}/${r}`;case"weekly":return`${t.start.weekYear}/W${t.start.weekNumber}`;case"daily":const n=t.start.month,o=t.start.day,a=n<10?`0${n}`:`${n}`,c=o<10?`0${o}`:`${o}`;return`${t.start.year}/${a}/${c}`;case"hourly":const i=t.start.month,l=t.start.day,h=t.start.hour,p=i<10?`0${i}`:`${i}`,y=l<10?`0${l}`:`${l}`,g=h<10?`0${h}`:`${h}`;return`${t.start.year}/${p}/${y}/${g}`;default:return t.period}}static _discretizeNode(t,e,r,n){const o=[];if(r.length>0){const a=r[0];Object.keys(t).forEach((c,i,l)=>{const h={...e};h[a]=c,o.push(...this._discretizeNode(t[c],h,r.slice(1),n))})}else Object.keys(t).forEach(a=>{o.push(...this._discretizeLeaf(t[a],n,a,e))});return o}static _discretizeLeaf(t,e,r,n){const o=[];return Object.keys(t).forEach(a=>{const c={};Object.keys(n).forEach(i=>{c[i]={path:t[a][0].dimensions[i],icon:t[a][0].dimensions.icon,label:t[a][0].dimensions.label,description:t[a][0].dimensions.description}}),o.push({unit:a,metric:r,dimensions:c,series:this._discretizeSeries(t[a],e)})}),o}static _discretizeSeries(t,e){const r={};for(const n of t){let o=this._getValue(n,e[0].start);for(const a of e){const c=this._getValue(n,a.end),i=`${a.start.toISO()}-${a.period}`;r[i]?(r[i].inc+=c-o,r[i].sum+=c):r[i]={inc:c-o,sum:c},o=c}}return r}static _getValue(t,e){switch(t.fn){case"Single":return this._getSingleValue(t,e);case"DssVest":return this._getVestValue(t,e);default:return 0}}static _getSingleValue(t,e){return e>=t.start?t.value:0}static _getVestValue(t,e){const r=e,n=t.start,o=t.end,a=t.params?.cliff?f.fromISO(t.params.cliff):null;if(r<n||a&&r<a)return 0;if(o&&r>=o)return t.value;const c=_.fromDateTimes(n,r),i=_.fromDateTimes(n,o||r);return c.length()/i.length()*t.value}static _buildIndex(t,e){const r={},n={},o=e[0]||"";for(const a of t){const c=a.dimensions[o];n[c]===void 0&&(n[c]=[]),n[c].push(a)}if(e.length>1){const a=e.slice(1);Object.keys(n).forEach(c=>{r[c]=this._buildIndex(n[c],a)})}else Object.keys(n).forEach(a=>{r[a]=this._buildMetricsIndex(n[a])});return r}static _buildMetricsIndex(t){const e={},r={};for(const n of t){const o=n.metric;r[o]===void 0&&(r[o]=[]),r[o].push(n)}return Object.keys(r).forEach(n=>e[n]=this._buildUnitIndex(r[n])),e}static _buildUnitIndex(t){const e={};for(const r of t){const n=r.unit||"__NULL__";e[n]===void 0&&(e[n]=[]),e[n].push(r)}return e}}class Q{_analyticsStore;_profiler;constructor(t,e){this._analyticsStore=t,this._profiler=e??new w}async executeCompound(t){let e;const r={start:t.start,end:t.end,granularity:t.granularity,lod:t.lod,select:t.select,metrics:t.expression.inputs.metrics,currency:t.expression.inputs.currency},n={start:t.start,end:t.end,granularity:t.granularity,lod:{priceData:1},select:{priceData:[b.fromString("atlas")]},metrics:[t.expression.operand.metric],currency:t.expression.operand.currency},o=await this.execute(r),a=await this.execute(n);return[u.VectorAdd,u.VectorSubtract].includes(t.expression.operator)?e=await this._profiler.record("ApplyVectorOperator",async()=>await this._applyVectorOperator(o,a,t.expression.operator,t.expression.resultCurrency)):e=await this._profiler.record("ApplyScalarOperator",async()=>await this._applyScalarOperator(o,a,t.expression.operator,t.expression.operand.useSum,t.expression.resultCurrency)),e}async execute(t){const e=await this._executeSeriesQuery(t),r=this._profiler.recordSync("ApplyLODs",()=>this._applyLods(e,t.lod)),n=Object.keys(t.select);return this._profiler.recordSync("Discretize",()=>r.length<1?[]:m.discretize(r,n,t.start,t.end,t.granularity))}async executeMultiCurrency(t,e){const r={...t,currency:e.targetCurrency??t.currency};let n=await this.execute(r);for(const o of e.conversions){const a={start:t.start,end:t.end,granularity:t.granularity,lod:t.lod,select:t.select,expression:{inputs:{metrics:r.metrics,currency:o.currency},operator:u.ScalarMultiply,operand:{metric:o.metric,currency:e.targetCurrency,useSum:!0},resultCurrency:e.targetCurrency}},c=await this.executeCompound(a);n=await this._applyVectorOperator(n,c,u.VectorAdd,e.targetCurrency)}return n}async _applyVectorOperator(t,e,r,n){if([u.ScalarMultiply,u.ScalarDivide].includes(r))throw new Error("Invalid operator for vector operation");return e}async _applyScalarOperator(t,e,r,n,o){if([u.VectorAdd,u.VectorSubtract].includes(r))throw new Error("Invalid operator for scalar operation");const a=[],c={},i=n?"sum":"value";for(const l of e)l.rows.length>0&&(c[l.period]=l.rows[0][i]);for(const l of t){const h={period:l.period,start:l.start,end:l.end,rows:l.rows.map(p=>({dimensions:p.dimensions,metric:p.metric,unit:o?o.toString():p.unit,value:this._calculateOutputValue(p.value,r,c[l.period]),sum:-1}))};a.push(h)}return a}_calculateOutputValue(t,e,r){switch(e){case u.VectorAdd:return t+r;case u.VectorSubtract:return t-r;case u.ScalarMultiply:return t*r;case u.ScalarDivide:return t/r}}async _executeSeriesQuery(t){const e={start:t.start,end:t.end,select:t.select,metrics:t.metrics,currency:t.currency};return await this._analyticsStore.getMatchingSeries(e)}_applyLods(t,e){return t.map(r=>({...r,dimensions:this._applyDimensionsLods(r.dimensions,e)}))}_applyDimensionsLods(t,e){const r={};for(const[n,o]of Object.entries(e))o!==null&&t[n]&&(r[n]=t[n].path.applyLod(o).toString(),r.icon=t[n].icon.toString(),r.label=t[n].label.toString(),r.description=t[n].description.toString());return r}async getDimensions(){return await this._analyticsStore.getDimensions()}}export{d as AnalyticsGranularity,b as AnalyticsPath,R as AnalyticsPathSegment,Q as AnalyticsQueryEngine,j as AnalyticsSerializerTypes,N as AnalyticsSubscriptionManager,A as NotificationError,w as PassthroughAnalyticsProfiler};
|
|
2
|
+
//# sourceMappingURL=index-BeyYTlkr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-BeyYTlkr.js","sources":["../../../../node_modules/.pnpm/@powerhousedao+analytics-engine-core@0.5.0/node_modules/@powerhousedao/analytics-engine-core/dist/AnalyticsQuery.js","../../../../node_modules/.pnpm/@powerhousedao+analytics-engine-core@0.5.0/node_modules/@powerhousedao/analytics-engine-core/dist/AnalyticsTimeSlicer.js","../../../../node_modules/.pnpm/@powerhousedao+analytics-engine-core@0.5.0/node_modules/@powerhousedao/analytics-engine-core/dist/AnalyticsDiscretizer.js","../../../../node_modules/.pnpm/@powerhousedao+analytics-engine-core@0.5.0/node_modules/@powerhousedao/analytics-engine-core/dist/AnalyticsQueryEngine.js"],"sourcesContent":["export var AnalyticsMetric;\n(function (AnalyticsMetric) {\n AnalyticsMetric[AnalyticsMetric[\"Budget\"] = 0] = \"Budget\";\n AnalyticsMetric[AnalyticsMetric[\"Forecast\"] = 1] = \"Forecast\";\n AnalyticsMetric[AnalyticsMetric[\"Actuals\"] = 2] = \"Actuals\";\n AnalyticsMetric[AnalyticsMetric[\"PaymentsOnChain\"] = 3] = \"PaymentsOnChain\";\n AnalyticsMetric[AnalyticsMetric[\"PaymentsOffChainIncluded\"] = 4] = \"PaymentsOffChainIncluded\";\n AnalyticsMetric[AnalyticsMetric[\"FTEs\"] = 5] = \"FTEs\";\n})(AnalyticsMetric || (AnalyticsMetric = {}));\nexport var CompoundOperator;\n(function (CompoundOperator) {\n CompoundOperator[CompoundOperator[\"VectorAdd\"] = 0] = \"VectorAdd\";\n CompoundOperator[CompoundOperator[\"VectorSubtract\"] = 1] = \"VectorSubtract\";\n CompoundOperator[CompoundOperator[\"ScalarMultiply\"] = 2] = \"ScalarMultiply\";\n CompoundOperator[CompoundOperator[\"ScalarDivide\"] = 3] = \"ScalarDivide\";\n})(CompoundOperator || (CompoundOperator = {}));\nexport var AnalyticsGranularity;\n(function (AnalyticsGranularity) {\n AnalyticsGranularity[AnalyticsGranularity[\"Total\"] = 0] = \"Total\";\n AnalyticsGranularity[AnalyticsGranularity[\"Annual\"] = 1] = \"Annual\";\n AnalyticsGranularity[AnalyticsGranularity[\"SemiAnnual\"] = 2] = \"SemiAnnual\";\n AnalyticsGranularity[AnalyticsGranularity[\"Quarterly\"] = 3] = \"Quarterly\";\n AnalyticsGranularity[AnalyticsGranularity[\"Monthly\"] = 4] = \"Monthly\";\n AnalyticsGranularity[AnalyticsGranularity[\"Weekly\"] = 5] = \"Weekly\";\n AnalyticsGranularity[AnalyticsGranularity[\"Daily\"] = 6] = \"Daily\";\n AnalyticsGranularity[AnalyticsGranularity[\"Hourly\"] = 7] = \"Hourly\";\n})(AnalyticsGranularity || (AnalyticsGranularity = {}));\n//# sourceMappingURL=AnalyticsQuery.js.map","import { DateTime } from \"luxon\";\nimport { AnalyticsGranularity } from \"./AnalyticsQuery.js\";\nexport const getPeriodSeriesArray = (range) => {\n const result = [];\n const series = getPeriodSeries(range);\n let next = series.next();\n while (next) {\n result.push(next);\n next = series.next();\n }\n return result;\n};\nexport const getPeriodSeries = (range) => {\n return {\n ...range,\n next: _createFactoryFn(range),\n };\n};\nconst _createFactoryFn = (range) => {\n let current = range.start;\n return () => {\n if (current == null) {\n return null;\n }\n let result = null;\n switch (range.granularity) {\n case AnalyticsGranularity.Total:\n result = _nextTotalPeriod(current, range.end);\n break;\n case AnalyticsGranularity.Annual:\n result = _nextAnnualPeriod(current, range.end);\n break;\n case AnalyticsGranularity.SemiAnnual:\n result = _nextSemiAnnualPeriod(current, range.end);\n break;\n case AnalyticsGranularity.Quarterly:\n result = _nextQuarterlyPeriod(current, range.end);\n break;\n case AnalyticsGranularity.Monthly:\n result = _nextMonthlyPeriod(current, range.end);\n break;\n case AnalyticsGranularity.Weekly:\n result = _nextWeeklyPeriod(current, range.end);\n break;\n case AnalyticsGranularity.Daily:\n result = _nextDailyPeriod(current, range.end);\n break;\n case AnalyticsGranularity.Hourly:\n result = _nextHourlyPeriod(current, range.end);\n }\n // Update current to start of next period\n if (result === null) {\n current = null;\n }\n else {\n current = result.end.plus({ milliseconds: 1 });\n }\n return result;\n };\n};\nconst _nextTotalPeriod = (nextStart, seriesEnd) => {\n if (seriesEnd <= nextStart) {\n return null;\n }\n return {\n period: \"total\",\n start: nextStart,\n end: seriesEnd,\n };\n};\nexport const _nextAnnualPeriod = (nextStart, seriesEnd) => {\n if (seriesEnd <= nextStart) {\n return null;\n }\n const inputUtc = nextStart.toUTC();\n const oneYearLater = DateTime.utc(inputUtc.year, inputUtc.month, inputUtc.day).plus({ years: 1 });\n return {\n period: \"annual\",\n start: nextStart,\n end: oneYearLater,\n };\n};\nexport const _nextSemiAnnualPeriod = (nextStart, seriesEnd) => {\n if (seriesEnd <= nextStart) {\n return null;\n }\n const midYear = DateTime.utc(nextStart.year, 7, 1);\n const endYear = DateTime.utc(nextStart.year, 12, 31, 23, 59, 59, 999);\n let endDate;\n if (midYear > nextStart) {\n endDate = midYear;\n }\n else {\n endDate = endYear;\n }\n if (endDate > seriesEnd) {\n endDate = seriesEnd;\n }\n return {\n period: \"semiAnnual\",\n start: nextStart,\n end: endDate,\n };\n};\nexport const _nextQuarterlyPeriod = (nextStart, seriesEnd) => {\n if (seriesEnd <= nextStart) {\n return null;\n }\n let endDate;\n const nextStartUtc = nextStart.toUTC();\n const startMonth = nextStartUtc.month;\n if (startMonth < 3) {\n endDate = DateTime.utc(nextStartUtc.year, 4, 1);\n }\n else if (startMonth < 6) {\n endDate = DateTime.utc(nextStartUtc.year, 7, 1);\n }\n else if (startMonth < 9) {\n endDate = DateTime.utc(nextStartUtc.year, 10, 1);\n }\n else {\n endDate = DateTime.utc(nextStartUtc.year, 12, 31, 23, 59, 59, 999);\n }\n if (endDate > seriesEnd) {\n endDate = seriesEnd;\n }\n return {\n period: \"quarterly\",\n start: nextStart,\n end: endDate,\n };\n};\nexport const _nextMonthlyPeriod = (nextStart, seriesEnd) => {\n if (seriesEnd <= nextStart) {\n return null;\n }\n // Get the first day of the next month\n const nextStartUtc = nextStart.toUTC();\n let endDate = DateTime.utc(nextStartUtc.year, nextStartUtc.month, nextStartUtc.day)\n .plus({ months: 1 })\n .startOf(\"month\");\n // If the end date is after the series end, then use the series end as the end date\n if (endDate > seriesEnd) {\n if (!nextStart.hasSame(seriesEnd, \"month\")) {\n endDate = seriesEnd;\n }\n }\n // Otherwise, return the end date as the first day of the next month\n return {\n period: \"monthly\",\n start: nextStart,\n end: endDate,\n };\n};\nexport const _nextWeeklyPeriod = (nextStart, seriesEnd) => {\n if (seriesEnd <= nextStart) {\n return null;\n }\n // Calculate the start of the next week (Monday)\n const nextStartUtc = nextStart.toUTC();\n const nextWeekStartUTC = DateTime.utc(nextStartUtc.year, nextStartUtc.month, nextStartUtc.day)\n .plus({ weeks: 1 })\n .startOf(\"week\");\n // If the calculated next week start is later or equal to the series end date, return the series end\n if (nextWeekStartUTC > seriesEnd)\n if (!nextWeekStartUTC.hasSame(seriesEnd, \"day\")) {\n return {\n period: \"weekly\",\n start: nextStart,\n end: seriesEnd,\n };\n }\n return {\n period: \"weekly\",\n start: nextStart,\n end: nextWeekStartUTC,\n };\n};\nexport const _nextDailyPeriod = (nextStart, seriesEnd) => {\n if (seriesEnd <= nextStart) {\n return null;\n }\n // Set the end date to the start of the next day\n const nextStartUtc = nextStart.toUTC();\n let endDate = nextStartUtc.plus({ days: 1 }).startOf(\"day\");\n if (endDate > seriesEnd || endDate.hasSame(seriesEnd, \"day\")) {\n endDate = seriesEnd;\n }\n return {\n period: \"daily\",\n start: nextStart,\n end: endDate,\n };\n};\nexport const _nextHourlyPeriod = (nextStart, seriesEnd) => {\n if (seriesEnd <= nextStart) {\n return null;\n }\n const startDate = nextStart.toUTC();\n let endDate = startDate.plus({ hours: 1 });\n if (endDate > seriesEnd) {\n if (nextStart.hour !== seriesEnd.hour) {\n endDate = seriesEnd.toUTC();\n }\n }\n return {\n period: \"hourly\",\n start: nextStart,\n end: endDate,\n };\n};\n//# sourceMappingURL=AnalyticsTimeSlicer.js.map","import { getPeriodSeriesArray, } from \"./AnalyticsTimeSlicer.js\";\nimport { DateTime, Interval } from \"luxon\";\nexport const getQuarter = (date) => {\n return Math.floor((date.month - 1) / 3) + 1;\n};\nexport class AnalyticsDiscretizer {\n static discretize(series, dimensions, start, end, granularity) {\n const index = this._buildIndex(series, dimensions);\n const periods = getPeriodSeriesArray(this._calculateRange(start, end, granularity, series));\n const disretizedResults = this._discretizeNode(index, {}, dimensions, periods);\n const groupedResults = this._groupResultsByPeriod(periods, disretizedResults);\n return groupedResults;\n }\n static _calculateRange(start, end, granularity, results) {\n let calculatedStart = start || null;\n let calculatedEnd = end || null;\n if (calculatedStart == null || calculatedEnd == null) {\n for (const r of results) {\n if (calculatedStart == null) {\n calculatedStart = r.start;\n }\n const endValue = r.end || r.start;\n if (calculatedEnd == null || calculatedEnd < endValue) {\n calculatedEnd = endValue;\n }\n }\n }\n if (calculatedStart == null || calculatedEnd == null) {\n throw new Error(\"Cannot determine query start and/or end.\");\n }\n return {\n start: calculatedStart,\n end: calculatedEnd,\n granularity,\n };\n }\n static _groupResultsByPeriod(periods, dimensionedResults) {\n const result = {};\n for (const p of periods) {\n const id = p.start.toISO() + \"-\" + p.period;\n const period = AnalyticsDiscretizer._getPeriodString(p);\n result[id] = {\n period: period,\n start: p.start,\n end: p.end,\n rows: [],\n };\n }\n for (const r of dimensionedResults) {\n for (const period of Object.keys(r.series)) {\n result[period].rows.push({\n dimensions: r.dimensions,\n metric: r.metric,\n unit: r.unit == \"__NULL__\" ? null : r.unit,\n value: r.series[period].inc,\n sum: r.series[period].sum,\n });\n }\n }\n return Object.values(result);\n }\n static _getPeriodString(p) {\n switch (p.period) {\n case \"annual\":\n return p.start.year.toString();\n case \"semiAnnual\":\n return `${p.start.year}/${p.start.month < 7 ? \"H1\" : \"H2\"}`;\n case \"quarterly\":\n return `${p.start.year}/Q${getQuarter(p.start)}`;\n case \"monthly\":\n const month = p.start.toUTC().month;\n const formattedMonth = month < 10 ? `0${month}` : `${month}`;\n return `${p.start.year}/${formattedMonth}`;\n case \"weekly\":\n return `${p.start.weekYear}/W${p.start.weekNumber}`;\n case \"daily\":\n const monthD = p.start.month;\n const day = p.start.day;\n const formattedMonthD = monthD < 10 ? `0${monthD}` : `${monthD}`;\n const formattedDay = day < 10 ? `0${day}` : `${day}`;\n return `${p.start.year}/${formattedMonthD}/${formattedDay}`;\n case \"hourly\":\n const monthH = p.start.month;\n const dayH = p.start.day;\n const hourH = p.start.hour;\n const formattedMonthH = monthH < 10 ? `0${monthH}` : `${monthH}`;\n const formattedDayH = dayH < 10 ? `0${dayH}` : `${dayH}`;\n const formattedHourH = hourH < 10 ? `0${hourH}` : `${hourH}`;\n return `${p.start.year}/${formattedMonthH}/${formattedDayH}/${formattedHourH}`;\n default:\n return p.period;\n }\n }\n static _discretizeNode(node, dimensionValues, remainingDimensions, periods) {\n const result = [];\n if (remainingDimensions.length > 0) {\n const subdimension = remainingDimensions[0];\n Object.keys(node).forEach((subdimensionValue, index, arr) => {\n const newDimensionValues = { ...dimensionValues };\n newDimensionValues[subdimension] = subdimensionValue;\n result.push(...this._discretizeNode(node[subdimensionValue], newDimensionValues, remainingDimensions.slice(1), periods));\n });\n }\n else {\n Object.keys(node).forEach((metric) => {\n result.push(...this._discretizeLeaf(node[metric], periods, metric, dimensionValues));\n });\n }\n return result;\n }\n static _discretizeLeaf(leaf, periods, metric, dimensionValues) {\n const result = [];\n Object.keys(leaf).forEach((unit) => {\n const metaDimensions = {};\n Object.keys(dimensionValues).forEach((k) => {\n metaDimensions[k] = {\n path: leaf[unit][0].dimensions[k],\n icon: leaf[unit][0].dimensions.icon,\n label: leaf[unit][0].dimensions.label,\n description: leaf[unit][0].dimensions.description,\n };\n });\n result.push({\n unit,\n metric,\n dimensions: metaDimensions,\n series: this._discretizeSeries(leaf[unit], periods),\n });\n });\n return result;\n }\n static _discretizeSeries(series, periods) {\n const result = {};\n for (const s of series) {\n let oldSum = this._getValue(s, periods[0].start);\n for (const p of periods) {\n const newSum = this._getValue(s, p.end);\n const id = `${p.start.toISO()}-${p.period}`;\n // const id = p.period;\n if (result[id]) {\n result[id].inc += newSum - oldSum;\n result[id].sum += newSum;\n }\n else {\n result[id] = {\n inc: newSum - oldSum,\n sum: newSum,\n };\n }\n oldSum = newSum;\n }\n }\n return result;\n }\n static _getValue(series, when) {\n switch (series.fn) {\n case \"Single\":\n return this._getSingleValue(series, when);\n case \"DssVest\":\n return this._getVestValue(series, when);\n default:\n // todo: logging interface\n //console.error(`Unknown analytics series function: '${series.fn}'`);\n return 0.0;\n }\n }\n static _getSingleValue(series, when) {\n return when >= series.start ? series.value : 0.0;\n }\n static _getVestValue(series, when) {\n const now = when;\n const start = series.start;\n const end = series.end;\n const cliff = series.params?.cliff\n ? DateTime.fromISO(series.params.cliff)\n : null;\n if (now < start || (cliff && now < cliff)) {\n return 0.0;\n }\n else if (end && now >= end) {\n return series.value;\n }\n const a = Interval.fromDateTimes(start, now);\n const b = Interval.fromDateTimes(start, end || now);\n return (a.length() / b.length()) * series.value;\n }\n static _buildIndex(series, dimensions) {\n const result = {};\n const map = {};\n const dimName = dimensions[0] || \"\";\n for (const s of series) {\n const dimValue = s.dimensions[dimName];\n if (undefined === map[dimValue]) {\n map[dimValue] = [];\n }\n map[dimValue].push(s);\n }\n if (dimensions.length > 1) {\n const newDimensions = dimensions.slice(1);\n Object.keys(map).forEach((k) => {\n result[k] = this._buildIndex(map[k], newDimensions);\n });\n }\n else {\n Object.keys(map).forEach((k) => {\n result[k] = this._buildMetricsIndex(map[k]);\n });\n }\n return result;\n }\n static _buildMetricsIndex(series) {\n const result = {};\n const map = {};\n for (const s of series) {\n const metric = s.metric;\n if (undefined === map[metric]) {\n map[metric] = [];\n }\n map[metric].push(s);\n }\n Object.keys(map).forEach((k) => (result[k] = this._buildUnitIndex(map[k])));\n return result;\n }\n static _buildUnitIndex(series) {\n const result = {};\n for (const s of series) {\n const unit = s.unit || \"__NULL__\";\n if (undefined === result[unit]) {\n result[unit] = [];\n }\n result[unit].push(s);\n }\n return result;\n }\n}\n//# sourceMappingURL=AnalyticsDiscretizer.js.map","import { AnalyticsDiscretizer, } from \"./AnalyticsDiscretizer.js\";\nimport { AnalyticsPath } from \"./AnalyticsPath.js\";\nimport { PassthroughAnalyticsProfiler, } from \"./AnalyticsProfiler.js\";\nimport { CompoundOperator, } from \"./AnalyticsQuery.js\";\nexport class AnalyticsQueryEngine {\n _analyticsStore;\n _profiler;\n constructor(_analyticsStore, profiler) {\n this._analyticsStore = _analyticsStore;\n this._profiler = profiler ?? new PassthroughAnalyticsProfiler();\n }\n async executeCompound(query) {\n let result;\n const inputsQuery = {\n start: query.start,\n end: query.end,\n granularity: query.granularity,\n lod: query.lod,\n select: query.select,\n metrics: query.expression.inputs.metrics,\n currency: query.expression.inputs.currency,\n };\n const operandQuery = {\n start: query.start,\n end: query.end,\n granularity: query.granularity,\n lod: { priceData: 1 },\n select: { priceData: [AnalyticsPath.fromString(\"atlas\")] },\n metrics: [query.expression.operand.metric],\n currency: query.expression.operand.currency,\n };\n const inputExecute = await this.execute(inputsQuery);\n const operandExecute = await this.execute(operandQuery);\n if ([CompoundOperator.VectorAdd, CompoundOperator.VectorSubtract].includes(query.expression.operator)) {\n result = await this._profiler.record(\"ApplyVectorOperator\", async () => await this._applyVectorOperator(inputExecute, operandExecute, query.expression.operator, query.expression.resultCurrency));\n }\n else {\n result = await this._profiler.record(\"ApplyScalarOperator\", async () => await this._applyScalarOperator(inputExecute, operandExecute, query.expression.operator, query.expression.operand.useSum, query.expression.resultCurrency));\n }\n return result;\n }\n async execute(query) {\n const seriesResults = await this._executeSeriesQuery(query);\n const normalizedSeriesResults = this._profiler.recordSync(\"ApplyLODs\", () => this._applyLods(seriesResults, query.lod));\n const dimensions = Object.keys(query.select);\n const discretizedResult = this._profiler.recordSync(\"Discretize\", () => normalizedSeriesResults.length < 1\n ? []\n : AnalyticsDiscretizer.discretize(normalizedSeriesResults, dimensions, query.start, query.end, query.granularity));\n return discretizedResult;\n }\n async executeMultiCurrency(query, mcc) {\n const baseQuery = {\n ...query,\n currency: mcc.targetCurrency ?? query.currency,\n };\n let result = await this.execute(baseQuery);\n for (const conversion of mcc.conversions) {\n const nextQuery = {\n start: query.start,\n end: query.end,\n granularity: query.granularity,\n lod: query.lod,\n select: query.select,\n expression: {\n inputs: {\n metrics: baseQuery.metrics,\n currency: conversion.currency,\n },\n operator: CompoundOperator.ScalarMultiply,\n operand: {\n metric: conversion.metric,\n currency: mcc.targetCurrency,\n useSum: true,\n },\n resultCurrency: mcc.targetCurrency,\n },\n };\n const executedCompound = await this.executeCompound(nextQuery);\n result = await this._applyVectorOperator(result, executedCompound, CompoundOperator.VectorAdd, mcc.targetCurrency);\n }\n return result;\n }\n async _applyVectorOperator(inputsA, inputsB, operator, resultCurrency) {\n if ([CompoundOperator.ScalarMultiply, CompoundOperator.ScalarDivide].includes(operator)) {\n throw new Error(\"Invalid operator for vector operation\");\n }\n return inputsB;\n }\n async _applyScalarOperator(inputs, // expected input is the budget & actuals in 2022 monthly granularity in MKR\n operand, // expected input is the daily mkr price change in 2022 monthly granularity in DAI\n operator, // expected to me multiply and later addition\n useOperandSum, resultCurrency // expected to be DAI\n ) {\n if ([CompoundOperator.VectorAdd, CompoundOperator.VectorSubtract].includes(operator)) {\n throw new Error(\"Invalid operator for scalar operation\");\n }\n const result = [];\n const operandMap = {};\n const key = useOperandSum ? \"sum\" : \"value\";\n for (const operandPeriod of operand) {\n if (operandPeriod.rows.length > 0) {\n operandMap[operandPeriod.period] = operandPeriod.rows[0][key];\n }\n }\n // let previousValue: number = 1;\n for (const inputPeriod of inputs) {\n const outputPeriod = {\n period: inputPeriod.period,\n start: inputPeriod.start,\n end: inputPeriod.end,\n rows: inputPeriod.rows.map((row) => {\n const newRow = {\n dimensions: row.dimensions,\n metric: row.metric,\n unit: resultCurrency ? resultCurrency.toString() : row.unit,\n value: this._calculateOutputValue(row.value, operator, operandMap[inputPeriod.period]),\n sum: -1,\n };\n return newRow;\n }),\n };\n result.push(outputPeriod);\n }\n return result;\n }\n _calculateOutputValue(input, operator, operand) {\n switch (operator) {\n case CompoundOperator.VectorAdd:\n return input + operand;\n case CompoundOperator.VectorSubtract:\n return input - operand;\n case CompoundOperator.ScalarMultiply:\n return input * operand;\n case CompoundOperator.ScalarDivide:\n return input / operand;\n }\n }\n async _executeSeriesQuery(query) {\n const seriesQuery = {\n start: query.start,\n end: query.end,\n select: query.select,\n metrics: query.metrics,\n currency: query.currency,\n };\n return await this._analyticsStore.getMatchingSeries(seriesQuery);\n }\n _applyLods(series, lods) {\n return series.map((result) => ({\n ...result,\n dimensions: this._applyDimensionsLods(result.dimensions, lods),\n }));\n }\n _applyDimensionsLods(dimensionMap, lods) {\n const result = {};\n for (const [dimension, lod] of Object.entries(lods)) {\n if (lod !== null && dimensionMap[dimension]) {\n result[dimension] = dimensionMap[dimension][\"path\"]\n .applyLod(lod)\n .toString();\n result[\"icon\"] = dimensionMap[dimension][\"icon\"].toString();\n result[\"label\"] = dimensionMap[dimension][\"label\"].toString();\n result[\"description\"] =\n dimensionMap[dimension][\"description\"].toString();\n }\n }\n return result;\n }\n async getDimensions() {\n return await this._analyticsStore.getDimensions();\n }\n}\n//# sourceMappingURL=AnalyticsQueryEngine.js.map"],"names":["AnalyticsMetric","CompoundOperator","AnalyticsGranularity","getPeriodSeriesArray","range","result","series","getPeriodSeries","next","_createFactoryFn","current","_nextTotalPeriod","_nextAnnualPeriod","_nextSemiAnnualPeriod","_nextQuarterlyPeriod","_nextMonthlyPeriod","_nextWeeklyPeriod","_nextDailyPeriod","_nextHourlyPeriod","nextStart","seriesEnd","inputUtc","oneYearLater","DateTime","midYear","endYear","endDate","nextStartUtc","startMonth","nextWeekStartUTC","getQuarter","date","AnalyticsDiscretizer","dimensions","start","end","granularity","index","periods","disretizedResults","results","calculatedStart","calculatedEnd","r","endValue","dimensionedResults","p","id","period","month","formattedMonth","monthD","day","formattedMonthD","formattedDay","monthH","dayH","hourH","formattedMonthH","formattedDayH","formattedHourH","node","dimensionValues","remainingDimensions","subdimension","subdimensionValue","arr","newDimensionValues","metric","leaf","unit","metaDimensions","k","s","oldSum","newSum","when","now","cliff","a","Interval","b","map","dimName","dimValue","newDimensions","AnalyticsQueryEngine","_analyticsStore","profiler","PassthroughAnalyticsProfiler","query","inputsQuery","operandQuery","AnalyticsPath","inputExecute","operandExecute","seriesResults","normalizedSeriesResults","mcc","baseQuery","conversion","nextQuery","executedCompound","inputsA","inputsB","operator","resultCurrency","inputs","operand","useOperandSum","operandMap","key","operandPeriod","inputPeriod","outputPeriod","row","input","seriesQuery","lods","dimensionMap","dimension","lod"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}
|