@epam/statgpt-sdmx-toolkit 0.2.0-rc.45 → 0.2.0-rc.47

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  import { SeriesFilterDto } from '../models/series-filter';
2
- import { StructuralMetaData } from '../models/structural-metadata';
2
+ import { StructuralMetaData } from '../models/structural-metadata/structural-metadata';
3
3
  import { SdmxApiClient } from './sdmx-api-client';
4
4
  export declare class AvailabilityApi {
5
5
  private client;
@@ -1,5 +1,5 @@
1
1
  import { SdmxApiClient } from './sdmx-api-client';
2
- import { StructuralMetaData } from '../models/structural-metadata';
2
+ import { StructuralMetaData } from '../models/structural-metadata/structural-metadata';
3
3
  import { DataMessage } from '../models/data/data-message';
4
4
  import { SdmxReferences } from '../types/references';
5
5
  import { DatasetQueryFilters } from '../models/dataset-query-filters';
@@ -4,9 +4,9 @@ export declare class SdmxApiClient {
4
4
  readonly config: SdmxApiConfig;
5
5
  constructor(config: SdmxApiConfig);
6
6
  getRequest<T>(endpoint: string, options?: RequestOptions): Promise<T>;
7
- postRequest<T>(endpoint: string, options?: RequestOptions): Promise<T>;
7
+ postRequest<T>(endpoint: string, options?: RequestOptions, apiUrl?: string): Promise<T>;
8
8
  streamRequest(endpoint: string, options: RequestOptions, filename: string): Promise<Response>;
9
- request<T>(endpoint: string, options: RequestOptions): Promise<T>;
9
+ request<T>(endpoint: string, options: RequestOptions, apiUrl?: string): Promise<T>;
10
10
  private addInfoRequestLog;
11
11
  private addErrorRequestLog;
12
12
  private addErrorRequestParsing;
@@ -1,6 +1,7 @@
1
1
  export interface SdmxApiConfig {
2
2
  apiUrl: string;
3
3
  constrainsApiUrl?: string;
4
+ sdmxProxyUrl?: string;
4
5
  jwt?: string;
5
6
  apiKey?: string;
6
7
  }
package/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const y=e=>{if(e!=null){const t=e.split("=");return t.length===1?e:t[1]}},D=e=>{if(e==null)return{};const t=y(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},Ae=e=>{const[t,n]=e.split(")."),{agency:s,id:r,version:o}=D(t+")");return{childId:n,agency:s,id:r,version:o}},ye=(e,t,n)=>{const s=t===""?"":`(${t})`;return`${n}:${e}${s}`};var P=(e=>(e.DESCENDANTS="descendants",e.NONE="none",e.ALL="all",e))(P||{}),J=(e=>(e.EXACT="exact",e.AVAILABLE="available",e))(J||{});const St=(e="",t="",n="")=>`sdmx/3.0/availability/dataflow/${e}/${t}/${n}`;class Tt{constructor(t){this.client=t}async getConstraints(t,n){const{agency:s,id:r,version:o}=D(t),i={filters:n||[],mode:J.AVAILABLE,references:P.NONE},c=St(s,r,o);return await this.client.postRequest(c,{body:i})}}var A=(e=>(e.CSV="csv",e.JSON="json",e.XML="xml",e))(A||{}),Se=(e=>(e.ID="id",e.NAME="name",e.ID_NAME="both",e))(Se||{}),Te=(e=>(e.FULL_DATASET="full",e.DATA_IN_TABLE="query",e))(Te||{});const Re=(e,t)=>{switch(e){case A.CSV:return T("application/vnd.sdmx.data+csv;version=2.0.0",t);case A.XML:return T("application/vnd.sdmx.data+xml;version=3.0.0",t);case A.JSON:return T(`application/${e}`,t);default:return T("application/vnd.sdmx.data+csv;version=2.0.0",t)}},T=(e,t)=>`${e}; labels=${t}`;var X=(e=>(e.REFERENCE_PARTIAL="referencepartial",e.FULL="full",e))(X||{});const Rt="all",ve="sdmx/3.0/data/dataflow",Ie="&",ce=":",vt="=",we="+",It=",",Pe="*",G=(e,t,n)=>{const{filterKey:s,timeFilter:r}=n,{agency:o,id:i,version:c}=D(e),a=[r||"",t].filter(d=>!!d).join(Ie);return`${`${ve}/${o}/${i}/${c}`}/${s||Pe}?${a}`},wt=(e="",t="",n="",s=P.DESCENDANTS)=>`sdmx/3.0/structure/dataflow/${e}/${t}/${n}?references=${s}&detail=${X.REFERENCE_PARTIAL}`;class Pt{constructor(t){this.client=t}async getDataSet(t,n){const{agency:s,id:r,version:o}=D(t);return await this.client.getRequest(wt(s,r,o,n))}async getDatasetData(t,n){const s=new URLSearchParams({includeHistory:"false",limit:"1000",attributes:Rt,dimensionAtObservation:"TIME_PERIOD"}).toString(),r=G(t,s,n);return await this.client.getRequest(r)}async downloadDataSet(t,n,s,r,o,i,c=!1){const a=new URLSearchParams({format:n,compress:"false",attributes:c?"all":"none",limit:"1000"}).toString(),u=G(t,a,o);return this.client.streamRequest(u,{method:"GET",headers:{Accept:Re(n,r),"Accept-language":s}},i)}}const Nt=(e,t)=>e.error||e.message||`${t.status} ${t.statusText}`,_t="application/json",$t="Content-Type",V="Api-Key",bt="X-CONVERSATION-ID",v="Ocp-Apim-Subscription-Key";class ue extends Error{constructor(t){super(t.message),this.isHttpError=!0,this.name="HttpError",this.code=t.code,this.status=t.status,this.details=t.details}}const R=e=>isNaN(Date.parse(e))?null:new Date(e),K=(e,t,n)=>{const s={[$t]:t?.contentType||_t};return t?.jwt&&(s.Authorization=`Bearer ${t.jwt}`),t?.chatReference&&(s[bt]=t.chatReference),{...s,...n}},Ot=e=>{const t={...e};return t[V]&&(t[V]=t[V].substring(0,8)+"...[REDACTED]"),t.Authorization&&(t.Authorization="Bearer [REDACTED]"),t[v]&&(t[v]=t[v].substring(0,8)+"...[REDACTED]"),t},de=async(e,t,n)=>await fetch(e,{method:n.method||"GET",headers:t,body:n.body?JSON.stringify(n.body):void 0}),Mt=async(e,t,n)=>await fetch(e,{method:n.method,headers:t,body:n?.isFormData&&typeof n?.body=="string"?n.body:JSON.stringify(n.body),signal:n?.signal});class Ct{constructor(){this.decoder=new TextDecoder}async streamChat(t,n,s={},r){const{onMessage:o,onError:i,onComplete:c,signal:a}=s;try{const u=await this.initializeStreamRequest(t,n,a,r);await this.processStreamData(u,o),c?.()}catch(u){this.handleStreamError(u,i)}}async initializeStreamRequest(t,n,s,r){const o=K(void 0,{jwt:r}),i=await Mt(t,{Accept:"text/event-stream",...o},{method:"POST",body:n,signal:s});if(!i.ok){const c=await i.text();let a={};try{a=JSON.parse(c)}catch{a.error="Failed to parse error body"}throw new ue({status:i.status,message:a.error??"No response body"})}if(!i.body)throw new ue({message:"No response body",status:i.status});return i.body.getReader()}async processStreamData(t,n){let s="";try{for(;;){const{done:r,value:o}=await t.read();if(r){s.trim()&&this.parseSSEDataLine(s,n);break}const i=this.decoder.decode(o,{stream:!0});s+=i;const c=s.split(`
2
- `);s=c.pop()||"";for(const a of c)this.parseSSEDataLine(a,n)}}finally{t.releaseLock()}}handleStreamError(t,n){const s=t instanceof Error?t:new Error(String(t));throw n?.(s),s}parseSSEDataLine(t,n){const s=t.trim();if(!(!s||s.startsWith(":"))&&s.startsWith("data: ")){const r=s.slice(6);if(r==="[DONE]"){console.info("SSE: Stream completed");return}let o;try{o=JSON.parse(r)}catch(i){console.error(`Failed to parse SSE data: ${r} ${i}`)}n?.(o)}}}new Ct;class Lt{constructor(t){this.config=t,console.info("SdmxApiClient initialized",{apiUrl:t.apiUrl||"NOT SET"})}async getRequest(t,n){return this.request(t,{...n,method:"GET"})}async postRequest(t,n){return this.request(t,{...n,method:"POST"})}async streamRequest(t,n,s){const r=`${this.config.apiUrl}/${t}`,o={...K(void 0,{jwt:this.config.jwt}),...n.headers};this.config.apiKey!=null&&(o[v]=this.config.apiKey);const i=new ReadableStream({async start(a){try{const u=await de(r,o,n);if(!u.ok){const g=await u.text();throw console.error(`Fetch failed! Status: ${u.status}, Body: ${g}`),new Error(`Fetch failed with status ${u.status}`)}const d=u.body?.getReader();if(!d)throw new Error("Failed to create stream reader");const l=new Uint8Array([239,187,191]);a.enqueue(l);const m=async()=>{const{done:g,value:p}=await d.read();g?a.close():(a.enqueue(p),await m())};m()}catch(u){a.error(u)}}}),c=new Headers({"Content-Disposition":`attachment; filename=${encodeURIComponent(s)}`});return new Response(i,{headers:c})}async request(t,n){const s=Date.now(),r=t.includes("availability")&&this.config.constrainsApiUrl?`${this.config.constrainsApiUrl}/${t}`:`${this.config.apiUrl}/${t}`,o={...K(void 0,{jwt:this.config.jwt}),...n.headers};this.config.apiKey!=null&&(o["Ocp-Apim-Subscription-Key"]=this.config.apiKey),this.addInfoRequestLog("API Request",r,n,o);try{const i=await de(r,o,n),c=Date.now()-s;let a;const u=await i.text();try{a=u?JSON.parse(u):{}}catch{if(this.addErrorRequestParsing(r,n,i,c,u),!i.ok)throw new Error(`API request failed: ${i.status} ${i.statusText} - ${u.substring(0,100)}`);a={data:u}}if(!i.ok){this.addErrorRequestLog(r,n,i,c,a);const d=Nt(a,i);throw new Error(`API request failed: ${d}`)}return a}catch(i){const c=Date.now()-s;throw console.error("API Request Exception",{method:n.method,url:r,duration:`${c}ms`,error:i instanceof Error?i.message:String(i)}),i}}addInfoRequestLog(t,n,s,r){const o={method:s.method||"GET",url:n,headers:Ot(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"})}}const Ut=["FREQ","FREQUENCY"];var Ne=(e=>(e.CONDITIONAL="Conditional",e.MANDATORY="Mandatory",e))(Ne||{}),N=(e=>(e.DIMENSION="Dimension",e.MEASURE_DIMENSION="MeasureDimension",e.TIME_DIMENSION="TimeDimension",e))(N||{}),_e=(e=>(e.UNBOUNDED="unbounded",e))(_e||{});const $e=(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:u,decodedSeriesKey:d}=Z(e,t,a);i[c.id]={values:o?.[u]||[],decodedSeriesKey:d,codedSeriesKey:u}}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,u=t[a],d=r[a].values.findIndex(l=>l.id===u||l.value===u)||0;o[a]=d>=0?d:u,i[a]=u}),{codedSeriesKey:o.join(":"),decodedSeriesKey:i.join(":")}},Wt=(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),u=new Array(c?.length);u[a]=n||"";const d={};for(const l of o){const m=l.relationship.dimensions,{codedSeriesKey:g,decodedSeriesKey:p}=Z(e,u,m);d[l.id]={values:i?.[g]||[],decodedSeriesKey:p,codedSeriesKey:g}}return d},be=(e,t)=>{if(t==null)return;const n=e.values?.[t];return n??(t instanceof Array?{values:t}:{value:t.toString()})},Oe="Observation",xt=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 u in i){const d=[],{name:l,parsedTimeSeriesValue:m}=Me(u,c),g=i[u],p=g.attributes||[];if(Object.keys(g).length===0){a.push({name:l,parsedTimeSeriesValue:m,values:d,attributes:[],dataSetAttrs:[]});continue}d.push(...Qt(g,n));const k=I(s?.series||[],h=>p[h]),F=kt(n.attributes?.dataSet||[],t[0].attributes?.filter(h=>h!=null)||[]),q=$e(e,m),B=o.map((h,At)=>{const ae=q[h.id],yt=be(h,ae.values[At]);return{attribute:h,dimensionGroupValue:yt,dimensionGroupData:ae}});a.push({name:l,parsedTimeSeriesValue:m,values:d,attributes:k,dataSetAttrs:F,dimensionGroupAttributes:B})}return a},Me=(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:Ce(s),parsedTimeSeriesValue:s}},I=(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?Yt(o,r):void 0;n.push({name:r.id,value:i})}return n},Yt=(e,t)=>{const n=t.values[e];return n==null?typeof e=="object"?e:e.toString():n?.id||n?.value||n?.ids||n?.values},Ce=e=>e.map(t=>t?Le(t):"").join("."),Le=e=>e.replace(/\./g,"|.").replace(/:/g,"|:"),Qt=(e,t)=>{const n=t.measures?.observation?.length;if(e.observations==null)return[{values:le(e,t.measures),obsAttributes:I(t.attributes?.observation||[],i=>e[i+n]),dimensionAtObservation:Oe}];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:le(s[i],t.measures),obsAttributes:I(t.attributes?.observation||[],a=>s[i][a+n])})}return o},le=(e,t)=>t?.observation?.map((n,s)=>({name:n.id,value:e[s]}))||[],kt=(e,t)=>e.reduce((n,s,r)=>{const o=t[r];return Ft(n,s,o,""),n},[]),Ft=(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||""})},Ue=/^[0-9][0-9][0-9][0-9]-Q[1-4]$/,We=/^[0-9][0-9][0-9][0-9]-W[0-9][0-9]?$/,xe=/^[0-9][0-9][0-9][0-9]-S[1-2]$/,Ye=/^[0-9][0-9][0-9][0-9]$/,Qe=/^[0-9][0-9][0-9][0-9]-(0[1-9]|1[0-2])-[0-9][0-9]$/,ke=/^[0-9][0-9][0-9][0-9]-M(0[1-9]|(1[0-2]))$/,_=e=>Ye.exec(e),$=e=>!!_(e),Fe=e=>xe.exec(e),b=e=>!!Fe(e),O=e=>ke.exec(e),M=e=>!!O(e),C=e=>Ue.exec(e),L=e=>!!C(e),qe=e=>Qe.exec(e),Be=e=>!!qe(e),Ve=e=>We.exec(e),U=e=>!!Ve(e),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 qt(e){const t=new Date(e),s=-((t.getDay()+6)%7)+3;return t.setDate(t.getDate()+s),new Date(t.valueOf())}function j(e,t="W"){const n=`${e}-12-31`,s=S(new Date(n),t);if(s.weekYear===e)return s.weekNumber;const r=`${e}-12-24`;return S(new Date(r),t).weekNumber}function se(e,t,n="W"){return`${e}-${n}${t<10?"0"+t:t}`}function S(e,t="W"){const n=qt(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 Ge(e){const[t,n]=e.split("-W"),r=ne(+t).getTime()+(+n-1)*te-3*ee;return new Date(r)}function Ke(e){const[t,n]=e.split("-W"),r=ne(+t).getTime()+(+n-1)*te+3*ee;return new Date(r)}function re(e){return $(e)?Bt(e):b(e)?Gt(e):L(e)?jt(e):M(e)?zt(e):U(e)?Ge(e):Xt(e)}function oe(e){return $(e)?Vt(e):b(e)?Kt(e):L(e)?Ht(e):M(e)?Jt(e):U(e)?Ke(e):Zt(e)}function Bt(e){const t=_(e);if(t)return new Date(Number(t[0]),0,1)}function Vt(e){const t=_(e);if(t)return new Date(Number(t[0])+1,0,1)}function Gt(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 Kt(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 jt(e){const t=C(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 Ht(e){const t=C(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 zt(e){const t=O(e);if(!t)return;const[n,s]=t[0].split("-M");return new Date(+n,+s-1,1)}function Jt(e){const t=O(e);if(!t)return;const[n,s]=t[0].split("-M");return new Date(+n,+s,1)}const Xt=e=>new Date(`${e}T00:00:00`),Zt=e=>{const t=new Date(`${e}T23:59:00`);return t.setMinutes(t.getMinutes()+1),t},en=1,je=(e,t,n,s=!0,r="Q")=>{const o=[],i=t&&t>3?an(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},He=(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},tn=e=>Math.ceil(e/3),ze=(e,t,n="M")=>`${e}-${n}${t.toString().padStart(2,"0")}`,nn=(e,t,n="M")=>{const s=[];for(let r=t;r<=12;r++)s.push(ze(e,r,n));return s},sn=(e,t,n,s="M")=>{const r=[];for(let o=t;o<n;o++)r.push(ze(e,o,s));return r},Je=(e,t,n,s="M")=>{const r=t||1,o=n==null,i=n||12;return o?nn(e,r,s):sn(e,r,i,s)},rn=(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[]}},Xe=(e,t)=>{const n=f(t,!0),s=f(e),r=n.getFullYear(),o=s.getFullYear(),i=n.getTime()<=s.getTime()?o+en-r:0;return Array.from({length:i},(a,u)=>r+u)},f=(e,t=!1)=>{const n=on(e,t);return n?(n.getTimezoneOffset()>0&&n.setMinutes(n.getMinutes()+n.getTimezoneOffset()),n):new Date},on=(e,t=!1)=>{const n=Number(e);return e.toString().length!==13?t?re(e):oe(e):isNaN(n)?new Date(`${e}T00:00:00.000Z`):new Date(n)},an=(e,t)=>t?Math.floor((e+1)/3):Math.ceil((e+1)/3),cn=(e,t)=>{const n=ge(e)-ge(t);if(n===0&&e!==t){const s=me(e),r=me(t);return s-r}return n},me=e=>$(e)?6:b(e)?5:L(e)?4:M(e)?3:U(e)?2:Be(e)?1:0,ge=(e,t=!1)=>(t?re(e):oe(e))?.getTime()||0;var W=(e=>(e.LAST_UPDATE_AT="lastUpdatedAt",e.SERIES_COUNT="series_count",e))(W||{}),Ze=(e=>(e.C="c",e))(Ze||{}),E=(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))(E||{}),et=(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))(et||{}),tt=(e=>(e.ANNUAL="A",e.QUARTERLY="Q",e.MONTHLY="M",e))(tt||{});function un(e){return e?.annotations?.find(t=>{if(t.id===W.LAST_UPDATE_AT)return t})?.value}const x=(e,t)=>e?.names&&e?.names[t]||e?.name,nt=(e,t,n)=>{if(!(!e||t?.has(e?.id))&&(t?.set(e?.id,e),e?.parent)){const s=n?.get(e?.parent);nt(s,t,n)}},st=(e,t)=>{const n=new Map,s=new Map(e?.map(r=>[r.id,r]));return t?.forEach(r=>{nt(r,n,s)}),Array.from(n?.values())},rt="time_period_end",ot="time_period_start",it="TIME_PERIOD",dn=e=>{const t=e?.find(o=>o.id===ot),n=e?.find(o=>o.id===rt),s=n?.title?new Date(n?.title):null;return{startPeriod:t?.title?new Date(t?.title):null,endPeriod:s}},ln=(e,t)=>e.id.localeCompare(t.id),mn=(e,t)=>e.memberValue.localeCompare(t.memberValue),gn=(e,t)=>{const n=new Array(e.length),s=e.map((i,c)=>[i,c]);s.sort((i,c)=>ln(i[0],c[0]));const r=[...t];r.sort(mn);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)},fn=e=>!!e?.some(t=>t.parent),En=(e,t,n,s,r=[])=>{let o=e||[];if(pn(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})):gn(o,c.selectionValues):o=[]}}else r.length!==0&&(o=o.filter(({id:i})=>r.includes(i)));return fn(e)&&(o=st(e,o)),o?.map(i=>({...i,name:s?x(i,s):i?.name}))},pn=(e,t)=>e!=null&&e.length>0&&t!=null,hn=e=>{const t=[];return e?.filters?.forEach(n=>{n.componentCode!==it&&t.push({componentCode:n.componentCode,operator:E.EQUALS,value:n.values.join(",")})}),t},Dn=/^[v^~<>=]*?(\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+))?(?:-([\da-z\-]+(?:\.[\da-z\-]+)*))?(?:\+[\da-z\-]+(?:\.[\da-z\-]+)*)?)?)?$/i,fe=e=>{if(typeof e!="string")throw new TypeError("Invalid argument expected string");const t=e.match(Dn);if(!t)throw new Error(`Invalid argument not valid semver ('${e}' received)`);return t.shift(),t},Ee=e=>e==="*"||e==="x"||e==="X",pe=e=>{const t=parseInt(e,10);return isNaN(t)?e:t},An=(e,t)=>typeof e!=typeof t?[String(e),String(t)]:[e,t],yn=(e,t)=>{if(Ee(e)||Ee(t))return 0;const[n,s]=An(pe(e),pe(t));return n>s?1:n<s?-1:0},he=(e,t)=>{for(let n=0;n<Math.max(e.length,t.length);n++){const s=yn(e[n]||"0",t[n]||"0");if(s!==0)return s}return 0},Sn=(e,t)=>{const n=fe(e),s=fe(t),r=n.pop(),o=s.pop(),i=he(n,s);return i!==0?i:r&&o?he(r.split("."),o.split(".")):r||o?r?-1:1:0},Tn=(e,t,n)=>{Rn(n);const s=Sn(e,t);return at[n].includes(s)},at={">":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1],"!=":[-1,1]},De=Object.keys(at),Rn=e=>{if(De.indexOf(e)===-1)throw new Error(`Invalid operator, expected one of ${De.join("|")}`)},w="+",Y=(e,t)=>{const{agency:n,id:s,version:r}=D(e),o=t.filter(a=>a.agencyID===n&&a.id===s&&!a?.version?.includes(w));if(o.length===1)return o[0];if(!r?.includes(w))return o.find(a=>a.version===r);const i=o.map(a=>a.version),c=ct(r,i);return o.find(a=>a.version===c[0])},ct=(e,t)=>{const n=vn(e,t);return n.length>0?[n[0]]:[]},vn=(e,t)=>{const n=[];return t.forEach(s=>{dt(e,s)&&n.push(s)}),n},ut=e=>{const t=e.trim().replace(/\d+\+/,"*"),[n]=t.split("*");return new RegExp(`^${n}`)},dt=(e,t)=>{const n=e.trim().replace(/\+/,"");return ut(e).test(t)&&Tn(t,n,">=")},Q=(e,t)=>{const{concept:n}=lt(e,t);return n},lt=(e,t)=>{if(e==null)return{concept:void 0,scheme:void 0};const{childId:n,agency:s,id:r,version:o}=Ae(e);if(o?.includes(w)){const i=Y(e,t);return{concept:H(i?.concepts||[],n),scheme:i}}for(const i of t)if(In(i,r,s,o))return{concept:H(i?.concepts||[],n),scheme:i};return{concept:void 0,scheme:void 0}},H=(e,t)=>e?.find(n=>n.id===t),In=(e,t,n,s)=>e.id===t&&e.agencyID===n&&e.version===s,wn=(e=[],t=[],n)=>{const s=n?.conceptIdentity||"",r=Q(s,t),o=y(n?.localRepresentation?.enumeration),i=y(r?.coreRepresentation?.enumeration),c=o||i;if(c!=null)return Y(c,e)},Pn=(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?x(o,s):o?.name}))||[]},mt=(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,attributeRelationship:r.attributeRelationship,isMandatory:Number(o?.minOccurs)>0}})},Nn=(e=[],t,n)=>{const s=y(t?.conceptIdentity)||"",r=Q(s,e);return n?x(r,n):r?.name??r?.id??t?.id};function z(e){return e?.dataStructures?.[0]?.dataStructureComponents?.dimensionList}function _n(e){return e?.data?.structures?.[0]?.dimensions?.series||[]}function $n(e){return e?.data?.structures?.[0]?.dimensions?.observation?.[0].values.map(t=>t.value).filter(t=>t!=null)||[]}function bn(e){return e.find(t=>t.type===N.TIME_DIMENSION)}const On=e=>{const t=new Map,n=e?.dataStructures?.[0],s=e?.metadataStructures?.[0],r=e?.conceptSchemes||[],o=e?.codelists||[];return e&&[...z(e)?.dimensions||[],...z(e)?.timeDimensions||[],...mt(s,n),...n?.dataStructureComponents?.attributeList?.attributes||[]].forEach(c=>{const a=Q(c?.conceptIdentity,r),u=c?.localRepresentation?.enumeration||a?.coreRepresentation?.enumeration,d=Y(u,o);c?.id&&(u?t.set(c?.id,{...d,name:a?.name,names:a?.names}):t.set(c?.id,{id:c?.id,name:a?.name,names:a?.names}))}),t},Mn=e=>e?.find(t=>t.id===W.SERIES_COUNT)?.title||"",Cn="/api/download",Ln=(e,t,n,s,r,o,i)=>{const c=new URLSearchParams({urn:e,format:t,compress:"false",filename:o,filters:JSON.stringify(r),attribute:s,language:n,isMetadata:i?"true":"none"}).toString(),a=`${Cn}?${c}`;window.open(a,"_blank")},Un=(e,t)=>{const n=[];for(const s of e){if(s.type!==N.DIMENSION)continue;const r=t.find(o=>o.componentCode===s.id);r!=null&&r.values?.length>0?n.push(r.values?.join(we)):n.push("*")}return n.join(".")},gt=(e,t)=>{if(!e||!e.startPeriod&&!e.endPeriod)return null;const n=[],{startPeriod:s,endPeriod:r}=e;if(s&&n.push(`${E.GREATER_OR_EQUAL}${ce}${s.toISOString().split("T")[0]}`),r&&n.push(`${E.LESS_OR_EQUAL}${ce}${r.toISOString().split("T")[0]}`),n.length===0)return null;const o=t;return n.map(i=>`${encodeURIComponent(`c[${o}]`)}${vt}${encodeURIComponent(i)}`).join(Ie)},Wn=(e,t)=>{const n=ft(e,t)||null;return n?gt(n,t?.id):null},ft=(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===E.LESS_OR_EQUAL||o===E.LESS)return{startPeriod:null,endPeriod:R(r[0])};if(o===E.GREATER_OR_EQUAL||o===E.GREATER)return{startPeriod:R(r[0]),endPeriod:null};const i=R(r[0]),c=R(r[1]);return{startPeriod:i,endPeriod:c}},ie=(e,t,n)=>{const s=f(t,!0),r=f(n),o=f(e,!0),i=f(e),c=s.getTime()>o.getTime()?s:o,a=r.getTime()<i.getTime()?r:i;return{start:c,end:a}},Et=(e,t,n,s="W")=>{const r=+e,{start:o,end:i}=ie(e,t,n);if(o.getTime()>i.getTime())return[];const c=S(o,s),a=c.weekYear===r?c.weekNumber:c.weekYear<r?1:j(r,s),u=S(i,s),d=u.weekYear===r?u.weekNumber:u.weekYear>r?j(r,s):1,l=[];if(a<d)for(let m=a;m<=d;m++)l.push(se(r,m,s));return l},xn=e=>{const t=new Date(e);return t.setMinutes(t.getMinutes()-t.getTimezoneOffset()),t.toISOString().slice(0,10)},pt=(e,t,n)=>{const{start:s,end:r}=ie(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=xn(i);o.push(a),i.setDate(i.getDate()+1)}return o},ht=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")}),Yn=(e,t,n,s)=>{const r=s===0?f(t.toString(),!0)?.getMonth()+1:void 0,o=s===e.length-1?f(n.toString())?.getMonth()+1||1:void 0;return{startMonth:r,endMonth:o}},Dt=["FREQUENCY","FREQ"],Qn=(e,t)=>{const n=e?.[0]?.cubeRegions?.[0]?.memberSelection?.find(a=>Dt.includes(a.componentId))?.selectionValues,s=ht(n||[]),r=t?.startPeriod?.getTime()||1,o=t?.endPeriod?.getTime()||1,i=Xe(o,r),c=[];return i.forEach((a,u)=>{const d=[],{startMonth:l,endMonth:m}=Yn(i,new Date(r),new Date(o),u),{isDailyExist:g,isWeeklyExist:p,isMonthlyExist:k,isQuarterlyExist:F,isSemiAnnualExist:q,isYearlyExist:B}=s;B&&d.push(a.toString()),q&&d.push(...He(a,l,m)),F&&d.push(...je(a,l,m,!1)),k&&d.push(...Je(a,l,m)),p&&d.push(...Et(a,r.toString(),o.toString())),g&&d.push(...pt(a,r.toString(),o.toString())),c.push(...d)}),c};function kn(e){const{urn:t}=e.details;return ye(t.resourceId,t.version,t.agencyId)}function Fn(e){const t={};for(const n of e.datasets){const s=n.dataset,r=kn(s);t[r]=s.details.dimensions}return t}exports.Annotations=W;exports.AssignmentStatus=Ne;exports.AvailabilityApi=Tt;exports.DATASET_DATA_URL=ve;exports.DatasetApi=Pt;exports.DimensionType=N;exports.DownloadType=Te;exports.FREQUENCY_DIMENSION_ID=Ut;exports.FREQUENCY_DIM_ID=Dt;exports.FileColumnsAttribute=Se;exports.GET_v3_FILTER_ALL=Pe;exports.GET_v3_FILTER_AND=It;exports.GET_v3_FILTER_OR=we;exports.OBSERVATION_KEY=Oe;exports.OccurrenceType=_e;exports.Periods=tt;exports.RepresentationTextType=et;exports.SDMX_DATA_QUERY_PARAMS=Ze;exports.SINGLE_WILDCARD_SYMBOL=w;exports.SdmxApiClient=Lt;exports.SdmxAvailabilityMode=J;exports.SdmxDataFormat=A;exports.SdmxDetails=X;exports.SdmxReferences=P;exports.SeriesFilterOperator=E;exports.TIME_PERIOD=it;exports.TIME_PERIOD_END=rt;exports.TIME_PERIOD_START=ot;exports.buildDatasetDimensionsMetadataMap=Fn;exports.dailyPattern=Qe;exports.decodeDimensionId=Le;exports.findCodelistByDimension=wn;exports.generateDatasetDataRequest=G;exports.generateShortUrn=ye;exports.getAdditionalColumns=Qn;exports.getAnnotationPeriod=dn;exports.getArtifactByUrnWithWildCard=Y;exports.getAttachedDimensionsSeriesByDimension=Wt;exports.getAttachedDimensionsSeriesByTsId=$e;exports.getAttachedDimensionsSeriesKey=Z;exports.getAttributeValueFromDataQueryResponse=be;exports.getAvailableCodes=Pn;exports.getAvailableCodesFromConstrains=En;exports.getChildParsedUrn=Ae;exports.getConcept=Q;exports.getConceptByUrn=H;exports.getConceptWithScheme=lt;exports.getConvertedMetaAttributes=mt;exports.getDailyRegExp=qe;exports.getDaysColumns=pt;exports.getDimensionTitle=Nn;exports.getDimensions=z;exports.getFilteredItemsWithParents=st;exports.getFiltersDtoFromDataQuery=hn;exports.getISOWeek=S;exports.getKeyFromUrn=y;exports.getLastUpdatedTime=un;exports.getLastWeekNumberOfYear=j;exports.getLocalizedName=x;exports.getMonthlyData=Je;exports.getMonthlyDataByQuarter=rn;exports.getMonthlyRegExp=O;exports.getParsedEndPeriodDate=oe;exports.getParsedResponse=xt;exports.getParsedStartPeriodDate=re;exports.getPeriodDate=f;exports.getPeriods=ht;exports.getQuarterByMonth=tn;exports.getQuarterlyRegExp=C;exports.getQuartersData=je;exports.getQueryTimePeriodFilters=gt;exports.getRequestAcceptHeader=Re;exports.getResolvedVersionBySingleWildcard=ct;exports.getSemiAnnualData=He;exports.getSemiAnnuallyRegExp=Fe;exports.getSeriesAttributes=I;exports.getSeriesName=Me;exports.getStructureComponentsMap=On;exports.getStructureDimensions=_n;exports.getTimeDimension=bn;exports.getTimePeriods=$n;exports.getTimeQueryFilter=Wn;exports.getTimeRangeFromAttachment=ft;exports.getTimeSeriesCount=Mn;exports.getTimeSeriesFilterKey=Un;exports.getTimeSeriesId=Ce;exports.getWeekCode=se;exports.getWeeklyPeriodEndDate=Ke;exports.getWeeklyPeriodStartDate=Ge;exports.getWeeklyRegExp=Ve;exports.getWeeksColumns=Et;exports.getWildCardRegexp=ut;exports.getYearPeriod=ie;exports.getYearlyRegExp=_;exports.getYears=Xe;exports.isDaily=Be;exports.isMonthly=M;exports.isQuarterly=L;exports.isSemiAnnually=b;exports.isWeekly=U;exports.isWildCardVersionCorrect=dt;exports.isYearly=$;exports.monthlyPattern=ke;exports.openDownloadWindow=Ln;exports.quarterPattern=Ue;exports.semiAnnuallyPattern=xe;exports.sortPeriods=cn;exports.splitUrn=D;exports.weeklyPattern=We;exports.yearlyPattern=Ye;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const y=e=>{if(e!=null){const t=e.split("=");return t.length===1?e:t[1]}},D=e=>{if(e==null)return{};const t=y(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},Ae=e=>{const[t,n]=e.split(")."),{agency:s,id:r,version:o}=D(t+")");return{childId:n,agency:s,id:r,version:o}},ye=(e,t,n)=>{const s=t===""?"":`(${t})`;return`${n}:${e}${s}`};var P=(e=>(e.DESCENDANTS="descendants",e.NONE="none",e.ALL="all",e))(P||{}),J=(e=>(e.EXACT="exact",e.AVAILABLE="available",e))(J||{});function St(e){return{data:{codelists:e.data.codelists,conceptSchemes:e.data.conceptSchemes,dataConstraints:e.data.dataConstraints?.map(Tt),dataflows:e.data.dataflows,dataStructures:e.data.dataStructures,metadataStructures:e.data.metadataStructures}}}function Tt(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 wt=(e="",t="",n="")=>`sdmx/3.0/availability/dataflow/${e}/${t}/${n}`;class Pt{constructor(t){this.client=t}async getConstraints(t,n){const{agency:s,id:r,version:o}=D(t),i={filters:n||[],mode:J.AVAILABLE,references:P.NONE},a=wt(s,r,o);if(this.client.config.sdmxProxyUrl){const c=await this.client.postRequest(a,{body:i},this.client.config.sdmxProxyUrl);return St(c)}return await this.client.postRequest(a,{body:i},this.client.config.constrainsApiUrl||this.client.config.apiUrl)}}var A=(e=>(e.CSV="csv",e.JSON="json",e.XML="xml",e))(A||{}),Se=(e=>(e.ID="id",e.NAME="name",e.ID_NAME="both",e))(Se||{}),Te=(e=>(e.FULL_DATASET="full",e.DATA_IN_TABLE="query",e))(Te||{});const Re=(e,t)=>{switch(e){case A.CSV:return T("application/vnd.sdmx.data+csv;version=2.0.0",t);case A.XML:return T("application/vnd.sdmx.data+xml;version=3.0.0",t);case A.JSON:return T(`application/${e}`,t);default:return T("application/vnd.sdmx.data+csv;version=2.0.0",t)}},T=(e,t)=>`${e}; labels=${t}`;var X=(e=>(e.REFERENCE_PARTIAL="referencepartial",e.FULL="full",e))(X||{});const Nt="all",ve="sdmx/3.0/data/dataflow",Ie="&",ce=":",_t="=",we="+",bt=",",Pe="*",G=(e,t,n)=>{const{filterKey:s,timeFilter:r}=n,{agency:o,id:i,version:a}=D(e),c=[r||"",t].filter(d=>!!d).join(Ie);return`${`${ve}/${o}/${i}/${a}`}/${s||Pe}?${c}`},$t=(e="",t="",n="",s=P.DESCENDANTS)=>`sdmx/3.0/structure/dataflow/${e}/${t}/${n}?references=${s}&detail=${X.REFERENCE_PARTIAL}`;class Ot{constructor(t){this.client=t}async getDataSet(t,n){const{agency:s,id:r,version:o}=D(t);return await this.client.getRequest($t(s,r,o,n))}async getDatasetData(t,n){const s=new URLSearchParams({includeHistory:"false",limit:"1000",attributes:Nt,dimensionAtObservation:"TIME_PERIOD"}).toString(),r=G(t,s,n);return await this.client.getRequest(r)}async downloadDataSet(t,n,s,r,o,i,a=!1){const c=new URLSearchParams({format:n,compress:"false",attributes:a?"all":"none",limit:"1000"}).toString(),u=G(t,c,o);return this.client.streamRequest(u,{method:"GET",headers:{Accept:Re(n,r),"Accept-language":s}},i)}}const Ct=(e,t)=>e.error||e.message||`${t.status} ${t.statusText}`,Mt="application/json",Lt="Content-Type",B="Api-Key",Ut="X-CONVERSATION-ID",v="Ocp-Apim-Subscription-Key";class ue extends Error{constructor(t){super(t.message),this.isHttpError=!0,this.name="HttpError",this.code=t.code,this.status=t.status,this.details=t.details}}const R=e=>isNaN(Date.parse(e))?null:new Date(e),K=(e,t,n)=>{const s={[Lt]:t?.contentType||Mt};return t?.jwt&&(s.Authorization=`Bearer ${t.jwt}`),t?.chatReference&&(s[Ut]=t.chatReference),{...s,...n}},xt=e=>{const t={...e};return t[B]&&(t[B]=t[B].substring(0,8)+"...[REDACTED]"),t.Authorization&&(t.Authorization="Bearer [REDACTED]"),t[v]&&(t[v]=t[v].substring(0,8)+"...[REDACTED]"),t},de=async(e,t,n)=>await fetch(e,{method:n.method||"GET",headers:t,body:n.body?JSON.stringify(n.body):void 0}),Wt=async(e,t,n)=>await fetch(e,{method:n.method,headers:t,body:n?.isFormData&&typeof n?.body=="string"?n.body:JSON.stringify(n.body),signal:n?.signal});class Yt{constructor(){this.decoder=new TextDecoder}async streamChat(t,n,s={},r){const{onMessage:o,onError:i,onComplete:a,signal:c}=s;try{const u=await this.initializeStreamRequest(t,n,c,r);await this.processStreamData(u,o),a?.()}catch(u){this.handleStreamError(u,i)}}async initializeStreamRequest(t,n,s,r){const o=K(void 0,{jwt:r}),i=await Wt(t,{Accept:"text/event-stream",...o},{method:"POST",body:n,signal:s});if(!i.ok){const a=await i.text();let c={};try{c=JSON.parse(a)}catch{c.error="Failed to parse error body"}throw new ue({status:i.status,message:c.error??"No response body"})}if(!i.body)throw new ue({message:"No response body",status:i.status});return i.body.getReader()}async processStreamData(t,n){let s="";try{for(;;){const{done:r,value:o}=await t.read();if(r){s.trim()&&this.parseSSEDataLine(s,n);break}const i=this.decoder.decode(o,{stream:!0});s+=i;const a=s.split(`
2
+ `);s=a.pop()||"";for(const c of a)this.parseSSEDataLine(c,n)}}finally{t.releaseLock()}}handleStreamError(t,n){const s=t instanceof Error?t:new Error(String(t));throw n?.(s),s}parseSSEDataLine(t,n){const s=t.trim();if(!(!s||s.startsWith(":"))&&s.startsWith("data: ")){const r=s.slice(6);if(r==="[DONE]"){console.info("SSE: Stream completed");return}let o;try{o=JSON.parse(r)}catch(i){console.error(`Failed to parse SSE data: ${r} ${i}`)}n?.(o)}}}new Yt;class Qt{constructor(t){this.config=t,console.info("SdmxApiClient initialized",{apiUrl:t.apiUrl||"NOT SET"})}async getRequest(t,n){return this.request(t,{...n,method:"GET"})}async postRequest(t,n,s){return this.request(t,{...n,method:"POST"},s)}async streamRequest(t,n,s){const r=`${this.config.apiUrl}/${t}`,o={...K(void 0,{jwt:this.config.jwt}),...n.headers};this.config.apiKey!=null&&(o[v]=this.config.apiKey);const i=new ReadableStream({async start(c){try{const u=await de(r,o,n);if(!u.ok){const g=await u.text();throw console.error(`Fetch failed! Status: ${u.status}, Body: ${g}`),new Error(`Fetch failed with status ${u.status}`)}const d=u.body?.getReader();if(!d)throw new Error("Failed to create stream reader");const l=new Uint8Array([239,187,191]);c.enqueue(l);const m=async()=>{const{done:g,value:h}=await d.read();g?c.close():(c.enqueue(h),await m())};m()}catch(u){c.error(u)}}}),a=new Headers({"Content-Disposition":`attachment; filename=${encodeURIComponent(s)}`});return new Response(i,{headers:a})}async request(t,n,s){const r=Date.now(),o=`${s||this.config.apiUrl}/${t}`,i={...K(void 0,{jwt:this.config.jwt}),...n.headers};this.config.apiKey!=null&&(i["Ocp-Apim-Subscription-Key"]=this.config.apiKey),this.addInfoRequestLog("API Request",o,n,i);try{const a=await de(o,i,n),c=Date.now()-r;let u;const d=await a.text();try{u=d?JSON.parse(d):{}}catch{if(this.addErrorRequestParsing(o,n,a,c,d),!a.ok)throw new Error(`API request failed: ${a.status} ${a.statusText} - ${d.substring(0,100)}`);u={data:d}}if(!a.ok){this.addErrorRequestLog(o,n,a,c,u);const l=Ct(u,a);throw new Error(`API request failed: ${l}`)}return u}catch(a){const c=Date.now()-r;throw console.error("API Request Exception",{method:n.method,url:o,duration:`${c}ms`,error:a instanceof Error?a.message:String(a)}),a}}addInfoRequestLog(t,n,s,r){const o={method:s.method||"GET",url:n,headers:xt(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"})}}const kt=["FREQ","FREQUENCY"];var Ne=(e=>(e.CONDITIONAL="Conditional",e.MANDATORY="Mandatory",e))(Ne||{}),N=(e=>(e.DIMENSION="Dimension",e.MEASURE_DIMENSION="MeasureDimension",e.TIME_DIMENSION="TimeDimension",e))(N||{}),_e=(e=>(e.UNBOUNDED="unbounded",e))(_e||{});const be=(e,t)=>{const n=e?.data?.dataSets?.[0],r=e?.data?.structures?.[0]?.attributes?.dimensionGroup||[],o=n?.dimensionGroupAttributes,i={};for(const a of r){const c=a.relationship.dimensions,{codedSeriesKey:u,decodedSeriesKey:d}=Z(e,t,c);i[a.id]={values:o?.[u]||[],decodedSeriesKey:d,codedSeriesKey:u}}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(a=>{const c=r?.findIndex(l=>l.id===a)||0,u=t[c],d=r[c].values.findIndex(l=>l.id===u||l.value===u)||0;o[c]=d>=0?d:u,i[c]=u}),{codedSeriesKey:o.join(":"),decodedSeriesKey:i.join(":")}},Vt=(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,a=[...r?.dimensions.series||[],...r?.dimensions.observation||[]],c=a?.findIndex(l=>l.id===t),u=new Array(a?.length);u[c]=n||"";const d={};for(const l of o){const m=l.relationship.dimensions,{codedSeriesKey:g,decodedSeriesKey:h}=Z(e,u,m);d[l.id]={values:i?.[g]||[],decodedSeriesKey:h,codedSeriesKey:g}}return d},$e=(e,t)=>{if(t==null)return;const n=e.values?.[t];return n??(t instanceof Array?{values:t}:{value:t.toString()})},Oe="Observation",Ft=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,a=r.series?.length?r.series:r.observation,c=[];for(const u in i){const d=[],{name:l,parsedTimeSeriesValue:m}=Ce(u,a),g=i[u],h=g.attributes||[];if(Object.keys(g).length===0){c.push({name:l,parsedTimeSeriesValue:m,values:d,attributes:[],dataSetAttrs:[]});continue}d.push(...Bt(g,n));const k=I(s?.series||[],E=>h[E]),V=Gt(n.attributes?.dataSet||[],t[0].attributes?.filter(E=>E!=null)||[]),F=be(e,m),q=o.map((E,At)=>{const ae=F[E.id],yt=$e(E,ae.values[At]);return{attribute:E,dimensionGroupValue:yt,dimensionGroupData:ae}});c.push({name:l,parsedTimeSeriesValue:m,values:d,attributes:k,dataSetAttrs:V,dimensionGroupAttributes:q})}return c},Ce=(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 a=o.values[i];if(a==null){s.push(n[r].replace("|:",":"));continue}s.push(a?.id||a?.value||"")}return{name:Me(s),parsedTimeSeriesValue:s}},I=(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?qt(o,r):void 0;n.push({name:r.id,value:i})}return n},qt=(e,t)=>{const n=t.values[e];return n==null?typeof e=="object"?e:e.toString():n?.id||n?.value||n?.ids||n?.values},Me=e=>e.map(t=>t?Le(t):"").join("."),Le=e=>e.replace(/\./g,"|.").replace(/:/g,"|:"),Bt=(e,t)=>{const n=t.measures?.observation?.length;if(e.observations==null)return[{values:le(e,t.measures),obsAttributes:I(t.attributes?.observation||[],i=>e[i+n]),dimensionAtObservation:Oe}];const s=e.observations,r=t.dimensions.observation?.[0],o=[];for(const i in s){const a=r?.values[i];o.push({dimensionAtObservation:a?.value||a?.id,values:le(s[i],t.measures),obsAttributes:I(t.attributes?.observation||[],c=>s[i][c+n])})}return o},le=(e,t)=>t?.observation?.map((n,s)=>({name:n.id,value:e[s]}))||[],Gt=(e,t)=>e.reduce((n,s,r)=>{const o=t[r];return Kt(n,s,o,""),n},[]),Kt=(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||""})},Ue=/^[0-9][0-9][0-9][0-9]-Q[1-4]$/,xe=/^[0-9][0-9][0-9][0-9]-W[0-9][0-9]?$/,We=/^[0-9][0-9][0-9][0-9]-S[1-2]$/,Ye=/^[0-9][0-9][0-9][0-9]$/,Qe=/^[0-9][0-9][0-9][0-9]-(0[1-9]|1[0-2])-[0-9][0-9]$/,ke=/^[0-9][0-9][0-9][0-9]-M(0[1-9]|(1[0-2]))$/,_=e=>Ye.exec(e),b=e=>!!_(e),Ve=e=>We.exec(e),$=e=>!!Ve(e),O=e=>ke.exec(e),C=e=>!!O(e),M=e=>Ue.exec(e),L=e=>!!M(e),Fe=e=>Qe.exec(e),qe=e=>!!Fe(e),Be=e=>xe.exec(e),U=e=>!!Be(e),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 jt(e){const t=new Date(e),s=-((t.getDay()+6)%7)+3;return t.setDate(t.getDate()+s),new Date(t.valueOf())}function j(e,t="W"){const n=`${e}-12-31`,s=S(new Date(n),t);if(s.weekYear===e)return s.weekNumber;const r=`${e}-12-24`;return S(new Date(r),t).weekNumber}function se(e,t,n="W"){return`${e}-${n}${t<10?"0"+t:t}`}function S(e,t="W"){const n=jt(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 Ge(e){const[t,n]=e.split("-W"),r=ne(+t).getTime()+(+n-1)*te-3*ee;return new Date(r)}function Ke(e){const[t,n]=e.split("-W"),r=ne(+t).getTime()+(+n-1)*te+3*ee;return new Date(r)}function re(e){return b(e)?Ht(e):$(e)?Jt(e):L(e)?Zt(e):C(e)?tn(e):U(e)?Ge(e):sn(e)}function oe(e){return b(e)?zt(e):$(e)?Xt(e):L(e)?en(e):C(e)?nn(e):U(e)?Ke(e):rn(e)}function Ht(e){const t=_(e);if(t)return new Date(Number(t[0]),0,1)}function zt(e){const t=_(e);if(t)return new Date(Number(t[0])+1,0,1)}function Jt(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 Xt(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 Zt(e){const t=M(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 en(e){const t=M(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 tn(e){const t=O(e);if(!t)return;const[n,s]=t[0].split("-M");return new Date(+n,+s-1,1)}function nn(e){const t=O(e);if(!t)return;const[n,s]=t[0].split("-M");return new Date(+n,+s,1)}const sn=e=>new Date(`${e}T00:00:00`),rn=e=>{const t=new Date(`${e}T23:59:00`);return t.setMinutes(t.getMinutes()+1),t},on=1,je=(e,t,n,s=!0,r="Q")=>{const o=[],i=t&&t>3?mn(t,s):1,a=n?Math.floor((n-1)/3):4;for(let c=i;c<=a;c++)o.push(`${e}-${r}${c}`);return o},He=(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},an=e=>Math.ceil(e/3),ze=(e,t,n="M")=>`${e}-${n}${t.toString().padStart(2,"0")}`,cn=(e,t,n="M")=>{const s=[];for(let r=t;r<=12;r++)s.push(ze(e,r,n));return s},un=(e,t,n,s="M")=>{const r=[];for(let o=t;o<n;o++)r.push(ze(e,o,s));return r},Je=(e,t,n,s="M")=>{const r=t||1,o=n==null,i=n||12;return o?cn(e,r,s):un(e,r,i,s)},dn=(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[]}},Xe=(e,t)=>{const n=f(t,!0),s=f(e),r=n.getFullYear(),o=s.getFullYear(),i=n.getTime()<=s.getTime()?o+on-r:0;return Array.from({length:i},(c,u)=>r+u)},f=(e,t=!1)=>{const n=ln(e,t);return n?(n.getTimezoneOffset()>0&&n.setMinutes(n.getMinutes()+n.getTimezoneOffset()),n):new Date},ln=(e,t=!1)=>{const n=Number(e);return e.toString().length!==13?t?re(e):oe(e):isNaN(n)?new Date(`${e}T00:00:00.000Z`):new Date(n)},mn=(e,t)=>t?Math.floor((e+1)/3):Math.ceil((e+1)/3),gn=(e,t)=>{const n=ge(e)-ge(t);if(n===0&&e!==t){const s=me(e),r=me(t);return s-r}return n},me=e=>b(e)?6:$(e)?5:L(e)?4:C(e)?3:U(e)?2:qe(e)?1:0,ge=(e,t=!1)=>(t?re(e):oe(e))?.getTime()||0;var x=(e=>(e.LAST_UPDATE_AT="lastUpdatedAt",e.SERIES_COUNT="series_count",e))(x||{}),Ze=(e=>(e.C="c",e))(Ze||{}),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||{}),et=(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))(et||{}),tt=(e=>(e.ANNUAL="A",e.QUARTERLY="Q",e.MONTHLY="M",e))(tt||{});function fn(e){return e?.annotations?.find(t=>{if(t.id===x.LAST_UPDATE_AT)return t})?.value}const W=(e,t)=>e?.names&&e?.names[t]||e?.name,nt=(e,t,n)=>{if(!(!e||t?.has(e?.id))&&(t?.set(e?.id,e),e?.parent)){const s=n?.get(e?.parent);nt(s,t,n)}},st=(e,t)=>{const n=new Map,s=new Map(e?.map(r=>[r.id,r]));return t?.forEach(r=>{nt(r,n,s)}),Array.from(n?.values())},rt="time_period_end",ot="time_period_start",it="TIME_PERIOD",pn=e=>{const t=e?.find(o=>o.id===ot),n=e?.find(o=>o.id===rt),s=n?.title?new Date(n?.title):null;return{startPeriod:t?.title?new Date(t?.title):null,endPeriod:s}},hn=(e,t)=>e.id.localeCompare(t.id),En=(e,t)=>e.memberValue.localeCompare(t.memberValue),Dn=(e,t)=>{const n=new Array(e.length),s=e.map((i,a)=>[i,a]);s.sort((i,a)=>hn(i[0],a[0]));const r=[...t];r.sort(En);let o=0;for(const i of s){const a=i[0];for(;o<r.length&&r[o].memberValue.localeCompare(a.id)<0;)o+=1;o<r.length&&r[o].memberValue===a.id&&(n[i[1]]=i[0])}return n.filter(i=>i!=null)},An=e=>!!e?.some(t=>t.parent),yn=(e,t,n,s,r=[])=>{let o=e||[];if(Sn(n||[],t||"")){const i=(n||[])[0].cubeRegions?.find(({isIncluded:a})=>a);if(i){const a=i.memberSelection?.find(({componentId:c})=>c===t);a?o=o.length===0?(a.selectionValues||[]).map(({memberValue:c})=>({id:c,name:c})):Dn(o,a.selectionValues):o=[]}}else r.length!==0&&(o=o.filter(({id:i})=>r.includes(i)));return An(e)&&(o=st(e,o)),o?.map(i=>({...i,name:s?W(i,s):i?.name}))},Sn=(e,t)=>e!=null&&e.length>0&&t!=null,Tn=e=>{const t=[];return e?.filters?.forEach(n=>{n.componentCode!==it&&t.push({componentCode:n.componentCode,operator:p.EQUALS,value:n.values.join(",")})}),t},Rn=/^[v^~<>=]*?(\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+))?(?:-([\da-z\-]+(?:\.[\da-z\-]+)*))?(?:\+[\da-z\-]+(?:\.[\da-z\-]+)*)?)?)?$/i,fe=e=>{if(typeof e!="string")throw new TypeError("Invalid argument expected string");const t=e.match(Rn);if(!t)throw new Error(`Invalid argument not valid semver ('${e}' received)`);return t.shift(),t},pe=e=>e==="*"||e==="x"||e==="X",he=e=>{const t=parseInt(e,10);return isNaN(t)?e:t},vn=(e,t)=>typeof e!=typeof t?[String(e),String(t)]:[e,t],In=(e,t)=>{if(pe(e)||pe(t))return 0;const[n,s]=vn(he(e),he(t));return n>s?1:n<s?-1:0},Ee=(e,t)=>{for(let n=0;n<Math.max(e.length,t.length);n++){const s=In(e[n]||"0",t[n]||"0");if(s!==0)return s}return 0},wn=(e,t)=>{const n=fe(e),s=fe(t),r=n.pop(),o=s.pop(),i=Ee(n,s);return i!==0?i:r&&o?Ee(r.split("."),o.split(".")):r||o?r?-1:1:0},Pn=(e,t,n)=>{Nn(n);const s=wn(e,t);return at[n].includes(s)},at={">":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1],"!=":[-1,1]},De=Object.keys(at),Nn=e=>{if(De.indexOf(e)===-1)throw new Error(`Invalid operator, expected one of ${De.join("|")}`)},w="+",Y=(e,t)=>{const{agency:n,id:s,version:r}=D(e),o=t.filter(c=>c.agencyID===n&&c.id===s&&!c?.version?.includes(w));if(o.length===1)return o[0];if(!r?.includes(w))return o.find(c=>c.version===r);const i=o.map(c=>c.version),a=ct(r,i);return o.find(c=>c.version===a[0])},ct=(e,t)=>{const n=_n(e,t);return n.length>0?[n[0]]:[]},_n=(e,t)=>{const n=[];return t.forEach(s=>{dt(e,s)&&n.push(s)}),n},ut=e=>{const t=e.trim().replace(/\d+\+/,"*"),[n]=t.split("*");return new RegExp(`^${n}`)},dt=(e,t)=>{const n=e.trim().replace(/\+/,"");return ut(e).test(t)&&Pn(t,n,">=")},Q=(e,t)=>{const{concept:n}=lt(e,t);return n},lt=(e,t)=>{if(e==null)return{concept:void 0,scheme:void 0};const{childId:n,agency:s,id:r,version:o}=Ae(e);if(o?.includes(w)){const i=Y(e,t);return{concept:H(i?.concepts||[],n),scheme:i}}for(const i of t)if(bn(i,r,s,o))return{concept:H(i?.concepts||[],n),scheme:i};return{concept:void 0,scheme:void 0}},H=(e,t)=>e?.find(n=>n.id===t),bn=(e,t,n,s)=>e.id===t&&e.agencyID===n&&e.version===s,$n=(e=[],t=[],n)=>{const s=n?.conceptIdentity||"",r=Q(s,t),o=y(n?.localRepresentation?.enumeration),i=y(r?.coreRepresentation?.enumeration),a=o||i;if(a!=null)return Y(a,e)},On=(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?W(o,s):o?.name}))||[]},mt=(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,attributeRelationship:r.attributeRelationship,isMandatory:Number(o?.minOccurs)>0}})},Cn=(e=[],t,n)=>{const s=y(t?.conceptIdentity)||"",r=Q(s,e);return n?W(r,n):r?.name??r?.id??t?.id};function z(e){return e?.dataStructures?.[0]?.dataStructureComponents?.dimensionList}function Mn(e){return e?.data?.structures?.[0]?.dimensions?.series||[]}function Ln(e){return e?.data?.structures?.[0]?.dimensions?.observation?.[0].values.map(t=>t.value).filter(t=>t!=null)||[]}function Un(e){return e.find(t=>t.type===N.TIME_DIMENSION)}const xn=e=>{const t=new Map,n=e?.dataStructures?.[0],s=e?.metadataStructures?.[0],r=e?.conceptSchemes||[],o=e?.codelists||[];return e&&[...z(e)?.dimensions||[],...z(e)?.timeDimensions||[],...mt(s,n),...n?.dataStructureComponents?.attributeList?.attributes||[]].forEach(a=>{const c=Q(a?.conceptIdentity,r),u=a?.localRepresentation?.enumeration||c?.coreRepresentation?.enumeration,d=Y(u,o);a?.id&&(u?t.set(a?.id,{...d,name:c?.name,names:c?.names}):t.set(a?.id,{id:a?.id,name:c?.name,names:c?.names}))}),t},Wn=e=>e?.find(t=>t.id===x.SERIES_COUNT)?.title||"",Yn="/api/download",Qn=(e,t,n,s,r,o,i)=>{const a=new URLSearchParams({urn:e,format:t,compress:"false",filename:o,filters:JSON.stringify(r),attribute:s,language:n,isMetadata:i?"true":"none"}).toString(),c=`${Yn}?${a}`;window.open(c,"_blank")},kn=(e,t)=>{const n=[];for(const s of e){if(s.type!==N.DIMENSION)continue;const r=t.find(o=>o.componentCode===s.id);r!=null&&r.values?.length>0?n.push(r.values?.join(we)):n.push("*")}return n.join(".")},gt=(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}${ce}${s.toISOString().split("T")[0]}`),r&&n.push(`${p.LESS_OR_EQUAL}${ce}${r.toISOString().split("T")[0]}`),n.length===0)return null;const o=t;return n.map(i=>`${encodeURIComponent(`c[${o}]`)}${_t}${encodeURIComponent(i)}`).join(Ie)},Vn=(e,t)=>{const n=ft(e,t)||null;return n?gt(n,t?.id):null},ft=(e,t)=>{const n=t.id,s=e?.filters?.find(c=>c.componentCode===n);if(!s||!s.values)return null;const r=s.values?.filter(c=>!!c);if(!r.length)return null;const o=s.operator;if(o===p.LESS_OR_EQUAL||o===p.LESS)return{startPeriod:null,endPeriod:R(r[0])};if(o===p.GREATER_OR_EQUAL||o===p.GREATER)return{startPeriod:R(r[0]),endPeriod:null};const i=R(r[0]),a=R(r[1]);return{startPeriod:i,endPeriod:a}},ie=(e,t,n)=>{const s=f(t,!0),r=f(n),o=f(e,!0),i=f(e),a=s.getTime()>o.getTime()?s:o,c=r.getTime()<i.getTime()?r:i;return{start:a,end:c}},pt=(e,t,n,s="W")=>{const r=+e,{start:o,end:i}=ie(e,t,n);if(o.getTime()>i.getTime())return[];const a=S(o,s),c=a.weekYear===r?a.weekNumber:a.weekYear<r?1:j(r,s),u=S(i,s),d=u.weekYear===r?u.weekNumber:u.weekYear>r?j(r,s):1,l=[];if(c<d)for(let m=c;m<=d;m++)l.push(se(r,m,s));return l},Fn=e=>{const t=new Date(e);return t.setMinutes(t.getMinutes()-t.getTimezoneOffset()),t.toISOString().slice(0,10)},ht=(e,t,n)=>{const{start:s,end:r}=ie(e,t,n);if(s.getTime()>r.getTime())return[];const o=[],i=new Date(s.getFullYear(),s.getMonth(),s.getDate()),a=new Date(r.getFullYear(),r.getMonth(),r.getDate());for(;i.getTime()<a.getTime();){const c=Fn(i);o.push(c),i.setDate(i.getDate()+1)}return o},Et=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")}),qn=(e,t,n,s)=>{const r=s===0?f(t.toString(),!0)?.getMonth()+1:void 0,o=s===e.length-1?f(n.toString())?.getMonth()+1||1:void 0;return{startMonth:r,endMonth:o}},Dt=["FREQUENCY","FREQ"],Bn=(e,t)=>{const n=e?.[0]?.cubeRegions?.[0]?.memberSelection?.find(c=>Dt.includes(c.componentId))?.selectionValues,s=Et(n||[]),r=t?.startPeriod?.getTime()||1,o=t?.endPeriod?.getTime()||1,i=Xe(o,r),a=[];return i.forEach((c,u)=>{const d=[],{startMonth:l,endMonth:m}=qn(i,new Date(r),new Date(o),u),{isDailyExist:g,isWeeklyExist:h,isMonthlyExist:k,isQuarterlyExist:V,isSemiAnnualExist:F,isYearlyExist:q}=s;q&&d.push(c.toString()),F&&d.push(...He(c,l,m)),V&&d.push(...je(c,l,m,!1)),k&&d.push(...Je(c,l,m)),h&&d.push(...pt(c,r.toString(),o.toString())),g&&d.push(...ht(c,r.toString(),o.toString())),a.push(...d)}),a};function Gn(e){const{urn:t}=e.details;return ye(t.resourceId,t.version,t.agencyId)}function Kn(e){const t={};for(const n of e.datasets){const s=n.dataset,r=Gn(s);t[r]=s.details.dimensions}return t}exports.Annotations=x;exports.AssignmentStatus=Ne;exports.AvailabilityApi=Pt;exports.DATASET_DATA_URL=ve;exports.DatasetApi=Ot;exports.DimensionType=N;exports.DownloadType=Te;exports.FREQUENCY_DIMENSION_ID=kt;exports.FREQUENCY_DIM_ID=Dt;exports.FileColumnsAttribute=Se;exports.GET_v3_FILTER_ALL=Pe;exports.GET_v3_FILTER_AND=bt;exports.GET_v3_FILTER_OR=we;exports.OBSERVATION_KEY=Oe;exports.OccurrenceType=_e;exports.Periods=tt;exports.RepresentationTextType=et;exports.SDMX_DATA_QUERY_PARAMS=Ze;exports.SINGLE_WILDCARD_SYMBOL=w;exports.SdmxApiClient=Qt;exports.SdmxAvailabilityMode=J;exports.SdmxDataFormat=A;exports.SdmxDetails=X;exports.SdmxReferences=P;exports.SeriesFilterOperator=p;exports.TIME_PERIOD=it;exports.TIME_PERIOD_END=rt;exports.TIME_PERIOD_START=ot;exports.buildDatasetDimensionsMetadataMap=Kn;exports.dailyPattern=Qe;exports.decodeDimensionId=Le;exports.findCodelistByDimension=$n;exports.generateDatasetDataRequest=G;exports.generateShortUrn=ye;exports.getAdditionalColumns=Bn;exports.getAnnotationPeriod=pn;exports.getArtifactByUrnWithWildCard=Y;exports.getAttachedDimensionsSeriesByDimension=Vt;exports.getAttachedDimensionsSeriesByTsId=be;exports.getAttachedDimensionsSeriesKey=Z;exports.getAttributeValueFromDataQueryResponse=$e;exports.getAvailableCodes=On;exports.getAvailableCodesFromConstrains=yn;exports.getChildParsedUrn=Ae;exports.getConcept=Q;exports.getConceptByUrn=H;exports.getConceptWithScheme=lt;exports.getConvertedMetaAttributes=mt;exports.getDailyRegExp=Fe;exports.getDaysColumns=ht;exports.getDimensionTitle=Cn;exports.getDimensions=z;exports.getFilteredItemsWithParents=st;exports.getFiltersDtoFromDataQuery=Tn;exports.getISOWeek=S;exports.getKeyFromUrn=y;exports.getLastUpdatedTime=fn;exports.getLastWeekNumberOfYear=j;exports.getLocalizedName=W;exports.getMonthlyData=Je;exports.getMonthlyDataByQuarter=dn;exports.getMonthlyRegExp=O;exports.getParsedEndPeriodDate=oe;exports.getParsedResponse=Ft;exports.getParsedStartPeriodDate=re;exports.getPeriodDate=f;exports.getPeriods=Et;exports.getQuarterByMonth=an;exports.getQuarterlyRegExp=M;exports.getQuartersData=je;exports.getQueryTimePeriodFilters=gt;exports.getRequestAcceptHeader=Re;exports.getResolvedVersionBySingleWildcard=ct;exports.getSemiAnnualData=He;exports.getSemiAnnuallyRegExp=Ve;exports.getSeriesAttributes=I;exports.getSeriesName=Ce;exports.getStructureComponentsMap=xn;exports.getStructureDimensions=Mn;exports.getTimeDimension=Un;exports.getTimePeriods=Ln;exports.getTimeQueryFilter=Vn;exports.getTimeRangeFromAttachment=ft;exports.getTimeSeriesCount=Wn;exports.getTimeSeriesFilterKey=kn;exports.getTimeSeriesId=Me;exports.getWeekCode=se;exports.getWeeklyPeriodEndDate=Ke;exports.getWeeklyPeriodStartDate=Ge;exports.getWeeklyRegExp=Be;exports.getWeeksColumns=pt;exports.getWildCardRegexp=ut;exports.getYearPeriod=ie;exports.getYearlyRegExp=_;exports.getYears=Xe;exports.isDaily=qe;exports.isMonthly=C;exports.isQuarterly=L;exports.isSemiAnnually=$;exports.isWeekly=U;exports.isWildCardVersionCorrect=dt;exports.isYearly=b;exports.monthlyPattern=ke;exports.openDownloadWindow=Qn;exports.quarterPattern=Ue;exports.semiAnnuallyPattern=We;exports.sortPeriods=gn;exports.splitUrn=D;exports.weeklyPattern=xe;exports.yearlyPattern=Ye;