@epam/statgpt-sdmx-toolkit 0.7.0-dev.20 → 0.7.0-dev.21
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/index.cjs +1 -1
- package/index.mjs +931 -1281
- package/package.json +3 -3
- package/LICENSE +0 -21
package/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const Et=require("@epam/statgpt-dial-toolkit"),g=require("@epam/statgpt-shared-toolkit"),At=require("compare-versions"),yt=require("date-fns"),R=e=>{if(e!=null){const t=e.split("=");return t.length===1?e:t[1]}},A=e=>{if(e==null)return{};const t=R(e),n={agency:"",id:"",version:""};return t&&(t.includes(":")&&(n.agency=t.split(":")[0],n.id=t.split(":")[1].split("(")[0]),t.includes("(")&&t.includes(")")&&(n.version=t.split("(")[1]?.split(")")[0])),n},j=e=>{const[t,n]=e.split(")."),{agency:s,id:r,version:o}=A(t+")");return{childId:n,agency:s,id:r,version:o}},P=(e,t,n)=>{const s=t===""?"":`(${t})`;return`${n}:${e}${s}`};var w=(e=>(e.DESCENDANTS="descendants",e.NONE="none",e.ALL="all",e))(w||{}),z=(e=>(e.EXACT="exact",e.AVAILABLE="available",e))(z||{});function Tt(e){return{data:{codelists:e.data.codelists,conceptSchemes:e.data.conceptSchemes,dataConstraints:e.data.dataConstraints?.map(St),dataflows:e.data.dataflows,dataStructures:e.data.dataStructures,metadataStructures:e.data.metadataStructures}}}function St(e){return{...e,cubeRegions:e.cubeRegions?.map(Rt)}}function Rt(e){return{isIncluded:e.include,memberSelection:e.keyValues.map(vt)}}function vt(e){return{included:e.include,componentId:e.id,selectionValues:e.values.map(It)}}function It(e){return{memberValue:e.value}}const _t=(e="",t="",n="")=>`sdmx/3.0/availability/dataflow/${e}/${t}/${n}`;class Pt{constructor(t){this.client=t}async getConstraints(t,n,s){const{agency:r,id:o,version:i}=A(t),c={filters:n||[],mode:z.AVAILABLE,references:w.NONE},a=_t(r,o,i),d=!!this.client.config.sdmxProxyUrl,u=d||this.client.config.isDialProxyMode,l=d?this.client.config.sdmxProxyUrl:this.client.config.constrainsApiUrl||this.client.config.apiUrl;if(u){const m=await this.client.postRequest(a,{body:c},l,s);return Tt(m)}return await this.client.postRequest(a,{body:c},l,s)}}var E=(e=>(e.CSV="csv",e.JSON="json",e.XML="xml",e))(E||{}),he=(e=>(e.ID="id",e.NAME="name",e.ID_NAME="both",e))(he||{}),De=(e=>(e.FULL_DATASET="full",e.DATA_IN_TABLE="query",e))(De||{});const Ee=(e,t)=>{switch(e){case E.CSV:return ue("application/vnd.sdmx.data+csv;version=2.0.0",t);case E.XML:return"application/vnd.sdmx.data+xml;version=3.0.0";case E.JSON:return"application/vnd.sdmx.data+json;version=2.1";default:return ue("application/vnd.sdmx.data+csv;version=2.0.0",t)}},Ae=e=>{switch(e){case E.CSV:return"text/csv; charset=utf-8";case E.XML:return"application/xml; charset=utf-8";case E.JSON:return"application/json; charset=utf-8";default:return"text/csv; charset=utf-8"}},ue=(e,t)=>`${e}; labels=${t}`;var J=(e=>(e.REFERENCE_PARTIAL="referencepartial",e.FULL="full",e))(J||{});const wt="all",ye="sdmx/3.0/data/dataflow",bt="&",de=":",Nt="=",X="+",Mt=",",Te="*",q=(e,t,n)=>{const{filterKey:s,timeFilter:r}=n,{agency:o,id:i,version:c}=A(e),a=[r||"",t].filter(u=>!!u).join(bt);return`${`${ye}/${o}/${i}/${c}`}/${s||Te}?${a}`},Ct=(e="",t="",n="",s=w.DESCENDANTS)=>`sdmx/3.0/structure/dataflow/${e}/${t}/${n}?references=${s}&detail=${J.REFERENCE_PARTIAL}`;class Lt{constructor(t){this.client=t}async getDataSet(t,n,s){const{agency:r,id:o,version:i}=A(t);return await this.client.getRequest(Ct(r,o,i,n),void 0,s)}async getDatasetData(t,n,s){const r=new URLSearchParams({includeHistory:"false",limit:"1000",attributes:wt,dimensionAtObservation:"TIME_PERIOD"}).toString(),o=q(t,r,n);return await this.client.getRequest(o,void 0,s)}async downloadDataSet(t,n,s,r,o,i,c=!1,a){const d=new URLSearchParams({compress:"false",attributes:c?"all":"none",limit:"1000"}).toString(),u=q(t,d,o);return this.client.streamRequest(u,{method:"GET",headers:{Accept:Ee(n,r),"Accept-language":s}},i,a,Ae(n))}}class $t{constructor(t){this.config=t,console.info("SdmxApiClient initialized",{apiUrl:t.apiUrl||"NOT SET"})}async getRequest(t,n,s){return this.request(t,{...n,method:"GET"},void 0,s)}async postRequest(t,n,s,r){return this.request(t,{...n,method:"POST"},s,r)}async streamRequest(t,n,s,r,o){const i=`${this.config.apiUrl}/${t}`,c=this.buildHeaders(r,n.headers),a=new ReadableStream({async start(u){try{const l=await g.sendRequest(i,c,n);if(!l.ok){const y=await l.text();throw console.error(`Fetch failed! Status: ${l.status}, Body: ${y}`),new Error(`Fetch failed with status ${l.status}`)}const m=l.body?.getReader();if(!m)throw new Error("Failed to create stream reader");const f=new Uint8Array([239,187,191]);u.enqueue(f);const D=async()=>{const{done:y,value:S}=await m.read();y?u.close():(u.enqueue(S),await D())};D()}catch(l){u.error(l)}}}),d=new Headers({"Content-Disposition":`attachment; filename=${encodeURIComponent(s)}`,...o?{"Content-Type":o}:{}});return new Response(a,{headers:d})}async request(t,n,s,r){const o=Date.now(),i=`${s||this.config.apiUrl}/${t}`,c=this.buildHeaders(r,n.headers);this.addInfoRequestLog("API Request",i,n,c);try{const a=await g.sendRequest(i,c,n),d=Date.now()-o;let u;const l=await a.text();try{u=l?JSON.parse(l):{}}catch{if(this.addErrorRequestParsing(i,n,a,d,l),!a.ok)throw new Error(`API request failed: ${a.status} ${a.statusText} - ${l.substring(0,100)}`);u={data:l}}if(!a.ok){this.addErrorRequestLog(i,n,a,d,u);const m=Et.getErrorMessage(u,a);throw new Error(`API request failed: ${m}`)}return u}catch(a){const d=Date.now()-o;throw console.error("API Request Exception",{method:n.method,url:i,duration:`${d}ms`,error:a instanceof Error?a.message:String(a)}),a}}buildHeaders(t,n){if(this.config.isDialProxyMode)return{...g.getHeaders(this.config.dialApiKey,{jwt:t}),...n};const s={...g.getHeaders(void 0,{jwt:this.config.jwt}),...n};return this.config.apiKey!=null&&(s[g.OCP_APIM_SUBSCRIPTION_KEY_HEADER]=this.config.apiKey),s}addInfoRequestLog(t,n,s,r){const o={method:s.method||"GET",url:n,headers:g.sanitizeHeaders(r)};s.body&&(o.body=s.body),console.info(t,o)}addErrorRequestLog(t,n,s,r,o){console.error("API Request Failed",{method:n.method,url:t,status:s.status,statusText:s.statusText,duration:`${r}ms`,response:o})}addErrorRequestParsing(t,n,s,r,o){console.error("API Response Parse Error",{method:n.method,url:t,status:s.status,statusText:s.statusText,duration:`${r}ms`,responseText:o.substring(0,200),error:"Response is not valid JSON"})}}var b=(e=>(e.LAST_UPDATE_AT="lastUpdatedAt",e.SERIES_COUNT="series_count",e))(b||{});function Ut(e){return e?.annotations?.find(t=>{if(t.id===b.LAST_UPDATE_AT)return t})?.text}const N=(e,t)=>e?.names&&e?.names[t]||e?.name,Se=(e,t,n)=>{if(!(!e||t?.has(e?.id))&&(t?.set(e?.id,e),e?.parent)){const s=n?.get(e?.parent);Se(s,t,n)}},Re=(e,t)=>{const n=new Map,s=new Map(e?.map(r=>[r.id,r]));return t?.forEach(r=>{Se(r,n,s)}),Array.from(n?.values())};var ve=(e=>(e.C="c",e))(ve||{}),p=(e=>(e.EQUALS="eq",e.NOT_EQUALS="ne",e.LESS="lt",e.LESS_OR_EQUAL="le",e.GREATER="gt",e.GREATER_OR_EQUAL="ge",e.CONTAINS="co",e.NOT_CONTAINS="nc",e.STARTS="sw",e.ENDS="ew",e))(p||{}),Ie=(e=>(e.BOOLEAN="Boolean",e.DATE_TIME="DateTime",e.DECIMAL="Decimal",e.INTEGER="Integer",e.OBSERVATION_TIME_PERIOD="ObservationalTimePeriod",e.STRING="String",e.TIME="Time",e.TIME_RANGE="TimeRange",e.URI="URI",e))(Ie||{}),_e=(e=>(e.ANNUAL="A",e.QUARTERLY="Q",e.MONTHLY="M",e))(_e||{});const Ot=["FREQ","FREQUENCY"],Pe="TIME_PERIOD",we="time_period_start",be="time_period_end",xt=e=>{const t=e?.find(o=>o.id===we),n=e?.find(o=>o.id===be),s=n?.title?new Date(n?.title):null;return{startPeriod:t?.title?new Date(t?.title):null,endPeriod:s}},Yt=(e,t)=>e.id.localeCompare(t.id),Ft=(e,t)=>e.memberValue.localeCompare(t.memberValue),Wt=(e,t)=>{const n=new Array(e.length),s=e.map((i,c)=>[i,c]);s.sort((i,c)=>Yt(i[0],c[0]));const r=[...t];r.sort(Ft);let o=0;for(const i of s){const c=i[0];for(;o<r.length&&r[o].memberValue.localeCompare(c.id)<0;)o+=1;o<r.length&&r[o].memberValue===c.id&&(n[i[1]]=i[0])}return n.filter(i=>i!=null)},Qt=e=>!!e?.some(t=>t.parent),Vt=(e,t,n,s,r=[])=>{let o=e||[];if(kt(n||[],t||"")){const i=(n||[])[0].cubeRegions?.find(({isIncluded:c})=>c);if(i){const c=i.memberSelection?.find(({componentId:a})=>a===t);c?o=o.length===0?(c.selectionValues||[]).map(({memberValue:a})=>({id:a,name:a})):Wt(o,c.selectionValues):o=[]}}else r.length!==0&&(o=o.filter(({id:i})=>r.includes(i)));return Qt(e)&&(o=Re(e,o)),o?.map(i=>({...i,name:s?N(i,s):i?.name}))},kt=(e,t)=>e!=null&&e.length>0&&t!=null,Ne=e=>{const t=[];return e?.filters?.forEach(n=>{n.componentCode!==Pe&&t.push({componentCode:n.componentCode,operator:p.EQUALS,value:n.values.join(",")})}),t},qt=e=>{const t=new Map;return e?.forEach(n=>{t.set(n.urn,Ne(n))}),t},I="+",M=(e,t)=>{const{agency:n,id:s,version:r}=A(e),o=t.filter(a=>a.agencyID===n&&a.id===s&&!a?.version?.includes(I));if(o.length===1)return o[0];if(!r?.includes(I))return o.find(a=>a.version===r);const i=o.map(a=>a.version),c=Me(r,i);return o.find(a=>a.version===c[0])},Me=(e,t)=>{const n=Bt(e,t);return n.length>0?[n[0]]:[]},Bt=(e,t)=>{const n=[];return t.forEach(s=>{Le(e,s)&&n.push(s)}),n},Ce=e=>{const t=e.trim(),n=t.indexOf("+");if(n<=0)return"";let s=n;for(;s>0&&t[s-1]>="0"&&t[s-1]<="9";)s--;return s>0?t.slice(0,s):""},Le=(e,t)=>{const n=e.trim().replace(/\+/,""),s=Ce(e);return t.startsWith(s)&&At.compare(t,n,">=")},C=(e,t)=>{const{concept:n}=$e(e,t);return n},$e=(e,t)=>{if(e==null)return{concept:void 0,scheme:void 0};const{childId:n,agency:s,id:r,version:o}=j(e);if(o?.includes(I)){const i=M(e,t);return{concept:B(i?.concepts||[],n),scheme:i}}for(const i of t)if(Gt(i,r,s,o))return{concept:B(i?.concepts||[],n),scheme:i};return{concept:void 0,scheme:void 0}},B=(e,t)=>e?.find(n=>n.id===t),Gt=(e,t,n,s)=>e.id===t&&e.agencyID===n&&e.version===s,Kt=(e=[],t=[],n)=>{const s=n?.conceptIdentity||"",r=C(s,t),o=R(n?.localRepresentation?.enumeration),i=R(r?.coreRepresentation?.enumeration),c=o||i;if(c!=null)return M(c,e)},Ue=(e,t)=>{const n=e?.data?.dataSets?.[0],r=e?.data?.structures?.[0]?.attributes?.dimensionGroup||[],o=n?.dimensionGroupAttributes,i={};for(const c of r){const a=c.relationship.dimensions,{codedSeriesKey:d,decodedSeriesKey:u}=Z(e,t,a);i[c.id]={values:o?.[d]||[],decodedSeriesKey:u,codedSeriesKey:d}}return i},Z=(e,t,n)=>{const s=e?.data?.structures?.[0],r=[...s?.dimensions.series||[],...s?.dimensions.observation||[]],o=new Array(r?.length),i=new Array(r?.length);return n?.forEach(c=>{const a=r?.findIndex(l=>l.id===c)||0,d=t[a],u=r[a].values.findIndex(l=>l.id===d||l.value===d)||0;o[a]=u>=0?u:d,i[a]=d}),{codedSeriesKey:o.join(":"),decodedSeriesKey:i.join(":")}},Ht=(e,t,n)=>{const s=e?.data?.dataSets?.[0],r=e?.data?.structures?.[0],o=(r?.attributes?.dimensionGroup||[]).filter(l=>l.relationship.dimensions?.length===1&&l.relationship.dimensions.includes(t||"")),i=s?.dimensionGroupAttributes,c=[...r?.dimensions.series||[],...r?.dimensions.observation||[]],a=c?.findIndex(l=>l.id===t),d=new Array(c?.length);d[a]=n||"";const u={};for(const l of o){const m=l.relationship.dimensions,{codedSeriesKey:f,decodedSeriesKey:D}=Z(e,d,m);u[l.id]={values:i?.[f]||[],decodedSeriesKey:D,codedSeriesKey:f}}return u},Oe=(e,t)=>{if(t==null)return;const n=e.values?.[t];return n??(t instanceof Array?{values:t}:{value:t.toString()})},jt=(e,t,n,s)=>{const r=t?.find(o=>o?.id===e?.id)?.values;return n?.filter(o=>r?.some(i=>i.id===o.id))?.map(o=>({...o,name:s?N(o,s):o?.name}))||[]},xe=(e,t)=>{const n=t?.dataStructureComponents?.attributeList,s=e?.metadataStructureComponents?.metadataAttributeList;return n?.metadataAttributeUsages?.map(r=>{const o=s?.metadataAttributes?.find(i=>i?.id===r?.metadataAttributeReference);return{...o,id:o?.id??r.metadataAttributeReference,attributeRelationship:r.attributeRelationship,isMandatory:Number(o?.minOccurs)>0}})},zt=(e=[],t,n)=>{const s=R(t?.conceptIdentity)||"",r=C(s,e);return n?N(r,n):r?.name??r?.id??t?.id};var Ye=(e=>(e.CONDITIONAL="Conditional",e.MANDATORY="Mandatory",e))(Ye||{}),L=(e=>(e.DIMENSION="Dimension",e.MEASURE_DIMENSION="MeasureDimension",e.TIME_DIMENSION="TimeDimension",e))(L||{}),Fe=(e=>(e.UNBOUNDED="unbounded",e))(Fe||{});function G(e){return e?.dataStructures?.[0]?.dataStructureComponents?.dimensionList}function Jt(e){return e?.data?.structures?.[0]?.dimensions?.series||[]}function Xt(e){return e?.data?.structures?.[0]?.dimensions?.observation?.[0].values.map(t=>t.value?t.value:t.id).filter(t=>t!=null)||[]}function Zt(e){return e.find(t=>t.type===L.TIME_DIMENSION)}const en=e=>{const t=new Map,n=e?.dataStructures?.[0],s=e?.metadataStructures?.[0],r=e?.conceptSchemes||[],o=e?.codelists||[];if(e){const i=xe(s,n);[...G(e)?.dimensions||[],...G(e)?.timeDimensions||[],...i,...n?.dataStructureComponents?.attributeList?.attributes||[]].forEach(a=>{const d=C(a?.conceptIdentity,r),u=a?.localRepresentation?.enumeration||d?.coreRepresentation?.enumeration,l=M(u,o);a?.id&&(u?t.set(a?.id,{...l,name:d?.name,names:d?.names}):t.set(a?.id,{id:a?.id,name:d?.name,names:d?.names}))})}return t},tn=e=>e?.find(t=>t.id===b.SERIES_COUNT)?.title||"",ee=1440*60*1e3,te=7*ee;function ne(e){const t=`${e}-01-01`,n=new Date(t);if(n.getDay()!==4){const r=1+(4-n.getDay()+7)%7;n.setMonth(0,r)}return n}function nn(e){const t=new Date(e),s=-((t.getDay()+6)%7)+3;return t.setDate(t.getDate()+s),new Date(t.valueOf())}function K(e,t="W"){const n=`${e}-12-31`,s=v(new Date(n),t);if(s.weekYear===e)return s.weekNumber;const r=`${e}-12-24`;return v(new Date(r),t).weekNumber}function se(e,t,n="W"){return`${e}-${n}${t<10?"0"+t:t}`}function v(e,t="W"){const n=nn(e),s=n.getFullYear(),r=ne(s),o=1+Math.ceil((n.getTime()-r.getTime())/te);return{code:se(s,o,t),weekNumber:o,weekYear:s}}function We(e){const[t,n]=e.split("-W"),r=ne(+t).getTime()+(+n-1)*te-3*ee;return new Date(r)}function Qe(e){const[t,n]=e.split("-W"),r=ne(+t).getTime()+(+n-1)*te+3*ee;return new Date(r)}const le="/api/download",sn=6e4,rn=/[\x00-\x1F\x7F<>:"/\\|?*]/g,re=e=>e.normalize("NFKC").replace(rn,"_").replace(/_+/g,"_").replace(/\s+/g," ").replace(/^[._ ]+/,"").trim()||"download",on=(e,t,n,s,r,o,i)=>{const c=new URL(le,window.location.origin);if(c.search=new URLSearchParams({urn:e,format:t,compress:"false",filename:o,filters:JSON.stringify(r),attribute:s,language:n,isMetadata:i?"true":"none"}).toString(),c.origin!==window.location.origin||c.pathname!==le)throw new Error("Invalid download URL");return c.toString()},an=(e,t)=>{const n=URL.createObjectURL(e),s=document.createElement("a");s.href=n,s.download=re(t),s.rel="noopener noreferrer",s.click(),window.setTimeout(()=>URL.revokeObjectURL(n),sn)},cn=async(e,t,n,s,r,o,i,c)=>{const a=re(o),d=on(e,t,n,s,r,a,i),u=await fetch(d,{method:"GET",credentials:"same-origin",signal:c});if(!u.ok){const m=await u.text();throw new Error(`Download request failed: ${u.status} ${u.statusText}${m?` - ${m}`:""}`)}const l=await u.blob();c?.aborted||an(l,a)},un=(e,t)=>{const n=[];for(const s of e){if(s.type!==L.DIMENSION)continue;const r=t.find(o=>o.componentCode===s.id);r!=null&&r.values?.length>0?n.push(r.values?.join(X)):n.push("*")}return n.join(".")},Ve=(e,t)=>{if(!e||!e.startPeriod&&!e.endPeriod)return null;const n=[],{startPeriod:s,endPeriod:r}=e;if(s&&n.push(`${p.GREATER_OR_EQUAL}${de}${me(s)}`),r&&n.push(`${p.LESS_OR_EQUAL}${de}${me(r)}`),n.length===0)return null;const o=t,i=n.join(X);return`${encodeURIComponent(`c[${o}]`)}${Nt}${encodeURIComponent(i)}`},me=e=>yt.format(e,"yyyy-MM-dd"),dn=(e,t)=>{const n=ke(e,t)||null;return n?Ve(n,t?.id):null},ke=(e,t)=>{const n=t.id,s=e?.filters?.find(a=>a.componentCode===n);if(!s||!s.values)return null;const r=s.values?.filter(a=>!!a);if(!r.length)return null;const o=s.operator;if(o===p.LESS_OR_EQUAL||o===p.LESS)return{startPeriod:null,endPeriod:g.getTimePeriod(r[0])};if(o===p.GREATER_OR_EQUAL||o===p.GREATER)return{startPeriod:g.getTimePeriod(r[0]),endPeriod:null};const i=g.getTimePeriod(r[0]),c=g.getTimePeriod(r[1]);return{startPeriod:i,endPeriod:c}},qe="Observation",ln=e=>{const t=e?.data?.dataSets,n=e?.data?.structures?.[0];if(!t||!n)return[];const s=n.attributes,r=n.dimensions,o=s?.dimensionGroup||[],i=t[0].series||t[0].observations,c=r.series?.length?r.series:r.observation,a=[];for(const d in i){const u=[],{name:l,parsedTimeSeriesValue:m}=Be(d,c),f=i[d],D=f.attributes||[];if(Object.keys(f).length===0){a.push({name:l,parsedTimeSeriesValue:m,values:u,attributes:[],dataSetAttrs:[]});continue}u.push(...gn(f,n));const y=_(s?.series||[],T=>D[T]),S=fn(n.attributes?.dataSet||[],t[0].attributes?.filter(T=>T!=null)||[]),V=Ue(e,m),k=o.map((T,ht)=>{const ce=V[T.id],Dt=Oe(T,ce.values[ht]);return{attribute:T,dimensionGroupValue:Dt,dimensionGroupData:ce}});a.push({name:l,parsedTimeSeriesValue:m,values:u,attributes:y,dataSetAttrs:S,dimensionGroupAttributes:k})}return a},Be=(e,t)=>{const n=e.split(new RegExp("(?<!\\|):(?!\\||$)")),s=[];for(let r=0;r<n.length;r++){const o=t?.[r],i=Number(n[r]);if(i<0||o==null)continue;const c=o.values[i];if(c==null){s.push(n[r].replace("|:",":"));continue}s.push(c?.id||c?.value||"")}return{name:Ge(s),parsedTimeSeriesValue:s}},_=(e,t)=>{const n=[];for(let s=0;s<e.length;s++){const r=e[s],o=t(s),i=o!=null&&r.values!=null?mn(o,r):void 0;n.push({name:r.id,value:i})}return n},mn=(e,t)=>{const n=t.values[e];return n==null?typeof e=="object"?e:e.toString():n?.id||n?.value||n?.ids||n?.values},Ge=e=>e.map(t=>t?Ke(t):"").join("."),Ke=e=>e.replace(/\./g,"|.").replace(/:/g,"|:"),gn=(e,t)=>{const n=t.measures?.observation?.length;if(e.observations==null)return[{values:ge(e,t.measures),obsAttributes:_(t.attributes?.observation||[],i=>e[i+n]),dimensionAtObservation:qe}];const s=e.observations,r=t.dimensions.observation?.[0],o=[];for(const i in s){const c=r?.values[i];o.push({dimensionAtObservation:c?.value||c?.id,values:ge(s[i],t.measures),obsAttributes:_(t.attributes?.observation||[],a=>s[i][a+n])})}return o},ge=(e,t)=>t?.observation?.map((n,s)=>({name:n.id,value:e[s]}))||[],fn=(e,t)=>e.reduce((n,s,r)=>{const o=t[r];return pn(n,s,o,""),n},[]),pn=(e,t,n,s)=>{const r=n!=null?t?.values?.length>0?t.values[n]?.id||t.values[n]?.value:String(n):s;e.push({name:t.id,value:r||""})},He=/^[0-9][0-9][0-9][0-9]-Q[1-4]$/,je=/^[0-9][0-9][0-9][0-9]-W(0[1-9]|[1-4][0-9]|5[0-3])$/,ze=/^[0-9][0-9][0-9][0-9]-S[1-2]$/,Je=/^[0-9][0-9][0-9][0-9]$/,Xe=/^[0-9][0-9][0-9][0-9]-(0[1-9]|1[0-2])-[0-9][0-9]$/,Ze=/^[0-9][0-9][0-9][0-9]-M(0[1-9]|(1[0-2]))$/,$=e=>Je.exec(e),U=e=>!!$(e),et=e=>ze.exec(e),O=e=>!!et(e),x=e=>Ze.exec(e),Y=e=>!!x(e),F=e=>He.exec(e),W=e=>!!F(e),tt=e=>Xe.exec(e),nt=e=>!!tt(e),st=e=>je.exec(e),Q=e=>!!st(e);function oe(e){return U(e)?hn(e):O(e)?En(e):W(e)?yn(e):Y(e)?Sn(e):Q(e)?We(e):vn(e)}function ie(e){return U(e)?Dn(e):O(e)?An(e):W(e)?Tn(e):Y(e)?Rn(e):Q(e)?Qe(e):In(e)}function hn(e){const t=$(e);if(t)return new Date(Number(t[0]),0,1)}function Dn(e){const t=$(e);if(t)return new Date(Number(t[0])+1,0,1)}function En(e){const[t,n]=e.split("-S");switch(+n){case 1:return new Date(+t,0,1);case 2:return new Date(+t,6,1)}}function An(e){const[t,n]=e.split("-S");switch(+n){case 1:return new Date(+t,6,1);case 2:return new Date(+t+1,0,1)}}function yn(e){const t=F(e);if(!t)return;const[n,s]=t[0].split("-Q");switch(+s){case 1:return new Date(+n,0,1);case 2:return new Date(+n,3,1);case 3:return new Date(+n,6,1);case 4:return new Date(+n,9,1)}}function Tn(e){const t=F(e);if(!t)return;const[n,s]=t[0].split("-Q");switch(+s){case 1:return new Date(+n,3,1);case 2:return new Date(+n,6,1);case 3:return new Date(+n,9,1);case 4:return new Date(+n+1,0,1)}}function Sn(e){const t=x(e);if(!t)return;const[n,s]=t[0].split("-M");return new Date(+n,+s-1,1)}function Rn(e){const t=x(e);if(!t)return;const[n,s]=t[0].split("-M");return new Date(+n,+s,1)}const vn=e=>new Date(`${e}T00:00:00`),In=e=>{const t=new Date(`${e}T23:59:00`);return t.setMinutes(t.getMinutes()+1),t},_n=1,rt=(e,t,n,s=!0,r="Q")=>{const o=[],i=t&&t>3?Cn(t,s):1,c=n?Math.floor((n-1)/3):4;for(let a=i;a<=c;a++)o.push(`${e}-${r}${a}`);return o},ot=(e,t,n,s="S")=>{const r=[];return(t||1)<7&&(n||12)>6&&r.push(`${e}-${s}1`),n==null&&r.push(`${e}-${s}2`),r},Pn=e=>Math.ceil(e/3),it=(e,t,n="M")=>`${e}-${n}${t.toString().padStart(2,"0")}`,wn=(e,t,n="M")=>{const s=[];for(let r=t;r<=12;r++)s.push(it(e,r,n));return s},bn=(e,t,n,s="M")=>{const r=[];for(let o=t;o<n;o++)r.push(it(e,o,s));return r},at=(e,t,n,s="M")=>{const r=t||1,o=n==null,i=n||12;return o?wn(e,r,s):bn(e,r,i,s)},Nn=(e,t,n="M")=>{switch(t){case 0:return[`${e}-${n}01`,`${e}-${n}02`,`${e}-${n}03`];case 1:return[`${e}-${n}04`,`${e}-${n}05`,`${e}-${n}06`];case 2:return[`${e}-${n}07`,`${e}-${n}08`,`${e}-${n}09`];case 3:return[`${e}-${n}10`,`${e}-${n}11`,`${e}-${n}12`];default:return[]}},ct=(e,t)=>{const n=h(t,!0),s=h(e),r=n.getFullYear(),o=s.getFullYear(),i=n.getTime()<=s.getTime()?o+_n-r:0;return Array.from({length:i},(a,d)=>r+d)},h=(e,t=!1)=>{const n=Mn(e,t);return n?(n.getTimezoneOffset()>0&&n.setMinutes(n.getMinutes()+n.getTimezoneOffset()),n):new Date},Mn=(e,t=!1)=>{const n=Number(e);return e.toString().length!==13?t?oe(e):ie(e):isNaN(n)?new Date(`${e}T00:00:00.000Z`):new Date(n)},Cn=(e,t)=>t?Math.floor((e+1)/3):Math.ceil((e+1)/3),Ln=(e,t)=>{const n=pe(e)-pe(t);if(n===0&&e!==t){const s=fe(e),r=fe(t);return s-r}return n},fe=e=>U(e)?6:O(e)?5:W(e)?4:Y(e)?3:Q(e)?2:nt(e)?1:0,pe=(e,t=!1)=>(t?oe(e):ie(e))?.getTime()||0,ae=(e,t,n)=>{const s=h(t,!0),r=h(n),o=h(e,!0),i=h(e),c=s.getTime()>o.getTime()?s:o,a=r.getTime()<i.getTime()?r:i;return{start:c,end:a}},ut=(e,t,n,s="W")=>{const r=+e,{start:o,end:i}=ae(e,t,n);if(o.getTime()>i.getTime())return[];const c=v(o,s),a=c.weekYear===r?c.weekNumber:c.weekYear<r?1:K(r,s),d=v(i,s),u=d.weekYear===r?d.weekNumber:d.weekYear>r?K(r,s):1,l=[];if(a<u)for(let m=a;m<=u;m++)l.push(se(r,m,s));return l},$n=e=>{const t=new Date(e);return t.setMinutes(t.getMinutes()-t.getTimezoneOffset()),t.toISOString().slice(0,10)},dt=(e,t,n)=>{const{start:s,end:r}=ae(e,t,n);if(s.getTime()>r.getTime())return[];const o=[],i=new Date(s.getFullYear(),s.getMonth(),s.getDate()),c=new Date(r.getFullYear(),r.getMonth(),r.getDate());for(;i.getTime()<c.getTime();){const a=$n(i);o.push(a),i.setDate(i.getDate()+1)}return o},lt=e=>({isDailyExist:!!e?.some(({memberValue:t})=>t==="D"),isWeeklyExist:!!e?.some(({memberValue:t})=>t==="W"),isMonthlyExist:!!e?.some(({memberValue:t})=>t==="M"),isQuarterlyExist:!!e?.some(({memberValue:t})=>t==="Q"),isSemiAnnualExist:!!e?.some(({memberValue:t})=>t==="S"),isYearlyExist:!!e?.some(({memberValue:t})=>t==="A"||t==="Y")}),Un=(e,t,n,s)=>{const r=s===0?h(t.toString(),!0)?.getMonth()+1:void 0,o=s===e.length-1?h(n.toString())?.getMonth()+1||1:void 0;return{startMonth:r,endMonth:o}},mt=["FREQUENCY","FREQ"],On=(e,t)=>{const n=e?.[0]?.cubeRegions?.[0]?.memberSelection?.find(a=>mt.includes(a.componentId))?.selectionValues,s=lt(n||[]),r=t?.startPeriod?.getTime()||1,o=t?.endPeriod?.getTime()||1,i=ct(o,r),c=[];return i.forEach((a,d)=>{const u=[],{startMonth:l,endMonth:m}=Un(i,new Date(r),new Date(o),d),{isDailyExist:f,isWeeklyExist:D,isMonthlyExist:y,isQuarterlyExist:S,isSemiAnnualExist:V,isYearlyExist:k}=s;k&&u.push(a.toString()),V&&u.push(...ot(a,l,m)),S&&u.push(...rt(a,l,m,!1)),y&&u.push(...at(a,l,m)),D&&u.push(...ut(a,r.toString(),o.toString())),f&&u.push(...dt(a,r.toString(),o.toString())),c.push(...u)}),c};function gt(e){const{urn:t}=e.details;return P(t.resourceId,t.version,t.agencyId)}function xn(e){const t={};for(const n of e.datasets){const s=n.dataset,r=gt(s);t[r]=s.details.dimensions}return t}function Yn(e){const t={};for(const n of e.datasets)n.last_updated_at&&(t[gt(n.dataset)]=n.last_updated_at);return t}function Fn(e){return e?.codelists?.length?e.codelists.map(t=>({id:t.id,agencyID:t.agencyID??"",version:t.version??"",name:t.name,codes:t.codes?.map(n=>({id:n.id,name:n.name,description:n.description}))})):(e?.glossaries??[]).map(t=>({id:t.id,agencyID:t.agencyID??"",version:t.version??"",name:t.name,codes:t.terms?.map(n=>({id:n.id,name:n.name,description:n.description}))}))}function ft(e,t){const n=s=>{const r=s.indexOf("(");if(r===-1)return s;const o=s.indexOf(")",r);return o===-1?s:s.slice(0,r+1)+"*"+s.slice(o)};return n(e)===n(t)}function H(e){return P(e.id,e.version??"",e.agencyID??"")}function pt(e,t,n){t?.forEach(s=>{const{childId:r,agency:o,id:i,version:c}=j(s.code),a=P(i,c,o),d=n?.find(l=>ft(a,H(l))),u=d?.codes?.find(l=>l.id===r);if(u!=null){const l=s.code.replace(a,H(d));e.push({...u,code:l})}pt(e,s.hierarchicalCodes,n)})}function Wn(e,t){const n=[];return pt(n,e?.hierarchicalCodes,t),n}function Qn(e){const t={};return e?.forEach(n=>{t[H(n)]=n.codes}),t}function Vn(e,t,n){if(!n||n.length===0||!t)return e;const s=n[0].cubeRegions?.find(i=>i.isIncluded);if(!s)return e;const r=s.memberSelection?.find(i=>i.componentId===t);if(!r)return[];const o=new Set(r.selectionValues.map(i=>i.memberValue));return e.filter(i=>o.has(i.id))}class kn{constructor(t){this.client=t}async getAvailableHierarchies(t,n,s){const{agency:r,id:o,version:i}=A(t),a=`${this.client.config.sdmxProxyUrl?this.client.config.sdmxProxyUrl:this.client.config.apiUrl}/sdmx/3.0/structure/codelist`,d=s?{[g.X_SOURCE_ARTEFACT_URN_HEADER]:s}:void 0;return this.client.request(`${r}/${o}/${i}?references=hierarchy&detail=allcompletestubs`,{method:"GET",headers:d},a,n)}async getHierarchy(t,n,s){const{agency:r,id:o,version:i}=A(t),a=`${this.client.config.sdmxProxyUrl?this.client.config.sdmxProxyUrl:this.client.config.apiUrl}/sdmx/3.0/structure/hierarchy`,d=s?{[g.X_SOURCE_ARTEFACT_URN_HEADER]:s}:void 0;return this.client.request(`${r}/${o}/${i}?references=descendants&detail=full`,{method:"GET",headers:d},a,n)}}exports.Annotations=b;exports.AssignmentStatus=Ye;exports.AvailabilityApi=Pt;exports.DATASET_DATA_URL=ye;exports.DatasetApi=Lt;exports.DimensionType=L;exports.DownloadType=De;exports.FREQUENCY_DIMENSION_ID=Ot;exports.FREQUENCY_DIM_ID=mt;exports.FileColumnsAttribute=he;exports.GET_v3_FILTER_ALL=Te;exports.GET_v3_FILTER_AND=Mt;exports.GET_v3_FILTER_OR=X;exports.HierarchyApi=kn;exports.OBSERVATION_KEY=qe;exports.OccurrenceType=Fe;exports.Periods=_e;exports.RepresentationTextType=Ie;exports.SDMX_DATA_QUERY_PARAMS=ve;exports.SINGLE_WILDCARD_SYMBOL=I;exports.SdmxApiClient=$t;exports.SdmxAvailabilityMode=z;exports.SdmxDataFormat=E;exports.SdmxDetails=J;exports.SdmxReferences=w;exports.SeriesFilterOperator=p;exports.TIME_PERIOD=Pe;exports.TIME_PERIOD_END_ANNOTATION_KEY=be;exports.TIME_PERIOD_START_ANNOTATION_KEY=we;exports.buildDatasetDimensionsMetadataMap=xn;exports.buildDatasetLastUpdatedMap=Yn;exports.dailyPattern=Xe;exports.decodeDimensionId=Ke;exports.findCodelistByDimension=Kt;exports.generateDatasetDataRequest=q;exports.generateShortUrn=P;exports.getAdditionalColumns=On;exports.getAnnotationPeriod=xt;exports.getArtifactByUrnWithWildCard=M;exports.getAttachedDimensionsSeriesByDimension=Ht;exports.getAttachedDimensionsSeriesByTsId=Ue;exports.getAttachedDimensionsSeriesKey=Z;exports.getAttributeValueFromDataQueryResponse=Oe;exports.getAvailableCodes=jt;exports.getAvailableCodesFromConstrains=Vt;exports.getChildParsedUrn=j;exports.getCodeListsData=Qn;exports.getConcept=C;exports.getConceptByUrn=B;exports.getConceptWithScheme=$e;exports.getConvertedMetaAttributes=xe;exports.getDailyRegExp=tt;exports.getDaysColumns=dt;exports.getDimensionTitle=zt;exports.getDimensions=G;exports.getFilteredItemsWithParents=Re;exports.getFiltersDtoFromDataQuery=Ne;exports.getFiltersDtoMapFromDataQuery=qt;exports.getHierarchyAvailableCodes=Vn;exports.getHierarchyCodes=Wn;exports.getISOWeek=v;exports.getKeyFromUrn=R;exports.getLastUpdatedTime=Ut;exports.getLastWeekNumberOfYear=K;exports.getLocalizedName=N;exports.getMonthlyData=at;exports.getMonthlyDataByQuarter=Nn;exports.getMonthlyRegExp=x;exports.getParsedEndPeriodDate=ie;exports.getParsedResponse=ln;exports.getParsedStartPeriodDate=oe;exports.getPeriodDate=h;exports.getPeriods=lt;exports.getQuarterByMonth=Pn;exports.getQuarterlyRegExp=F;exports.getQuartersData=rt;exports.getQueryTimePeriodFilters=Ve;exports.getRequestAcceptHeader=Ee;exports.getResolvedVersionBySingleWildcard=Me;exports.getResponseContentType=Ae;exports.getSemiAnnualData=ot;exports.getSemiAnnuallyRegExp=et;exports.getSeriesAttributes=_;exports.getSeriesName=Be;exports.getStructureComponentsMap=en;exports.getStructureDimensions=Jt;exports.getTimeDimension=Zt;exports.getTimePeriods=Xt;exports.getTimeQueryFilter=dn;exports.getTimeRangeFromAttachment=ke;exports.getTimeSeriesCount=tn;exports.getTimeSeriesFilterKey=un;exports.getTimeSeriesId=Ge;exports.getWeekCode=se;exports.getWeeklyPeriodEndDate=Qe;exports.getWeeklyPeriodStartDate=We;exports.getWeeklyRegExp=st;exports.getWeeksColumns=ut;exports.getWildCardPrefix=Ce;exports.getYearPeriod=ae;exports.getYearlyRegExp=$;exports.getYears=ct;exports.isDaily=nt;exports.isMonthly=Y;exports.isQuarterly=W;exports.isSemiAnnually=O;exports.isWeekly=Q;exports.isWildCardVersionCorrect=Le;exports.isYearly=U;exports.monthlyPattern=Ze;exports.openDownloadWindow=cn;exports.quarterPattern=He;exports.resolveCodelistsFromResponse=Fn;exports.sanitizeDownloadFilename=re;exports.semiAnnuallyPattern=ze;exports.sortPeriods=Ln;exports.splitUrn=A;exports.urnMatchesIgnoreVersion=ft;exports.weeklyPattern=je;exports.yearlyPattern=Je;
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require("@epam/statgpt-dial-toolkit"),t=require("@epam/statgpt-shared-toolkit"),n=require("compare-versions"),r=require("date-fns");var i=e=>{if(e!=null){let t=e.split(`=`);return t.length===1?e:t[1]}},a=e=>{if(e==null)return{};let t=i(e),n={agency:``,id:``,version:``};return t&&(t.includes(`:`)&&(n.agency=t.split(`:`)[0],n.id=t.split(`:`)[1].split(`(`)[0]),t.includes(`(`)&&t.includes(`)`)&&(n.version=t.split(`(`)[1]?.split(`)`)[0])),n},o=e=>{let[t,n]=e.split(`).`),{agency:r,id:i,version:o}=a(t+`)`);return{childId:n,agency:r,id:i,version:o}},s=(e,t,n)=>`${n}:${e}${t===``?``:`(${t})`}`,c=function(e){return e.DESCENDANTS=`descendants`,e.NONE=`none`,e.ALL=`all`,e}({}),l=function(e){return e.EXACT=`exact`,e.AVAILABLE=`available`,e}({});function u(e){return{data:{codelists:e.data.codelists,conceptSchemes:e.data.conceptSchemes,dataConstraints:e.data.dataConstraints?.map(d),dataflows:e.data.dataflows,dataStructures:e.data.dataStructures,metadataStructures:e.data.metadataStructures}}}function d(e){return{...e,cubeRegions:e.cubeRegions?.map(f)}}function f(e){return{isIncluded:e.include,memberSelection:e.keyValues.map(p)}}function p(e){return{included:e.include,componentId:e.id,selectionValues:e.values.map(m)}}function m(e){return{memberValue:e.value}}var h=(e=``,t=``,n=``)=>`sdmx/3.0/availability/dataflow/${e}/${t}/${n}`,ee=class{constructor(e){this.client=e}async getConstraints(e,t,n){let{agency:r,id:i,version:o}=a(e),s={filters:t||[],mode:l.AVAILABLE,references:c.NONE},d=h(r,i,o),f=!!this.client.config.sdmxProxyUrl,p=f||this.client.config.isDialProxyMode,m=f?this.client.config.sdmxProxyUrl:this.client.config.constrainsApiUrl||this.client.config.apiUrl;return p?u(await this.client.postRequest(d,{body:s},m,n)):await this.client.postRequest(d,{body:s},m,n)}},g=function(e){return e.CSV=`csv`,e.JSON=`json`,e.XML=`xml`,e}({}),te=function(e){return e.ID=`id`,e.NAME=`name`,e.ID_NAME=`both`,e}({}),ne=function(e){return e.FULL_DATASET=`full`,e.DATA_IN_TABLE=`query`,e}({}),re=(e,t)=>{switch(e){case g.CSV:return ie(`application/vnd.sdmx.data+csv;version=2.0.0`,t);case g.XML:return`application/vnd.sdmx.data+xml;version=3.0.0`;case g.JSON:return`application/vnd.sdmx.data+json;version=2.1`;default:return ie(`application/vnd.sdmx.data+csv;version=2.0.0`,t)}},_=e=>{switch(e){case g.CSV:return`text/csv; charset=utf-8`;case g.XML:return`application/xml; charset=utf-8`;case g.JSON:return`application/json; charset=utf-8`;default:return`text/csv; charset=utf-8`}},ie=(e,t)=>`${e}; labels=${t}`,ae=function(e){return e.REFERENCE_PARTIAL=`referencepartial`,e.FULL=`full`,e}({}),oe=`sdmx/3.0/data/dataflow`,se=`+`,ce=`,`,le=`*`,v=(e,t,n)=>{let{filterKey:r,timeFilter:i}=n,{agency:o,id:s,version:c}=a(e),l=[i||``,t].filter(e=>!!e).join(`&`);return`${`${oe}/${o}/${s}/${c}`}/${r||`*`}?${l}`},ue=(e=``,t=``,n=``,r=c.DESCENDANTS)=>`sdmx/3.0/structure/dataflow/${e}/${t}/${n}?references=${r}&detail=${ae.REFERENCE_PARTIAL}`,de=class{constructor(e){this.client=e}async getDataSet(e,t,n){let{agency:r,id:i,version:o}=a(e);return await this.client.getRequest(ue(r,i,o,t),void 0,n)}async getDatasetData(e,t,n){let r=v(e,new URLSearchParams({includeHistory:`false`,limit:`1000`,attributes:`all`,dimensionAtObservation:`TIME_PERIOD`}).toString(),t);return await this.client.getRequest(r,void 0,n)}async downloadDataSet(e,t,n,r,i,a,o=!1,s){let c=v(e,new URLSearchParams({compress:`false`,attributes:o?`all`:`none`,limit:`1000`}).toString(),i);return this.client.streamRequest(c,{method:`GET`,headers:{Accept:re(t,r),"Accept-language":n}},a,s,_(t))}},fe=class{constructor(e){this.config=e,console.info(`SdmxApiClient initialized`,{apiUrl:e.apiUrl||`NOT SET`})}async getRequest(e,t,n){return this.request(e,{...t,method:`GET`},void 0,n)}async postRequest(e,t,n,r){return this.request(e,{...t,method:`POST`},n,r)}async streamRequest(e,n,r,i,a){let o=`${this.config.apiUrl}/${e}`,s=this.buildHeaders(i,n.headers),c=new ReadableStream({async start(e){try{let r=await(0,t.sendRequest)(o,s,n);if(!r.ok){let e=await r.text();throw console.error(`Fetch failed! Status: ${r.status}, Body: ${e}`),Error(`Fetch failed with status ${r.status}`)}let i=r.body?.getReader();if(!i)throw Error(`Failed to create stream reader`);let a=new Uint8Array([239,187,191]);e.enqueue(a);let c=async()=>{let{done:t,value:n}=await i.read();t?e.close():(e.enqueue(n),await c())};c()}catch(t){e.error(t)}}}),l=new Headers({"Content-Disposition":`attachment; filename=${encodeURIComponent(r)}`,...a?{"Content-Type":a}:{}});return new Response(c,{headers:l})}async request(n,r,i,a){let o=Date.now(),s=`${i||this.config.apiUrl}/${n}`,c=this.buildHeaders(a,r.headers);this.addInfoRequestLog(`API Request`,s,r,c);try{let n=await(0,t.sendRequest)(s,c,r),i=Date.now()-o,a,l=await n.text();try{a=l?JSON.parse(l):{}}catch{if(this.addErrorRequestParsing(s,r,n,i,l),!n.ok)throw Error(`API request failed: ${n.status} ${n.statusText} - ${l.substring(0,100)}`);a={data:l}}if(!n.ok){this.addErrorRequestLog(s,r,n,i,a);let t=(0,e.getErrorMessage)(a,n);throw Error(`API request failed: ${t}`)}return a}catch(e){let t=Date.now()-o;throw console.error(`API Request Exception`,{method:r.method,url:s,duration:`${t}ms`,error:e instanceof Error?e.message:String(e)}),e}}buildHeaders(e,n){if(this.config.isDialProxyMode)return{...(0,t.getHeaders)(this.config.dialApiKey,{jwt:e}),...n};let r={...(0,t.getHeaders)(void 0,{jwt:this.config.jwt}),...n};return this.config.apiKey!=null&&(r[t.OCP_APIM_SUBSCRIPTION_KEY_HEADER]=this.config.apiKey),r}addInfoRequestLog(e,n,r,i){let a={method:r.method||`GET`,url:n,headers:(0,t.sanitizeHeaders)(i)};r.body&&(a.body=r.body),console.info(e,a)}addErrorRequestLog(e,t,n,r,i){console.error(`API Request Failed`,{method:t.method,url:e,status:n.status,statusText:n.statusText,duration:`${r}ms`,response:i})}addErrorRequestParsing(e,t,n,r,i){console.error(`API Response Parse Error`,{method:t.method,url:e,status:n.status,statusText:n.statusText,duration:`${r}ms`,responseText:i.substring(0,200),error:`Response is not valid JSON`})}},y=function(e){return e.LAST_UPDATE_AT=`lastUpdatedAt`,e.SERIES_COUNT=`series_count`,e}({});function pe(e){return e?.annotations?.find(e=>{if(e.id===y.LAST_UPDATE_AT)return e})?.text}var b=(e,t)=>e?.names&&e?.names[t]||e?.name,me=(e,t,n)=>{if(!(!e||t?.has(e?.id))&&(t?.set(e?.id,e),e?.parent)){let r=n?.get(e?.parent);me(r,t,n)}},he=(e,t)=>{let n=new Map,r=new Map(e?.map(e=>[e.id,e]));return t?.forEach(e=>{me(e,n,r)}),Array.from(n?.values())},ge=function(e){return e.C=`c`,e}({}),x=function(e){return e.EQUALS=`eq`,e.NOT_EQUALS=`ne`,e.LESS=`lt`,e.LESS_OR_EQUAL=`le`,e.GREATER=`gt`,e.GREATER_OR_EQUAL=`ge`,e.CONTAINS=`co`,e.NOT_CONTAINS=`nc`,e.STARTS=`sw`,e.ENDS=`ew`,e}({}),_e=function(e){return e.BOOLEAN=`Boolean`,e.DATE_TIME=`DateTime`,e.DECIMAL=`Decimal`,e.INTEGER=`Integer`,e.OBSERVATION_TIME_PERIOD=`ObservationalTimePeriod`,e.STRING=`String`,e.TIME=`Time`,e.TIME_RANGE=`TimeRange`,e.URI=`URI`,e}({}),ve=function(e){return e.ANNUAL=`A`,e.QUARTERLY=`Q`,e.MONTHLY=`M`,e}({}),ye=[`FREQ`,`FREQUENCY`],be=`TIME_PERIOD`,xe=`time_period_start`,Se=`time_period_end`,Ce=e=>{let t=e?.find(e=>e.id===xe),n=e?.find(e=>e.id===Se),r=n?.title?new Date(n?.title):null;return{startPeriod:t?.title?new Date(t?.title):null,endPeriod:r}},we=(e,t)=>e.id.localeCompare(t.id),Te=(e,t)=>e.memberValue.localeCompare(t.memberValue),Ee=(e,t)=>{let n=Array(e.length),r=e.map((e,t)=>[e,t]);r.sort((e,t)=>we(e[0],t[0]));let i=[...t];i.sort(Te);let a=0;for(let e of r){let t=e[0];for(;a<i.length&&i[a].memberValue.localeCompare(t.id)<0;)a+=1;a<i.length&&i[a].memberValue===t.id&&(n[e[1]]=e[0])}return n.filter(e=>e!=null)},De=e=>!!e?.some(e=>e.parent),Oe=(e,t,n,r,i=[])=>{let a=e||[];if(ke(n||[],t||``)){let e=(n||[])[0].cubeRegions?.find(({isIncluded:e})=>e);if(e){let n=e.memberSelection?.find(({componentId:e})=>e===t);a=n?a.length===0?(n.selectionValues||[]).map(({memberValue:e})=>({id:e,name:e})):Ee(a,n.selectionValues):[]}}else i.length!==0&&(a=a.filter(({id:e})=>i.includes(e)));return De(e)&&(a=he(e,a)),a?.map(e=>({...e,name:r?b(e,r):e?.name}))},ke=(e,t)=>e!=null&&e.length>0&&t!=null,S=e=>{let t=[];return e?.filters?.forEach(e=>{e.componentCode!==`TIME_PERIOD`&&t.push({componentCode:e.componentCode,operator:x.EQUALS,value:e.values.join(`,`)})}),t},Ae=e=>{let t=new Map;return e?.forEach(e=>{t.set(e.urn,S(e))}),t},je=`+`,C=(e,t)=>{let{agency:n,id:r,version:i}=a(e),o=t.filter(e=>e.agencyID===n&&e.id===r&&!e?.version?.includes(`+`));if(o.length===1)return o[0];if(!i?.includes(`+`))return o.find(e=>e.version===i);let s=w(i,o.map(e=>e.version));return o.find(e=>e.version===s[0])},w=(e,t)=>{let n=Me(e,t);return n.length>0?[n[0]]:[]},Me=(e,t)=>{let n=[];return t.forEach(t=>{E(e,t)&&n.push(t)}),n},T=e=>{let t=e.trim(),n=t.indexOf(`+`);if(n<=0)return``;let r=n;for(;r>0&&t[r-1]>=`0`&&t[r-1]<=`9`;)r--;return r>0?t.slice(0,r):``},E=(e,t)=>{let r=e.trim().replace(/\+/,``),i=T(e);return t.startsWith(i)&&(0,n.compare)(t,r,`>=`)},D=(e,t)=>{let{concept:n}=Ne(e,t);return n},Ne=(e,t)=>{if(e==null)return{concept:void 0,scheme:void 0};let{childId:n,agency:r,id:i,version:a}=o(e);if(a?.includes(`+`)){let r=C(e,t);return{concept:O(r?.concepts||[],n),scheme:r}}for(let e of t)if(Pe(e,i,r,a))return{concept:O(e?.concepts||[],n),scheme:e};return{concept:void 0,scheme:void 0}},O=(e,t)=>e?.find(e=>e.id===t),Pe=(e,t,n,r)=>e.id===t&&e.agencyID===n&&e.version===r,Fe=(e=[],t=[],n)=>{let r=D(n?.conceptIdentity||``,t),a=i(n?.localRepresentation?.enumeration),o=i(r?.coreRepresentation?.enumeration),s=a||o;if(s!=null)return C(s,e)},Ie=(e,t)=>{let n=e?.data?.dataSets?.[0],r=(e?.data?.structures?.[0])?.attributes?.dimensionGroup||[],i=n?.dimensionGroupAttributes,a={};for(let n of r){let r=n.relationship.dimensions,{codedSeriesKey:o,decodedSeriesKey:s}=k(e,t,r);a[n.id]={values:i?.[o]||[],decodedSeriesKey:s,codedSeriesKey:o}}return a},k=(e,t,n)=>{let r=e?.data?.structures?.[0],i=[...r?.dimensions.series||[],...r?.dimensions.observation||[]],a=Array(i?.length),o=Array(i?.length);return n?.forEach(e=>{let n=i?.findIndex(t=>t.id===e)||0,r=t[n],s=i[n].values.findIndex(e=>e.id===r||e.value===r)||0;a[n]=s>=0?s:r,o[n]=r}),{codedSeriesKey:a.join(`:`),decodedSeriesKey:o.join(`:`)}},Le=(e,t,n)=>{let r=e?.data?.dataSets?.[0],i=e?.data?.structures?.[0],a=(i?.attributes?.dimensionGroup||[]).filter(e=>e.relationship.dimensions?.length===1&&e.relationship.dimensions.includes(t||``)),o=r?.dimensionGroupAttributes,s=[...i?.dimensions.series||[],...i?.dimensions.observation||[]],c=s?.findIndex(e=>e.id===t),l=Array(s?.length);l[c]=n||``;let u={};for(let t of a){let n=t.relationship.dimensions,{codedSeriesKey:r,decodedSeriesKey:i}=k(e,l,n);u[t.id]={values:o?.[r]||[],decodedSeriesKey:i,codedSeriesKey:r}}return u},Re=(e,t)=>t==null?void 0:e.values?.[t]??(t instanceof Array?{values:t}:{value:t.toString()}),ze=(e,t,n,r)=>{let i=t?.find(t=>t?.id===e?.id)?.values;return n?.filter(e=>i?.some(t=>t.id===e.id))?.map(e=>({...e,name:r?b(e,r):e?.name}))||[]},Be=(e,t)=>{let n=t?.dataStructureComponents?.attributeList,r=e?.metadataStructureComponents?.metadataAttributeList;return n?.metadataAttributeUsages?.map(e=>{let t=r?.metadataAttributes?.find(t=>t?.id===e?.metadataAttributeReference);return{...t,id:t?.id??e.metadataAttributeReference,attributeRelationship:e.attributeRelationship,isMandatory:Number(t?.minOccurs)>0}})},Ve=(e=[],t,n)=>{let r=D(i(t?.conceptIdentity)||``,e);return n?b(r,n):r?.name??r?.id??t?.id},He=function(e){return e.CONDITIONAL=`Conditional`,e.MANDATORY=`Mandatory`,e}({}),A=function(e){return e.DIMENSION=`Dimension`,e.MEASURE_DIMENSION=`MeasureDimension`,e.TIME_DIMENSION=`TimeDimension`,e}({}),Ue=function(e){return e.UNBOUNDED=`unbounded`,e}({});function j(e){return e?.dataStructures?.[0]?.dataStructureComponents?.dimensionList}function We(e){return e?.data?.structures?.[0]?.dimensions?.series||[]}function Ge(e){return e?.data?.structures?.[0]?.dimensions?.observation?.[0].values.map(e=>e.value?e.value:e.id).filter(e=>e!=null)||[]}function Ke(e){return e.find(e=>e.type===A.TIME_DIMENSION)}var qe=e=>{let t=new Map,n=e?.dataStructures?.[0],r=e?.metadataStructures?.[0],i=e?.conceptSchemes||[],a=e?.codelists||[];if(e){let o=Be(r,n);[...j(e)?.dimensions||[],...j(e)?.timeDimensions||[],...o,...n?.dataStructureComponents?.attributeList?.attributes||[]].forEach(e=>{let n=D(e?.conceptIdentity,i),r=e?.localRepresentation?.enumeration||n?.coreRepresentation?.enumeration,o=C(r,a);e?.id&&(r?t.set(e?.id,{...o,name:n?.name,names:n?.names}):t.set(e?.id,{id:e?.id,name:n?.name,names:n?.names}))})}return t},Je=e=>e?.find(e=>e.id===y.SERIES_COUNT)?.title||``,M=1440*60*1e3,N=7*M;function P(e){let t=`${e}-01-01`,n=new Date(t);if(n.getDay()!==4){let e=1+(4-n.getDay()+7)%7;n.setMonth(0,e)}return n}function Ye(e){let t=new Date(e),n=-((t.getDay()+6)%7)+3;return t.setDate(t.getDate()+n),new Date(t.valueOf())}function F(e,t=`W`){let n=`${e}-12-31`,r=L(new Date(n),t);if(r.weekYear===e)return r.weekNumber;let i=`${e}-12-24`;return L(new Date(i),t).weekNumber}function I(e,t,n=`W`){return`${e}-${n}${t<10?`0`+t:t}`}function L(e,t=`W`){let n=Ye(e),r=n.getFullYear(),i=P(r),a=1+Math.ceil((n.getTime()-i.getTime())/N);return{code:I(r,a,t),weekNumber:a,weekYear:r}}function R(e){let[t,n]=e.split(`-W`),r=P(+t).getTime()+(n-1)*N-3*M;return new Date(r)}function Xe(e){let[t,n]=e.split(`-W`),r=P(+t).getTime()+(n-1)*N+3*M;return new Date(r)}var Ze=`/api/download`,Qe=6e4,$e=/[\x00-\x1F\x7F<>:"/\\|?*]/g,z=e=>e.normalize(`NFKC`).replace($e,`_`).replace(/_+/g,`_`).replace(/\s+/g,` `).replace(/^[._ ]+/,``).trim()||`download`,et=(e,t,n,r,i,a,o)=>{let s=new URL(Ze,window.location.origin);if(s.search=new URLSearchParams({urn:e,format:t,compress:`false`,filename:a,filters:JSON.stringify(i),attribute:r,language:n,isMetadata:o?`true`:`none`}).toString(),s.origin!==window.location.origin||s.pathname!==Ze)throw Error(`Invalid download URL`);return s.toString()},tt=(e,t)=>{let n=URL.createObjectURL(e),r=document.createElement(`a`);r.href=n,r.download=z(t),r.rel=`noopener noreferrer`,r.click(),window.setTimeout(()=>URL.revokeObjectURL(n),Qe)},nt=async(e,t,n,r,i,a,o,s)=>{let c=z(a),l=et(e,t,n,r,i,c,o),u=await fetch(l,{method:`GET`,credentials:`same-origin`,signal:s});if(!u.ok){let e=await u.text();throw Error(`Download request failed: ${u.status} ${u.statusText}${e?` - ${e}`:``}`)}let d=await u.blob();s?.aborted||tt(d,c)},rt=(e,t)=>{let n=[];for(let r of e){if(r.type!==A.DIMENSION)continue;let e=t.find(e=>e.componentCode===r.id);e!=null&&e.values?.length>0?n.push(e.values?.join(`+`)):n.push(`*`)}return n.join(`.`)},it=(e,t)=>{if(!e||!e.startPeriod&&!e.endPeriod)return null;let n=[],{startPeriod:r,endPeriod:i}=e;if(r&&n.push(`${x.GREATER_OR_EQUAL}:${at(r)}`),i&&n.push(`${x.LESS_OR_EQUAL}:${at(i)}`),n.length===0)return null;let a=t,o=n.join(`+`);return`${encodeURIComponent(`c[${a}]`)}=${encodeURIComponent(o)}`},at=e=>(0,r.format)(e,`yyyy-MM-dd`),ot=(e,t)=>{let n=st(e,t)||null;return n?it(n,t?.id):null},st=(e,n)=>{let r=n.id,i=e?.filters?.find(e=>e.componentCode===r);if(!i||!i.values)return null;let a=i.values?.filter(e=>!!e);if(!a.length)return null;let o=i.operator;return o===x.LESS_OR_EQUAL||o===x.LESS?{startPeriod:null,endPeriod:(0,t.getTimePeriod)(a[0])}:o===x.GREATER_OR_EQUAL||o===x.GREATER?{startPeriod:(0,t.getTimePeriod)(a[0]),endPeriod:null}:{startPeriod:(0,t.getTimePeriod)(a[0]),endPeriod:(0,t.getTimePeriod)(a[1])}},ct=`Observation`,lt=e=>{let t=e?.data?.dataSets,n=e?.data?.structures?.[0];if(!t||!n)return[];let r=n.attributes,i=n.dimensions,a=r?.dimensionGroup||[],o=t[0].series||t[0].observations,s=i.series?.length?i.series:i.observation,c=[];for(let i in o){let l=[],{name:u,parsedTimeSeriesValue:d}=ut(i,s),f=o[i],p=f.attributes||[];if(Object.keys(f).length===0){c.push({name:u,parsedTimeSeriesValue:d,values:l,attributes:[],dataSetAttrs:[]});continue}l.push(...mt(f,n));let m=B(r?.series||[],e=>p[e]),h=gt(n.attributes?.dataSet||[],t[0].attributes?.filter(e=>e!=null)||[]),ee=Ie(e,d),g=a.map((e,t)=>{let n=ee[e.id];return{attribute:e,dimensionGroupValue:Re(e,n.values[t]),dimensionGroupData:n}});c.push({name:u,parsedTimeSeriesValue:d,values:l,attributes:m,dataSetAttrs:h,dimensionGroupAttributes:g})}return c},ut=(e,t)=>{let n=e.split(/(?<!\|):(?!\||$)/),r=[];for(let e=0;e<n.length;e++){let i=t?.[e],a=Number(n[e]);if(a<0||i==null)continue;let o=i.values[a];if(o==null){r.push(n[e].replace(`|:`,`:`));continue}r.push(o?.id||o?.value||``)}return{name:ft(r),parsedTimeSeriesValue:r}},B=(e,t)=>{let n=[];for(let r=0;r<e.length;r++){let i=e[r],a=t(r),o=a!=null&&i.values!=null?dt(a,i):void 0;n.push({name:i.id,value:o})}return n},dt=(e,t)=>{let n=t.values[e];return n==null?typeof e==`object`?e:e.toString():n?.id||n?.value||n?.ids||n?.values},ft=e=>e.map(e=>e?pt(e):``).join(`.`),pt=e=>e.replace(/\./g,`|.`).replace(/:/g,`|:`),mt=(e,t)=>{let n=t.measures?.observation?.length;if(e.observations==null)return[{values:ht(e,t.measures),obsAttributes:B(t.attributes?.observation||[],t=>e[t+n]),dimensionAtObservation:ct}];let r=e.observations,i=t.dimensions.observation?.[0],a=[];for(let e in r){let o=i?.values[e];a.push({dimensionAtObservation:o?.value||o?.id,values:ht(r[e],t.measures),obsAttributes:B(t.attributes?.observation||[],t=>r[e][t+n])})}return a},ht=(e,t)=>t?.observation?.map((t,n)=>({name:t.id,value:e[n]}))||[],gt=(e,t)=>e.reduce((e,n,r)=>{let i=t[r];return _t(e,n,i,``),e},[]),_t=(e,t,n,r)=>{let i=n==null?r:t?.values?.length>0?t.values[n]?.id||t.values[n]?.value:String(n);e.push({name:t.id,value:i||``})},vt=/^[0-9][0-9][0-9][0-9]-Q[1-4]$/,yt=/^[0-9][0-9][0-9][0-9]-W(0[1-9]|[1-4][0-9]|5[0-3])$/,bt=/^[0-9][0-9][0-9][0-9]-S[1-2]$/,xt=/^[0-9][0-9][0-9][0-9]$/,St=/^[0-9][0-9][0-9][0-9]-(0[1-9]|1[0-2])-[0-9][0-9]$/,Ct=/^[0-9][0-9][0-9][0-9]-M(0[1-9]|(1[0-2]))$/,V=e=>xt.exec(e),H=e=>!!V(e),wt=e=>bt.exec(e),U=e=>!!wt(e),W=e=>Ct.exec(e),G=e=>!!W(e),K=e=>vt.exec(e),q=e=>!!K(e),Tt=e=>St.exec(e),Et=e=>!!Tt(e),Dt=e=>yt.exec(e),J=e=>!!Dt(e);function Y(e){return H(e)?Ot(e):U(e)?At(e):q(e)?Mt(e):G(e)?Pt(e):J(e)?R(e):It(e)}function X(e){return H(e)?kt(e):U(e)?jt(e):q(e)?Nt(e):G(e)?Ft(e):J(e)?Xe(e):Lt(e)}function Ot(e){let t=V(e);if(t)return new Date(Number(t[0]),0,1)}function kt(e){let t=V(e);if(t)return new Date(Number(t[0])+1,0,1)}function At(e){let[t,n]=e.split(`-S`);switch(+n){case 1:return new Date(+t,0,1);case 2:return new Date(+t,6,1)}}function jt(e){let[t,n]=e.split(`-S`);switch(+n){case 1:return new Date(+t,6,1);case 2:return new Date(+t+1,0,1)}}function Mt(e){let t=K(e);if(!t)return;let[n,r]=t[0].split(`-Q`);switch(+r){case 1:return new Date(+n,0,1);case 2:return new Date(+n,3,1);case 3:return new Date(+n,6,1);case 4:return new Date(+n,9,1)}}function Nt(e){let t=K(e);if(!t)return;let[n,r]=t[0].split(`-Q`);switch(+r){case 1:return new Date(+n,3,1);case 2:return new Date(+n,6,1);case 3:return new Date(+n,9,1);case 4:return new Date(+n+1,0,1)}}function Pt(e){let t=W(e);if(!t)return;let[n,r]=t[0].split(`-M`);return new Date(+n,r-1,1)}function Ft(e){let t=W(e);if(!t)return;let[n,r]=t[0].split(`-M`);return new Date(+n,+r,1)}var It=e=>new Date(`${e}T00:00:00`),Lt=e=>{let t=new Date(`${e}T23:59:00`);return t.setMinutes(t.getMinutes()+1),t},Rt=1,zt=(e,t,n,r=!0,i=`Q`)=>{let a=[],o=t&&t>3?Yt(t,r):1,s=n?Math.floor((n-1)/3):4;for(let t=o;t<=s;t++)a.push(`${e}-${i}${t}`);return a},Bt=(e,t,n,r=`S`)=>{let i=[];return(t||1)<7&&(n||12)>6&&i.push(`${e}-${r}1`),n??i.push(`${e}-${r}2`),i},Vt=e=>Math.ceil(e/3),Ht=(e,t,n=`M`)=>`${e}-${n}${t.toString().padStart(2,`0`)}`,Ut=(e,t,n=`M`)=>{let r=[];for(let i=t;i<=12;i++)r.push(Ht(e,i,n));return r},Wt=(e,t,n,r=`M`)=>{let i=[];for(let a=t;a<n;a++)i.push(Ht(e,a,r));return i},Gt=(e,t,n,r=`M`)=>{let i=t||1;return n==null?Ut(e,i,r):Wt(e,i,n||12,r)},Kt=(e,t,n=`M`)=>{switch(t){case 0:return[`${e}-${n}01`,`${e}-${n}02`,`${e}-${n}03`];case 1:return[`${e}-${n}04`,`${e}-${n}05`,`${e}-${n}06`];case 2:return[`${e}-${n}07`,`${e}-${n}08`,`${e}-${n}09`];case 3:return[`${e}-${n}10`,`${e}-${n}11`,`${e}-${n}12`];default:return[]}},qt=(e,t)=>{let n=Z(t,!0),r=Z(e),i=n.getFullYear(),a=r.getFullYear(),o=n.getTime()<=r.getTime()?a+Rt-i:0;return Array.from({length:o},(e,t)=>i+t)},Z=(e,t=!1)=>{let n=Jt(e,t);return n?(n.getTimezoneOffset()>0&&n.setMinutes(n.getMinutes()+n.getTimezoneOffset()),n):new Date},Jt=(e,t=!1)=>{let n=Number(e);return e.toString().length===13?isNaN(n)?new Date(`${e}T00:00:00.000Z`):new Date(n):t?Y(e):X(e)},Yt=(e,t)=>t?Math.floor((e+1)/3):Math.ceil((e+1)/3),Xt=(e,t)=>{let n=Qt(e)-Qt(t);return n===0&&e!==t?Zt(e)-Zt(t):n},Zt=e=>H(e)?6:U(e)?5:q(e)?4:G(e)?3:J(e)?2:+!!Et(e),Qt=(e,t=!1)=>(t?Y(e):X(e))?.getTime()||0,Q=(e,t,n)=>{let r=Z(t,!0),i=Z(n),a=Z(e,!0),o=Z(e);return{start:r.getTime()>a.getTime()?r:a,end:i.getTime()<o.getTime()?i:o}},$t=(e,t,n,r=`W`)=>{let i=+e,{start:a,end:o}=Q(e,t,n);if(a.getTime()>o.getTime())return[];let s=L(a,r),c=s.weekYear===i?s.weekNumber:s.weekYear<i?1:F(i,r),l=L(o,r),u=l.weekYear===i?l.weekNumber:l.weekYear>i?F(i,r):1,d=[];if(c<u)for(let e=c;e<=u;e++)d.push(I(i,e,r));return d},en=e=>{let t=new Date(e);return t.setMinutes(t.getMinutes()-t.getTimezoneOffset()),t.toISOString().slice(0,10)},tn=(e,t,n)=>{let{start:r,end:i}=Q(e,t,n);if(r.getTime()>i.getTime())return[];let a=[],o=new Date(r.getFullYear(),r.getMonth(),r.getDate()),s=new Date(i.getFullYear(),i.getMonth(),i.getDate());for(;o.getTime()<s.getTime();){let e=en(o);a.push(e),o.setDate(o.getDate()+1)}return a},nn=e=>({isDailyExist:!!e?.some(({memberValue:e})=>e===`D`),isWeeklyExist:!!e?.some(({memberValue:e})=>e===`W`),isMonthlyExist:!!e?.some(({memberValue:e})=>e===`M`),isQuarterlyExist:!!e?.some(({memberValue:e})=>e===`Q`),isSemiAnnualExist:!!e?.some(({memberValue:e})=>e===`S`),isYearlyExist:!!e?.some(({memberValue:e})=>e===`A`||e===`Y`)}),rn=(e,t,n,r)=>({startMonth:r===0?Z(t.toString(),!0)?.getMonth()+1:void 0,endMonth:r===e.length-1?Z(n.toString())?.getMonth()+1||1:void 0}),an=[`FREQUENCY`,`FREQ`],on=(e,t)=>{let n=e?.[0]?.cubeRegions?.[0]?.memberSelection?.find(e=>an.includes(e.componentId))?.selectionValues,r=nn(n||[]),i=t?.startPeriod?.getTime()||1,a=t?.endPeriod?.getTime()||1,o=qt(a,i),s=[];return o.forEach((e,t)=>{let n=[],{startMonth:c,endMonth:l}=rn(o,new Date(i),new Date(a),t),{isDailyExist:u,isWeeklyExist:d,isMonthlyExist:f,isQuarterlyExist:p,isSemiAnnualExist:m,isYearlyExist:h}=r;h&&n.push(e.toString()),m&&n.push(...Bt(e,c,l)),p&&n.push(...zt(e,c,l,!1)),f&&n.push(...Gt(e,c,l)),d&&n.push(...$t(e,i.toString(),a.toString())),u&&n.push(...tn(e,i.toString(),a.toString())),s.push(...n)}),s};function sn(e){let{urn:t}=e.details;return s(t.resourceId,t.version,t.agencyId)}function cn(e){let t={};for(let n of e.datasets){let e=n.dataset,r=sn(e);t[r]=e.details.dimensions}return t}function ln(e){let t={};for(let n of e.datasets)n.last_updated_at&&(t[sn(n.dataset)]=n.last_updated_at);return t}function un(e){return e?.codelists?.length?e.codelists.map(e=>({id:e.id,agencyID:e.agencyID??``,version:e.version??``,name:e.name,codes:e.codes?.map(e=>({id:e.id,name:e.name,description:e.description}))})):(e?.glossaries??[]).map(e=>({id:e.id,agencyID:e.agencyID??``,version:e.version??``,name:e.name,codes:e.terms?.map(e=>({id:e.id,name:e.name,description:e.description}))}))}function dn(e,t){let n=e=>{let t=e.indexOf(`(`);if(t===-1)return e;let n=e.indexOf(`)`,t);return n===-1?e:e.slice(0,t+1)+`*`+e.slice(n)};return n(e)===n(t)}function $(e){return s(e.id,e.version??``,e.agencyID??``)}function fn(e,t,n){t?.forEach(t=>{let{childId:r,agency:i,id:a,version:c}=o(t.code),l=s(a,c,i),u=n?.find(e=>dn(l,$(e))),d=u?.codes?.find(e=>e.id===r);if(d!=null){let n=t.code.replace(l,$(u));e.push({...d,code:n})}fn(e,t.hierarchicalCodes,n)})}function pn(e,t){let n=[];return fn(n,e?.hierarchicalCodes,t),n}function mn(e){let t={};return e?.forEach(e=>{t[$(e)]=e.codes}),t}function hn(e,t,n){if(!n||n.length===0||!t)return e;let r=n[0].cubeRegions?.find(e=>e.isIncluded);if(!r)return e;let i=r.memberSelection?.find(e=>e.componentId===t);if(!i)return[];let a=new Set(i.selectionValues.map(e=>e.memberValue));return e.filter(e=>a.has(e.id))}var gn=class{constructor(e){this.client=e}async getAvailableHierarchies(e,n,r){let{agency:i,id:o,version:s}=a(e),c=`${this.client.config.sdmxProxyUrl?this.client.config.sdmxProxyUrl:this.client.config.apiUrl}/sdmx/3.0/structure/codelist`,l=r?{[t.X_SOURCE_ARTEFACT_URN_HEADER]:r}:void 0;return this.client.request(`${i}/${o}/${s}?references=hierarchy&detail=allcompletestubs`,{method:`GET`,headers:l},c,n)}async getHierarchy(e,n,r){let{agency:i,id:o,version:s}=a(e),c=`${this.client.config.sdmxProxyUrl?this.client.config.sdmxProxyUrl:this.client.config.apiUrl}/sdmx/3.0/structure/hierarchy`,l=r?{[t.X_SOURCE_ARTEFACT_URN_HEADER]:r}:void 0;return this.client.request(`${i}/${o}/${s}?references=descendants&detail=full`,{method:`GET`,headers:l},c,n)}};exports.Annotations=y,exports.AssignmentStatus=He,exports.AvailabilityApi=ee,exports.DATASET_DATA_URL=oe,exports.DatasetApi=de,exports.DimensionType=A,exports.DownloadType=ne,exports.FREQUENCY_DIMENSION_ID=ye,exports.FREQUENCY_DIM_ID=an,exports.FileColumnsAttribute=te,exports.GET_v3_FILTER_ALL=le,exports.GET_v3_FILTER_AND=ce,exports.GET_v3_FILTER_OR=se,exports.HierarchyApi=gn,exports.OBSERVATION_KEY=ct,exports.OccurrenceType=Ue,exports.Periods=ve,exports.RepresentationTextType=_e,exports.SDMX_DATA_QUERY_PARAMS=ge,exports.SINGLE_WILDCARD_SYMBOL=je,exports.SdmxApiClient=fe,exports.SdmxAvailabilityMode=l,exports.SdmxDataFormat=g,exports.SdmxDetails=ae,exports.SdmxReferences=c,exports.SeriesFilterOperator=x,exports.TIME_PERIOD=be,exports.TIME_PERIOD_END_ANNOTATION_KEY=Se,exports.TIME_PERIOD_START_ANNOTATION_KEY=xe,exports.buildDatasetDimensionsMetadataMap=cn,exports.buildDatasetLastUpdatedMap=ln,exports.dailyPattern=St,exports.decodeDimensionId=pt,exports.findCodelistByDimension=Fe,exports.generateDatasetDataRequest=v,exports.generateShortUrn=s,exports.getAdditionalColumns=on,exports.getAnnotationPeriod=Ce,exports.getArtifactByUrnWithWildCard=C,exports.getAttachedDimensionsSeriesByDimension=Le,exports.getAttachedDimensionsSeriesByTsId=Ie,exports.getAttachedDimensionsSeriesKey=k,exports.getAttributeValueFromDataQueryResponse=Re,exports.getAvailableCodes=ze,exports.getAvailableCodesFromConstrains=Oe,exports.getChildParsedUrn=o,exports.getCodeListsData=mn,exports.getConcept=D,exports.getConceptByUrn=O,exports.getConceptWithScheme=Ne,exports.getConvertedMetaAttributes=Be,exports.getDailyRegExp=Tt,exports.getDaysColumns=tn,exports.getDimensionTitle=Ve,exports.getDimensions=j,exports.getFilteredItemsWithParents=he,exports.getFiltersDtoFromDataQuery=S,exports.getFiltersDtoMapFromDataQuery=Ae,exports.getHierarchyAvailableCodes=hn,exports.getHierarchyCodes=pn,exports.getISOWeek=L,exports.getKeyFromUrn=i,exports.getLastUpdatedTime=pe,exports.getLastWeekNumberOfYear=F,exports.getLocalizedName=b,exports.getMonthlyData=Gt,exports.getMonthlyDataByQuarter=Kt,exports.getMonthlyRegExp=W,exports.getParsedEndPeriodDate=X,exports.getParsedResponse=lt,exports.getParsedStartPeriodDate=Y,exports.getPeriodDate=Z,exports.getPeriods=nn,exports.getQuarterByMonth=Vt,exports.getQuarterlyRegExp=K,exports.getQuartersData=zt,exports.getQueryTimePeriodFilters=it,exports.getRequestAcceptHeader=re,exports.getResolvedVersionBySingleWildcard=w,exports.getResponseContentType=_,exports.getSemiAnnualData=Bt,exports.getSemiAnnuallyRegExp=wt,exports.getSeriesAttributes=B,exports.getSeriesName=ut,exports.getStructureComponentsMap=qe,exports.getStructureDimensions=We,exports.getTimeDimension=Ke,exports.getTimePeriods=Ge,exports.getTimeQueryFilter=ot,exports.getTimeRangeFromAttachment=st,exports.getTimeSeriesCount=Je,exports.getTimeSeriesFilterKey=rt,exports.getTimeSeriesId=ft,exports.getWeekCode=I,exports.getWeeklyPeriodEndDate=Xe,exports.getWeeklyPeriodStartDate=R,exports.getWeeklyRegExp=Dt,exports.getWeeksColumns=$t,exports.getWildCardPrefix=T,exports.getYearPeriod=Q,exports.getYearlyRegExp=V,exports.getYears=qt,exports.isDaily=Et,exports.isMonthly=G,exports.isQuarterly=q,exports.isSemiAnnually=U,exports.isWeekly=J,exports.isWildCardVersionCorrect=E,exports.isYearly=H,exports.monthlyPattern=Ct,exports.openDownloadWindow=nt,exports.quarterPattern=vt,exports.resolveCodelistsFromResponse=un,exports.sanitizeDownloadFilename=z,exports.semiAnnuallyPattern=bt,exports.sortPeriods=Xt,exports.splitUrn=a,exports.urnMatchesIgnoreVersion=dn,exports.weeklyPattern=yt,exports.yearlyPattern=xt;
|