@epam/statgpt-sdmx-toolkit 0.2.0-rc.42 → 0.2.0-rc.43
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 +2 -2
- package/index.mjs +233 -220
- package/models/datasets-metadata.d.ts +33 -0
- package/models/index.d.ts +1 -0
- package/package.json +3 -3
- package/utils/build-dataset-dimensions-metadata-map.d.ts +2 -0
- package/utils/index.d.ts +1 -0
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}},
|
|
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 Lt;class Mt{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:h}=await d.read();g?a.close():(a.enqueue(h),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 Pe=(e=>(e.CONDITIONAL="Conditional",e.MANDATORY="Mandatory",e))(Pe||{}),N=(e=>(e.DIMENSION="Dimension",e.MEASURE_DIMENSION="MeasureDimension",e.TIME_DIMENSION="TimeDimension",e))(N||{}),Ne=(e=>(e.UNBOUNDED="unbounded",e))(Ne||{});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: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()})},be="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}=Oe(u,c),g=i[u],h=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=w(s?.series||[],p=>h[p]),F=kt(n.attributes?.dataSet||[],t[0].attributes?.filter(p=>p!=null)||[]),q=_e(e,m),B=o.map((p,Dt)=>{const ae=q[p.id],At=$e(p,ae.values[Dt]);return{attribute:p,dimensionGroupValue:At,dimensionGroupData:ae}});a.push({name:l,parsedTimeSeriesValue:m,values:d,attributes:k,dataSetAttrs:F,dimensionGroupAttributes:B})}return a},Oe=(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}},w=(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:w(t.attributes?.observation||[],i=>e[i+n]),dimensionAtObservation:be}];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:w(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||""})},Me=/^[0-9][0-9][0-9][0-9]-Q[1-4]$/,Ue=/^[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]$/,xe=/^[0-9][0-9][0-9][0-9]$/,Ye=/^[0-9][0-9][0-9][0-9]-(0[1-9]|1[0-2])-[0-9][0-9]$/,Qe=/^[0-9][0-9][0-9][0-9]-M(0[1-9]|(1[0-2]))$/,_=e=>xe.exec(e),$=e=>!!_(e),ke=e=>We.exec(e),b=e=>!!ke(e),O=e=>Qe.exec(e),C=e=>!!O(e),L=e=>Me.exec(e),M=e=>!!L(e),Fe=e=>Ye.exec(e),qe=e=>!!Fe(e),Be=e=>Ue.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 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 Ve(e){const[t,n]=e.split("-W"),r=ne(+t).getTime()+(+n-1)*te-3*ee;return new Date(r)}function Ge(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):M(e)?jt(e):C(e)?zt(e):U(e)?Ve(e):Xt(e)}function oe(e){return $(e)?Vt(e):b(e)?Kt(e):M(e)?Ht(e):C(e)?Jt(e):U(e)?Ge(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=L(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=L(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,Ke=(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},je=(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),He=(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(He(e,r,n));return s},sn=(e,t,n,s="M")=>{const r=[];for(let o=t;o<n;o++)r.push(He(e,o,s));return r},ze=(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[]}},Je=(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:M(e)?4:C(e)?3:U(e)?2:qe(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||{}),Xe=(e=>(e.C="c",e))(Xe||{}),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||{}),Ze=(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))(Ze||{}),et=(e=>(e.ANNUAL="A",e.QUARTERLY="Q",e.MONTHLY="M",e))(et||{});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,tt=(e,t,n)=>{if(!(!e||t?.has(e?.id))&&(t?.set(e?.id,e),e?.parent)){const s=n?.get(e?.parent);tt(s,t,n)}},nt=(e,t)=>{const n=new Map,s=new Map(e?.map(r=>[r.id,r]));return t?.forEach(r=>{tt(r,n,s)}),Array.from(n?.values())},st="time_period_end",rt="time_period_start",ot="TIME_PERIOD",dn=e=>{const t=e?.find(o=>o.id===rt),n=e?.find(o=>o.id===st),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(hn(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=nt(e,o)),o?.map(i=>({...i,name:s?x(i,s):i?.name}))},hn=(e,t)=>e!=null&&e.length>0&&t!=null,pn=e=>{const t=[];return e?.filters?.forEach(n=>{n.componentCode!==ot&&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",he=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(he(e),he(t));return n>s?1:n<s?-1:0},pe=(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=pe(n,s);return i!==0?i:r&&o?pe(r.split("."),o.split(".")):r||o?r?-1:1:0},Tn=(e,t,n)=>{Rn(n);const s=Sn(e,t);return it[n].includes(s)},it={">":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1],"!=":[-1,1]},De=Object.keys(it),Rn=e=>{if(De.indexOf(e)===-1)throw new Error(`Invalid operator, expected one of ${De.join("|")}`)},I="+",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(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=at(r,i);return o.find(a=>a.version===c[0])},at=(e,t)=>{const n=vn(e,t);return n.length>0?[n[0]]:[]},vn=(e,t)=>{const n=[];return t.forEach(s=>{ut(e,s)&&n.push(s)}),n},ct=e=>{const t=e.trim().replace(/\d+\+/,"*"),[n]=t.split("*");return new RegExp(`^${n}`)},ut=(e,t)=>{const n=e.trim().replace(/\+/,"");return ct(e).test(t)&&Tn(t,n,">=")},Q=(e,t)=>{const{concept:n}=dt(e,t);return n},dt=(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(I)){const i=Y(e,t);return{concept:H(i?.concepts||[],n),scheme:i}}for(const i of t)if(wn(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),wn=(e,t,n,s)=>e.id===t&&e.agencyID===n&&e.version===s,In=(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}))||[]},lt=(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||[],...lt(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},Cn=e=>e?.find(t=>t.id===W.SERIES_COUNT)?.title||"",Ln="/api/download",Mn=(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=`${Ln}?${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(".")},mt=(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(ve)},Wn=(e,t)=>{const n=gt(e,t)||null;return n?mt(n,t?.id):null},gt=(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}},ft=(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)},Et=(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}},pt=["FREQUENCY","FREQ"],Qn=(e,t)=>{const n=e?.[0]?.cubeRegions?.[0]?.memberSelection?.find(a=>pt.includes(a.componentId))?.selectionValues,s=ht(n||[]),r=t?.startPeriod?.getTime()||1,o=t?.endPeriod?.getTime()||1,i=Je(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:h,isMonthlyExist:k,isQuarterlyExist:F,isSemiAnnualExist:q,isYearlyExist:B}=s;B&&d.push(a.toString()),q&&d.push(...je(a,l,m)),F&&d.push(...Ke(a,l,m,!1)),k&&d.push(...ze(a,l,m)),h&&d.push(...ft(a,r.toString(),o.toString())),g&&d.push(...Et(a,r.toString(),o.toString())),c.push(...d)}),c};exports.Annotations=W;exports.AssignmentStatus=Pe;exports.AvailabilityApi=Tt;exports.DATASET_DATA_URL=Re;exports.DatasetApi=Pt;exports.DimensionType=N;exports.DownloadType=Se;exports.FREQUENCY_DIMENSION_ID=Ut;exports.FREQUENCY_DIM_ID=pt;exports.FileColumnsAttribute=ye;exports.GET_v3_FILTER_ALL=Ie;exports.GET_v3_FILTER_AND=wt;exports.GET_v3_FILTER_OR=we;exports.OBSERVATION_KEY=be;exports.OccurrenceType=Ne;exports.Periods=et;exports.RepresentationTextType=Ze;exports.SDMX_DATA_QUERY_PARAMS=Xe;exports.SINGLE_WILDCARD_SYMBOL=I;exports.SdmxApiClient=Mt;exports.SdmxAvailabilityMode=J;exports.SdmxDataFormat=A;exports.SdmxDetails=X;exports.SdmxReferences=P;exports.SeriesFilterOperator=E;exports.TIME_PERIOD=ot;exports.TIME_PERIOD_END=st;exports.TIME_PERIOD_START=rt;exports.dailyPattern=Ye;exports.decodeDimensionId=Le;exports.findCodelistByDimension=In;exports.generateDatasetDataRequest=G;exports.generateShortUrn=yt;exports.getAdditionalColumns=Qn;exports.getAnnotationPeriod=dn;exports.getArtifactByUrnWithWildCard=Y;exports.getAttachedDimensionsSeriesByDimension=Wt;exports.getAttachedDimensionsSeriesByTsId=_e;exports.getAttachedDimensionsSeriesKey=Z;exports.getAttributeValueFromDataQueryResponse=$e;exports.getAvailableCodes=Pn;exports.getAvailableCodesFromConstrains=En;exports.getChildParsedUrn=Ae;exports.getConcept=Q;exports.getConceptByUrn=H;exports.getConceptWithScheme=dt;exports.getConvertedMetaAttributes=lt;exports.getDailyRegExp=Fe;exports.getDaysColumns=Et;exports.getDimensionTitle=Nn;exports.getDimensions=z;exports.getFilteredItemsWithParents=nt;exports.getFiltersDtoFromDataQuery=pn;exports.getISOWeek=S;exports.getKeyFromUrn=y;exports.getLastUpdatedTime=un;exports.getLastWeekNumberOfYear=j;exports.getLocalizedName=x;exports.getMonthlyData=ze;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=L;exports.getQuartersData=Ke;exports.getQueryTimePeriodFilters=mt;exports.getRequestAcceptHeader=Te;exports.getResolvedVersionBySingleWildcard=at;exports.getSemiAnnualData=je;exports.getSemiAnnuallyRegExp=ke;exports.getSeriesAttributes=w;exports.getSeriesName=Oe;exports.getStructureComponentsMap=On;exports.getStructureDimensions=_n;exports.getTimeDimension=bn;exports.getTimePeriods=$n;exports.getTimeQueryFilter=Wn;exports.getTimeRangeFromAttachment=gt;exports.getTimeSeriesCount=Cn;exports.getTimeSeriesFilterKey=Un;exports.getTimeSeriesId=Ce;exports.getWeekCode=se;exports.getWeeklyPeriodEndDate=Ge;exports.getWeeklyPeriodStartDate=Ve;exports.getWeeklyRegExp=Be;exports.getWeeksColumns=ft;exports.getWildCardRegexp=ct;exports.getYearPeriod=ie;exports.getYearlyRegExp=_;exports.getYears=Je;exports.isDaily=qe;exports.isMonthly=C;exports.isQuarterly=M;exports.isSemiAnnually=b;exports.isWeekly=U;exports.isWildCardVersionCorrect=ut;exports.isYearly=$;exports.monthlyPattern=Qe;exports.openDownloadWindow=Mn;exports.quarterPattern=Me;exports.semiAnnuallyPattern=We;exports.sortPeriods=cn;exports.splitUrn=D;exports.weeklyPattern=Ue;exports.yearlyPattern=xe;
|
|
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;
|
package/index.mjs
CHANGED
|
@@ -15,13 +15,13 @@ const v = (e) => {
|
|
|
15
15
|
}, we = (e) => {
|
|
16
16
|
const [t, n] = e.split(")."), { agency: s, id: r, version: o } = D(t + ")");
|
|
17
17
|
return { childId: n, agency: s, id: r, version: o };
|
|
18
|
-
},
|
|
18
|
+
}, Ie = (e, t, n) => {
|
|
19
19
|
const s = t === "" ? "" : `(${t})`;
|
|
20
20
|
return `${n}:${e}${s}`;
|
|
21
21
|
};
|
|
22
22
|
var L = /* @__PURE__ */ ((e) => (e.DESCENDANTS = "descendants", e.NONE = "none", e.ALL = "all", e))(L || {}), me = /* @__PURE__ */ ((e) => (e.EXACT = "exact", e.AVAILABLE = "available", e))(me || {});
|
|
23
|
-
const
|
|
24
|
-
class
|
|
23
|
+
const Ne = (e = "", t = "", n = "") => `sdmx/3.0/availability/dataflow/${e}/${t}/${n}`;
|
|
24
|
+
class En {
|
|
25
25
|
constructor(t) {
|
|
26
26
|
this.client = t;
|
|
27
27
|
}
|
|
@@ -30,12 +30,12 @@ class hn {
|
|
|
30
30
|
filters: n || [],
|
|
31
31
|
mode: me.AVAILABLE,
|
|
32
32
|
references: L.NONE
|
|
33
|
-
}, c =
|
|
33
|
+
}, c = Ne(s, r, o);
|
|
34
34
|
return await this.client.postRequest(c, { body: i });
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
|
-
var S = /* @__PURE__ */ ((e) => (e.CSV = "csv", e.JSON = "json", e.XML = "xml", e))(S || {}),
|
|
38
|
-
const
|
|
37
|
+
var S = /* @__PURE__ */ ((e) => (e.CSV = "csv", e.JSON = "json", e.XML = "xml", e))(S || {}), $e = /* @__PURE__ */ ((e) => (e.ID = "id", e.NAME = "name", e.ID_NAME = "both", e))($e || {}), Pe = /* @__PURE__ */ ((e) => (e.FULL_DATASET = "full", e.DATA_IN_TABLE = "query", e))(Pe || {});
|
|
38
|
+
const be = (e, t) => {
|
|
39
39
|
switch (e) {
|
|
40
40
|
case S.CSV:
|
|
41
41
|
return A(
|
|
@@ -57,25 +57,25 @@ const Pe = (e, t) => {
|
|
|
57
57
|
}
|
|
58
58
|
}, A = (e, t) => `${e}; labels=${t}`;
|
|
59
59
|
var fe = /* @__PURE__ */ ((e) => (e.REFERENCE_PARTIAL = "referencepartial", e.FULL = "full", e))(fe || {});
|
|
60
|
-
const
|
|
60
|
+
const _e = "all", Oe = "sdmx/3.0/data/dataflow", ge = "&", J = ":", Le = "=", Me = "+", pn = ",", Ce = "*", X = (e, t, n) => {
|
|
61
61
|
const { filterKey: s, timeFilter: r } = n, { agency: o, id: i, version: c } = D(e), a = [r || "", t].filter((d) => !!d).join(ge);
|
|
62
|
-
return `${`${
|
|
63
|
-
},
|
|
64
|
-
class
|
|
62
|
+
return `${`${Oe}/${o}/${i}/${c}`}/${s || Ce}?${a}`;
|
|
63
|
+
}, Ue = (e = "", t = "", n = "", s = L.DESCENDANTS) => `sdmx/3.0/structure/dataflow/${e}/${t}/${n}?references=${s}&detail=${fe.REFERENCE_PARTIAL}`;
|
|
64
|
+
class Dn {
|
|
65
65
|
constructor(t) {
|
|
66
66
|
this.client = t;
|
|
67
67
|
}
|
|
68
68
|
async getDataSet(t, n) {
|
|
69
69
|
const { agency: s, id: r, version: o } = D(t);
|
|
70
70
|
return await this.client.getRequest(
|
|
71
|
-
|
|
71
|
+
Ue(s, r, o, n)
|
|
72
72
|
);
|
|
73
73
|
}
|
|
74
74
|
async getDatasetData(t, n) {
|
|
75
75
|
const s = new URLSearchParams({
|
|
76
76
|
includeHistory: "false",
|
|
77
77
|
limit: "1000",
|
|
78
|
-
attributes:
|
|
78
|
+
attributes: _e,
|
|
79
79
|
dimensionAtObservation: "TIME_PERIOD"
|
|
80
80
|
// TODO: use time dimensions
|
|
81
81
|
}).toString(), r = X(t, s, n);
|
|
@@ -93,7 +93,7 @@ class pn {
|
|
|
93
93
|
{
|
|
94
94
|
method: "GET",
|
|
95
95
|
headers: {
|
|
96
|
-
Accept:
|
|
96
|
+
Accept: be(n, r),
|
|
97
97
|
"Accept-language": s
|
|
98
98
|
}
|
|
99
99
|
},
|
|
@@ -101,7 +101,7 @@ class pn {
|
|
|
101
101
|
);
|
|
102
102
|
}
|
|
103
103
|
}
|
|
104
|
-
const
|
|
104
|
+
const xe = (e, t) => e.error || e.message || `${t.status} ${t.statusText}`, Ye = "application/json", We = "Content-Type", P = "Api-Key", ke = "X-CONVERSATION-ID", T = "Ocp-Apim-Subscription-Key";
|
|
105
105
|
class Z extends Error {
|
|
106
106
|
constructor(t) {
|
|
107
107
|
super(t.message), this.isHttpError = !0, this.name = "HttpError", this.code = t.code, this.status = t.status, this.details = t.details;
|
|
@@ -109,23 +109,23 @@ class Z extends Error {
|
|
|
109
109
|
}
|
|
110
110
|
const y = (e) => isNaN(Date.parse(e)) ? null : new Date(e), b = (e, t, n) => {
|
|
111
111
|
const s = {
|
|
112
|
-
[
|
|
112
|
+
[We]: t?.contentType || Ye
|
|
113
113
|
};
|
|
114
|
-
return t?.jwt && (s.Authorization = `Bearer ${t.jwt}`), t?.chatReference && (s[
|
|
115
|
-
},
|
|
114
|
+
return t?.jwt && (s.Authorization = `Bearer ${t.jwt}`), t?.chatReference && (s[ke] = t.chatReference), { ...s, ...n };
|
|
115
|
+
}, qe = (e) => {
|
|
116
116
|
const t = { ...e };
|
|
117
117
|
return t[P] && (t[P] = t[P].substring(0, 8) + "...[REDACTED]"), t.Authorization && (t.Authorization = "Bearer [REDACTED]"), t[T] && (t[T] = t[T].substring(0, 8) + "...[REDACTED]"), t;
|
|
118
118
|
}, ee = async (e, t, n) => await fetch(e, {
|
|
119
119
|
method: n.method || "GET",
|
|
120
120
|
headers: t,
|
|
121
121
|
body: n.body ? JSON.stringify(n.body) : void 0
|
|
122
|
-
}),
|
|
122
|
+
}), Qe = async (e, t, n) => await fetch(e, {
|
|
123
123
|
method: n.method,
|
|
124
124
|
headers: t,
|
|
125
125
|
body: n?.isFormData && typeof n?.body == "string" ? n.body : JSON.stringify(n.body),
|
|
126
126
|
signal: n?.signal
|
|
127
127
|
});
|
|
128
|
-
class
|
|
128
|
+
class Ve {
|
|
129
129
|
constructor() {
|
|
130
130
|
this.decoder = new TextDecoder();
|
|
131
131
|
}
|
|
@@ -146,7 +146,7 @@ class Qe {
|
|
|
146
146
|
async initializeStreamRequest(t, n, s, r) {
|
|
147
147
|
const o = b(void 0, {
|
|
148
148
|
jwt: r
|
|
149
|
-
}), i = await
|
|
149
|
+
}), i = await Qe(
|
|
150
150
|
t,
|
|
151
151
|
{
|
|
152
152
|
Accept: "text/event-stream",
|
|
@@ -221,8 +221,8 @@ class Qe {
|
|
|
221
221
|
}
|
|
222
222
|
}
|
|
223
223
|
}
|
|
224
|
-
new
|
|
225
|
-
class
|
|
224
|
+
new Ve();
|
|
225
|
+
class An {
|
|
226
226
|
constructor(t) {
|
|
227
227
|
this.config = t, console.info("SdmxApiClient initialized", {
|
|
228
228
|
apiUrl: t.apiUrl || "NOT SET"
|
|
@@ -299,7 +299,7 @@ class Dn {
|
|
|
299
299
|
}
|
|
300
300
|
if (!i.ok) {
|
|
301
301
|
this.addErrorRequestLog(r, n, i, c, a);
|
|
302
|
-
const d =
|
|
302
|
+
const d = xe(a, i);
|
|
303
303
|
throw new Error(`API request failed: ${d}`);
|
|
304
304
|
}
|
|
305
305
|
return a;
|
|
@@ -317,7 +317,7 @@ class Dn {
|
|
|
317
317
|
const o = {
|
|
318
318
|
method: s.method || "GET",
|
|
319
319
|
url: n,
|
|
320
|
-
headers:
|
|
320
|
+
headers: qe(r)
|
|
321
321
|
};
|
|
322
322
|
s.body && (o.body = s.body), console.info(t, o);
|
|
323
323
|
}
|
|
@@ -343,9 +343,9 @@ class Dn {
|
|
|
343
343
|
});
|
|
344
344
|
}
|
|
345
345
|
}
|
|
346
|
-
const
|
|
347
|
-
var
|
|
348
|
-
const
|
|
346
|
+
const yn = ["FREQ", "FREQUENCY"];
|
|
347
|
+
var Be = /* @__PURE__ */ ((e) => (e.CONDITIONAL = "Conditional", e.MANDATORY = "Mandatory", e))(Be || {}), M = /* @__PURE__ */ ((e) => (e.DIMENSION = "Dimension", e.MEASURE_DIMENSION = "MeasureDimension", e.TIME_DIMENSION = "TimeDimension", e))(M || {}), Fe = /* @__PURE__ */ ((e) => (e.UNBOUNDED = "unbounded", e))(Fe || {});
|
|
348
|
+
const Ge = (e, t) => {
|
|
349
349
|
const n = e?.data?.dataSets?.[0], r = e?.data?.structures?.[0]?.attributes?.dimensionGroup || [], o = n?.dimensionGroupAttributes, i = {};
|
|
350
350
|
for (const c of r) {
|
|
351
351
|
const a = c.relationship.dimensions, { codedSeriesKey: u, decodedSeriesKey: d } = he(
|
|
@@ -374,7 +374,7 @@ const Fe = (e, t) => {
|
|
|
374
374
|
codedSeriesKey: o.join(":"),
|
|
375
375
|
decodedSeriesKey: i.join(":")
|
|
376
376
|
};
|
|
377
|
-
},
|
|
377
|
+
}, Sn = (e, t, n) => {
|
|
378
378
|
const s = e?.data?.dataSets?.[0], r = e?.data?.structures?.[0], o = (r?.attributes?.dimensionGroup || []).filter(
|
|
379
379
|
(l) => l.relationship.dimensions?.length === 1 && l.relationship.dimensions.includes(t || "")
|
|
380
380
|
), i = s?.dimensionGroupAttributes, c = [
|
|
@@ -396,18 +396,18 @@ const Fe = (e, t) => {
|
|
|
396
396
|
};
|
|
397
397
|
}
|
|
398
398
|
return d;
|
|
399
|
-
},
|
|
399
|
+
}, Ke = (e, t) => {
|
|
400
400
|
if (t == null)
|
|
401
401
|
return;
|
|
402
402
|
const n = e.values?.[t];
|
|
403
403
|
return n ?? (t instanceof Array ? { values: t } : { value: t.toString() });
|
|
404
|
-
},
|
|
404
|
+
}, je = "Observation", Tn = (e) => {
|
|
405
405
|
const t = e?.data?.dataSets, n = e?.data?.structures?.[0];
|
|
406
406
|
if (!t || !n)
|
|
407
407
|
return [];
|
|
408
408
|
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 = [];
|
|
409
409
|
for (const u in i) {
|
|
410
|
-
const d = [], { name: l, parsedTimeSeriesValue: m } =
|
|
410
|
+
const d = [], { name: l, parsedTimeSeriesValue: m } = He(
|
|
411
411
|
u,
|
|
412
412
|
c
|
|
413
413
|
), f = i[u], E = f.attributes || [];
|
|
@@ -422,19 +422,19 @@ const Fe = (e, t) => {
|
|
|
422
422
|
continue;
|
|
423
423
|
}
|
|
424
424
|
d.push(
|
|
425
|
-
...
|
|
425
|
+
...Ze(f, n)
|
|
426
426
|
);
|
|
427
427
|
const w = _(
|
|
428
428
|
s?.series || [],
|
|
429
429
|
(p) => E[p]
|
|
430
|
-
), I =
|
|
430
|
+
), I = et(
|
|
431
431
|
n.attributes?.dataSet || [],
|
|
432
432
|
t[0].attributes?.filter((p) => p != null) || []
|
|
433
|
-
), N =
|
|
433
|
+
), N = Ge(
|
|
434
434
|
e,
|
|
435
435
|
m
|
|
436
436
|
), $ = o.map((p, ve) => {
|
|
437
|
-
const z = N[p.id], Re =
|
|
437
|
+
const z = N[p.id], Re = Ke(
|
|
438
438
|
p,
|
|
439
439
|
z.values[ve]
|
|
440
440
|
);
|
|
@@ -454,7 +454,7 @@ const Fe = (e, t) => {
|
|
|
454
454
|
});
|
|
455
455
|
}
|
|
456
456
|
return a;
|
|
457
|
-
},
|
|
457
|
+
}, He = (e, t) => {
|
|
458
458
|
const n = e.split(new RegExp("(?<!\\|):(?!\\||$)")), s = [];
|
|
459
459
|
for (let r = 0; r < n.length; r++) {
|
|
460
460
|
const o = t?.[r], i = Number(n[r]);
|
|
@@ -468,23 +468,23 @@ const Fe = (e, t) => {
|
|
|
468
468
|
s.push(c?.id || c?.value || "");
|
|
469
469
|
}
|
|
470
470
|
return {
|
|
471
|
-
name:
|
|
471
|
+
name: Je(s),
|
|
472
472
|
parsedTimeSeriesValue: s
|
|
473
473
|
};
|
|
474
474
|
}, _ = (e, t) => {
|
|
475
475
|
const n = [];
|
|
476
476
|
for (let s = 0; s < e.length; s++) {
|
|
477
|
-
const r = e[s], o = t(s), i = o != null && r.values != null ?
|
|
477
|
+
const r = e[s], o = t(s), i = o != null && r.values != null ? ze(o, r) : void 0;
|
|
478
478
|
n.push({
|
|
479
479
|
name: r.id,
|
|
480
480
|
value: i
|
|
481
481
|
});
|
|
482
482
|
}
|
|
483
483
|
return n;
|
|
484
|
-
},
|
|
484
|
+
}, ze = (e, t) => {
|
|
485
485
|
const n = t.values[e];
|
|
486
486
|
return n == null ? typeof e == "object" ? e : e.toString() : n?.id || n?.value || n?.ids || n?.values;
|
|
487
|
-
},
|
|
487
|
+
}, Je = (e) => e.map((t) => t ? Xe(t) : "").join("."), Xe = (e) => e.replace(/\./g, "|.").replace(/:/g, "|:"), Ze = (e, t) => {
|
|
488
488
|
const n = t.measures?.observation?.length;
|
|
489
489
|
if (e.observations == null)
|
|
490
490
|
return [
|
|
@@ -494,7 +494,7 @@ const Fe = (e, t) => {
|
|
|
494
494
|
t.attributes?.observation || [],
|
|
495
495
|
(i) => e[i + n]
|
|
496
496
|
),
|
|
497
|
-
dimensionAtObservation:
|
|
497
|
+
dimensionAtObservation: je
|
|
498
498
|
}
|
|
499
499
|
];
|
|
500
500
|
const s = e.observations, r = t.dimensions.observation?.[0], o = [];
|
|
@@ -513,19 +513,19 @@ const Fe = (e, t) => {
|
|
|
513
513
|
});
|
|
514
514
|
}
|
|
515
515
|
return o;
|
|
516
|
-
}, te = (e, t) => t?.observation?.map((n, s) => ({ name: n.id, value: e[s] })) || [],
|
|
516
|
+
}, te = (e, t) => t?.observation?.map((n, s) => ({ name: n.id, value: e[s] })) || [], et = (e, t) => e.reduce(
|
|
517
517
|
(n, s, r) => {
|
|
518
518
|
const o = t[r];
|
|
519
|
-
return
|
|
519
|
+
return tt(n, s, o, ""), n;
|
|
520
520
|
},
|
|
521
521
|
[]
|
|
522
|
-
),
|
|
522
|
+
), tt = (e, t, n, s) => {
|
|
523
523
|
const r = n != null ? t?.values?.length > 0 ? t.values[n]?.id || t.values[n]?.value : String(n) : s;
|
|
524
524
|
e.push({
|
|
525
525
|
name: t.id,
|
|
526
526
|
value: r || ""
|
|
527
527
|
});
|
|
528
|
-
},
|
|
528
|
+
}, nt = /^[0-9][0-9][0-9][0-9]-Q[1-4]$/, st = /^[0-9][0-9][0-9][0-9]-W[0-9][0-9]?$/, rt = /^[0-9][0-9][0-9][0-9]-S[1-2]$/, ot = /^[0-9][0-9][0-9][0-9]$/, it = /^[0-9][0-9][0-9][0-9]-(0[1-9]|1[0-2])-[0-9][0-9]$/, at = /^[0-9][0-9][0-9][0-9]-M(0[1-9]|(1[0-2]))$/, C = (e) => ot.exec(e), U = (e) => !!C(e), ct = (e) => rt.exec(e), x = (e) => !!ct(e), Y = (e) => at.exec(e), W = (e) => !!Y(e), k = (e) => nt.exec(e), q = (e) => !!k(e), ut = (e) => it.exec(e), dt = (e) => !!ut(e), lt = (e) => st.exec(e), Q = (e) => !!lt(e), V = 1440 * 60 * 1e3, B = 7 * V;
|
|
529
529
|
function F(e) {
|
|
530
530
|
const t = `${e}-01-01`, n = new Date(t);
|
|
531
531
|
if (n.getDay() !== 4) {
|
|
@@ -534,7 +534,7 @@ function F(e) {
|
|
|
534
534
|
}
|
|
535
535
|
return n;
|
|
536
536
|
}
|
|
537
|
-
function
|
|
537
|
+
function mt(e) {
|
|
538
538
|
const t = new Date(e), s = -((t.getDay() + 6) % 7) + 3;
|
|
539
539
|
return t.setDate(t.getDate() + s), new Date(t.valueOf());
|
|
540
540
|
}
|
|
@@ -549,7 +549,7 @@ function Ee(e, t, n = "W") {
|
|
|
549
549
|
return `${e}-${n}${t < 10 ? "0" + t : t}`;
|
|
550
550
|
}
|
|
551
551
|
function R(e, t = "W") {
|
|
552
|
-
const n =
|
|
552
|
+
const n = mt(e), s = n.getFullYear(), r = F(s), o = 1 + Math.ceil(
|
|
553
553
|
(n.getTime() - r.getTime()) / B
|
|
554
554
|
);
|
|
555
555
|
return {
|
|
@@ -558,31 +558,31 @@ function R(e, t = "W") {
|
|
|
558
558
|
weekYear: s
|
|
559
559
|
};
|
|
560
560
|
}
|
|
561
|
-
function
|
|
561
|
+
function ft(e) {
|
|
562
562
|
const [t, n] = e.split("-W"), r = F(+t).getTime() + (+n - 1) * B - 3 * V;
|
|
563
563
|
return new Date(r);
|
|
564
564
|
}
|
|
565
|
-
function
|
|
565
|
+
function gt(e) {
|
|
566
566
|
const [t, n] = e.split("-W"), r = F(+t).getTime() + (+n - 1) * B + 3 * V;
|
|
567
567
|
return new Date(r);
|
|
568
568
|
}
|
|
569
569
|
function pe(e) {
|
|
570
|
-
return U(e) ?
|
|
570
|
+
return U(e) ? ht(e) : x(e) ? pt(e) : q(e) ? At(e) : W(e) ? St(e) : Q(e) ? ft(e) : vt(e);
|
|
571
571
|
}
|
|
572
572
|
function De(e) {
|
|
573
|
-
return U(e) ?
|
|
573
|
+
return U(e) ? Et(e) : x(e) ? Dt(e) : q(e) ? yt(e) : W(e) ? Tt(e) : Q(e) ? gt(e) : Rt(e);
|
|
574
574
|
}
|
|
575
|
-
function
|
|
575
|
+
function ht(e) {
|
|
576
576
|
const t = C(e);
|
|
577
577
|
if (t)
|
|
578
578
|
return new Date(Number(t[0]), 0, 1);
|
|
579
579
|
}
|
|
580
|
-
function
|
|
580
|
+
function Et(e) {
|
|
581
581
|
const t = C(e);
|
|
582
582
|
if (t)
|
|
583
583
|
return new Date(Number(t[0]) + 1, 0, 1);
|
|
584
584
|
}
|
|
585
|
-
function
|
|
585
|
+
function pt(e) {
|
|
586
586
|
const [t, n] = e.split("-S");
|
|
587
587
|
switch (+n) {
|
|
588
588
|
case 1:
|
|
@@ -591,7 +591,7 @@ function Et(e) {
|
|
|
591
591
|
return new Date(+t, 6, 1);
|
|
592
592
|
}
|
|
593
593
|
}
|
|
594
|
-
function
|
|
594
|
+
function Dt(e) {
|
|
595
595
|
const [t, n] = e.split("-S");
|
|
596
596
|
switch (+n) {
|
|
597
597
|
case 1:
|
|
@@ -600,7 +600,7 @@ function pt(e) {
|
|
|
600
600
|
return new Date(+t + 1, 0, 1);
|
|
601
601
|
}
|
|
602
602
|
}
|
|
603
|
-
function
|
|
603
|
+
function At(e) {
|
|
604
604
|
const t = k(e);
|
|
605
605
|
if (!t)
|
|
606
606
|
return;
|
|
@@ -616,7 +616,7 @@ function Dt(e) {
|
|
|
616
616
|
return new Date(+n, 9, 1);
|
|
617
617
|
}
|
|
618
618
|
}
|
|
619
|
-
function
|
|
619
|
+
function yt(e) {
|
|
620
620
|
const t = k(e);
|
|
621
621
|
if (!t)
|
|
622
622
|
return;
|
|
@@ -632,45 +632,45 @@ function At(e) {
|
|
|
632
632
|
return new Date(+n + 1, 0, 1);
|
|
633
633
|
}
|
|
634
634
|
}
|
|
635
|
-
function
|
|
635
|
+
function St(e) {
|
|
636
636
|
const t = Y(e);
|
|
637
637
|
if (!t)
|
|
638
638
|
return;
|
|
639
639
|
const [n, s] = t[0].split("-M");
|
|
640
640
|
return new Date(+n, +s - 1, 1);
|
|
641
641
|
}
|
|
642
|
-
function
|
|
642
|
+
function Tt(e) {
|
|
643
643
|
const t = Y(e);
|
|
644
644
|
if (!t)
|
|
645
645
|
return;
|
|
646
646
|
const [n, s] = t[0].split("-M");
|
|
647
647
|
return new Date(+n, +s, 1);
|
|
648
648
|
}
|
|
649
|
-
const
|
|
649
|
+
const vt = (e) => /* @__PURE__ */ new Date(`${e}T00:00:00`), Rt = (e) => {
|
|
650
650
|
const t = /* @__PURE__ */ new Date(`${e}T23:59:00`);
|
|
651
651
|
return t.setMinutes(t.getMinutes() + 1), t;
|
|
652
|
-
},
|
|
653
|
-
const o = [], i = t && t > 3 ?
|
|
652
|
+
}, wt = 1, It = (e, t, n, s = !0, r = "Q") => {
|
|
653
|
+
const o = [], i = t && t > 3 ? Lt(t, s) : 1, c = n ? Math.floor((n - 1) / 3) : 4;
|
|
654
654
|
for (let a = i; a <= c; a++)
|
|
655
655
|
o.push(`${e}-${r}${a}`);
|
|
656
656
|
return o;
|
|
657
|
-
},
|
|
657
|
+
}, Nt = (e, t, n, s = "S") => {
|
|
658
658
|
const r = [];
|
|
659
659
|
return (t || 1) < 7 && (n || 12) > 6 && r.push(`${e}-${s}1`), n == null && r.push(`${e}-${s}2`), r;
|
|
660
|
-
},
|
|
660
|
+
}, vn = (e) => Math.ceil(e / 3), Ae = (e, t, n = "M") => `${e}-${n}${t.toString().padStart(2, "0")}`, $t = (e, t, n = "M") => {
|
|
661
661
|
const s = [];
|
|
662
662
|
for (let r = t; r <= 12; r++)
|
|
663
663
|
s.push(Ae(e, r, n));
|
|
664
664
|
return s;
|
|
665
|
-
},
|
|
665
|
+
}, Pt = (e, t, n, s = "M") => {
|
|
666
666
|
const r = [];
|
|
667
667
|
for (let o = t; o < n; o++)
|
|
668
668
|
r.push(Ae(e, o, s));
|
|
669
669
|
return r;
|
|
670
|
-
},
|
|
670
|
+
}, bt = (e, t, n, s = "M") => {
|
|
671
671
|
const r = t || 1, o = n == null, i = n || 12;
|
|
672
|
-
return o ?
|
|
673
|
-
},
|
|
672
|
+
return o ? $t(e, r, s) : Pt(e, r, i, s);
|
|
673
|
+
}, Rn = (e, t, n = "M") => {
|
|
674
674
|
switch (t) {
|
|
675
675
|
case 0:
|
|
676
676
|
return [
|
|
@@ -699,25 +699,25 @@ const Tt = (e) => /* @__PURE__ */ new Date(`${e}T00:00:00`), vt = (e) => {
|
|
|
699
699
|
default:
|
|
700
700
|
return [];
|
|
701
701
|
}
|
|
702
|
-
},
|
|
703
|
-
const n = g(t, !0), s = g(e), r = n.getFullYear(), o = s.getFullYear(), i = n.getTime() <= s.getTime() ? o +
|
|
702
|
+
}, _t = (e, t) => {
|
|
703
|
+
const n = g(t, !0), s = g(e), r = n.getFullYear(), o = s.getFullYear(), i = n.getTime() <= s.getTime() ? o + wt - r : 0;
|
|
704
704
|
return Array.from({ length: i }, (a, u) => r + u);
|
|
705
705
|
}, g = (e, t = !1) => {
|
|
706
|
-
const n =
|
|
706
|
+
const n = Ot(e, t);
|
|
707
707
|
return n ? (n.getTimezoneOffset() > 0 && n.setMinutes(n.getMinutes() + n.getTimezoneOffset()), n) : /* @__PURE__ */ new Date();
|
|
708
|
-
},
|
|
708
|
+
}, Ot = (e, t = !1) => {
|
|
709
709
|
const n = Number(e);
|
|
710
710
|
return e.toString().length !== 13 ? t ? pe(e) : De(e) : isNaN(n) ? /* @__PURE__ */ new Date(`${e}T00:00:00.000Z`) : new Date(n);
|
|
711
|
-
},
|
|
711
|
+
}, Lt = (e, t) => t ? Math.floor((e + 1) / 3) : Math.ceil((e + 1) / 3), wn = (e, t) => {
|
|
712
712
|
const n = re(e) - re(t);
|
|
713
713
|
if (n === 0 && e !== t) {
|
|
714
714
|
const s = se(e), r = se(t);
|
|
715
715
|
return s - r;
|
|
716
716
|
}
|
|
717
717
|
return n;
|
|
718
|
-
}, se = (e) => U(e) ? 6 : x(e) ? 5 : q(e) ? 4 : W(e) ? 3 : Q(e) ? 2 :
|
|
719
|
-
var G = /* @__PURE__ */ ((e) => (e.LAST_UPDATE_AT = "lastUpdatedAt", e.SERIES_COUNT = "series_count", e))(G || {}),
|
|
720
|
-
function
|
|
718
|
+
}, se = (e) => U(e) ? 6 : x(e) ? 5 : q(e) ? 4 : W(e) ? 3 : Q(e) ? 2 : dt(e) ? 1 : 0, re = (e, t = !1) => (t ? pe(e) : De(e))?.getTime() || 0;
|
|
719
|
+
var G = /* @__PURE__ */ ((e) => (e.LAST_UPDATE_AT = "lastUpdatedAt", e.SERIES_COUNT = "series_count", e))(G || {}), Mt = /* @__PURE__ */ ((e) => (e.C = "c", e))(Mt || {}), h = /* @__PURE__ */ ((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))(h || {}), Ct = /* @__PURE__ */ ((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))(Ct || {}), Ut = /* @__PURE__ */ ((e) => (e.ANNUAL = "A", e.QUARTERLY = "Q", e.MONTHLY = "M", e))(Ut || {});
|
|
720
|
+
function In(e) {
|
|
721
721
|
return e?.annotations?.find((t) => {
|
|
722
722
|
if (t.id === G.LAST_UPDATE_AT)
|
|
723
723
|
return t;
|
|
@@ -728,28 +728,28 @@ const K = (e, t) => e?.names && e?.names[t] || e?.name, ye = (e, t, n) => {
|
|
|
728
728
|
const s = n?.get(e?.parent);
|
|
729
729
|
ye(s, t, n);
|
|
730
730
|
}
|
|
731
|
-
},
|
|
731
|
+
}, xt = (e, t) => {
|
|
732
732
|
const n = /* @__PURE__ */ new Map(), s = new Map(e?.map((r) => [r.id, r]));
|
|
733
733
|
return t?.forEach((r) => {
|
|
734
734
|
ye(r, n, s);
|
|
735
735
|
}), Array.from(n?.values());
|
|
736
|
-
},
|
|
736
|
+
}, Yt = "time_period_end", Wt = "time_period_start", kt = "TIME_PERIOD", Nn = (e) => {
|
|
737
737
|
const t = e?.find(
|
|
738
|
-
(o) => o.id ===
|
|
738
|
+
(o) => o.id === Wt
|
|
739
739
|
), n = e?.find(
|
|
740
|
-
(o) => o.id ===
|
|
740
|
+
(o) => o.id === Yt
|
|
741
741
|
), s = n?.title ? new Date(n?.title) : null;
|
|
742
742
|
return {
|
|
743
743
|
startPeriod: t?.title ? new Date(t?.title) : null,
|
|
744
744
|
endPeriod: s
|
|
745
745
|
};
|
|
746
|
-
},
|
|
746
|
+
}, qt = (e, t) => e.id.localeCompare(t.id), Qt = (e, t) => e.memberValue.localeCompare(t.memberValue), Vt = (e, t) => {
|
|
747
747
|
const n = new Array(e.length), s = e.map((i, c) => [i, c]);
|
|
748
748
|
s.sort(
|
|
749
|
-
(i, c) =>
|
|
749
|
+
(i, c) => qt(i[0], c[0])
|
|
750
750
|
);
|
|
751
751
|
const r = [...t];
|
|
752
|
-
r.sort(
|
|
752
|
+
r.sort(Qt);
|
|
753
753
|
let o = 0;
|
|
754
754
|
for (const i of s) {
|
|
755
755
|
const c = i[0];
|
|
@@ -758,9 +758,9 @@ const K = (e, t) => e?.names && e?.names[t] || e?.name, ye = (e, t, n) => {
|
|
|
758
758
|
o < r.length && r[o].memberValue === c.id && (n[i[1]] = i[0]);
|
|
759
759
|
}
|
|
760
760
|
return n.filter((i) => i != null);
|
|
761
|
-
},
|
|
761
|
+
}, Bt = (e) => !!e?.some((t) => t.parent), $n = (e, t, n, s, r = []) => {
|
|
762
762
|
let o = e || [];
|
|
763
|
-
if (
|
|
763
|
+
if (Ft(n || [], t || "")) {
|
|
764
764
|
const i = (n || [])[0].cubeRegions?.find(
|
|
765
765
|
({ isIncluded: c }) => c
|
|
766
766
|
);
|
|
@@ -771,50 +771,50 @@ const K = (e, t) => e?.names && e?.names[t] || e?.name, ye = (e, t, n) => {
|
|
|
771
771
|
c ? o = o.length === 0 ? (c.selectionValues || []).map(({ memberValue: a }) => ({
|
|
772
772
|
id: a,
|
|
773
773
|
name: a
|
|
774
|
-
})) :
|
|
774
|
+
})) : Vt(o, c.selectionValues) : o = [];
|
|
775
775
|
}
|
|
776
776
|
} else r.length !== 0 && (o = o.filter(({ id: i }) => r.includes(i)));
|
|
777
|
-
return
|
|
777
|
+
return Bt(e) && (o = xt(e, o)), o?.map((i) => ({
|
|
778
778
|
...i,
|
|
779
779
|
name: s ? K(i, s) : i?.name
|
|
780
780
|
}));
|
|
781
|
-
},
|
|
781
|
+
}, Ft = (e, t) => e != null && e.length > 0 && t != null, Pn = (e) => {
|
|
782
782
|
const t = [];
|
|
783
783
|
return e?.filters?.forEach((n) => {
|
|
784
|
-
n.componentCode !==
|
|
784
|
+
n.componentCode !== kt && t.push({
|
|
785
785
|
componentCode: n.componentCode,
|
|
786
786
|
operator: h.EQUALS,
|
|
787
787
|
value: n.values.join(",")
|
|
788
788
|
});
|
|
789
789
|
}), t;
|
|
790
|
-
},
|
|
790
|
+
}, Gt = /^[v^~<>=]*?(\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+))?(?:-([\da-z\-]+(?:\.[\da-z\-]+)*))?(?:\+[\da-z\-]+(?:\.[\da-z\-]+)*)?)?)?$/i, oe = (e) => {
|
|
791
791
|
if (typeof e != "string")
|
|
792
792
|
throw new TypeError("Invalid argument expected string");
|
|
793
|
-
const t = e.match(
|
|
793
|
+
const t = e.match(Gt);
|
|
794
794
|
if (!t)
|
|
795
795
|
throw new Error(`Invalid argument not valid semver ('${e}' received)`);
|
|
796
796
|
return t.shift(), t;
|
|
797
797
|
}, ie = (e) => e === "*" || e === "x" || e === "X", ae = (e) => {
|
|
798
798
|
const t = parseInt(e, 10);
|
|
799
799
|
return isNaN(t) ? e : t;
|
|
800
|
-
},
|
|
800
|
+
}, Kt = (e, t) => typeof e != typeof t ? [String(e), String(t)] : [e, t], jt = (e, t) => {
|
|
801
801
|
if (ie(e) || ie(t))
|
|
802
802
|
return 0;
|
|
803
|
-
const [n, s] =
|
|
803
|
+
const [n, s] = Kt(ae(e), ae(t));
|
|
804
804
|
return n > s ? 1 : n < s ? -1 : 0;
|
|
805
805
|
}, ce = (e, t) => {
|
|
806
806
|
for (let n = 0; n < Math.max(e.length, t.length); n++) {
|
|
807
|
-
const s =
|
|
807
|
+
const s = jt(e[n] || "0", t[n] || "0");
|
|
808
808
|
if (s !== 0)
|
|
809
809
|
return s;
|
|
810
810
|
}
|
|
811
811
|
return 0;
|
|
812
|
-
},
|
|
812
|
+
}, Ht = (e, t) => {
|
|
813
813
|
const n = oe(e), s = oe(t), r = n.pop(), o = s.pop(), i = ce(n, s);
|
|
814
814
|
return i !== 0 ? i : r && o ? ce(r.split("."), o.split(".")) : r || o ? r ? -1 : 1 : 0;
|
|
815
|
-
},
|
|
816
|
-
|
|
817
|
-
const s =
|
|
815
|
+
}, zt = (e, t, n) => {
|
|
816
|
+
Jt(n);
|
|
817
|
+
const s = Ht(e, t);
|
|
818
818
|
return Se[n].includes(s);
|
|
819
819
|
}, Se = {
|
|
820
820
|
">": [1],
|
|
@@ -823,7 +823,7 @@ const K = (e, t) => e?.names && e?.names[t] || e?.name, ye = (e, t, n) => {
|
|
|
823
823
|
"<=": [-1, 0],
|
|
824
824
|
"<": [-1],
|
|
825
825
|
"!=": [-1, 1]
|
|
826
|
-
}, ue = Object.keys(Se),
|
|
826
|
+
}, ue = Object.keys(Se), Jt = (e) => {
|
|
827
827
|
if (ue.indexOf(e) === -1)
|
|
828
828
|
throw new Error(`Invalid operator, expected one of ${ue.join("|")}`);
|
|
829
829
|
}, O = "+", j = (e, t) => {
|
|
@@ -836,28 +836,28 @@ const K = (e, t) => e?.names && e?.names[t] || e?.name, ye = (e, t, n) => {
|
|
|
836
836
|
return o.find((a) => a.version === r);
|
|
837
837
|
const i = o.map(
|
|
838
838
|
(a) => a.version
|
|
839
|
-
), c =
|
|
839
|
+
), c = Xt(r, i);
|
|
840
840
|
return o.find(
|
|
841
841
|
(a) => a.version === c[0]
|
|
842
842
|
);
|
|
843
|
-
}, Jt = (e, t) => {
|
|
844
|
-
const n = Xt(e, t);
|
|
845
|
-
return n.length > 0 ? [n[0]] : [];
|
|
846
843
|
}, Xt = (e, t) => {
|
|
844
|
+
const n = Zt(e, t);
|
|
845
|
+
return n.length > 0 ? [n[0]] : [];
|
|
846
|
+
}, Zt = (e, t) => {
|
|
847
847
|
const n = [];
|
|
848
848
|
return t.forEach((s) => {
|
|
849
|
-
|
|
849
|
+
tn(e, s) && n.push(s);
|
|
850
850
|
}), n;
|
|
851
|
-
},
|
|
851
|
+
}, en = (e) => {
|
|
852
852
|
const t = e.trim().replace(/\d+\+/, "*"), [n] = t.split("*");
|
|
853
853
|
return new RegExp(`^${n}`);
|
|
854
|
-
},
|
|
854
|
+
}, tn = (e, t) => {
|
|
855
855
|
const n = e.trim().replace(/\+/, "");
|
|
856
|
-
return
|
|
856
|
+
return en(e).test(t) && zt(t, n, ">=");
|
|
857
857
|
}, H = (e, t) => {
|
|
858
|
-
const { concept: n } =
|
|
858
|
+
const { concept: n } = nn(e, t);
|
|
859
859
|
return n;
|
|
860
|
-
},
|
|
860
|
+
}, nn = (e, t) => {
|
|
861
861
|
if (e == null)
|
|
862
862
|
return {
|
|
863
863
|
concept: void 0,
|
|
@@ -875,7 +875,7 @@ const K = (e, t) => e?.names && e?.names[t] || e?.name, ye = (e, t, n) => {
|
|
|
875
875
|
};
|
|
876
876
|
}
|
|
877
877
|
for (const i of t)
|
|
878
|
-
if (
|
|
878
|
+
if (sn(i, r, s, o))
|
|
879
879
|
return {
|
|
880
880
|
concept: de(i?.concepts || [], n),
|
|
881
881
|
scheme: i
|
|
@@ -884,7 +884,7 @@ const K = (e, t) => e?.names && e?.names[t] || e?.name, ye = (e, t, n) => {
|
|
|
884
884
|
concept: void 0,
|
|
885
885
|
scheme: void 0
|
|
886
886
|
};
|
|
887
|
-
}, de = (e, t) => e?.find((n) => n.id === t),
|
|
887
|
+
}, de = (e, t) => e?.find((n) => n.id === t), sn = (e, t, n, s) => e.id === t && e.agencyID === n && e.version === s, bn = (e = [], t = [], n) => {
|
|
888
888
|
const s = n?.conceptIdentity || "", r = H(s, t), o = v(
|
|
889
889
|
n?.localRepresentation?.enumeration
|
|
890
890
|
), i = v(
|
|
@@ -892,7 +892,7 @@ const K = (e, t) => e?.names && e?.names[t] || e?.name, ye = (e, t, n) => {
|
|
|
892
892
|
), c = o || i;
|
|
893
893
|
if (c != null)
|
|
894
894
|
return j(c, e);
|
|
895
|
-
},
|
|
895
|
+
}, _n = (e, t, n, s) => {
|
|
896
896
|
const r = t?.find(
|
|
897
897
|
(o) => o?.id === e?.id
|
|
898
898
|
)?.values;
|
|
@@ -900,7 +900,7 @@ const K = (e, t) => e?.names && e?.names[t] || e?.name, ye = (e, t, n) => {
|
|
|
900
900
|
...o,
|
|
901
901
|
name: s ? K(o, s) : o?.name
|
|
902
902
|
})) || [];
|
|
903
|
-
},
|
|
903
|
+
}, rn = (e, t) => {
|
|
904
904
|
const n = t?.dataStructureComponents?.attributeList, s = e?.metadataStructureComponents?.metadataAttributeList;
|
|
905
905
|
return n?.metadataAttributeUsages?.map((r) => {
|
|
906
906
|
const o = s?.metadataAttributes?.find(
|
|
@@ -912,30 +912,30 @@ const K = (e, t) => e?.names && e?.names[t] || e?.name, ye = (e, t, n) => {
|
|
|
912
912
|
isMandatory: Number(o?.minOccurs) > 0
|
|
913
913
|
};
|
|
914
914
|
});
|
|
915
|
-
},
|
|
915
|
+
}, On = (e = [], t, n) => {
|
|
916
916
|
const s = v(t?.conceptIdentity) || "", r = H(s, e);
|
|
917
917
|
return n ? K(r, n) : r?.name ?? r?.id ?? t?.id;
|
|
918
918
|
};
|
|
919
919
|
function le(e) {
|
|
920
920
|
return e?.dataStructures?.[0]?.dataStructureComponents?.dimensionList;
|
|
921
921
|
}
|
|
922
|
-
function
|
|
922
|
+
function Ln(e) {
|
|
923
923
|
return e?.data?.structures?.[0]?.dimensions?.series || [];
|
|
924
924
|
}
|
|
925
|
-
function
|
|
925
|
+
function Mn(e) {
|
|
926
926
|
return e?.data?.structures?.[0]?.dimensions?.observation?.[0].values.map((t) => t.value).filter((t) => t != null) || [];
|
|
927
927
|
}
|
|
928
|
-
function
|
|
928
|
+
function Cn(e) {
|
|
929
929
|
return e.find(
|
|
930
930
|
(t) => t.type === M.TIME_DIMENSION
|
|
931
931
|
);
|
|
932
932
|
}
|
|
933
|
-
const
|
|
933
|
+
const Un = (e) => {
|
|
934
934
|
const t = /* @__PURE__ */ new Map(), n = e?.dataStructures?.[0], s = e?.metadataStructures?.[0], r = e?.conceptSchemes || [], o = e?.codelists || [];
|
|
935
935
|
return e && [
|
|
936
936
|
...le(e)?.dimensions || [],
|
|
937
937
|
...le(e)?.timeDimensions || [],
|
|
938
|
-
...
|
|
938
|
+
...rn(s, n),
|
|
939
939
|
...n?.dataStructureComponents?.attributeList?.attributes || []
|
|
940
940
|
].forEach(
|
|
941
941
|
(c) => {
|
|
@@ -957,9 +957,9 @@ const Cn = (e) => {
|
|
|
957
957
|
}));
|
|
958
958
|
}
|
|
959
959
|
), t;
|
|
960
|
-
},
|
|
960
|
+
}, xn = (e) => e?.find(
|
|
961
961
|
(t) => t.id === G.SERIES_COUNT
|
|
962
|
-
)?.title || "",
|
|
962
|
+
)?.title || "", on = "/api/download", Yn = (e, t, n, s, r, o, i) => {
|
|
963
963
|
const c = new URLSearchParams({
|
|
964
964
|
urn: e,
|
|
965
965
|
format: t,
|
|
@@ -969,18 +969,18 @@ const Cn = (e) => {
|
|
|
969
969
|
attribute: s,
|
|
970
970
|
language: n,
|
|
971
971
|
isMetadata: i ? "true" : "none"
|
|
972
|
-
}).toString(), a = `${
|
|
972
|
+
}).toString(), a = `${on}?${c}`;
|
|
973
973
|
window.open(a, "_blank");
|
|
974
|
-
},
|
|
974
|
+
}, Wn = (e, t) => {
|
|
975
975
|
const n = [];
|
|
976
976
|
for (const s of e) {
|
|
977
977
|
if (s.type !== M.DIMENSION)
|
|
978
978
|
continue;
|
|
979
979
|
const r = t.find((o) => o.componentCode === s.id);
|
|
980
|
-
r != null && r.values?.length > 0 ? n.push(r.values?.join(
|
|
980
|
+
r != null && r.values?.length > 0 ? n.push(r.values?.join(Me)) : n.push("*");
|
|
981
981
|
}
|
|
982
982
|
return n.join(".");
|
|
983
|
-
},
|
|
983
|
+
}, an = (e, t) => {
|
|
984
984
|
if (!e || !e.startPeriod && !e.endPeriod)
|
|
985
985
|
return null;
|
|
986
986
|
const n = [], { startPeriod: s, endPeriod: r } = e;
|
|
@@ -992,12 +992,12 @@ const Cn = (e) => {
|
|
|
992
992
|
return null;
|
|
993
993
|
const o = t;
|
|
994
994
|
return n.map(
|
|
995
|
-
(i) => `${encodeURIComponent(`c[${o}]`)}${
|
|
995
|
+
(i) => `${encodeURIComponent(`c[${o}]`)}${Le}${encodeURIComponent(i)}`
|
|
996
996
|
).join(ge);
|
|
997
|
-
},
|
|
998
|
-
const n =
|
|
999
|
-
return n ?
|
|
1000
|
-
},
|
|
997
|
+
}, kn = (e, t) => {
|
|
998
|
+
const n = cn(e, t) || null;
|
|
999
|
+
return n ? an(n, t?.id) : null;
|
|
1000
|
+
}, cn = (e, t) => {
|
|
1001
1001
|
const n = t.id, s = e?.filters?.find(
|
|
1002
1002
|
(a) => a.componentCode === n
|
|
1003
1003
|
);
|
|
@@ -1019,7 +1019,7 @@ const Cn = (e) => {
|
|
|
1019
1019
|
start: c,
|
|
1020
1020
|
end: a
|
|
1021
1021
|
};
|
|
1022
|
-
},
|
|
1022
|
+
}, un = (e, t, n, s = "W") => {
|
|
1023
1023
|
const r = +e, { start: o, end: i } = Te(e, t, n);
|
|
1024
1024
|
if (o.getTime() > i.getTime())
|
|
1025
1025
|
return [];
|
|
@@ -1028,10 +1028,10 @@ const Cn = (e) => {
|
|
|
1028
1028
|
for (let m = a; m <= d; m++)
|
|
1029
1029
|
l.push(Ee(r, m, s));
|
|
1030
1030
|
return l;
|
|
1031
|
-
},
|
|
1031
|
+
}, dn = (e) => {
|
|
1032
1032
|
const t = new Date(e);
|
|
1033
1033
|
return t.setMinutes(t.getMinutes() - t.getTimezoneOffset()), t.toISOString().slice(0, 10);
|
|
1034
|
-
},
|
|
1034
|
+
}, ln = (e, t, n) => {
|
|
1035
1035
|
const { start: s, end: r } = Te(e, t, n);
|
|
1036
1036
|
if (s.getTime() > r.getTime())
|
|
1037
1037
|
return [];
|
|
@@ -1041,11 +1041,11 @@ const Cn = (e) => {
|
|
|
1041
1041
|
s.getDate()
|
|
1042
1042
|
), c = new Date(r.getFullYear(), r.getMonth(), r.getDate());
|
|
1043
1043
|
for (; i.getTime() < c.getTime(); ) {
|
|
1044
|
-
const a =
|
|
1044
|
+
const a = dn(i);
|
|
1045
1045
|
o.push(a), i.setDate(i.getDate() + 1);
|
|
1046
1046
|
}
|
|
1047
1047
|
return o;
|
|
1048
|
-
},
|
|
1048
|
+
}, mn = (e) => ({
|
|
1049
1049
|
isDailyExist: !!e?.some(({ memberValue: t }) => t === "D"),
|
|
1050
1050
|
isWeeklyExist: !!e?.some(({ memberValue: t }) => t === "W"),
|
|
1051
1051
|
isMonthlyExist: !!e?.some(({ memberValue: t }) => t === "M"),
|
|
@@ -1054,15 +1054,15 @@ const Cn = (e) => {
|
|
|
1054
1054
|
isYearlyExist: !!e?.some(
|
|
1055
1055
|
({ memberValue: t }) => t === "A" || t === "Y"
|
|
1056
1056
|
)
|
|
1057
|
-
}),
|
|
1057
|
+
}), fn = (e, t, n, s) => {
|
|
1058
1058
|
const r = s === 0 ? g(t.toString(), !0)?.getMonth() + 1 : void 0, o = s === e.length - 1 ? g(n.toString())?.getMonth() + 1 || 1 : void 0;
|
|
1059
1059
|
return { startMonth: r, endMonth: o };
|
|
1060
|
-
},
|
|
1060
|
+
}, gn = ["FREQUENCY", "FREQ"], qn = (e, t) => {
|
|
1061
1061
|
const n = e?.[0]?.cubeRegions?.[0]?.memberSelection?.find(
|
|
1062
|
-
(a) =>
|
|
1063
|
-
)?.selectionValues, s =
|
|
1062
|
+
(a) => gn.includes(a.componentId)
|
|
1063
|
+
)?.selectionValues, s = mn(n || []), r = t?.startPeriod?.getTime() || 1, o = t?.endPeriod?.getTime() || 1, i = _t(o, r), c = [];
|
|
1064
1064
|
return i.forEach((a, u) => {
|
|
1065
|
-
const d = [], { startMonth: l, endMonth: m } =
|
|
1065
|
+
const d = [], { startMonth: l, endMonth: m } = fn(
|
|
1066
1066
|
i,
|
|
1067
1067
|
new Date(r),
|
|
1068
1068
|
new Date(o),
|
|
@@ -1075,123 +1075,136 @@ const Cn = (e) => {
|
|
|
1075
1075
|
isSemiAnnualExist: N,
|
|
1076
1076
|
isYearlyExist: $
|
|
1077
1077
|
} = s;
|
|
1078
|
-
$ && d.push(a.toString()), N && d.push(...
|
|
1079
|
-
...
|
|
1080
|
-
), w && d.push(...
|
|
1081
|
-
...
|
|
1078
|
+
$ && d.push(a.toString()), N && d.push(...Nt(a, l, m)), I && d.push(
|
|
1079
|
+
...It(a, l, m, !1)
|
|
1080
|
+
), w && d.push(...bt(a, l, m)), E && d.push(
|
|
1081
|
+
...un(a, r.toString(), o.toString())
|
|
1082
1082
|
), f && d.push(
|
|
1083
|
-
...
|
|
1083
|
+
...ln(a, r.toString(), o.toString())
|
|
1084
1084
|
), c.push(...d);
|
|
1085
1085
|
}), c;
|
|
1086
1086
|
};
|
|
1087
|
+
function hn(e) {
|
|
1088
|
+
const { urn: t } = e.details;
|
|
1089
|
+
return Ie(t.resourceId, t.version, t.agencyId);
|
|
1090
|
+
}
|
|
1091
|
+
function Qn(e) {
|
|
1092
|
+
const t = {};
|
|
1093
|
+
for (const n of e.datasets) {
|
|
1094
|
+
const s = n.dataset, r = hn(s);
|
|
1095
|
+
t[r] = s.details.dimensions;
|
|
1096
|
+
}
|
|
1097
|
+
return t;
|
|
1098
|
+
}
|
|
1087
1099
|
export {
|
|
1088
1100
|
G as Annotations,
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1101
|
+
Be as AssignmentStatus,
|
|
1102
|
+
En as AvailabilityApi,
|
|
1103
|
+
Oe as DATASET_DATA_URL,
|
|
1104
|
+
Dn as DatasetApi,
|
|
1093
1105
|
M as DimensionType,
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
+
Pe as DownloadType,
|
|
1107
|
+
yn as FREQUENCY_DIMENSION_ID,
|
|
1108
|
+
gn as FREQUENCY_DIM_ID,
|
|
1109
|
+
$e as FileColumnsAttribute,
|
|
1110
|
+
Ce as GET_v3_FILTER_ALL,
|
|
1111
|
+
pn as GET_v3_FILTER_AND,
|
|
1112
|
+
Me as GET_v3_FILTER_OR,
|
|
1113
|
+
je as OBSERVATION_KEY,
|
|
1114
|
+
Fe as OccurrenceType,
|
|
1115
|
+
Ut as Periods,
|
|
1116
|
+
Ct as RepresentationTextType,
|
|
1117
|
+
Mt as SDMX_DATA_QUERY_PARAMS,
|
|
1106
1118
|
O as SINGLE_WILDCARD_SYMBOL,
|
|
1107
|
-
|
|
1119
|
+
An as SdmxApiClient,
|
|
1108
1120
|
me as SdmxAvailabilityMode,
|
|
1109
1121
|
S as SdmxDataFormat,
|
|
1110
1122
|
fe as SdmxDetails,
|
|
1111
1123
|
L as SdmxReferences,
|
|
1112
1124
|
h as SeriesFilterOperator,
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1125
|
+
kt as TIME_PERIOD,
|
|
1126
|
+
Yt as TIME_PERIOD_END,
|
|
1127
|
+
Wt as TIME_PERIOD_START,
|
|
1128
|
+
Qn as buildDatasetDimensionsMetadataMap,
|
|
1129
|
+
it as dailyPattern,
|
|
1130
|
+
Xe as decodeDimensionId,
|
|
1131
|
+
bn as findCodelistByDimension,
|
|
1119
1132
|
X as generateDatasetDataRequest,
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1133
|
+
Ie as generateShortUrn,
|
|
1134
|
+
qn as getAdditionalColumns,
|
|
1135
|
+
Nn as getAnnotationPeriod,
|
|
1123
1136
|
j as getArtifactByUrnWithWildCard,
|
|
1124
|
-
|
|
1125
|
-
|
|
1137
|
+
Sn as getAttachedDimensionsSeriesByDimension,
|
|
1138
|
+
Ge as getAttachedDimensionsSeriesByTsId,
|
|
1126
1139
|
he as getAttachedDimensionsSeriesKey,
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1140
|
+
Ke as getAttributeValueFromDataQueryResponse,
|
|
1141
|
+
_n as getAvailableCodes,
|
|
1142
|
+
$n as getAvailableCodesFromConstrains,
|
|
1130
1143
|
we as getChildParsedUrn,
|
|
1131
1144
|
H as getConcept,
|
|
1132
1145
|
de as getConceptByUrn,
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1146
|
+
nn as getConceptWithScheme,
|
|
1147
|
+
rn as getConvertedMetaAttributes,
|
|
1148
|
+
ut as getDailyRegExp,
|
|
1149
|
+
ln as getDaysColumns,
|
|
1150
|
+
On as getDimensionTitle,
|
|
1138
1151
|
le as getDimensions,
|
|
1139
|
-
|
|
1140
|
-
|
|
1152
|
+
xt as getFilteredItemsWithParents,
|
|
1153
|
+
Pn as getFiltersDtoFromDataQuery,
|
|
1141
1154
|
R as getISOWeek,
|
|
1142
1155
|
v as getKeyFromUrn,
|
|
1143
|
-
|
|
1156
|
+
In as getLastUpdatedTime,
|
|
1144
1157
|
ne as getLastWeekNumberOfYear,
|
|
1145
1158
|
K as getLocalizedName,
|
|
1146
|
-
|
|
1147
|
-
|
|
1159
|
+
bt as getMonthlyData,
|
|
1160
|
+
Rn as getMonthlyDataByQuarter,
|
|
1148
1161
|
Y as getMonthlyRegExp,
|
|
1149
1162
|
De as getParsedEndPeriodDate,
|
|
1150
|
-
|
|
1163
|
+
Tn as getParsedResponse,
|
|
1151
1164
|
pe as getParsedStartPeriodDate,
|
|
1152
1165
|
g as getPeriodDate,
|
|
1153
|
-
|
|
1154
|
-
|
|
1166
|
+
mn as getPeriods,
|
|
1167
|
+
vn as getQuarterByMonth,
|
|
1155
1168
|
k as getQuarterlyRegExp,
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1169
|
+
It as getQuartersData,
|
|
1170
|
+
an as getQueryTimePeriodFilters,
|
|
1171
|
+
be as getRequestAcceptHeader,
|
|
1172
|
+
Xt as getResolvedVersionBySingleWildcard,
|
|
1173
|
+
Nt as getSemiAnnualData,
|
|
1174
|
+
ct as getSemiAnnuallyRegExp,
|
|
1162
1175
|
_ as getSeriesAttributes,
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1176
|
+
He as getSeriesName,
|
|
1177
|
+
Un as getStructureComponentsMap,
|
|
1178
|
+
Ln as getStructureDimensions,
|
|
1179
|
+
Cn as getTimeDimension,
|
|
1180
|
+
Mn as getTimePeriods,
|
|
1181
|
+
kn as getTimeQueryFilter,
|
|
1182
|
+
cn as getTimeRangeFromAttachment,
|
|
1183
|
+
xn as getTimeSeriesCount,
|
|
1184
|
+
Wn as getTimeSeriesFilterKey,
|
|
1185
|
+
Je as getTimeSeriesId,
|
|
1173
1186
|
Ee as getWeekCode,
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1187
|
+
gt as getWeeklyPeriodEndDate,
|
|
1188
|
+
ft as getWeeklyPeriodStartDate,
|
|
1189
|
+
lt as getWeeklyRegExp,
|
|
1190
|
+
un as getWeeksColumns,
|
|
1191
|
+
en as getWildCardRegexp,
|
|
1179
1192
|
Te as getYearPeriod,
|
|
1180
1193
|
C as getYearlyRegExp,
|
|
1181
|
-
|
|
1182
|
-
|
|
1194
|
+
_t as getYears,
|
|
1195
|
+
dt as isDaily,
|
|
1183
1196
|
W as isMonthly,
|
|
1184
1197
|
q as isQuarterly,
|
|
1185
1198
|
x as isSemiAnnually,
|
|
1186
1199
|
Q as isWeekly,
|
|
1187
|
-
|
|
1200
|
+
tn as isWildCardVersionCorrect,
|
|
1188
1201
|
U as isYearly,
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1202
|
+
at as monthlyPattern,
|
|
1203
|
+
Yn as openDownloadWindow,
|
|
1204
|
+
nt as quarterPattern,
|
|
1205
|
+
rt as semiAnnuallyPattern,
|
|
1206
|
+
wn as sortPeriods,
|
|
1194
1207
|
D as splitUrn,
|
|
1195
|
-
|
|
1196
|
-
|
|
1208
|
+
st as weeklyPattern,
|
|
1209
|
+
ot as yearlyPattern
|
|
1197
1210
|
};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export interface DeploymentDatasetsResponseData {
|
|
2
|
+
datasets: ChannelDataset[];
|
|
3
|
+
}
|
|
4
|
+
export interface ChannelDataset {
|
|
5
|
+
dataset: Dataset;
|
|
6
|
+
}
|
|
7
|
+
export interface Dataset {
|
|
8
|
+
details: DatasetDetails;
|
|
9
|
+
}
|
|
10
|
+
export interface DatasetDetails {
|
|
11
|
+
urn: Urn;
|
|
12
|
+
dimensions: Record<string, DimensionConfig>;
|
|
13
|
+
}
|
|
14
|
+
export interface Urn {
|
|
15
|
+
version: string;
|
|
16
|
+
agencyId: string;
|
|
17
|
+
resourceId: string;
|
|
18
|
+
}
|
|
19
|
+
export type DimensionTypeKey = 'NON_INDICATOR' | 'INDICATOR' | 'TIME_PERIOD' | (string & {});
|
|
20
|
+
export interface DimensionConfig {
|
|
21
|
+
alias: string | null;
|
|
22
|
+
subtype?: string | null;
|
|
23
|
+
allValues: DimensionAllValues | null;
|
|
24
|
+
dimensionType: DimensionTypeKey;
|
|
25
|
+
}
|
|
26
|
+
export interface DimensionAllValues {
|
|
27
|
+
id: string;
|
|
28
|
+
name: string;
|
|
29
|
+
description: string;
|
|
30
|
+
}
|
|
31
|
+
export type ShortUrn = string;
|
|
32
|
+
export type DimensionKey = string;
|
|
33
|
+
export type DatasetDimensionsMetadataMap = Record<ShortUrn, Record<DimensionKey, DimensionConfig>>;
|
package/models/index.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@epam/statgpt-sdmx-toolkit",
|
|
3
|
-
"version": "0.2.0-rc.
|
|
3
|
+
"version": "0.2.0-rc.43",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": {
|
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
"module": "./index.mjs",
|
|
15
15
|
"types": "./index.d.ts",
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@epam/statgpt-dial-toolkit": "0.2.0-rc.
|
|
18
|
-
"@epam/statgpt-shared-toolkit": "0.2.0-rc.
|
|
17
|
+
"@epam/statgpt-dial-toolkit": "0.2.0-rc.43",
|
|
18
|
+
"@epam/statgpt-shared-toolkit": "0.2.0-rc.43",
|
|
19
19
|
"compare-versions": "^6.1.1"
|
|
20
20
|
}
|
|
21
21
|
}
|
package/utils/index.d.ts
CHANGED