@epam/statgpt-sdmx-toolkit 0.7.0-dev.19 → 0.7.0-dev.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.cjs +1 -1
- package/index.mjs +220 -213
- package/models/datasets-metadata.d.ts +2 -0
- package/package.json +3 -3
- package/utils/build-dataset-dimensions-metadata-map.d.ts +2 -1
package/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const Dt=require("@epam/statgpt-dial-toolkit"),g=require("@epam/statgpt-shared-toolkit"),Et=require("compare-versions"),At=require("date-fns"),R=e=>{if(e!=null){const t=e.split("=");return t.length===1?e:t[1]}},A=e=>{if(e==null)return{};const t=R(e),n={agency:"",id:"",version:""};return t&&(t.includes(":")&&(n.agency=t.split(":")[0],n.id=t.split(":")[1].split("(")[0]),t.includes("(")&&t.includes(")")&&(n.version=t.split("(")[1]?.split(")")[0])),n},j=e=>{const[t,n]=e.split(")."),{agency:s,id:r,version:o}=A(t+")");return{childId:n,agency:s,id:r,version:o}},_=(e,t,n)=>{const s=t===""?"":`(${t})`;return`${n}:${e}${s}`};var w=(e=>(e.DESCENDANTS="descendants",e.NONE="none",e.ALL="all",e))(w||{}),z=(e=>(e.EXACT="exact",e.AVAILABLE="available",e))(z||{});function yt(e){return{data:{codelists:e.data.codelists,conceptSchemes:e.data.conceptSchemes,dataConstraints:e.data.dataConstraints?.map(Tt),dataflows:e.data.dataflows,dataStructures:e.data.dataStructures,metadataStructures:e.data.metadataStructures}}}function Tt(e){return{...e,cubeRegions:e.cubeRegions?.map(St)}}function St(e){return{isIncluded:e.include,memberSelection:e.keyValues.map(Rt)}}function Rt(e){return{included:e.include,componentId:e.id,selectionValues:e.values.map(vt)}}function vt(e){return{memberValue:e.value}}const It=(e="",t="",n="")=>`sdmx/3.0/availability/dataflow/${e}/${t}/${n}`;class Pt{constructor(t){this.client=t}async getConstraints(t,n,s){const{agency:r,id:o,version:i}=A(t),c={filters:n||[],mode:z.AVAILABLE,references:w.NONE},a=It(r,o,i),d=!!this.client.config.sdmxProxyUrl,u=d||this.client.config.isDialProxyMode,l=d?this.client.config.sdmxProxyUrl:this.client.config.constrainsApiUrl||this.client.config.apiUrl;if(u){const m=await this.client.postRequest(a,{body:c},l,s);return yt(m)}return await this.client.postRequest(a,{body:c},l,s)}}var E=(e=>(e.CSV="csv",e.JSON="json",e.XML="xml",e))(E||{}),pe=(e=>(e.ID="id",e.NAME="name",e.ID_NAME="both",e))(pe||{}),De=(e=>(e.FULL_DATASET="full",e.DATA_IN_TABLE="query",e))(De||{});const Ee=(e,t)=>{switch(e){case E.CSV:return ue("application/vnd.sdmx.data+csv;version=2.0.0",t);case E.XML:return"application/vnd.sdmx.data+xml;version=3.0.0";case E.JSON:return"application/vnd.sdmx.data+json;version=2.1";default:return ue("application/vnd.sdmx.data+csv;version=2.0.0",t)}},Ae=e=>{switch(e){case E.CSV:return"text/csv; charset=utf-8";case E.XML:return"application/xml; charset=utf-8";case E.JSON:return"application/json; charset=utf-8";default:return"text/csv; charset=utf-8"}},ue=(e,t)=>`${e}; labels=${t}`;var J=(e=>(e.REFERENCE_PARTIAL="referencepartial",e.FULL="full",e))(J||{});const _t="all",ye="sdmx/3.0/data/dataflow",wt="&",de=":",bt="=",X="+",Nt=",",Te="*",q=(e,t,n)=>{const{filterKey:s,timeFilter:r}=n,{agency:o,id:i,version:c}=A(e),a=[r||"",t].filter(u=>!!u).join(wt);return`${`${ye}/${o}/${i}/${c}`}/${s||Te}?${a}`},Mt=(e="",t="",n="",s=w.DESCENDANTS)=>`sdmx/3.0/structure/dataflow/${e}/${t}/${n}?references=${s}&detail=${J.REFERENCE_PARTIAL}`;class Ct{constructor(t){this.client=t}async getDataSet(t,n,s){const{agency:r,id:o,version:i}=A(t);return await this.client.getRequest(Mt(r,o,i,n),void 0,s)}async getDatasetData(t,n,s){const r=new URLSearchParams({includeHistory:"false",limit:"1000",attributes:_t,dimensionAtObservation:"TIME_PERIOD"}).toString(),o=q(t,r,n);return await this.client.getRequest(o,void 0,s)}async downloadDataSet(t,n,s,r,o,i,c=!1,a){const d=new URLSearchParams({compress:"false",attributes:c?"all":"none",limit:"1000"}).toString(),u=q(t,d,o);return this.client.streamRequest(u,{method:"GET",headers:{Accept:Ee(n,r),"Accept-language":s}},i,a,Ae(n))}}class $t{constructor(t){this.config=t,console.info("SdmxApiClient initialized",{apiUrl:t.apiUrl||"NOT SET"})}async getRequest(t,n,s){return this.request(t,{...n,method:"GET"},void 0,s)}async postRequest(t,n,s,r){return this.request(t,{...n,method:"POST"},s,r)}async streamRequest(t,n,s,r,o){const i=`${this.config.apiUrl}/${t}`,c=this.buildHeaders(r,n.headers),a=new ReadableStream({async start(u){try{const l=await g.sendRequest(i,c,n);if(!l.ok){const y=await l.text();throw console.error(`Fetch failed! Status: ${l.status}, Body: ${y}`),new Error(`Fetch failed with status ${l.status}`)}const m=l.body?.getReader();if(!m)throw new Error("Failed to create stream reader");const f=new Uint8Array([239,187,191]);u.enqueue(f);const D=async()=>{const{done:y,value:S}=await m.read();y?u.close():(u.enqueue(S),await D())};D()}catch(l){u.error(l)}}}),d=new Headers({"Content-Disposition":`attachment; filename=${encodeURIComponent(s)}`,...o?{"Content-Type":o}:{}});return new Response(a,{headers:d})}async request(t,n,s,r){const o=Date.now(),i=`${s||this.config.apiUrl}/${t}`,c=this.buildHeaders(r,n.headers);this.addInfoRequestLog("API Request",i,n,c);try{const a=await g.sendRequest(i,c,n),d=Date.now()-o;let u;const l=await a.text();try{u=l?JSON.parse(l):{}}catch{if(this.addErrorRequestParsing(i,n,a,d,l),!a.ok)throw new Error(`API request failed: ${a.status} ${a.statusText} - ${l.substring(0,100)}`);u={data:l}}if(!a.ok){this.addErrorRequestLog(i,n,a,d,u);const m=Dt.getErrorMessage(u,a);throw new Error(`API request failed: ${m}`)}return u}catch(a){const d=Date.now()-o;throw console.error("API Request Exception",{method:n.method,url:i,duration:`${d}ms`,error:a instanceof Error?a.message:String(a)}),a}}buildHeaders(t,n){if(this.config.isDialProxyMode)return{...g.getHeaders(this.config.dialApiKey,{jwt:t}),...n};const s={...g.getHeaders(void 0,{jwt:this.config.jwt}),...n};return this.config.apiKey!=null&&(s[g.OCP_APIM_SUBSCRIPTION_KEY_HEADER]=this.config.apiKey),s}addInfoRequestLog(t,n,s,r){const o={method:s.method||"GET",url:n,headers:g.sanitizeHeaders(r)};s.body&&(o.body=s.body),console.info(t,o)}addErrorRequestLog(t,n,s,r,o){console.error("API Request Failed",{method:n.method,url:t,status:s.status,statusText:s.statusText,duration:`${r}ms`,response:o})}addErrorRequestParsing(t,n,s,r,o){console.error("API Response Parse Error",{method:n.method,url:t,status:s.status,statusText:s.statusText,duration:`${r}ms`,responseText:o.substring(0,200),error:"Response is not valid JSON"})}}var b=(e=>(e.LAST_UPDATE_AT="lastUpdatedAt",e.SERIES_COUNT="series_count",e))(b||{});function Lt(e){return e?.annotations?.find(t=>{if(t.id===b.LAST_UPDATE_AT)return t})?.value}const N=(e,t)=>e?.names&&e?.names[t]||e?.name,Se=(e,t,n)=>{if(!(!e||t?.has(e?.id))&&(t?.set(e?.id,e),e?.parent)){const s=n?.get(e?.parent);Se(s,t,n)}},Re=(e,t)=>{const n=new Map,s=new Map(e?.map(r=>[r.id,r]));return t?.forEach(r=>{Se(r,n,s)}),Array.from(n?.values())};var ve=(e=>(e.C="c",e))(ve||{}),h=(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||{}),Ie=(e=>(e.BOOLEAN="Boolean",e.DATE_TIME="DateTime",e.DECIMAL="Decimal",e.INTEGER="Integer",e.OBSERVATION_TIME_PERIOD="ObservationalTimePeriod",e.STRING="String",e.TIME="Time",e.TIME_RANGE="TimeRange",e.URI="URI",e))(Ie||{}),Pe=(e=>(e.ANNUAL="A",e.QUARTERLY="Q",e.MONTHLY="M",e))(Pe||{});const Ut=["FREQ","FREQUENCY"],_e="TIME_PERIOD",we="time_period_start",be="time_period_end",Ot=e=>{const t=e?.find(o=>o.id===we),n=e?.find(o=>o.id===be),s=n?.title?new Date(n?.title):null;return{startPeriod:t?.title?new Date(t?.title):null,endPeriod:s}},xt=(e,t)=>e.id.localeCompare(t.id),Yt=(e,t)=>e.memberValue.localeCompare(t.memberValue),Ft=(e,t)=>{const n=new Array(e.length),s=e.map((i,c)=>[i,c]);s.sort((i,c)=>xt(i[0],c[0]));const r=[...t];r.sort(Yt);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)},Wt=e=>!!e?.some(t=>t.parent),Qt=(e,t,n,s,r=[])=>{let o=e||[];if(Vt(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})):Ft(o,c.selectionValues):o=[]}}else r.length!==0&&(o=o.filter(({id:i})=>r.includes(i)));return Wt(e)&&(o=Re(e,o)),o?.map(i=>({...i,name:s?N(i,s):i?.name}))},Vt=(e,t)=>e!=null&&e.length>0&&t!=null,Ne=e=>{const t=[];return e?.filters?.forEach(n=>{n.componentCode!==_e&&t.push({componentCode:n.componentCode,operator:h.EQUALS,value:n.values.join(",")})}),t},kt=e=>{const t=new Map;return e?.forEach(n=>{t.set(n.urn,Ne(n))}),t},I="+",M=(e,t)=>{const{agency:n,id:s,version:r}=A(e),o=t.filter(a=>a.agencyID===n&&a.id===s&&!a?.version?.includes(I));if(o.length===1)return o[0];if(!r?.includes(I))return o.find(a=>a.version===r);const i=o.map(a=>a.version),c=Me(r,i);return o.find(a=>a.version===c[0])},Me=(e,t)=>{const n=qt(e,t);return n.length>0?[n[0]]:[]},qt=(e,t)=>{const n=[];return t.forEach(s=>{$e(e,s)&&n.push(s)}),n},Ce=e=>{const t=e.trim(),n=t.indexOf("+");if(n<=0)return"";let s=n;for(;s>0&&t[s-1]>="0"&&t[s-1]<="9";)s--;return s>0?t.slice(0,s):""},$e=(e,t)=>{const n=e.trim().replace(/\+/,""),s=Ce(e);return t.startsWith(s)&&Et.compare(t,n,">=")},C=(e,t)=>{const{concept:n}=Le(e,t);return n},Le=(e,t)=>{if(e==null)return{concept:void 0,scheme:void 0};const{childId:n,agency:s,id:r,version:o}=j(e);if(o?.includes(I)){const i=M(e,t);return{concept:B(i?.concepts||[],n),scheme:i}}for(const i of t)if(Bt(i,r,s,o))return{concept:B(i?.concepts||[],n),scheme:i};return{concept:void 0,scheme:void 0}},B=(e,t)=>e?.find(n=>n.id===t),Bt=(e,t,n,s)=>e.id===t&&e.agencyID===n&&e.version===s,Gt=(e=[],t=[],n)=>{const s=n?.conceptIdentity||"",r=C(s,t),o=R(n?.localRepresentation?.enumeration),i=R(r?.coreRepresentation?.enumeration),c=o||i;if(c!=null)return M(c,e)},Ue=(e,t)=>{const n=e?.data?.dataSets?.[0],r=e?.data?.structures?.[0]?.attributes?.dimensionGroup||[],o=n?.dimensionGroupAttributes,i={};for(const c of r){const a=c.relationship.dimensions,{codedSeriesKey:d,decodedSeriesKey:u}=Z(e,t,a);i[c.id]={values:o?.[d]||[],decodedSeriesKey:u,codedSeriesKey:d}}return i},Z=(e,t,n)=>{const s=e?.data?.structures?.[0],r=[...s?.dimensions.series||[],...s?.dimensions.observation||[]],o=new Array(r?.length),i=new Array(r?.length);return n?.forEach(c=>{const a=r?.findIndex(l=>l.id===c)||0,d=t[a],u=r[a].values.findIndex(l=>l.id===d||l.value===d)||0;o[a]=u>=0?u:d,i[a]=d}),{codedSeriesKey:o.join(":"),decodedSeriesKey:i.join(":")}},Kt=(e,t,n)=>{const s=e?.data?.dataSets?.[0],r=e?.data?.structures?.[0],o=(r?.attributes?.dimensionGroup||[]).filter(l=>l.relationship.dimensions?.length===1&&l.relationship.dimensions.includes(t||"")),i=s?.dimensionGroupAttributes,c=[...r?.dimensions.series||[],...r?.dimensions.observation||[]],a=c?.findIndex(l=>l.id===t),d=new Array(c?.length);d[a]=n||"";const u={};for(const l of o){const m=l.relationship.dimensions,{codedSeriesKey:f,decodedSeriesKey:D}=Z(e,d,m);u[l.id]={values:i?.[f]||[],decodedSeriesKey:D,codedSeriesKey:f}}return u},Oe=(e,t)=>{if(t==null)return;const n=e.values?.[t];return n??(t instanceof Array?{values:t}:{value:t.toString()})},Ht=(e,t,n,s)=>{const r=t?.find(o=>o?.id===e?.id)?.values;return n?.filter(o=>r?.some(i=>i.id===o.id))?.map(o=>({...o,name:s?N(o,s):o?.name}))||[]},xe=(e,t)=>{const n=t?.dataStructureComponents?.attributeList,s=e?.metadataStructureComponents?.metadataAttributeList;return n?.metadataAttributeUsages?.map(r=>{const o=s?.metadataAttributes?.find(i=>i?.id===r?.metadataAttributeReference);return{...o,id:o?.id??r.metadataAttributeReference,attributeRelationship:r.attributeRelationship,isMandatory:Number(o?.minOccurs)>0}})},jt=(e=[],t,n)=>{const s=R(t?.conceptIdentity)||"",r=C(s,e);return n?N(r,n):r?.name??r?.id??t?.id};var Ye=(e=>(e.CONDITIONAL="Conditional",e.MANDATORY="Mandatory",e))(Ye||{}),$=(e=>(e.DIMENSION="Dimension",e.MEASURE_DIMENSION="MeasureDimension",e.TIME_DIMENSION="TimeDimension",e))($||{}),Fe=(e=>(e.UNBOUNDED="unbounded",e))(Fe||{});function G(e){return e?.dataStructures?.[0]?.dataStructureComponents?.dimensionList}function zt(e){return e?.data?.structures?.[0]?.dimensions?.series||[]}function Jt(e){return e?.data?.structures?.[0]?.dimensions?.observation?.[0].values.map(t=>t.value?t.value:t.id).filter(t=>t!=null)||[]}function Xt(e){return e.find(t=>t.type===$.TIME_DIMENSION)}const Zt=e=>{const t=new Map,n=e?.dataStructures?.[0],s=e?.metadataStructures?.[0],r=e?.conceptSchemes||[],o=e?.codelists||[];if(e){const i=xe(s,n);[...G(e)?.dimensions||[],...G(e)?.timeDimensions||[],...i,...n?.dataStructureComponents?.attributeList?.attributes||[]].forEach(a=>{const d=C(a?.conceptIdentity,r),u=a?.localRepresentation?.enumeration||d?.coreRepresentation?.enumeration,l=M(u,o);a?.id&&(u?t.set(a?.id,{...l,name:d?.name,names:d?.names}):t.set(a?.id,{id:a?.id,name:d?.name,names:d?.names}))})}return t},en=e=>e?.find(t=>t.id===b.SERIES_COUNT)?.title||"",ee=1440*60*1e3,te=7*ee;function ne(e){const t=`${e}-01-01`,n=new Date(t);if(n.getDay()!==4){const r=1+(4-n.getDay()+7)%7;n.setMonth(0,r)}return n}function tn(e){const t=new Date(e),s=-((t.getDay()+6)%7)+3;return t.setDate(t.getDate()+s),new Date(t.valueOf())}function K(e,t="W"){const n=`${e}-12-31`,s=v(new Date(n),t);if(s.weekYear===e)return s.weekNumber;const r=`${e}-12-24`;return v(new Date(r),t).weekNumber}function se(e,t,n="W"){return`${e}-${n}${t<10?"0"+t:t}`}function v(e,t="W"){const n=tn(e),s=n.getFullYear(),r=ne(s),o=1+Math.ceil((n.getTime()-r.getTime())/te);return{code:se(s,o,t),weekNumber:o,weekYear:s}}function We(e){const[t,n]=e.split("-W"),r=ne(+t).getTime()+(+n-1)*te-3*ee;return new Date(r)}function Qe(e){const[t,n]=e.split("-W"),r=ne(+t).getTime()+(+n-1)*te+3*ee;return new Date(r)}const le="/api/download",nn=6e4,sn=/[\x00-\x1F\x7F<>:"/\\|?*]/g,re=e=>e.normalize("NFKC").replace(sn,"_").replace(/_+/g,"_").replace(/\s+/g," ").replace(/^[._ ]+/,"").trim()||"download",rn=(e,t,n,s,r,o,i)=>{const c=new URL(le,window.location.origin);if(c.search=new URLSearchParams({urn:e,format:t,compress:"false",filename:o,filters:JSON.stringify(r),attribute:s,language:n,isMetadata:i?"true":"none"}).toString(),c.origin!==window.location.origin||c.pathname!==le)throw new Error("Invalid download URL");return c.toString()},on=(e,t)=>{const n=URL.createObjectURL(e),s=document.createElement("a");s.href=n,s.download=re(t),s.rel="noopener noreferrer",s.click(),window.setTimeout(()=>URL.revokeObjectURL(n),nn)},an=async(e,t,n,s,r,o,i,c)=>{const a=re(o),d=rn(e,t,n,s,r,a,i),u=await fetch(d,{method:"GET",credentials:"same-origin",signal:c});if(!u.ok){const m=await u.text();throw new Error(`Download request failed: ${u.status} ${u.statusText}${m?` - ${m}`:""}`)}const l=await u.blob();c?.aborted||on(l,a)},cn=(e,t)=>{const n=[];for(const s of e){if(s.type!==$.DIMENSION)continue;const r=t.find(o=>o.componentCode===s.id);r!=null&&r.values?.length>0?n.push(r.values?.join(X)):n.push("*")}return n.join(".")},Ve=(e,t)=>{if(!e||!e.startPeriod&&!e.endPeriod)return null;const n=[],{startPeriod:s,endPeriod:r}=e;if(s&&n.push(`${h.GREATER_OR_EQUAL}${de}${me(s)}`),r&&n.push(`${h.LESS_OR_EQUAL}${de}${me(r)}`),n.length===0)return null;const o=t,i=n.join(X);return`${encodeURIComponent(`c[${o}]`)}${bt}${encodeURIComponent(i)}`},me=e=>At.format(e,"yyyy-MM-dd"),un=(e,t)=>{const n=ke(e,t)||null;return n?Ve(n,t?.id):null},ke=(e,t)=>{const n=t.id,s=e?.filters?.find(a=>a.componentCode===n);if(!s||!s.values)return null;const r=s.values?.filter(a=>!!a);if(!r.length)return null;const o=s.operator;if(o===h.LESS_OR_EQUAL||o===h.LESS)return{startPeriod:null,endPeriod:g.getTimePeriod(r[0])};if(o===h.GREATER_OR_EQUAL||o===h.GREATER)return{startPeriod:g.getTimePeriod(r[0]),endPeriod:null};const i=g.getTimePeriod(r[0]),c=g.getTimePeriod(r[1]);return{startPeriod:i,endPeriod:c}},qe="Observation",dn=e=>{const t=e?.data?.dataSets,n=e?.data?.structures?.[0];if(!t||!n)return[];const s=n.attributes,r=n.dimensions,o=s?.dimensionGroup||[],i=t[0].series||t[0].observations,c=r.series?.length?r.series:r.observation,a=[];for(const d in i){const u=[],{name:l,parsedTimeSeriesValue:m}=Be(d,c),f=i[d],D=f.attributes||[];if(Object.keys(f).length===0){a.push({name:l,parsedTimeSeriesValue:m,values:u,attributes:[],dataSetAttrs:[]});continue}u.push(...mn(f,n));const y=P(s?.series||[],T=>D[T]),S=gn(n.attributes?.dataSet||[],t[0].attributes?.filter(T=>T!=null)||[]),V=Ue(e,m),k=o.map((T,ht)=>{const ce=V[T.id],pt=Oe(T,ce.values[ht]);return{attribute:T,dimensionGroupValue:pt,dimensionGroupData:ce}});a.push({name:l,parsedTimeSeriesValue:m,values:u,attributes:y,dataSetAttrs:S,dimensionGroupAttributes:k})}return a},Be=(e,t)=>{const n=e.split(new RegExp("(?<!\\|):(?!\\||$)")),s=[];for(let r=0;r<n.length;r++){const o=t?.[r],i=Number(n[r]);if(i<0||o==null)continue;const c=o.values[i];if(c==null){s.push(n[r].replace("|:",":"));continue}s.push(c?.id||c?.value||"")}return{name:Ge(s),parsedTimeSeriesValue:s}},P=(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?ln(o,r):void 0;n.push({name:r.id,value:i})}return n},ln=(e,t)=>{const n=t.values[e];return n==null?typeof e=="object"?e:e.toString():n?.id||n?.value||n?.ids||n?.values},Ge=e=>e.map(t=>t?Ke(t):"").join("."),Ke=e=>e.replace(/\./g,"|.").replace(/:/g,"|:"),mn=(e,t)=>{const n=t.measures?.observation?.length;if(e.observations==null)return[{values:ge(e,t.measures),obsAttributes:P(t.attributes?.observation||[],i=>e[i+n]),dimensionAtObservation:qe}];const s=e.observations,r=t.dimensions.observation?.[0],o=[];for(const i in s){const c=r?.values[i];o.push({dimensionAtObservation:c?.value||c?.id,values:ge(s[i],t.measures),obsAttributes:P(t.attributes?.observation||[],a=>s[i][a+n])})}return o},ge=(e,t)=>t?.observation?.map((n,s)=>({name:n.id,value:e[s]}))||[],gn=(e,t)=>e.reduce((n,s,r)=>{const o=t[r];return fn(n,s,o,""),n},[]),fn=(e,t,n,s)=>{const r=n!=null?t?.values?.length>0?t.values[n]?.id||t.values[n]?.value:String(n):s;e.push({name:t.id,value:r||""})},He=/^[0-9][0-9][0-9][0-9]-Q[1-4]$/,je=/^[0-9][0-9][0-9][0-9]-W(0[1-9]|[1-4][0-9]|5[0-3])$/,ze=/^[0-9][0-9][0-9][0-9]-S[1-2]$/,Je=/^[0-9][0-9][0-9][0-9]$/,Xe=/^[0-9][0-9][0-9][0-9]-(0[1-9]|1[0-2])-[0-9][0-9]$/,Ze=/^[0-9][0-9][0-9][0-9]-M(0[1-9]|(1[0-2]))$/,L=e=>Je.exec(e),U=e=>!!L(e),et=e=>ze.exec(e),O=e=>!!et(e),x=e=>Ze.exec(e),Y=e=>!!x(e),F=e=>He.exec(e),W=e=>!!F(e),tt=e=>Xe.exec(e),nt=e=>!!tt(e),st=e=>je.exec(e),Q=e=>!!st(e);function oe(e){return U(e)?hn(e):O(e)?Dn(e):W(e)?An(e):Y(e)?Tn(e):Q(e)?We(e):Rn(e)}function ie(e){return U(e)?pn(e):O(e)?En(e):W(e)?yn(e):Y(e)?Sn(e):Q(e)?Qe(e):vn(e)}function hn(e){const t=L(e);if(t)return new Date(Number(t[0]),0,1)}function pn(e){const t=L(e);if(t)return new Date(Number(t[0])+1,0,1)}function Dn(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 En(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 An(e){const t=F(e);if(!t)return;const[n,s]=t[0].split("-Q");switch(+s){case 1:return new Date(+n,0,1);case 2:return new Date(+n,3,1);case 3:return new Date(+n,6,1);case 4:return new Date(+n,9,1)}}function yn(e){const t=F(e);if(!t)return;const[n,s]=t[0].split("-Q");switch(+s){case 1:return new Date(+n,3,1);case 2:return new Date(+n,6,1);case 3:return new Date(+n,9,1);case 4:return new Date(+n+1,0,1)}}function Tn(e){const t=x(e);if(!t)return;const[n,s]=t[0].split("-M");return new Date(+n,+s-1,1)}function Sn(e){const t=x(e);if(!t)return;const[n,s]=t[0].split("-M");return new Date(+n,+s,1)}const Rn=e=>new Date(`${e}T00:00:00`),vn=e=>{const t=new Date(`${e}T23:59:00`);return t.setMinutes(t.getMinutes()+1),t},In=1,rt=(e,t,n,s=!0,r="Q")=>{const o=[],i=t&&t>3?Mn(t,s):1,c=n?Math.floor((n-1)/3):4;for(let a=i;a<=c;a++)o.push(`${e}-${r}${a}`);return o},ot=(e,t,n,s="S")=>{const r=[];return(t||1)<7&&(n||12)>6&&r.push(`${e}-${s}1`),n==null&&r.push(`${e}-${s}2`),r},Pn=e=>Math.ceil(e/3),it=(e,t,n="M")=>`${e}-${n}${t.toString().padStart(2,"0")}`,_n=(e,t,n="M")=>{const s=[];for(let r=t;r<=12;r++)s.push(it(e,r,n));return s},wn=(e,t,n,s="M")=>{const r=[];for(let o=t;o<n;o++)r.push(it(e,o,s));return r},at=(e,t,n,s="M")=>{const r=t||1,o=n==null,i=n||12;return o?_n(e,r,s):wn(e,r,i,s)},bn=(e,t,n="M")=>{switch(t){case 0:return[`${e}-${n}01`,`${e}-${n}02`,`${e}-${n}03`];case 1:return[`${e}-${n}04`,`${e}-${n}05`,`${e}-${n}06`];case 2:return[`${e}-${n}07`,`${e}-${n}08`,`${e}-${n}09`];case 3:return[`${e}-${n}10`,`${e}-${n}11`,`${e}-${n}12`];default:return[]}},ct=(e,t)=>{const n=p(t,!0),s=p(e),r=n.getFullYear(),o=s.getFullYear(),i=n.getTime()<=s.getTime()?o+In-r:0;return Array.from({length:i},(a,d)=>r+d)},p=(e,t=!1)=>{const n=Nn(e,t);return n?(n.getTimezoneOffset()>0&&n.setMinutes(n.getMinutes()+n.getTimezoneOffset()),n):new Date},Nn=(e,t=!1)=>{const n=Number(e);return e.toString().length!==13?t?oe(e):ie(e):isNaN(n)?new Date(`${e}T00:00:00.000Z`):new Date(n)},Mn=(e,t)=>t?Math.floor((e+1)/3):Math.ceil((e+1)/3),Cn=(e,t)=>{const n=he(e)-he(t);if(n===0&&e!==t){const s=fe(e),r=fe(t);return s-r}return n},fe=e=>U(e)?6:O(e)?5:W(e)?4:Y(e)?3:Q(e)?2:nt(e)?1:0,he=(e,t=!1)=>(t?oe(e):ie(e))?.getTime()||0,ae=(e,t,n)=>{const s=p(t,!0),r=p(n),o=p(e,!0),i=p(e),c=s.getTime()>o.getTime()?s:o,a=r.getTime()<i.getTime()?r:i;return{start:c,end:a}},ut=(e,t,n,s="W")=>{const r=+e,{start:o,end:i}=ae(e,t,n);if(o.getTime()>i.getTime())return[];const c=v(o,s),a=c.weekYear===r?c.weekNumber:c.weekYear<r?1:K(r,s),d=v(i,s),u=d.weekYear===r?d.weekNumber:d.weekYear>r?K(r,s):1,l=[];if(a<u)for(let m=a;m<=u;m++)l.push(se(r,m,s));return l},$n=e=>{const t=new Date(e);return t.setMinutes(t.getMinutes()-t.getTimezoneOffset()),t.toISOString().slice(0,10)},dt=(e,t,n)=>{const{start:s,end:r}=ae(e,t,n);if(s.getTime()>r.getTime())return[];const o=[],i=new Date(s.getFullYear(),s.getMonth(),s.getDate()),c=new Date(r.getFullYear(),r.getMonth(),r.getDate());for(;i.getTime()<c.getTime();){const a=$n(i);o.push(a),i.setDate(i.getDate()+1)}return o},lt=e=>({isDailyExist:!!e?.some(({memberValue:t})=>t==="D"),isWeeklyExist:!!e?.some(({memberValue:t})=>t==="W"),isMonthlyExist:!!e?.some(({memberValue:t})=>t==="M"),isQuarterlyExist:!!e?.some(({memberValue:t})=>t==="Q"),isSemiAnnualExist:!!e?.some(({memberValue:t})=>t==="S"),isYearlyExist:!!e?.some(({memberValue:t})=>t==="A"||t==="Y")}),Ln=(e,t,n,s)=>{const r=s===0?p(t.toString(),!0)?.getMonth()+1:void 0,o=s===e.length-1?p(n.toString())?.getMonth()+1||1:void 0;return{startMonth:r,endMonth:o}},mt=["FREQUENCY","FREQ"],Un=(e,t)=>{const n=e?.[0]?.cubeRegions?.[0]?.memberSelection?.find(a=>mt.includes(a.componentId))?.selectionValues,s=lt(n||[]),r=t?.startPeriod?.getTime()||1,o=t?.endPeriod?.getTime()||1,i=ct(o,r),c=[];return i.forEach((a,d)=>{const u=[],{startMonth:l,endMonth:m}=Ln(i,new Date(r),new Date(o),d),{isDailyExist:f,isWeeklyExist:D,isMonthlyExist:y,isQuarterlyExist:S,isSemiAnnualExist:V,isYearlyExist:k}=s;k&&u.push(a.toString()),V&&u.push(...ot(a,l,m)),S&&u.push(...rt(a,l,m,!1)),y&&u.push(...at(a,l,m)),D&&u.push(...ut(a,r.toString(),o.toString())),f&&u.push(...dt(a,r.toString(),o.toString())),c.push(...u)}),c};function On(e){const{urn:t}=e.details;return _(t.resourceId,t.version,t.agencyId)}function xn(e){const t={};for(const n of e.datasets){const s=n.dataset,r=On(s);t[r]=s.details.dimensions}return t}function Yn(e){return e?.codelists?.length?e.codelists.map(t=>({id:t.id,agencyID:t.agencyID??"",version:t.version??"",name:t.name,codes:t.codes?.map(n=>({id:n.id,name:n.name,description:n.description}))})):(e?.glossaries??[]).map(t=>({id:t.id,agencyID:t.agencyID??"",version:t.version??"",name:t.name,codes:t.terms?.map(n=>({id:n.id,name:n.name,description:n.description}))}))}function gt(e,t){const n=s=>{const r=s.indexOf("(");if(r===-1)return s;const o=s.indexOf(")",r);return o===-1?s:s.slice(0,r+1)+"*"+s.slice(o)};return n(e)===n(t)}function H(e){return _(e.id,e.version??"",e.agencyID??"")}function ft(e,t,n){t?.forEach(s=>{const{childId:r,agency:o,id:i,version:c}=j(s.code),a=_(i,c,o),d=n?.find(l=>gt(a,H(l))),u=d?.codes?.find(l=>l.id===r);if(u!=null){const l=s.code.replace(a,H(d));e.push({...u,code:l})}ft(e,s.hierarchicalCodes,n)})}function Fn(e,t){const n=[];return ft(n,e?.hierarchicalCodes,t),n}function Wn(e){const t={};return e?.forEach(n=>{t[H(n)]=n.codes}),t}function Qn(e,t,n){if(!n||n.length===0||!t)return e;const s=n[0].cubeRegions?.find(i=>i.isIncluded);if(!s)return e;const r=s.memberSelection?.find(i=>i.componentId===t);if(!r)return[];const o=new Set(r.selectionValues.map(i=>i.memberValue));return e.filter(i=>o.has(i.id))}class Vn{constructor(t){this.client=t}async getAvailableHierarchies(t,n,s){const{agency:r,id:o,version:i}=A(t),a=`${this.client.config.sdmxProxyUrl?this.client.config.sdmxProxyUrl:this.client.config.apiUrl}/sdmx/3.0/structure/codelist`,d=s?{[g.X_SOURCE_ARTEFACT_URN_HEADER]:s}:void 0;return this.client.request(`${r}/${o}/${i}?references=hierarchy&detail=allcompletestubs`,{method:"GET",headers:d},a,n)}async getHierarchy(t,n,s){const{agency:r,id:o,version:i}=A(t),a=`${this.client.config.sdmxProxyUrl?this.client.config.sdmxProxyUrl:this.client.config.apiUrl}/sdmx/3.0/structure/hierarchy`,d=s?{[g.X_SOURCE_ARTEFACT_URN_HEADER]:s}:void 0;return this.client.request(`${r}/${o}/${i}?references=descendants&detail=full`,{method:"GET",headers:d},a,n)}}exports.Annotations=b;exports.AssignmentStatus=Ye;exports.AvailabilityApi=Pt;exports.DATASET_DATA_URL=ye;exports.DatasetApi=Ct;exports.DimensionType=$;exports.DownloadType=De;exports.FREQUENCY_DIMENSION_ID=Ut;exports.FREQUENCY_DIM_ID=mt;exports.FileColumnsAttribute=pe;exports.GET_v3_FILTER_ALL=Te;exports.GET_v3_FILTER_AND=Nt;exports.GET_v3_FILTER_OR=X;exports.HierarchyApi=Vn;exports.OBSERVATION_KEY=qe;exports.OccurrenceType=Fe;exports.Periods=Pe;exports.RepresentationTextType=Ie;exports.SDMX_DATA_QUERY_PARAMS=ve;exports.SINGLE_WILDCARD_SYMBOL=I;exports.SdmxApiClient=$t;exports.SdmxAvailabilityMode=z;exports.SdmxDataFormat=E;exports.SdmxDetails=J;exports.SdmxReferences=w;exports.SeriesFilterOperator=h;exports.TIME_PERIOD=_e;exports.TIME_PERIOD_END_ANNOTATION_KEY=be;exports.TIME_PERIOD_START_ANNOTATION_KEY=we;exports.buildDatasetDimensionsMetadataMap=xn;exports.dailyPattern=Xe;exports.decodeDimensionId=Ke;exports.findCodelistByDimension=Gt;exports.generateDatasetDataRequest=q;exports.generateShortUrn=_;exports.getAdditionalColumns=Un;exports.getAnnotationPeriod=Ot;exports.getArtifactByUrnWithWildCard=M;exports.getAttachedDimensionsSeriesByDimension=Kt;exports.getAttachedDimensionsSeriesByTsId=Ue;exports.getAttachedDimensionsSeriesKey=Z;exports.getAttributeValueFromDataQueryResponse=Oe;exports.getAvailableCodes=Ht;exports.getAvailableCodesFromConstrains=Qt;exports.getChildParsedUrn=j;exports.getCodeListsData=Wn;exports.getConcept=C;exports.getConceptByUrn=B;exports.getConceptWithScheme=Le;exports.getConvertedMetaAttributes=xe;exports.getDailyRegExp=tt;exports.getDaysColumns=dt;exports.getDimensionTitle=jt;exports.getDimensions=G;exports.getFilteredItemsWithParents=Re;exports.getFiltersDtoFromDataQuery=Ne;exports.getFiltersDtoMapFromDataQuery=kt;exports.getHierarchyAvailableCodes=Qn;exports.getHierarchyCodes=Fn;exports.getISOWeek=v;exports.getKeyFromUrn=R;exports.getLastUpdatedTime=Lt;exports.getLastWeekNumberOfYear=K;exports.getLocalizedName=N;exports.getMonthlyData=at;exports.getMonthlyDataByQuarter=bn;exports.getMonthlyRegExp=x;exports.getParsedEndPeriodDate=ie;exports.getParsedResponse=dn;exports.getParsedStartPeriodDate=oe;exports.getPeriodDate=p;exports.getPeriods=lt;exports.getQuarterByMonth=Pn;exports.getQuarterlyRegExp=F;exports.getQuartersData=rt;exports.getQueryTimePeriodFilters=Ve;exports.getRequestAcceptHeader=Ee;exports.getResolvedVersionBySingleWildcard=Me;exports.getResponseContentType=Ae;exports.getSemiAnnualData=ot;exports.getSemiAnnuallyRegExp=et;exports.getSeriesAttributes=P;exports.getSeriesName=Be;exports.getStructureComponentsMap=Zt;exports.getStructureDimensions=zt;exports.getTimeDimension=Xt;exports.getTimePeriods=Jt;exports.getTimeQueryFilter=un;exports.getTimeRangeFromAttachment=ke;exports.getTimeSeriesCount=en;exports.getTimeSeriesFilterKey=cn;exports.getTimeSeriesId=Ge;exports.getWeekCode=se;exports.getWeeklyPeriodEndDate=Qe;exports.getWeeklyPeriodStartDate=We;exports.getWeeklyRegExp=st;exports.getWeeksColumns=ut;exports.getWildCardPrefix=Ce;exports.getYearPeriod=ae;exports.getYearlyRegExp=L;exports.getYears=ct;exports.isDaily=nt;exports.isMonthly=Y;exports.isQuarterly=W;exports.isSemiAnnually=O;exports.isWeekly=Q;exports.isWildCardVersionCorrect=$e;exports.isYearly=U;exports.monthlyPattern=Ze;exports.openDownloadWindow=an;exports.quarterPattern=He;exports.resolveCodelistsFromResponse=Yn;exports.sanitizeDownloadFilename=re;exports.semiAnnuallyPattern=ze;exports.sortPeriods=Cn;exports.splitUrn=A;exports.urnMatchesIgnoreVersion=gt;exports.weeklyPattern=je;exports.yearlyPattern=Je;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const Et=require("@epam/statgpt-dial-toolkit"),g=require("@epam/statgpt-shared-toolkit"),At=require("compare-versions"),yt=require("date-fns"),R=e=>{if(e!=null){const t=e.split("=");return t.length===1?e:t[1]}},A=e=>{if(e==null)return{};const t=R(e),n={agency:"",id:"",version:""};return t&&(t.includes(":")&&(n.agency=t.split(":")[0],n.id=t.split(":")[1].split("(")[0]),t.includes("(")&&t.includes(")")&&(n.version=t.split("(")[1]?.split(")")[0])),n},j=e=>{const[t,n]=e.split(")."),{agency:s,id:r,version:o}=A(t+")");return{childId:n,agency:s,id:r,version:o}},P=(e,t,n)=>{const s=t===""?"":`(${t})`;return`${n}:${e}${s}`};var w=(e=>(e.DESCENDANTS="descendants",e.NONE="none",e.ALL="all",e))(w||{}),z=(e=>(e.EXACT="exact",e.AVAILABLE="available",e))(z||{});function Tt(e){return{data:{codelists:e.data.codelists,conceptSchemes:e.data.conceptSchemes,dataConstraints:e.data.dataConstraints?.map(St),dataflows:e.data.dataflows,dataStructures:e.data.dataStructures,metadataStructures:e.data.metadataStructures}}}function St(e){return{...e,cubeRegions:e.cubeRegions?.map(Rt)}}function Rt(e){return{isIncluded:e.include,memberSelection:e.keyValues.map(vt)}}function vt(e){return{included:e.include,componentId:e.id,selectionValues:e.values.map(It)}}function It(e){return{memberValue:e.value}}const _t=(e="",t="",n="")=>`sdmx/3.0/availability/dataflow/${e}/${t}/${n}`;class Pt{constructor(t){this.client=t}async getConstraints(t,n,s){const{agency:r,id:o,version:i}=A(t),c={filters:n||[],mode:z.AVAILABLE,references:w.NONE},a=_t(r,o,i),d=!!this.client.config.sdmxProxyUrl,u=d||this.client.config.isDialProxyMode,l=d?this.client.config.sdmxProxyUrl:this.client.config.constrainsApiUrl||this.client.config.apiUrl;if(u){const m=await this.client.postRequest(a,{body:c},l,s);return Tt(m)}return await this.client.postRequest(a,{body:c},l,s)}}var E=(e=>(e.CSV="csv",e.JSON="json",e.XML="xml",e))(E||{}),he=(e=>(e.ID="id",e.NAME="name",e.ID_NAME="both",e))(he||{}),De=(e=>(e.FULL_DATASET="full",e.DATA_IN_TABLE="query",e))(De||{});const Ee=(e,t)=>{switch(e){case E.CSV:return ue("application/vnd.sdmx.data+csv;version=2.0.0",t);case E.XML:return"application/vnd.sdmx.data+xml;version=3.0.0";case E.JSON:return"application/vnd.sdmx.data+json;version=2.1";default:return ue("application/vnd.sdmx.data+csv;version=2.0.0",t)}},Ae=e=>{switch(e){case E.CSV:return"text/csv; charset=utf-8";case E.XML:return"application/xml; charset=utf-8";case E.JSON:return"application/json; charset=utf-8";default:return"text/csv; charset=utf-8"}},ue=(e,t)=>`${e}; labels=${t}`;var J=(e=>(e.REFERENCE_PARTIAL="referencepartial",e.FULL="full",e))(J||{});const wt="all",ye="sdmx/3.0/data/dataflow",bt="&",de=":",Nt="=",X="+",Mt=",",Te="*",q=(e,t,n)=>{const{filterKey:s,timeFilter:r}=n,{agency:o,id:i,version:c}=A(e),a=[r||"",t].filter(u=>!!u).join(bt);return`${`${ye}/${o}/${i}/${c}`}/${s||Te}?${a}`},Ct=(e="",t="",n="",s=w.DESCENDANTS)=>`sdmx/3.0/structure/dataflow/${e}/${t}/${n}?references=${s}&detail=${J.REFERENCE_PARTIAL}`;class Lt{constructor(t){this.client=t}async getDataSet(t,n,s){const{agency:r,id:o,version:i}=A(t);return await this.client.getRequest(Ct(r,o,i,n),void 0,s)}async getDatasetData(t,n,s){const r=new URLSearchParams({includeHistory:"false",limit:"1000",attributes:wt,dimensionAtObservation:"TIME_PERIOD"}).toString(),o=q(t,r,n);return await this.client.getRequest(o,void 0,s)}async downloadDataSet(t,n,s,r,o,i,c=!1,a){const d=new URLSearchParams({compress:"false",attributes:c?"all":"none",limit:"1000"}).toString(),u=q(t,d,o);return this.client.streamRequest(u,{method:"GET",headers:{Accept:Ee(n,r),"Accept-language":s}},i,a,Ae(n))}}class $t{constructor(t){this.config=t,console.info("SdmxApiClient initialized",{apiUrl:t.apiUrl||"NOT SET"})}async getRequest(t,n,s){return this.request(t,{...n,method:"GET"},void 0,s)}async postRequest(t,n,s,r){return this.request(t,{...n,method:"POST"},s,r)}async streamRequest(t,n,s,r,o){const i=`${this.config.apiUrl}/${t}`,c=this.buildHeaders(r,n.headers),a=new ReadableStream({async start(u){try{const l=await g.sendRequest(i,c,n);if(!l.ok){const y=await l.text();throw console.error(`Fetch failed! Status: ${l.status}, Body: ${y}`),new Error(`Fetch failed with status ${l.status}`)}const m=l.body?.getReader();if(!m)throw new Error("Failed to create stream reader");const f=new Uint8Array([239,187,191]);u.enqueue(f);const D=async()=>{const{done:y,value:S}=await m.read();y?u.close():(u.enqueue(S),await D())};D()}catch(l){u.error(l)}}}),d=new Headers({"Content-Disposition":`attachment; filename=${encodeURIComponent(s)}`,...o?{"Content-Type":o}:{}});return new Response(a,{headers:d})}async request(t,n,s,r){const o=Date.now(),i=`${s||this.config.apiUrl}/${t}`,c=this.buildHeaders(r,n.headers);this.addInfoRequestLog("API Request",i,n,c);try{const a=await g.sendRequest(i,c,n),d=Date.now()-o;let u;const l=await a.text();try{u=l?JSON.parse(l):{}}catch{if(this.addErrorRequestParsing(i,n,a,d,l),!a.ok)throw new Error(`API request failed: ${a.status} ${a.statusText} - ${l.substring(0,100)}`);u={data:l}}if(!a.ok){this.addErrorRequestLog(i,n,a,d,u);const m=Et.getErrorMessage(u,a);throw new Error(`API request failed: ${m}`)}return u}catch(a){const d=Date.now()-o;throw console.error("API Request Exception",{method:n.method,url:i,duration:`${d}ms`,error:a instanceof Error?a.message:String(a)}),a}}buildHeaders(t,n){if(this.config.isDialProxyMode)return{...g.getHeaders(this.config.dialApiKey,{jwt:t}),...n};const s={...g.getHeaders(void 0,{jwt:this.config.jwt}),...n};return this.config.apiKey!=null&&(s[g.OCP_APIM_SUBSCRIPTION_KEY_HEADER]=this.config.apiKey),s}addInfoRequestLog(t,n,s,r){const o={method:s.method||"GET",url:n,headers:g.sanitizeHeaders(r)};s.body&&(o.body=s.body),console.info(t,o)}addErrorRequestLog(t,n,s,r,o){console.error("API Request Failed",{method:n.method,url:t,status:s.status,statusText:s.statusText,duration:`${r}ms`,response:o})}addErrorRequestParsing(t,n,s,r,o){console.error("API Response Parse Error",{method:n.method,url:t,status:s.status,statusText:s.statusText,duration:`${r}ms`,responseText:o.substring(0,200),error:"Response is not valid JSON"})}}var b=(e=>(e.LAST_UPDATE_AT="lastUpdatedAt",e.SERIES_COUNT="series_count",e))(b||{});function Ut(e){return e?.annotations?.find(t=>{if(t.id===b.LAST_UPDATE_AT)return t})?.text}const N=(e,t)=>e?.names&&e?.names[t]||e?.name,Se=(e,t,n)=>{if(!(!e||t?.has(e?.id))&&(t?.set(e?.id,e),e?.parent)){const s=n?.get(e?.parent);Se(s,t,n)}},Re=(e,t)=>{const n=new Map,s=new Map(e?.map(r=>[r.id,r]));return t?.forEach(r=>{Se(r,n,s)}),Array.from(n?.values())};var ve=(e=>(e.C="c",e))(ve||{}),p=(e=>(e.EQUALS="eq",e.NOT_EQUALS="ne",e.LESS="lt",e.LESS_OR_EQUAL="le",e.GREATER="gt",e.GREATER_OR_EQUAL="ge",e.CONTAINS="co",e.NOT_CONTAINS="nc",e.STARTS="sw",e.ENDS="ew",e))(p||{}),Ie=(e=>(e.BOOLEAN="Boolean",e.DATE_TIME="DateTime",e.DECIMAL="Decimal",e.INTEGER="Integer",e.OBSERVATION_TIME_PERIOD="ObservationalTimePeriod",e.STRING="String",e.TIME="Time",e.TIME_RANGE="TimeRange",e.URI="URI",e))(Ie||{}),_e=(e=>(e.ANNUAL="A",e.QUARTERLY="Q",e.MONTHLY="M",e))(_e||{});const Ot=["FREQ","FREQUENCY"],Pe="TIME_PERIOD",we="time_period_start",be="time_period_end",xt=e=>{const t=e?.find(o=>o.id===we),n=e?.find(o=>o.id===be),s=n?.title?new Date(n?.title):null;return{startPeriod:t?.title?new Date(t?.title):null,endPeriod:s}},Yt=(e,t)=>e.id.localeCompare(t.id),Ft=(e,t)=>e.memberValue.localeCompare(t.memberValue),Wt=(e,t)=>{const n=new Array(e.length),s=e.map((i,c)=>[i,c]);s.sort((i,c)=>Yt(i[0],c[0]));const r=[...t];r.sort(Ft);let o=0;for(const i of s){const c=i[0];for(;o<r.length&&r[o].memberValue.localeCompare(c.id)<0;)o+=1;o<r.length&&r[o].memberValue===c.id&&(n[i[1]]=i[0])}return n.filter(i=>i!=null)},Qt=e=>!!e?.some(t=>t.parent),Vt=(e,t,n,s,r=[])=>{let o=e||[];if(kt(n||[],t||"")){const i=(n||[])[0].cubeRegions?.find(({isIncluded:c})=>c);if(i){const c=i.memberSelection?.find(({componentId:a})=>a===t);c?o=o.length===0?(c.selectionValues||[]).map(({memberValue:a})=>({id:a,name:a})):Wt(o,c.selectionValues):o=[]}}else r.length!==0&&(o=o.filter(({id:i})=>r.includes(i)));return Qt(e)&&(o=Re(e,o)),o?.map(i=>({...i,name:s?N(i,s):i?.name}))},kt=(e,t)=>e!=null&&e.length>0&&t!=null,Ne=e=>{const t=[];return e?.filters?.forEach(n=>{n.componentCode!==Pe&&t.push({componentCode:n.componentCode,operator:p.EQUALS,value:n.values.join(",")})}),t},qt=e=>{const t=new Map;return e?.forEach(n=>{t.set(n.urn,Ne(n))}),t},I="+",M=(e,t)=>{const{agency:n,id:s,version:r}=A(e),o=t.filter(a=>a.agencyID===n&&a.id===s&&!a?.version?.includes(I));if(o.length===1)return o[0];if(!r?.includes(I))return o.find(a=>a.version===r);const i=o.map(a=>a.version),c=Me(r,i);return o.find(a=>a.version===c[0])},Me=(e,t)=>{const n=Bt(e,t);return n.length>0?[n[0]]:[]},Bt=(e,t)=>{const n=[];return t.forEach(s=>{Le(e,s)&&n.push(s)}),n},Ce=e=>{const t=e.trim(),n=t.indexOf("+");if(n<=0)return"";let s=n;for(;s>0&&t[s-1]>="0"&&t[s-1]<="9";)s--;return s>0?t.slice(0,s):""},Le=(e,t)=>{const n=e.trim().replace(/\+/,""),s=Ce(e);return t.startsWith(s)&&At.compare(t,n,">=")},C=(e,t)=>{const{concept:n}=$e(e,t);return n},$e=(e,t)=>{if(e==null)return{concept:void 0,scheme:void 0};const{childId:n,agency:s,id:r,version:o}=j(e);if(o?.includes(I)){const i=M(e,t);return{concept:B(i?.concepts||[],n),scheme:i}}for(const i of t)if(Gt(i,r,s,o))return{concept:B(i?.concepts||[],n),scheme:i};return{concept:void 0,scheme:void 0}},B=(e,t)=>e?.find(n=>n.id===t),Gt=(e,t,n,s)=>e.id===t&&e.agencyID===n&&e.version===s,Kt=(e=[],t=[],n)=>{const s=n?.conceptIdentity||"",r=C(s,t),o=R(n?.localRepresentation?.enumeration),i=R(r?.coreRepresentation?.enumeration),c=o||i;if(c!=null)return M(c,e)},Ue=(e,t)=>{const n=e?.data?.dataSets?.[0],r=e?.data?.structures?.[0]?.attributes?.dimensionGroup||[],o=n?.dimensionGroupAttributes,i={};for(const c of r){const a=c.relationship.dimensions,{codedSeriesKey:d,decodedSeriesKey:u}=Z(e,t,a);i[c.id]={values:o?.[d]||[],decodedSeriesKey:u,codedSeriesKey:d}}return i},Z=(e,t,n)=>{const s=e?.data?.structures?.[0],r=[...s?.dimensions.series||[],...s?.dimensions.observation||[]],o=new Array(r?.length),i=new Array(r?.length);return n?.forEach(c=>{const a=r?.findIndex(l=>l.id===c)||0,d=t[a],u=r[a].values.findIndex(l=>l.id===d||l.value===d)||0;o[a]=u>=0?u:d,i[a]=d}),{codedSeriesKey:o.join(":"),decodedSeriesKey:i.join(":")}},Ht=(e,t,n)=>{const s=e?.data?.dataSets?.[0],r=e?.data?.structures?.[0],o=(r?.attributes?.dimensionGroup||[]).filter(l=>l.relationship.dimensions?.length===1&&l.relationship.dimensions.includes(t||"")),i=s?.dimensionGroupAttributes,c=[...r?.dimensions.series||[],...r?.dimensions.observation||[]],a=c?.findIndex(l=>l.id===t),d=new Array(c?.length);d[a]=n||"";const u={};for(const l of o){const m=l.relationship.dimensions,{codedSeriesKey:f,decodedSeriesKey:D}=Z(e,d,m);u[l.id]={values:i?.[f]||[],decodedSeriesKey:D,codedSeriesKey:f}}return u},Oe=(e,t)=>{if(t==null)return;const n=e.values?.[t];return n??(t instanceof Array?{values:t}:{value:t.toString()})},jt=(e,t,n,s)=>{const r=t?.find(o=>o?.id===e?.id)?.values;return n?.filter(o=>r?.some(i=>i.id===o.id))?.map(o=>({...o,name:s?N(o,s):o?.name}))||[]},xe=(e,t)=>{const n=t?.dataStructureComponents?.attributeList,s=e?.metadataStructureComponents?.metadataAttributeList;return n?.metadataAttributeUsages?.map(r=>{const o=s?.metadataAttributes?.find(i=>i?.id===r?.metadataAttributeReference);return{...o,id:o?.id??r.metadataAttributeReference,attributeRelationship:r.attributeRelationship,isMandatory:Number(o?.minOccurs)>0}})},zt=(e=[],t,n)=>{const s=R(t?.conceptIdentity)||"",r=C(s,e);return n?N(r,n):r?.name??r?.id??t?.id};var Ye=(e=>(e.CONDITIONAL="Conditional",e.MANDATORY="Mandatory",e))(Ye||{}),L=(e=>(e.DIMENSION="Dimension",e.MEASURE_DIMENSION="MeasureDimension",e.TIME_DIMENSION="TimeDimension",e))(L||{}),Fe=(e=>(e.UNBOUNDED="unbounded",e))(Fe||{});function G(e){return e?.dataStructures?.[0]?.dataStructureComponents?.dimensionList}function Jt(e){return e?.data?.structures?.[0]?.dimensions?.series||[]}function Xt(e){return e?.data?.structures?.[0]?.dimensions?.observation?.[0].values.map(t=>t.value?t.value:t.id).filter(t=>t!=null)||[]}function Zt(e){return e.find(t=>t.type===L.TIME_DIMENSION)}const en=e=>{const t=new Map,n=e?.dataStructures?.[0],s=e?.metadataStructures?.[0],r=e?.conceptSchemes||[],o=e?.codelists||[];if(e){const i=xe(s,n);[...G(e)?.dimensions||[],...G(e)?.timeDimensions||[],...i,...n?.dataStructureComponents?.attributeList?.attributes||[]].forEach(a=>{const d=C(a?.conceptIdentity,r),u=a?.localRepresentation?.enumeration||d?.coreRepresentation?.enumeration,l=M(u,o);a?.id&&(u?t.set(a?.id,{...l,name:d?.name,names:d?.names}):t.set(a?.id,{id:a?.id,name:d?.name,names:d?.names}))})}return t},tn=e=>e?.find(t=>t.id===b.SERIES_COUNT)?.title||"",ee=1440*60*1e3,te=7*ee;function ne(e){const t=`${e}-01-01`,n=new Date(t);if(n.getDay()!==4){const r=1+(4-n.getDay()+7)%7;n.setMonth(0,r)}return n}function nn(e){const t=new Date(e),s=-((t.getDay()+6)%7)+3;return t.setDate(t.getDate()+s),new Date(t.valueOf())}function K(e,t="W"){const n=`${e}-12-31`,s=v(new Date(n),t);if(s.weekYear===e)return s.weekNumber;const r=`${e}-12-24`;return v(new Date(r),t).weekNumber}function se(e,t,n="W"){return`${e}-${n}${t<10?"0"+t:t}`}function v(e,t="W"){const n=nn(e),s=n.getFullYear(),r=ne(s),o=1+Math.ceil((n.getTime()-r.getTime())/te);return{code:se(s,o,t),weekNumber:o,weekYear:s}}function We(e){const[t,n]=e.split("-W"),r=ne(+t).getTime()+(+n-1)*te-3*ee;return new Date(r)}function Qe(e){const[t,n]=e.split("-W"),r=ne(+t).getTime()+(+n-1)*te+3*ee;return new Date(r)}const le="/api/download",sn=6e4,rn=/[\x00-\x1F\x7F<>:"/\\|?*]/g,re=e=>e.normalize("NFKC").replace(rn,"_").replace(/_+/g,"_").replace(/\s+/g," ").replace(/^[._ ]+/,"").trim()||"download",on=(e,t,n,s,r,o,i)=>{const c=new URL(le,window.location.origin);if(c.search=new URLSearchParams({urn:e,format:t,compress:"false",filename:o,filters:JSON.stringify(r),attribute:s,language:n,isMetadata:i?"true":"none"}).toString(),c.origin!==window.location.origin||c.pathname!==le)throw new Error("Invalid download URL");return c.toString()},an=(e,t)=>{const n=URL.createObjectURL(e),s=document.createElement("a");s.href=n,s.download=re(t),s.rel="noopener noreferrer",s.click(),window.setTimeout(()=>URL.revokeObjectURL(n),sn)},cn=async(e,t,n,s,r,o,i,c)=>{const a=re(o),d=on(e,t,n,s,r,a,i),u=await fetch(d,{method:"GET",credentials:"same-origin",signal:c});if(!u.ok){const m=await u.text();throw new Error(`Download request failed: ${u.status} ${u.statusText}${m?` - ${m}`:""}`)}const l=await u.blob();c?.aborted||an(l,a)},un=(e,t)=>{const n=[];for(const s of e){if(s.type!==L.DIMENSION)continue;const r=t.find(o=>o.componentCode===s.id);r!=null&&r.values?.length>0?n.push(r.values?.join(X)):n.push("*")}return n.join(".")},Ve=(e,t)=>{if(!e||!e.startPeriod&&!e.endPeriod)return null;const n=[],{startPeriod:s,endPeriod:r}=e;if(s&&n.push(`${p.GREATER_OR_EQUAL}${de}${me(s)}`),r&&n.push(`${p.LESS_OR_EQUAL}${de}${me(r)}`),n.length===0)return null;const o=t,i=n.join(X);return`${encodeURIComponent(`c[${o}]`)}${Nt}${encodeURIComponent(i)}`},me=e=>yt.format(e,"yyyy-MM-dd"),dn=(e,t)=>{const n=ke(e,t)||null;return n?Ve(n,t?.id):null},ke=(e,t)=>{const n=t.id,s=e?.filters?.find(a=>a.componentCode===n);if(!s||!s.values)return null;const r=s.values?.filter(a=>!!a);if(!r.length)return null;const o=s.operator;if(o===p.LESS_OR_EQUAL||o===p.LESS)return{startPeriod:null,endPeriod:g.getTimePeriod(r[0])};if(o===p.GREATER_OR_EQUAL||o===p.GREATER)return{startPeriod:g.getTimePeriod(r[0]),endPeriod:null};const i=g.getTimePeriod(r[0]),c=g.getTimePeriod(r[1]);return{startPeriod:i,endPeriod:c}},qe="Observation",ln=e=>{const t=e?.data?.dataSets,n=e?.data?.structures?.[0];if(!t||!n)return[];const s=n.attributes,r=n.dimensions,o=s?.dimensionGroup||[],i=t[0].series||t[0].observations,c=r.series?.length?r.series:r.observation,a=[];for(const d in i){const u=[],{name:l,parsedTimeSeriesValue:m}=Be(d,c),f=i[d],D=f.attributes||[];if(Object.keys(f).length===0){a.push({name:l,parsedTimeSeriesValue:m,values:u,attributes:[],dataSetAttrs:[]});continue}u.push(...gn(f,n));const y=_(s?.series||[],T=>D[T]),S=fn(n.attributes?.dataSet||[],t[0].attributes?.filter(T=>T!=null)||[]),V=Ue(e,m),k=o.map((T,ht)=>{const ce=V[T.id],Dt=Oe(T,ce.values[ht]);return{attribute:T,dimensionGroupValue:Dt,dimensionGroupData:ce}});a.push({name:l,parsedTimeSeriesValue:m,values:u,attributes:y,dataSetAttrs:S,dimensionGroupAttributes:k})}return a},Be=(e,t)=>{const n=e.split(new RegExp("(?<!\\|):(?!\\||$)")),s=[];for(let r=0;r<n.length;r++){const o=t?.[r],i=Number(n[r]);if(i<0||o==null)continue;const c=o.values[i];if(c==null){s.push(n[r].replace("|:",":"));continue}s.push(c?.id||c?.value||"")}return{name:Ge(s),parsedTimeSeriesValue:s}},_=(e,t)=>{const n=[];for(let s=0;s<e.length;s++){const r=e[s],o=t(s),i=o!=null&&r.values!=null?mn(o,r):void 0;n.push({name:r.id,value:i})}return n},mn=(e,t)=>{const n=t.values[e];return n==null?typeof e=="object"?e:e.toString():n?.id||n?.value||n?.ids||n?.values},Ge=e=>e.map(t=>t?Ke(t):"").join("."),Ke=e=>e.replace(/\./g,"|.").replace(/:/g,"|:"),gn=(e,t)=>{const n=t.measures?.observation?.length;if(e.observations==null)return[{values:ge(e,t.measures),obsAttributes:_(t.attributes?.observation||[],i=>e[i+n]),dimensionAtObservation:qe}];const s=e.observations,r=t.dimensions.observation?.[0],o=[];for(const i in s){const c=r?.values[i];o.push({dimensionAtObservation:c?.value||c?.id,values:ge(s[i],t.measures),obsAttributes:_(t.attributes?.observation||[],a=>s[i][a+n])})}return o},ge=(e,t)=>t?.observation?.map((n,s)=>({name:n.id,value:e[s]}))||[],fn=(e,t)=>e.reduce((n,s,r)=>{const o=t[r];return pn(n,s,o,""),n},[]),pn=(e,t,n,s)=>{const r=n!=null?t?.values?.length>0?t.values[n]?.id||t.values[n]?.value:String(n):s;e.push({name:t.id,value:r||""})},He=/^[0-9][0-9][0-9][0-9]-Q[1-4]$/,je=/^[0-9][0-9][0-9][0-9]-W(0[1-9]|[1-4][0-9]|5[0-3])$/,ze=/^[0-9][0-9][0-9][0-9]-S[1-2]$/,Je=/^[0-9][0-9][0-9][0-9]$/,Xe=/^[0-9][0-9][0-9][0-9]-(0[1-9]|1[0-2])-[0-9][0-9]$/,Ze=/^[0-9][0-9][0-9][0-9]-M(0[1-9]|(1[0-2]))$/,$=e=>Je.exec(e),U=e=>!!$(e),et=e=>ze.exec(e),O=e=>!!et(e),x=e=>Ze.exec(e),Y=e=>!!x(e),F=e=>He.exec(e),W=e=>!!F(e),tt=e=>Xe.exec(e),nt=e=>!!tt(e),st=e=>je.exec(e),Q=e=>!!st(e);function oe(e){return U(e)?hn(e):O(e)?En(e):W(e)?yn(e):Y(e)?Sn(e):Q(e)?We(e):vn(e)}function ie(e){return U(e)?Dn(e):O(e)?An(e):W(e)?Tn(e):Y(e)?Rn(e):Q(e)?Qe(e):In(e)}function hn(e){const t=$(e);if(t)return new Date(Number(t[0]),0,1)}function Dn(e){const t=$(e);if(t)return new Date(Number(t[0])+1,0,1)}function En(e){const[t,n]=e.split("-S");switch(+n){case 1:return new Date(+t,0,1);case 2:return new Date(+t,6,1)}}function An(e){const[t,n]=e.split("-S");switch(+n){case 1:return new Date(+t,6,1);case 2:return new Date(+t+1,0,1)}}function yn(e){const t=F(e);if(!t)return;const[n,s]=t[0].split("-Q");switch(+s){case 1:return new Date(+n,0,1);case 2:return new Date(+n,3,1);case 3:return new Date(+n,6,1);case 4:return new Date(+n,9,1)}}function Tn(e){const t=F(e);if(!t)return;const[n,s]=t[0].split("-Q");switch(+s){case 1:return new Date(+n,3,1);case 2:return new Date(+n,6,1);case 3:return new Date(+n,9,1);case 4:return new Date(+n+1,0,1)}}function Sn(e){const t=x(e);if(!t)return;const[n,s]=t[0].split("-M");return new Date(+n,+s-1,1)}function Rn(e){const t=x(e);if(!t)return;const[n,s]=t[0].split("-M");return new Date(+n,+s,1)}const vn=e=>new Date(`${e}T00:00:00`),In=e=>{const t=new Date(`${e}T23:59:00`);return t.setMinutes(t.getMinutes()+1),t},_n=1,rt=(e,t,n,s=!0,r="Q")=>{const o=[],i=t&&t>3?Cn(t,s):1,c=n?Math.floor((n-1)/3):4;for(let a=i;a<=c;a++)o.push(`${e}-${r}${a}`);return o},ot=(e,t,n,s="S")=>{const r=[];return(t||1)<7&&(n||12)>6&&r.push(`${e}-${s}1`),n==null&&r.push(`${e}-${s}2`),r},Pn=e=>Math.ceil(e/3),it=(e,t,n="M")=>`${e}-${n}${t.toString().padStart(2,"0")}`,wn=(e,t,n="M")=>{const s=[];for(let r=t;r<=12;r++)s.push(it(e,r,n));return s},bn=(e,t,n,s="M")=>{const r=[];for(let o=t;o<n;o++)r.push(it(e,o,s));return r},at=(e,t,n,s="M")=>{const r=t||1,o=n==null,i=n||12;return o?wn(e,r,s):bn(e,r,i,s)},Nn=(e,t,n="M")=>{switch(t){case 0:return[`${e}-${n}01`,`${e}-${n}02`,`${e}-${n}03`];case 1:return[`${e}-${n}04`,`${e}-${n}05`,`${e}-${n}06`];case 2:return[`${e}-${n}07`,`${e}-${n}08`,`${e}-${n}09`];case 3:return[`${e}-${n}10`,`${e}-${n}11`,`${e}-${n}12`];default:return[]}},ct=(e,t)=>{const n=h(t,!0),s=h(e),r=n.getFullYear(),o=s.getFullYear(),i=n.getTime()<=s.getTime()?o+_n-r:0;return Array.from({length:i},(a,d)=>r+d)},h=(e,t=!1)=>{const n=Mn(e,t);return n?(n.getTimezoneOffset()>0&&n.setMinutes(n.getMinutes()+n.getTimezoneOffset()),n):new Date},Mn=(e,t=!1)=>{const n=Number(e);return e.toString().length!==13?t?oe(e):ie(e):isNaN(n)?new Date(`${e}T00:00:00.000Z`):new Date(n)},Cn=(e,t)=>t?Math.floor((e+1)/3):Math.ceil((e+1)/3),Ln=(e,t)=>{const n=pe(e)-pe(t);if(n===0&&e!==t){const s=fe(e),r=fe(t);return s-r}return n},fe=e=>U(e)?6:O(e)?5:W(e)?4:Y(e)?3:Q(e)?2:nt(e)?1:0,pe=(e,t=!1)=>(t?oe(e):ie(e))?.getTime()||0,ae=(e,t,n)=>{const s=h(t,!0),r=h(n),o=h(e,!0),i=h(e),c=s.getTime()>o.getTime()?s:o,a=r.getTime()<i.getTime()?r:i;return{start:c,end:a}},ut=(e,t,n,s="W")=>{const r=+e,{start:o,end:i}=ae(e,t,n);if(o.getTime()>i.getTime())return[];const c=v(o,s),a=c.weekYear===r?c.weekNumber:c.weekYear<r?1:K(r,s),d=v(i,s),u=d.weekYear===r?d.weekNumber:d.weekYear>r?K(r,s):1,l=[];if(a<u)for(let m=a;m<=u;m++)l.push(se(r,m,s));return l},$n=e=>{const t=new Date(e);return t.setMinutes(t.getMinutes()-t.getTimezoneOffset()),t.toISOString().slice(0,10)},dt=(e,t,n)=>{const{start:s,end:r}=ae(e,t,n);if(s.getTime()>r.getTime())return[];const o=[],i=new Date(s.getFullYear(),s.getMonth(),s.getDate()),c=new Date(r.getFullYear(),r.getMonth(),r.getDate());for(;i.getTime()<c.getTime();){const a=$n(i);o.push(a),i.setDate(i.getDate()+1)}return o},lt=e=>({isDailyExist:!!e?.some(({memberValue:t})=>t==="D"),isWeeklyExist:!!e?.some(({memberValue:t})=>t==="W"),isMonthlyExist:!!e?.some(({memberValue:t})=>t==="M"),isQuarterlyExist:!!e?.some(({memberValue:t})=>t==="Q"),isSemiAnnualExist:!!e?.some(({memberValue:t})=>t==="S"),isYearlyExist:!!e?.some(({memberValue:t})=>t==="A"||t==="Y")}),Un=(e,t,n,s)=>{const r=s===0?h(t.toString(),!0)?.getMonth()+1:void 0,o=s===e.length-1?h(n.toString())?.getMonth()+1||1:void 0;return{startMonth:r,endMonth:o}},mt=["FREQUENCY","FREQ"],On=(e,t)=>{const n=e?.[0]?.cubeRegions?.[0]?.memberSelection?.find(a=>mt.includes(a.componentId))?.selectionValues,s=lt(n||[]),r=t?.startPeriod?.getTime()||1,o=t?.endPeriod?.getTime()||1,i=ct(o,r),c=[];return i.forEach((a,d)=>{const u=[],{startMonth:l,endMonth:m}=Un(i,new Date(r),new Date(o),d),{isDailyExist:f,isWeeklyExist:D,isMonthlyExist:y,isQuarterlyExist:S,isSemiAnnualExist:V,isYearlyExist:k}=s;k&&u.push(a.toString()),V&&u.push(...ot(a,l,m)),S&&u.push(...rt(a,l,m,!1)),y&&u.push(...at(a,l,m)),D&&u.push(...ut(a,r.toString(),o.toString())),f&&u.push(...dt(a,r.toString(),o.toString())),c.push(...u)}),c};function gt(e){const{urn:t}=e.details;return P(t.resourceId,t.version,t.agencyId)}function xn(e){const t={};for(const n of e.datasets){const s=n.dataset,r=gt(s);t[r]=s.details.dimensions}return t}function Yn(e){const t={};for(const n of e.datasets)n.last_updated_at&&(t[gt(n.dataset)]=n.last_updated_at);return t}function Fn(e){return e?.codelists?.length?e.codelists.map(t=>({id:t.id,agencyID:t.agencyID??"",version:t.version??"",name:t.name,codes:t.codes?.map(n=>({id:n.id,name:n.name,description:n.description}))})):(e?.glossaries??[]).map(t=>({id:t.id,agencyID:t.agencyID??"",version:t.version??"",name:t.name,codes:t.terms?.map(n=>({id:n.id,name:n.name,description:n.description}))}))}function ft(e,t){const n=s=>{const r=s.indexOf("(");if(r===-1)return s;const o=s.indexOf(")",r);return o===-1?s:s.slice(0,r+1)+"*"+s.slice(o)};return n(e)===n(t)}function H(e){return P(e.id,e.version??"",e.agencyID??"")}function pt(e,t,n){t?.forEach(s=>{const{childId:r,agency:o,id:i,version:c}=j(s.code),a=P(i,c,o),d=n?.find(l=>ft(a,H(l))),u=d?.codes?.find(l=>l.id===r);if(u!=null){const l=s.code.replace(a,H(d));e.push({...u,code:l})}pt(e,s.hierarchicalCodes,n)})}function Wn(e,t){const n=[];return pt(n,e?.hierarchicalCodes,t),n}function Qn(e){const t={};return e?.forEach(n=>{t[H(n)]=n.codes}),t}function Vn(e,t,n){if(!n||n.length===0||!t)return e;const s=n[0].cubeRegions?.find(i=>i.isIncluded);if(!s)return e;const r=s.memberSelection?.find(i=>i.componentId===t);if(!r)return[];const o=new Set(r.selectionValues.map(i=>i.memberValue));return e.filter(i=>o.has(i.id))}class kn{constructor(t){this.client=t}async getAvailableHierarchies(t,n,s){const{agency:r,id:o,version:i}=A(t),a=`${this.client.config.sdmxProxyUrl?this.client.config.sdmxProxyUrl:this.client.config.apiUrl}/sdmx/3.0/structure/codelist`,d=s?{[g.X_SOURCE_ARTEFACT_URN_HEADER]:s}:void 0;return this.client.request(`${r}/${o}/${i}?references=hierarchy&detail=allcompletestubs`,{method:"GET",headers:d},a,n)}async getHierarchy(t,n,s){const{agency:r,id:o,version:i}=A(t),a=`${this.client.config.sdmxProxyUrl?this.client.config.sdmxProxyUrl:this.client.config.apiUrl}/sdmx/3.0/structure/hierarchy`,d=s?{[g.X_SOURCE_ARTEFACT_URN_HEADER]:s}:void 0;return this.client.request(`${r}/${o}/${i}?references=descendants&detail=full`,{method:"GET",headers:d},a,n)}}exports.Annotations=b;exports.AssignmentStatus=Ye;exports.AvailabilityApi=Pt;exports.DATASET_DATA_URL=ye;exports.DatasetApi=Lt;exports.DimensionType=L;exports.DownloadType=De;exports.FREQUENCY_DIMENSION_ID=Ot;exports.FREQUENCY_DIM_ID=mt;exports.FileColumnsAttribute=he;exports.GET_v3_FILTER_ALL=Te;exports.GET_v3_FILTER_AND=Mt;exports.GET_v3_FILTER_OR=X;exports.HierarchyApi=kn;exports.OBSERVATION_KEY=qe;exports.OccurrenceType=Fe;exports.Periods=_e;exports.RepresentationTextType=Ie;exports.SDMX_DATA_QUERY_PARAMS=ve;exports.SINGLE_WILDCARD_SYMBOL=I;exports.SdmxApiClient=$t;exports.SdmxAvailabilityMode=z;exports.SdmxDataFormat=E;exports.SdmxDetails=J;exports.SdmxReferences=w;exports.SeriesFilterOperator=p;exports.TIME_PERIOD=Pe;exports.TIME_PERIOD_END_ANNOTATION_KEY=be;exports.TIME_PERIOD_START_ANNOTATION_KEY=we;exports.buildDatasetDimensionsMetadataMap=xn;exports.buildDatasetLastUpdatedMap=Yn;exports.dailyPattern=Xe;exports.decodeDimensionId=Ke;exports.findCodelistByDimension=Kt;exports.generateDatasetDataRequest=q;exports.generateShortUrn=P;exports.getAdditionalColumns=On;exports.getAnnotationPeriod=xt;exports.getArtifactByUrnWithWildCard=M;exports.getAttachedDimensionsSeriesByDimension=Ht;exports.getAttachedDimensionsSeriesByTsId=Ue;exports.getAttachedDimensionsSeriesKey=Z;exports.getAttributeValueFromDataQueryResponse=Oe;exports.getAvailableCodes=jt;exports.getAvailableCodesFromConstrains=Vt;exports.getChildParsedUrn=j;exports.getCodeListsData=Qn;exports.getConcept=C;exports.getConceptByUrn=B;exports.getConceptWithScheme=$e;exports.getConvertedMetaAttributes=xe;exports.getDailyRegExp=tt;exports.getDaysColumns=dt;exports.getDimensionTitle=zt;exports.getDimensions=G;exports.getFilteredItemsWithParents=Re;exports.getFiltersDtoFromDataQuery=Ne;exports.getFiltersDtoMapFromDataQuery=qt;exports.getHierarchyAvailableCodes=Vn;exports.getHierarchyCodes=Wn;exports.getISOWeek=v;exports.getKeyFromUrn=R;exports.getLastUpdatedTime=Ut;exports.getLastWeekNumberOfYear=K;exports.getLocalizedName=N;exports.getMonthlyData=at;exports.getMonthlyDataByQuarter=Nn;exports.getMonthlyRegExp=x;exports.getParsedEndPeriodDate=ie;exports.getParsedResponse=ln;exports.getParsedStartPeriodDate=oe;exports.getPeriodDate=h;exports.getPeriods=lt;exports.getQuarterByMonth=Pn;exports.getQuarterlyRegExp=F;exports.getQuartersData=rt;exports.getQueryTimePeriodFilters=Ve;exports.getRequestAcceptHeader=Ee;exports.getResolvedVersionBySingleWildcard=Me;exports.getResponseContentType=Ae;exports.getSemiAnnualData=ot;exports.getSemiAnnuallyRegExp=et;exports.getSeriesAttributes=_;exports.getSeriesName=Be;exports.getStructureComponentsMap=en;exports.getStructureDimensions=Jt;exports.getTimeDimension=Zt;exports.getTimePeriods=Xt;exports.getTimeQueryFilter=dn;exports.getTimeRangeFromAttachment=ke;exports.getTimeSeriesCount=tn;exports.getTimeSeriesFilterKey=un;exports.getTimeSeriesId=Ge;exports.getWeekCode=se;exports.getWeeklyPeriodEndDate=Qe;exports.getWeeklyPeriodStartDate=We;exports.getWeeklyRegExp=st;exports.getWeeksColumns=ut;exports.getWildCardPrefix=Ce;exports.getYearPeriod=ae;exports.getYearlyRegExp=$;exports.getYears=ct;exports.isDaily=nt;exports.isMonthly=Y;exports.isQuarterly=W;exports.isSemiAnnually=O;exports.isWeekly=Q;exports.isWildCardVersionCorrect=Le;exports.isYearly=U;exports.monthlyPattern=Ze;exports.openDownloadWindow=cn;exports.quarterPattern=He;exports.resolveCodelistsFromResponse=Fn;exports.sanitizeDownloadFilename=re;exports.semiAnnuallyPattern=ze;exports.sortPeriods=Ln;exports.splitUrn=A;exports.urnMatchesIgnoreVersion=ft;exports.weeklyPattern=je;exports.yearlyPattern=Je;
|
package/index.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { getErrorMessage as
|
|
2
|
-
import { sendRequest as j, getHeaders as z, OCP_APIM_SUBSCRIPTION_KEY_HEADER as
|
|
3
|
-
import { compare as
|
|
1
|
+
import { getErrorMessage as we } from "@epam/statgpt-dial-toolkit";
|
|
2
|
+
import { sendRequest as j, getHeaders as z, OCP_APIM_SUBSCRIPTION_KEY_HEADER as Ie, sanitizeHeaders as be, getTimePeriod as S, X_SOURCE_ARTEFACT_URN_HEADER as J } from "@epam/statgpt-shared-toolkit";
|
|
3
|
+
import { compare as _e } from "compare-versions";
|
|
4
4
|
import { format as $e } from "date-fns";
|
|
5
5
|
const T = (e) => {
|
|
6
6
|
if (e != null) {
|
|
@@ -19,7 +19,7 @@ const T = (e) => {
|
|
|
19
19
|
}, ue = (e) => {
|
|
20
20
|
const [t, n] = e.split(")."), { agency: s, id: r, version: o } = y(t + ")");
|
|
21
21
|
return { childId: n, agency: s, id: r, version: o };
|
|
22
|
-
},
|
|
22
|
+
}, P = (e, t, n) => {
|
|
23
23
|
const s = t === "" ? "" : `(${t})`;
|
|
24
24
|
return `${n}:${e}${s}`;
|
|
25
25
|
};
|
|
@@ -29,38 +29,38 @@ function Pe(e) {
|
|
|
29
29
|
data: {
|
|
30
30
|
codelists: e.data.codelists,
|
|
31
31
|
conceptSchemes: e.data.conceptSchemes,
|
|
32
|
-
dataConstraints: e.data.dataConstraints?.map(
|
|
32
|
+
dataConstraints: e.data.dataConstraints?.map(Ne),
|
|
33
33
|
dataflows: e.data.dataflows,
|
|
34
34
|
dataStructures: e.data.dataStructures,
|
|
35
35
|
metadataStructures: e.data.metadataStructures
|
|
36
36
|
}
|
|
37
37
|
};
|
|
38
38
|
}
|
|
39
|
-
function
|
|
39
|
+
function Ne(e) {
|
|
40
40
|
return {
|
|
41
41
|
...e,
|
|
42
|
-
cubeRegions: e.cubeRegions?.map(
|
|
42
|
+
cubeRegions: e.cubeRegions?.map(Me)
|
|
43
43
|
};
|
|
44
44
|
}
|
|
45
|
-
function
|
|
45
|
+
function Me(e) {
|
|
46
46
|
return {
|
|
47
47
|
isIncluded: e.include,
|
|
48
|
-
memberSelection: e.keyValues.map(
|
|
48
|
+
memberSelection: e.keyValues.map(Le)
|
|
49
49
|
};
|
|
50
50
|
}
|
|
51
|
-
function
|
|
51
|
+
function Le(e) {
|
|
52
52
|
return {
|
|
53
53
|
included: e.include,
|
|
54
54
|
componentId: e.id,
|
|
55
|
-
selectionValues: e.values.map(
|
|
55
|
+
selectionValues: e.values.map(Ue)
|
|
56
56
|
};
|
|
57
57
|
}
|
|
58
|
-
function
|
|
58
|
+
function Ue(e) {
|
|
59
59
|
return {
|
|
60
60
|
memberValue: e.value
|
|
61
61
|
};
|
|
62
62
|
}
|
|
63
|
-
const
|
|
63
|
+
const Oe = (e = "", t = "", n = "") => `sdmx/3.0/availability/dataflow/${e}/${t}/${n}`;
|
|
64
64
|
class yn {
|
|
65
65
|
constructor(t) {
|
|
66
66
|
this.client = t;
|
|
@@ -70,7 +70,7 @@ class yn {
|
|
|
70
70
|
filters: n || [],
|
|
71
71
|
mode: de.AVAILABLE,
|
|
72
72
|
references: N.NONE
|
|
73
|
-
}, a =
|
|
73
|
+
}, a = Oe(r, o, i), d = !!this.client.config.sdmxProxyUrl, u = d || this.client.config.isDialProxyMode, l = d ? this.client.config.sdmxProxyUrl : this.client.config.constrainsApiUrl || this.client.config.apiUrl;
|
|
74
74
|
if (u) {
|
|
75
75
|
const m = await this.client.postRequest(
|
|
76
76
|
a,
|
|
@@ -88,8 +88,8 @@ class yn {
|
|
|
88
88
|
);
|
|
89
89
|
}
|
|
90
90
|
}
|
|
91
|
-
var A = /* @__PURE__ */ ((e) => (e.CSV = "csv", e.JSON = "json", e.XML = "xml", e))(A || {}),
|
|
92
|
-
const
|
|
91
|
+
var A = /* @__PURE__ */ ((e) => (e.CSV = "csv", e.JSON = "json", e.XML = "xml", e))(A || {}), Ce = /* @__PURE__ */ ((e) => (e.ID = "id", e.NAME = "name", e.ID_NAME = "both", e))(Ce || {}), xe = /* @__PURE__ */ ((e) => (e.FULL_DATASET = "full", e.DATA_IN_TABLE = "query", e))(xe || {});
|
|
92
|
+
const Ye = (e, t) => {
|
|
93
93
|
switch (e) {
|
|
94
94
|
case A.CSV:
|
|
95
95
|
return X(
|
|
@@ -106,7 +106,7 @@ const xe = (e, t) => {
|
|
|
106
106
|
t
|
|
107
107
|
);
|
|
108
108
|
}
|
|
109
|
-
},
|
|
109
|
+
}, Ve = (e) => {
|
|
110
110
|
switch (e) {
|
|
111
111
|
case A.CSV:
|
|
112
112
|
return "text/csv; charset=utf-8";
|
|
@@ -119,10 +119,10 @@ const xe = (e, t) => {
|
|
|
119
119
|
}
|
|
120
120
|
}, X = (e, t) => `${e}; labels=${t}`;
|
|
121
121
|
var le = /* @__PURE__ */ ((e) => (e.REFERENCE_PARTIAL = "referencepartial", e.FULL = "full", e))(le || {});
|
|
122
|
-
const
|
|
123
|
-
const { filterKey: s, timeFilter: r } = n, { agency: o, id: i, version: c } = y(e), a = [r || "", t].filter((u) => !!u).join(
|
|
124
|
-
return `${`${
|
|
125
|
-
},
|
|
122
|
+
const We = "all", ke = "sdmx/3.0/data/dataflow", qe = "&", Z = ":", Qe = "=", me = "+", vn = ",", Fe = "*", ee = (e, t, n) => {
|
|
123
|
+
const { filterKey: s, timeFilter: r } = n, { agency: o, id: i, version: c } = y(e), a = [r || "", t].filter((u) => !!u).join(qe);
|
|
124
|
+
return `${`${ke}/${o}/${i}/${c}`}/${s || Fe}?${a}`;
|
|
125
|
+
}, Be = (e = "", t = "", n = "", s = N.DESCENDANTS) => `sdmx/3.0/structure/dataflow/${e}/${t}/${n}?references=${s}&detail=${le.REFERENCE_PARTIAL}`;
|
|
126
126
|
class Sn {
|
|
127
127
|
constructor(t) {
|
|
128
128
|
this.client = t;
|
|
@@ -130,7 +130,7 @@ class Sn {
|
|
|
130
130
|
async getDataSet(t, n, s) {
|
|
131
131
|
const { agency: r, id: o, version: i } = y(t);
|
|
132
132
|
return await this.client.getRequest(
|
|
133
|
-
|
|
133
|
+
Be(r, o, i, n),
|
|
134
134
|
void 0,
|
|
135
135
|
s
|
|
136
136
|
);
|
|
@@ -139,7 +139,7 @@ class Sn {
|
|
|
139
139
|
const r = new URLSearchParams({
|
|
140
140
|
includeHistory: "false",
|
|
141
141
|
limit: "1000",
|
|
142
|
-
attributes:
|
|
142
|
+
attributes: We,
|
|
143
143
|
dimensionAtObservation: "TIME_PERIOD"
|
|
144
144
|
// TODO: use time dimensions
|
|
145
145
|
}).toString(), o = ee(t, r, n);
|
|
@@ -160,13 +160,13 @@ class Sn {
|
|
|
160
160
|
{
|
|
161
161
|
method: "GET",
|
|
162
162
|
headers: {
|
|
163
|
-
Accept:
|
|
163
|
+
Accept: Ye(n, r),
|
|
164
164
|
"Accept-language": s
|
|
165
165
|
}
|
|
166
166
|
},
|
|
167
167
|
i,
|
|
168
168
|
a,
|
|
169
|
-
|
|
169
|
+
Ve(n)
|
|
170
170
|
);
|
|
171
171
|
}
|
|
172
172
|
}
|
|
@@ -246,7 +246,7 @@ class Tn {
|
|
|
246
246
|
}
|
|
247
247
|
if (!a.ok) {
|
|
248
248
|
this.addErrorRequestLog(i, n, a, d, u);
|
|
249
|
-
const m =
|
|
249
|
+
const m = we(u, a);
|
|
250
250
|
throw new Error(`API request failed: ${m}`);
|
|
251
251
|
}
|
|
252
252
|
return u;
|
|
@@ -270,13 +270,13 @@ class Tn {
|
|
|
270
270
|
...z(void 0, { jwt: this.config.jwt }),
|
|
271
271
|
...n
|
|
272
272
|
};
|
|
273
|
-
return this.config.apiKey != null && (s[
|
|
273
|
+
return this.config.apiKey != null && (s[Ie] = this.config.apiKey), s;
|
|
274
274
|
}
|
|
275
275
|
addInfoRequestLog(t, n, s, r) {
|
|
276
276
|
const o = {
|
|
277
277
|
method: s.method || "GET",
|
|
278
278
|
url: n,
|
|
279
|
-
headers:
|
|
279
|
+
headers: be(r)
|
|
280
280
|
};
|
|
281
281
|
s.body && (o.body = s.body), console.info(t, o);
|
|
282
282
|
}
|
|
@@ -307,37 +307,37 @@ function Rn(e) {
|
|
|
307
307
|
return e?.annotations?.find((t) => {
|
|
308
308
|
if (t.id === M.LAST_UPDATE_AT)
|
|
309
309
|
return t;
|
|
310
|
-
})?.
|
|
310
|
+
})?.text;
|
|
311
311
|
}
|
|
312
312
|
const L = (e, t) => e?.names && e?.names[t] || e?.name, fe = (e, t, n) => {
|
|
313
313
|
if (!(!e || t?.has(e?.id)) && (t?.set(e?.id, e), e?.parent)) {
|
|
314
314
|
const s = n?.get(e?.parent);
|
|
315
315
|
fe(s, t, n);
|
|
316
316
|
}
|
|
317
|
-
},
|
|
317
|
+
}, Ge = (e, t) => {
|
|
318
318
|
const n = /* @__PURE__ */ new Map(), s = new Map(e?.map((r) => [r.id, r]));
|
|
319
319
|
return t?.forEach((r) => {
|
|
320
320
|
fe(r, n, s);
|
|
321
321
|
}), Array.from(n?.values());
|
|
322
322
|
};
|
|
323
|
-
var
|
|
324
|
-
const wn = ["FREQ", "FREQUENCY"],
|
|
323
|
+
var Ke = /* @__PURE__ */ ((e) => (e.C = "c", e))(Ke || {}), 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 || {}), He = /* @__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))(He || {}), je = /* @__PURE__ */ ((e) => (e.ANNUAL = "A", e.QUARTERLY = "Q", e.MONTHLY = "M", e))(je || {});
|
|
324
|
+
const wn = ["FREQ", "FREQUENCY"], ze = "TIME_PERIOD", Je = "time_period_start", Xe = "time_period_end", In = (e) => {
|
|
325
325
|
const t = e?.find(
|
|
326
|
-
(o) => o.id === ze
|
|
327
|
-
), n = e?.find(
|
|
328
326
|
(o) => o.id === Je
|
|
327
|
+
), n = e?.find(
|
|
328
|
+
(o) => o.id === Xe
|
|
329
329
|
), s = n?.title ? new Date(n?.title) : null;
|
|
330
330
|
return {
|
|
331
331
|
startPeriod: t?.title ? new Date(t?.title) : null,
|
|
332
332
|
endPeriod: s
|
|
333
333
|
};
|
|
334
|
-
},
|
|
334
|
+
}, Ze = (e, t) => e.id.localeCompare(t.id), et = (e, t) => e.memberValue.localeCompare(t.memberValue), tt = (e, t) => {
|
|
335
335
|
const n = new Array(e.length), s = e.map((i, c) => [i, c]);
|
|
336
336
|
s.sort(
|
|
337
|
-
(i, c) =>
|
|
337
|
+
(i, c) => Ze(i[0], c[0])
|
|
338
338
|
);
|
|
339
339
|
const r = [...t];
|
|
340
|
-
r.sort(
|
|
340
|
+
r.sort(et);
|
|
341
341
|
let o = 0;
|
|
342
342
|
for (const i of s) {
|
|
343
343
|
const c = i[0];
|
|
@@ -346,9 +346,9 @@ const wn = ["FREQ", "FREQUENCY"], je = "TIME_PERIOD", ze = "time_period_start",
|
|
|
346
346
|
o < r.length && r[o].memberValue === c.id && (n[i[1]] = i[0]);
|
|
347
347
|
}
|
|
348
348
|
return n.filter((i) => i != null);
|
|
349
|
-
},
|
|
349
|
+
}, nt = (e) => !!e?.some((t) => t.parent), bn = (e, t, n, s, r = []) => {
|
|
350
350
|
let o = e || [];
|
|
351
|
-
if (
|
|
351
|
+
if (st(n || [], t || "")) {
|
|
352
352
|
const i = (n || [])[0].cubeRegions?.find(
|
|
353
353
|
({ isIncluded: c }) => c
|
|
354
354
|
);
|
|
@@ -359,26 +359,26 @@ const wn = ["FREQ", "FREQUENCY"], je = "TIME_PERIOD", ze = "time_period_start",
|
|
|
359
359
|
c ? o = o.length === 0 ? (c.selectionValues || []).map(({ memberValue: a }) => ({
|
|
360
360
|
id: a,
|
|
361
361
|
name: a
|
|
362
|
-
})) :
|
|
362
|
+
})) : tt(o, c.selectionValues) : o = [];
|
|
363
363
|
}
|
|
364
364
|
} else r.length !== 0 && (o = o.filter(({ id: i }) => r.includes(i)));
|
|
365
|
-
return
|
|
365
|
+
return nt(e) && (o = Ge(e, o)), o?.map((i) => ({
|
|
366
366
|
...i,
|
|
367
367
|
name: s ? L(i, s) : i?.name
|
|
368
368
|
}));
|
|
369
|
-
},
|
|
369
|
+
}, st = (e, t) => e != null && e.length > 0 && t != null, rt = (e) => {
|
|
370
370
|
const t = [];
|
|
371
371
|
return e?.filters?.forEach((n) => {
|
|
372
|
-
n.componentCode !==
|
|
372
|
+
n.componentCode !== ze && t.push({
|
|
373
373
|
componentCode: n.componentCode,
|
|
374
374
|
operator: h.EQUALS,
|
|
375
375
|
value: n.values.join(",")
|
|
376
376
|
});
|
|
377
377
|
}), t;
|
|
378
|
-
},
|
|
378
|
+
}, _n = (e) => {
|
|
379
379
|
const t = /* @__PURE__ */ new Map();
|
|
380
380
|
return e?.forEach((n) => {
|
|
381
|
-
t.set(n.urn,
|
|
381
|
+
t.set(n.urn, rt(n));
|
|
382
382
|
}), t;
|
|
383
383
|
}, b = "+", U = (e, t) => {
|
|
384
384
|
const { agency: n, id: s, version: r } = y(e), o = t.filter(
|
|
@@ -390,32 +390,32 @@ const wn = ["FREQ", "FREQUENCY"], je = "TIME_PERIOD", ze = "time_period_start",
|
|
|
390
390
|
return o.find((a) => a.version === r);
|
|
391
391
|
const i = o.map(
|
|
392
392
|
(a) => a.version
|
|
393
|
-
), c =
|
|
393
|
+
), c = ot(r, i);
|
|
394
394
|
return o.find(
|
|
395
395
|
(a) => a.version === c[0]
|
|
396
396
|
);
|
|
397
|
-
}, rt = (e, t) => {
|
|
398
|
-
const n = ot(e, t);
|
|
399
|
-
return n.length > 0 ? [n[0]] : [];
|
|
400
397
|
}, ot = (e, t) => {
|
|
398
|
+
const n = it(e, t);
|
|
399
|
+
return n.length > 0 ? [n[0]] : [];
|
|
400
|
+
}, it = (e, t) => {
|
|
401
401
|
const n = [];
|
|
402
402
|
return t.forEach((s) => {
|
|
403
|
-
|
|
403
|
+
ct(e, s) && n.push(s);
|
|
404
404
|
}), n;
|
|
405
|
-
},
|
|
405
|
+
}, at = (e) => {
|
|
406
406
|
const t = e.trim(), n = t.indexOf("+");
|
|
407
407
|
if (n <= 0) return "";
|
|
408
408
|
let s = n;
|
|
409
409
|
for (; s > 0 && t[s - 1] >= "0" && t[s - 1] <= "9"; )
|
|
410
410
|
s--;
|
|
411
411
|
return s > 0 ? t.slice(0, s) : "";
|
|
412
|
-
},
|
|
413
|
-
const n = e.trim().replace(/\+/, ""), s =
|
|
414
|
-
return t.startsWith(s) &&
|
|
412
|
+
}, ct = (e, t) => {
|
|
413
|
+
const n = e.trim().replace(/\+/, ""), s = at(e);
|
|
414
|
+
return t.startsWith(s) && _e(t, n, ">=");
|
|
415
415
|
}, O = (e, t) => {
|
|
416
|
-
const { concept: n } =
|
|
416
|
+
const { concept: n } = ut(e, t);
|
|
417
417
|
return n;
|
|
418
|
-
},
|
|
418
|
+
}, ut = (e, t) => {
|
|
419
419
|
if (e == null)
|
|
420
420
|
return {
|
|
421
421
|
concept: void 0,
|
|
@@ -433,7 +433,7 @@ const wn = ["FREQ", "FREQUENCY"], je = "TIME_PERIOD", ze = "time_period_start",
|
|
|
433
433
|
};
|
|
434
434
|
}
|
|
435
435
|
for (const i of t)
|
|
436
|
-
if (
|
|
436
|
+
if (dt(i, r, s, o))
|
|
437
437
|
return {
|
|
438
438
|
concept: te(i?.concepts || [], n),
|
|
439
439
|
scheme: i
|
|
@@ -442,7 +442,7 @@ const wn = ["FREQ", "FREQUENCY"], je = "TIME_PERIOD", ze = "time_period_start",
|
|
|
442
442
|
concept: void 0,
|
|
443
443
|
scheme: void 0
|
|
444
444
|
};
|
|
445
|
-
}, te = (e, t) => e?.find((n) => n.id === t),
|
|
445
|
+
}, te = (e, t) => e?.find((n) => n.id === t), dt = (e, t, n, s) => e.id === t && e.agencyID === n && e.version === s, $n = (e = [], t = [], n) => {
|
|
446
446
|
const s = n?.conceptIdentity || "", r = O(s, t), o = T(
|
|
447
447
|
n?.localRepresentation?.enumeration
|
|
448
448
|
), i = T(
|
|
@@ -450,7 +450,7 @@ const wn = ["FREQ", "FREQUENCY"], je = "TIME_PERIOD", ze = "time_period_start",
|
|
|
450
450
|
), c = o || i;
|
|
451
451
|
if (c != null)
|
|
452
452
|
return U(c, e);
|
|
453
|
-
},
|
|
453
|
+
}, lt = (e, t) => {
|
|
454
454
|
const n = e?.data?.dataSets?.[0], r = e?.data?.structures?.[0]?.attributes?.dimensionGroup || [], o = n?.dimensionGroupAttributes, i = {};
|
|
455
455
|
for (const c of r) {
|
|
456
456
|
const a = c.relationship.dimensions, { codedSeriesKey: d, decodedSeriesKey: u } = ge(
|
|
@@ -479,7 +479,7 @@ const wn = ["FREQ", "FREQUENCY"], je = "TIME_PERIOD", ze = "time_period_start",
|
|
|
479
479
|
codedSeriesKey: o.join(":"),
|
|
480
480
|
decodedSeriesKey: i.join(":")
|
|
481
481
|
};
|
|
482
|
-
},
|
|
482
|
+
}, Pn = (e, t, n) => {
|
|
483
483
|
const s = e?.data?.dataSets?.[0], r = e?.data?.structures?.[0], o = (r?.attributes?.dimensionGroup || []).filter(
|
|
484
484
|
(l) => l.relationship.dimensions?.length === 1 && l.relationship.dimensions.includes(t || "")
|
|
485
485
|
), i = s?.dimensionGroupAttributes, c = [
|
|
@@ -501,7 +501,7 @@ const wn = ["FREQ", "FREQUENCY"], je = "TIME_PERIOD", ze = "time_period_start",
|
|
|
501
501
|
};
|
|
502
502
|
}
|
|
503
503
|
return u;
|
|
504
|
-
},
|
|
504
|
+
}, mt = (e, t) => {
|
|
505
505
|
if (t == null)
|
|
506
506
|
return;
|
|
507
507
|
const n = e.values?.[t];
|
|
@@ -514,7 +514,7 @@ const wn = ["FREQ", "FREQUENCY"], je = "TIME_PERIOD", ze = "time_period_start",
|
|
|
514
514
|
...o,
|
|
515
515
|
name: s ? L(o, s) : o?.name
|
|
516
516
|
})) || [];
|
|
517
|
-
},
|
|
517
|
+
}, ft = (e, t) => {
|
|
518
518
|
const n = t?.dataStructureComponents?.attributeList, s = e?.metadataStructureComponents?.metadataAttributeList;
|
|
519
519
|
return n?.metadataAttributeUsages?.map((r) => {
|
|
520
520
|
const o = s?.metadataAttributes?.find(
|
|
@@ -531,7 +531,7 @@ const wn = ["FREQ", "FREQUENCY"], je = "TIME_PERIOD", ze = "time_period_start",
|
|
|
531
531
|
const s = T(t?.conceptIdentity) || "", r = O(s, e);
|
|
532
532
|
return n ? L(r, n) : r?.name ?? r?.id ?? t?.id;
|
|
533
533
|
};
|
|
534
|
-
var
|
|
534
|
+
var gt = /* @__PURE__ */ ((e) => (e.CONDITIONAL = "Conditional", e.MANDATORY = "Mandatory", e))(gt || {}), C = /* @__PURE__ */ ((e) => (e.DIMENSION = "Dimension", e.MEASURE_DIMENSION = "MeasureDimension", e.TIME_DIMENSION = "TimeDimension", e))(C || {}), ht = /* @__PURE__ */ ((e) => (e.UNBOUNDED = "unbounded", e))(ht || {});
|
|
535
535
|
function ne(e) {
|
|
536
536
|
return e?.dataStructures?.[0]?.dataStructureComponents?.dimensionList;
|
|
537
537
|
}
|
|
@@ -549,7 +549,7 @@ function On(e) {
|
|
|
549
549
|
const Cn = (e) => {
|
|
550
550
|
const t = /* @__PURE__ */ new Map(), n = e?.dataStructures?.[0], s = e?.metadataStructures?.[0], r = e?.conceptSchemes || [], o = e?.codelists || [];
|
|
551
551
|
if (e) {
|
|
552
|
-
const i =
|
|
552
|
+
const i = ft(
|
|
553
553
|
s,
|
|
554
554
|
n
|
|
555
555
|
);
|
|
@@ -591,7 +591,7 @@ function V(e) {
|
|
|
591
591
|
}
|
|
592
592
|
return n;
|
|
593
593
|
}
|
|
594
|
-
function
|
|
594
|
+
function pt(e) {
|
|
595
595
|
const t = new Date(e), s = -((t.getDay() + 6) % 7) + 3;
|
|
596
596
|
return t.setDate(t.getDate() + s), new Date(t.valueOf());
|
|
597
597
|
}
|
|
@@ -606,7 +606,7 @@ function he(e, t, n = "W") {
|
|
|
606
606
|
return `${e}-${n}${t < 10 ? "0" + t : t}`;
|
|
607
607
|
}
|
|
608
608
|
function R(e, t = "W") {
|
|
609
|
-
const n =
|
|
609
|
+
const n = pt(e), s = n.getFullYear(), r = V(s), o = 1 + Math.ceil(
|
|
610
610
|
(n.getTime() - r.getTime()) / Y
|
|
611
611
|
);
|
|
612
612
|
return {
|
|
@@ -615,15 +615,15 @@ function R(e, t = "W") {
|
|
|
615
615
|
weekYear: s
|
|
616
616
|
};
|
|
617
617
|
}
|
|
618
|
-
function
|
|
618
|
+
function Et(e) {
|
|
619
619
|
const [t, n] = e.split("-W"), r = V(+t).getTime() + (+n - 1) * Y - 3 * x;
|
|
620
620
|
return new Date(r);
|
|
621
621
|
}
|
|
622
|
-
function
|
|
622
|
+
function Dt(e) {
|
|
623
623
|
const [t, n] = e.split("-W"), r = V(+t).getTime() + (+n - 1) * Y + 3 * x;
|
|
624
624
|
return new Date(r);
|
|
625
625
|
}
|
|
626
|
-
const re = "/api/download",
|
|
626
|
+
const re = "/api/download", At = 6e4, yt = /[\x00-\x1F\x7F<>:"/\\|?*]/g, pe = (e) => e.normalize("NFKC").replace(yt, "_").replace(/_+/g, "_").replace(/\s+/g, " ").replace(/^[._ ]+/, "").trim() || "download", vt = (e, t, n, s, r, o, i) => {
|
|
627
627
|
const c = new URL(re, window.location.origin);
|
|
628
628
|
if (c.search = new URLSearchParams({
|
|
629
629
|
urn: e,
|
|
@@ -637,14 +637,14 @@ const re = "/api/download", Dt = 6e4, At = /[\x00-\x1F\x7F<>:"/\\|?*]/g, pe = (e
|
|
|
637
637
|
}).toString(), c.origin !== window.location.origin || c.pathname !== re)
|
|
638
638
|
throw new Error("Invalid download URL");
|
|
639
639
|
return c.toString();
|
|
640
|
-
},
|
|
640
|
+
}, St = (e, t) => {
|
|
641
641
|
const n = URL.createObjectURL(e), s = document.createElement("a");
|
|
642
642
|
s.href = n, s.download = pe(t), s.rel = "noopener noreferrer", s.click(), window.setTimeout(
|
|
643
643
|
() => URL.revokeObjectURL(n),
|
|
644
|
-
|
|
644
|
+
At
|
|
645
645
|
);
|
|
646
646
|
}, Yn = async (e, t, n, s, r, o, i, c) => {
|
|
647
|
-
const a = pe(o), d =
|
|
647
|
+
const a = pe(o), d = vt(
|
|
648
648
|
e,
|
|
649
649
|
t,
|
|
650
650
|
n,
|
|
@@ -664,7 +664,7 @@ const re = "/api/download", Dt = 6e4, At = /[\x00-\x1F\x7F<>:"/\\|?*]/g, pe = (e
|
|
|
664
664
|
);
|
|
665
665
|
}
|
|
666
666
|
const l = await u.blob();
|
|
667
|
-
c?.aborted ||
|
|
667
|
+
c?.aborted || St(l, a);
|
|
668
668
|
}, Vn = (e, t) => {
|
|
669
669
|
const n = [];
|
|
670
670
|
for (const s of e) {
|
|
@@ -674,7 +674,7 @@ const re = "/api/download", Dt = 6e4, At = /[\x00-\x1F\x7F<>:"/\\|?*]/g, pe = (e
|
|
|
674
674
|
r != null && r.values?.length > 0 ? n.push(r.values?.join(me)) : n.push("*");
|
|
675
675
|
}
|
|
676
676
|
return n.join(".");
|
|
677
|
-
},
|
|
677
|
+
}, Tt = (e, t) => {
|
|
678
678
|
if (!e || !e.startPeriod && !e.endPeriod)
|
|
679
679
|
return null;
|
|
680
680
|
const n = [], { startPeriod: s, endPeriod: r } = e;
|
|
@@ -685,11 +685,11 @@ const re = "/api/download", Dt = 6e4, At = /[\x00-\x1F\x7F<>:"/\\|?*]/g, pe = (e
|
|
|
685
685
|
), n.length === 0)
|
|
686
686
|
return null;
|
|
687
687
|
const o = t, i = n.join(me);
|
|
688
|
-
return `${encodeURIComponent(`c[${o}]`)}${
|
|
688
|
+
return `${encodeURIComponent(`c[${o}]`)}${Qe}${encodeURIComponent(i)}`;
|
|
689
689
|
}, oe = (e) => $e(e, "yyyy-MM-dd"), Wn = (e, t) => {
|
|
690
|
-
const n =
|
|
691
|
-
return n ?
|
|
692
|
-
},
|
|
690
|
+
const n = Rt(e, t) || null;
|
|
691
|
+
return n ? Tt(n, t?.id) : null;
|
|
692
|
+
}, Rt = (e, t) => {
|
|
693
693
|
const n = t.id, s = e?.filters?.find(
|
|
694
694
|
(a) => a.componentCode === n
|
|
695
695
|
);
|
|
@@ -705,13 +705,13 @@ const re = "/api/download", Dt = 6e4, At = /[\x00-\x1F\x7F<>:"/\\|?*]/g, pe = (e
|
|
|
705
705
|
return { startPeriod: S(r[0]), endPeriod: null };
|
|
706
706
|
const i = S(r[0]), c = S(r[1]);
|
|
707
707
|
return { startPeriod: i, endPeriod: c };
|
|
708
|
-
},
|
|
708
|
+
}, wt = "Observation", kn = (e) => {
|
|
709
709
|
const t = e?.data?.dataSets, n = e?.data?.structures?.[0];
|
|
710
710
|
if (!t || !n)
|
|
711
711
|
return [];
|
|
712
712
|
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 = [];
|
|
713
713
|
for (const d in i) {
|
|
714
|
-
const u = [], { name: l, parsedTimeSeriesValue: m } =
|
|
714
|
+
const u = [], { name: l, parsedTimeSeriesValue: m } = It(
|
|
715
715
|
d,
|
|
716
716
|
c
|
|
717
717
|
), f = i[d], g = f.attributes || [];
|
|
@@ -728,23 +728,23 @@ const re = "/api/download", Dt = 6e4, At = /[\x00-\x1F\x7F<>:"/\\|?*]/g, pe = (e
|
|
|
728
728
|
u.push(
|
|
729
729
|
...Pt(f, n)
|
|
730
730
|
);
|
|
731
|
-
const E =
|
|
731
|
+
const E = _(
|
|
732
732
|
s?.series || [],
|
|
733
733
|
(D) => g[D]
|
|
734
|
-
), v =
|
|
734
|
+
), v = Nt(
|
|
735
735
|
n.attributes?.dataSet || [],
|
|
736
736
|
t[0].attributes?.filter((D) => D != null) || []
|
|
737
|
-
), w =
|
|
737
|
+
), w = lt(
|
|
738
738
|
e,
|
|
739
739
|
m
|
|
740
|
-
), I = o.map((D,
|
|
741
|
-
const H = w[D.id],
|
|
740
|
+
), I = o.map((D, Te) => {
|
|
741
|
+
const H = w[D.id], Re = mt(
|
|
742
742
|
D,
|
|
743
|
-
H.values[
|
|
743
|
+
H.values[Te]
|
|
744
744
|
);
|
|
745
745
|
return {
|
|
746
746
|
attribute: D,
|
|
747
|
-
dimensionGroupValue:
|
|
747
|
+
dimensionGroupValue: Re,
|
|
748
748
|
dimensionGroupData: H
|
|
749
749
|
};
|
|
750
750
|
});
|
|
@@ -758,7 +758,7 @@ const re = "/api/download", Dt = 6e4, At = /[\x00-\x1F\x7F<>:"/\\|?*]/g, pe = (e
|
|
|
758
758
|
});
|
|
759
759
|
}
|
|
760
760
|
return a;
|
|
761
|
-
},
|
|
761
|
+
}, It = (e, t) => {
|
|
762
762
|
const n = e.split(new RegExp("(?<!\\|):(?!\\||$)")), s = [];
|
|
763
763
|
for (let r = 0; r < n.length; r++) {
|
|
764
764
|
const o = t?.[r], i = Number(n[r]);
|
|
@@ -772,33 +772,33 @@ const re = "/api/download", Dt = 6e4, At = /[\x00-\x1F\x7F<>:"/\\|?*]/g, pe = (e
|
|
|
772
772
|
s.push(c?.id || c?.value || "");
|
|
773
773
|
}
|
|
774
774
|
return {
|
|
775
|
-
name:
|
|
775
|
+
name: _t(s),
|
|
776
776
|
parsedTimeSeriesValue: s
|
|
777
777
|
};
|
|
778
|
-
},
|
|
778
|
+
}, _ = (e, t) => {
|
|
779
779
|
const n = [];
|
|
780
780
|
for (let s = 0; s < e.length; s++) {
|
|
781
|
-
const r = e[s], o = t(s), i = o != null && r.values != null ?
|
|
781
|
+
const r = e[s], o = t(s), i = o != null && r.values != null ? bt(o, r) : void 0;
|
|
782
782
|
n.push({
|
|
783
783
|
name: r.id,
|
|
784
784
|
value: i
|
|
785
785
|
});
|
|
786
786
|
}
|
|
787
787
|
return n;
|
|
788
|
-
},
|
|
788
|
+
}, bt = (e, t) => {
|
|
789
789
|
const n = t.values[e];
|
|
790
790
|
return n == null ? typeof e == "object" ? e : e.toString() : n?.id || n?.value || n?.ids || n?.values;
|
|
791
|
-
},
|
|
791
|
+
}, _t = (e) => e.map((t) => t ? $t(t) : "").join("."), $t = (e) => e.replace(/\./g, "|.").replace(/:/g, "|:"), Pt = (e, t) => {
|
|
792
792
|
const n = t.measures?.observation?.length;
|
|
793
793
|
if (e.observations == null)
|
|
794
794
|
return [
|
|
795
795
|
{
|
|
796
796
|
values: ie(e, t.measures),
|
|
797
|
-
obsAttributes:
|
|
797
|
+
obsAttributes: _(
|
|
798
798
|
t.attributes?.observation || [],
|
|
799
799
|
(i) => e[i + n]
|
|
800
800
|
),
|
|
801
|
-
dimensionAtObservation:
|
|
801
|
+
dimensionAtObservation: wt
|
|
802
802
|
}
|
|
803
803
|
];
|
|
804
804
|
const s = e.observations, r = t.dimensions.observation?.[0], o = [];
|
|
@@ -810,43 +810,43 @@ const re = "/api/download", Dt = 6e4, At = /[\x00-\x1F\x7F<>:"/\\|?*]/g, pe = (e
|
|
|
810
810
|
s[i],
|
|
811
811
|
t.measures
|
|
812
812
|
),
|
|
813
|
-
obsAttributes:
|
|
813
|
+
obsAttributes: _(
|
|
814
814
|
t.attributes?.observation || [],
|
|
815
815
|
(a) => s[i][a + n]
|
|
816
816
|
)
|
|
817
817
|
});
|
|
818
818
|
}
|
|
819
819
|
return o;
|
|
820
|
-
}, ie = (e, t) => t?.observation?.map((n, s) => ({ name: n.id, value: e[s] })) || [],
|
|
820
|
+
}, ie = (e, t) => t?.observation?.map((n, s) => ({ name: n.id, value: e[s] })) || [], Nt = (e, t) => e.reduce(
|
|
821
821
|
(n, s, r) => {
|
|
822
822
|
const o = t[r];
|
|
823
|
-
return
|
|
823
|
+
return Mt(n, s, o, ""), n;
|
|
824
824
|
},
|
|
825
825
|
[]
|
|
826
|
-
),
|
|
826
|
+
), Mt = (e, t, n, s) => {
|
|
827
827
|
const r = n != null ? t?.values?.length > 0 ? t.values[n]?.id || t.values[n]?.value : String(n) : s;
|
|
828
828
|
e.push({
|
|
829
829
|
name: t.id,
|
|
830
830
|
value: r || ""
|
|
831
831
|
});
|
|
832
|
-
},
|
|
832
|
+
}, Lt = /^[0-9][0-9][0-9][0-9]-Q[1-4]$/, Ut = /^[0-9][0-9][0-9][0-9]-W(0[1-9]|[1-4][0-9]|5[0-3])$/, Ot = /^[0-9][0-9][0-9][0-9]-S[1-2]$/, Ct = /^[0-9][0-9][0-9][0-9]$/, xt = /^[0-9][0-9][0-9][0-9]-(0[1-9]|1[0-2])-[0-9][0-9]$/, Yt = /^[0-9][0-9][0-9][0-9]-M(0[1-9]|(1[0-2]))$/, W = (e) => Ct.exec(e), k = (e) => !!W(e), Vt = (e) => Ot.exec(e), q = (e) => !!Vt(e), Q = (e) => Yt.exec(e), F = (e) => !!Q(e), B = (e) => Lt.exec(e), G = (e) => !!B(e), Wt = (e) => xt.exec(e), kt = (e) => !!Wt(e), qt = (e) => Ut.exec(e), K = (e) => !!qt(e);
|
|
833
833
|
function Ee(e) {
|
|
834
|
-
return k(e) ?
|
|
834
|
+
return k(e) ? Qt(e) : q(e) ? Bt(e) : G(e) ? Kt(e) : F(e) ? jt(e) : K(e) ? Et(e) : Jt(e);
|
|
835
835
|
}
|
|
836
836
|
function De(e) {
|
|
837
|
-
return k(e) ?
|
|
837
|
+
return k(e) ? Ft(e) : q(e) ? Gt(e) : G(e) ? Ht(e) : F(e) ? zt(e) : K(e) ? Dt(e) : Xt(e);
|
|
838
838
|
}
|
|
839
|
-
function
|
|
839
|
+
function Qt(e) {
|
|
840
840
|
const t = W(e);
|
|
841
841
|
if (t)
|
|
842
842
|
return new Date(Number(t[0]), 0, 1);
|
|
843
843
|
}
|
|
844
|
-
function
|
|
844
|
+
function Ft(e) {
|
|
845
845
|
const t = W(e);
|
|
846
846
|
if (t)
|
|
847
847
|
return new Date(Number(t[0]) + 1, 0, 1);
|
|
848
848
|
}
|
|
849
|
-
function
|
|
849
|
+
function Bt(e) {
|
|
850
850
|
const [t, n] = e.split("-S");
|
|
851
851
|
switch (+n) {
|
|
852
852
|
case 1:
|
|
@@ -855,7 +855,7 @@ function Ft(e) {
|
|
|
855
855
|
return new Date(+t, 6, 1);
|
|
856
856
|
}
|
|
857
857
|
}
|
|
858
|
-
function
|
|
858
|
+
function Gt(e) {
|
|
859
859
|
const [t, n] = e.split("-S");
|
|
860
860
|
switch (+n) {
|
|
861
861
|
case 1:
|
|
@@ -864,7 +864,7 @@ function Bt(e) {
|
|
|
864
864
|
return new Date(+t + 1, 0, 1);
|
|
865
865
|
}
|
|
866
866
|
}
|
|
867
|
-
function
|
|
867
|
+
function Kt(e) {
|
|
868
868
|
const t = B(e);
|
|
869
869
|
if (!t)
|
|
870
870
|
return;
|
|
@@ -880,7 +880,7 @@ function Gt(e) {
|
|
|
880
880
|
return new Date(+n, 9, 1);
|
|
881
881
|
}
|
|
882
882
|
}
|
|
883
|
-
function
|
|
883
|
+
function Ht(e) {
|
|
884
884
|
const t = B(e);
|
|
885
885
|
if (!t)
|
|
886
886
|
return;
|
|
@@ -896,44 +896,44 @@ function Kt(e) {
|
|
|
896
896
|
return new Date(+n + 1, 0, 1);
|
|
897
897
|
}
|
|
898
898
|
}
|
|
899
|
-
function
|
|
899
|
+
function jt(e) {
|
|
900
900
|
const t = Q(e);
|
|
901
901
|
if (!t)
|
|
902
902
|
return;
|
|
903
903
|
const [n, s] = t[0].split("-M");
|
|
904
904
|
return new Date(+n, +s - 1, 1);
|
|
905
905
|
}
|
|
906
|
-
function
|
|
906
|
+
function zt(e) {
|
|
907
907
|
const t = Q(e);
|
|
908
908
|
if (!t)
|
|
909
909
|
return;
|
|
910
910
|
const [n, s] = t[0].split("-M");
|
|
911
911
|
return new Date(+n, +s, 1);
|
|
912
912
|
}
|
|
913
|
-
const
|
|
913
|
+
const Jt = (e) => /* @__PURE__ */ new Date(`${e}T00:00:00`), Xt = (e) => {
|
|
914
914
|
const t = /* @__PURE__ */ new Date(`${e}T23:59:00`);
|
|
915
915
|
return t.setMinutes(t.getMinutes() + 1), t;
|
|
916
|
-
},
|
|
917
|
-
const o = [], i = t && t > 3 ?
|
|
916
|
+
}, Zt = 1, en = (e, t, n, s = !0, r = "Q") => {
|
|
917
|
+
const o = [], i = t && t > 3 ? cn(t, s) : 1, c = n ? Math.floor((n - 1) / 3) : 4;
|
|
918
918
|
for (let a = i; a <= c; a++)
|
|
919
919
|
o.push(`${e}-${r}${a}`);
|
|
920
920
|
return o;
|
|
921
|
-
},
|
|
921
|
+
}, tn = (e, t, n, s = "S") => {
|
|
922
922
|
const r = [];
|
|
923
923
|
return (t || 1) < 7 && (n || 12) > 6 && r.push(`${e}-${s}1`), n == null && r.push(`${e}-${s}2`), r;
|
|
924
|
-
}, qn = (e) => Math.ceil(e / 3), Ae = (e, t, n = "M") => `${e}-${n}${t.toString().padStart(2, "0")}`,
|
|
924
|
+
}, qn = (e) => Math.ceil(e / 3), Ae = (e, t, n = "M") => `${e}-${n}${t.toString().padStart(2, "0")}`, nn = (e, t, n = "M") => {
|
|
925
925
|
const s = [];
|
|
926
926
|
for (let r = t; r <= 12; r++)
|
|
927
927
|
s.push(Ae(e, r, n));
|
|
928
928
|
return s;
|
|
929
|
-
},
|
|
929
|
+
}, sn = (e, t, n, s = "M") => {
|
|
930
930
|
const r = [];
|
|
931
931
|
for (let o = t; o < n; o++)
|
|
932
932
|
r.push(Ae(e, o, s));
|
|
933
933
|
return r;
|
|
934
|
-
},
|
|
934
|
+
}, rn = (e, t, n, s = "M") => {
|
|
935
935
|
const r = t || 1, o = n == null, i = n || 12;
|
|
936
|
-
return o ?
|
|
936
|
+
return o ? nn(e, r, s) : sn(e, r, i, s);
|
|
937
937
|
}, Qn = (e, t, n = "M") => {
|
|
938
938
|
switch (t) {
|
|
939
939
|
case 0:
|
|
@@ -963,29 +963,29 @@ const zt = (e) => /* @__PURE__ */ new Date(`${e}T00:00:00`), Jt = (e) => {
|
|
|
963
963
|
default:
|
|
964
964
|
return [];
|
|
965
965
|
}
|
|
966
|
-
},
|
|
967
|
-
const n = p(t, !0), s = p(e), r = n.getFullYear(), o = s.getFullYear(), i = n.getTime() <= s.getTime() ? o +
|
|
966
|
+
}, on = (e, t) => {
|
|
967
|
+
const n = p(t, !0), s = p(e), r = n.getFullYear(), o = s.getFullYear(), i = n.getTime() <= s.getTime() ? o + Zt - r : 0;
|
|
968
968
|
return Array.from({ length: i }, (a, d) => r + d);
|
|
969
969
|
}, p = (e, t = !1) => {
|
|
970
|
-
const n =
|
|
970
|
+
const n = an(e, t);
|
|
971
971
|
return n ? (n.getTimezoneOffset() > 0 && n.setMinutes(n.getMinutes() + n.getTimezoneOffset()), n) : /* @__PURE__ */ new Date();
|
|
972
|
-
},
|
|
972
|
+
}, an = (e, t = !1) => {
|
|
973
973
|
const n = Number(e);
|
|
974
974
|
return e.toString().length !== 13 ? t ? Ee(e) : De(e) : isNaN(n) ? /* @__PURE__ */ new Date(`${e}T00:00:00.000Z`) : new Date(n);
|
|
975
|
-
},
|
|
975
|
+
}, cn = (e, t) => t ? Math.floor((e + 1) / 3) : Math.ceil((e + 1) / 3), Fn = (e, t) => {
|
|
976
976
|
const n = ce(e) - ce(t);
|
|
977
977
|
if (n === 0 && e !== t) {
|
|
978
978
|
const s = ae(e), r = ae(t);
|
|
979
979
|
return s - r;
|
|
980
980
|
}
|
|
981
981
|
return n;
|
|
982
|
-
}, ae = (e) => k(e) ? 6 : q(e) ? 5 : G(e) ? 4 : F(e) ? 3 : K(e) ? 2 :
|
|
982
|
+
}, ae = (e) => k(e) ? 6 : q(e) ? 5 : G(e) ? 4 : F(e) ? 3 : K(e) ? 2 : kt(e) ? 1 : 0, ce = (e, t = !1) => (t ? Ee(e) : De(e))?.getTime() || 0, ye = (e, t, n) => {
|
|
983
983
|
const s = p(t, !0), r = p(n), o = p(e, !0), i = p(e), c = s.getTime() > o.getTime() ? s : o, a = r.getTime() < i.getTime() ? r : i;
|
|
984
984
|
return {
|
|
985
985
|
start: c,
|
|
986
986
|
end: a
|
|
987
987
|
};
|
|
988
|
-
},
|
|
988
|
+
}, un = (e, t, n, s = "W") => {
|
|
989
989
|
const r = +e, { start: o, end: i } = ye(e, t, n);
|
|
990
990
|
if (o.getTime() > i.getTime())
|
|
991
991
|
return [];
|
|
@@ -994,10 +994,10 @@ const zt = (e) => /* @__PURE__ */ new Date(`${e}T00:00:00`), Jt = (e) => {
|
|
|
994
994
|
for (let m = a; m <= u; m++)
|
|
995
995
|
l.push(he(r, m, s));
|
|
996
996
|
return l;
|
|
997
|
-
},
|
|
997
|
+
}, dn = (e) => {
|
|
998
998
|
const t = new Date(e);
|
|
999
999
|
return t.setMinutes(t.getMinutes() - t.getTimezoneOffset()), t.toISOString().slice(0, 10);
|
|
1000
|
-
},
|
|
1000
|
+
}, ln = (e, t, n) => {
|
|
1001
1001
|
const { start: s, end: r } = ye(e, t, n);
|
|
1002
1002
|
if (s.getTime() > r.getTime())
|
|
1003
1003
|
return [];
|
|
@@ -1007,11 +1007,11 @@ const zt = (e) => /* @__PURE__ */ new Date(`${e}T00:00:00`), Jt = (e) => {
|
|
|
1007
1007
|
s.getDate()
|
|
1008
1008
|
), c = new Date(r.getFullYear(), r.getMonth(), r.getDate());
|
|
1009
1009
|
for (; i.getTime() < c.getTime(); ) {
|
|
1010
|
-
const a =
|
|
1010
|
+
const a = dn(i);
|
|
1011
1011
|
o.push(a), i.setDate(i.getDate() + 1);
|
|
1012
1012
|
}
|
|
1013
1013
|
return o;
|
|
1014
|
-
},
|
|
1014
|
+
}, mn = (e) => ({
|
|
1015
1015
|
isDailyExist: !!e?.some(({ memberValue: t }) => t === "D"),
|
|
1016
1016
|
isWeeklyExist: !!e?.some(({ memberValue: t }) => t === "W"),
|
|
1017
1017
|
isMonthlyExist: !!e?.some(({ memberValue: t }) => t === "M"),
|
|
@@ -1020,15 +1020,15 @@ const zt = (e) => /* @__PURE__ */ new Date(`${e}T00:00:00`), Jt = (e) => {
|
|
|
1020
1020
|
isYearlyExist: !!e?.some(
|
|
1021
1021
|
({ memberValue: t }) => t === "A" || t === "Y"
|
|
1022
1022
|
)
|
|
1023
|
-
}),
|
|
1023
|
+
}), fn = (e, t, n, s) => {
|
|
1024
1024
|
const r = s === 0 ? p(t.toString(), !0)?.getMonth() + 1 : void 0, o = s === e.length - 1 ? p(n.toString())?.getMonth() + 1 || 1 : void 0;
|
|
1025
1025
|
return { startMonth: r, endMonth: o };
|
|
1026
|
-
},
|
|
1026
|
+
}, gn = ["FREQUENCY", "FREQ"], Bn = (e, t) => {
|
|
1027
1027
|
const n = e?.[0]?.cubeRegions?.[0]?.memberSelection?.find(
|
|
1028
|
-
(a) =>
|
|
1029
|
-
)?.selectionValues, s =
|
|
1028
|
+
(a) => gn.includes(a.componentId)
|
|
1029
|
+
)?.selectionValues, s = mn(n || []), r = t?.startPeriod?.getTime() || 1, o = t?.endPeriod?.getTime() || 1, i = on(o, r), c = [];
|
|
1030
1030
|
return i.forEach((a, d) => {
|
|
1031
|
-
const u = [], { startMonth: l, endMonth: m } =
|
|
1031
|
+
const u = [], { startMonth: l, endMonth: m } = fn(
|
|
1032
1032
|
i,
|
|
1033
1033
|
new Date(r),
|
|
1034
1034
|
new Date(o),
|
|
@@ -1041,28 +1041,34 @@ const zt = (e) => /* @__PURE__ */ new Date(`${e}T00:00:00`), Jt = (e) => {
|
|
|
1041
1041
|
isSemiAnnualExist: w,
|
|
1042
1042
|
isYearlyExist: I
|
|
1043
1043
|
} = s;
|
|
1044
|
-
I && u.push(a.toString()), w && u.push(...
|
|
1045
|
-
...
|
|
1046
|
-
), E && u.push(...
|
|
1047
|
-
...
|
|
1044
|
+
I && u.push(a.toString()), w && u.push(...tn(a, l, m)), v && u.push(
|
|
1045
|
+
...en(a, l, m, !1)
|
|
1046
|
+
), E && u.push(...rn(a, l, m)), g && u.push(
|
|
1047
|
+
...un(a, r.toString(), o.toString())
|
|
1048
1048
|
), f && u.push(
|
|
1049
|
-
...
|
|
1049
|
+
...ln(a, r.toString(), o.toString())
|
|
1050
1050
|
), c.push(...u);
|
|
1051
1051
|
}), c;
|
|
1052
1052
|
};
|
|
1053
|
-
function
|
|
1053
|
+
function ve(e) {
|
|
1054
1054
|
const { urn: t } = e.details;
|
|
1055
|
-
return
|
|
1055
|
+
return P(t.resourceId, t.version, t.agencyId);
|
|
1056
1056
|
}
|
|
1057
1057
|
function Gn(e) {
|
|
1058
1058
|
const t = {};
|
|
1059
1059
|
for (const n of e.datasets) {
|
|
1060
|
-
const s = n.dataset, r =
|
|
1060
|
+
const s = n.dataset, r = ve(s);
|
|
1061
1061
|
t[r] = s.details.dimensions;
|
|
1062
1062
|
}
|
|
1063
1063
|
return t;
|
|
1064
1064
|
}
|
|
1065
1065
|
function Kn(e) {
|
|
1066
|
+
const t = {};
|
|
1067
|
+
for (const n of e.datasets)
|
|
1068
|
+
n.last_updated_at && (t[ve(n.dataset)] = n.last_updated_at);
|
|
1069
|
+
return t;
|
|
1070
|
+
}
|
|
1071
|
+
function Hn(e) {
|
|
1066
1072
|
return e?.codelists?.length ? e.codelists.map((t) => ({
|
|
1067
1073
|
id: t.id,
|
|
1068
1074
|
agencyID: t.agencyID ?? "",
|
|
@@ -1094,39 +1100,39 @@ function hn(e, t) {
|
|
|
1094
1100
|
};
|
|
1095
1101
|
return n(e) === n(t);
|
|
1096
1102
|
}
|
|
1097
|
-
function
|
|
1098
|
-
return
|
|
1103
|
+
function $(e) {
|
|
1104
|
+
return P(
|
|
1099
1105
|
e.id,
|
|
1100
1106
|
e.version ?? "",
|
|
1101
1107
|
e.agencyID ?? ""
|
|
1102
1108
|
);
|
|
1103
1109
|
}
|
|
1104
|
-
function
|
|
1110
|
+
function Se(e, t, n) {
|
|
1105
1111
|
t?.forEach((s) => {
|
|
1106
|
-
const { childId: r, agency: o, id: i, version: c } = ue(s.code), a =
|
|
1107
|
-
(l) => hn(a,
|
|
1112
|
+
const { childId: r, agency: o, id: i, version: c } = ue(s.code), a = P(i, c, o), d = n?.find(
|
|
1113
|
+
(l) => hn(a, $(l))
|
|
1108
1114
|
), u = d?.codes?.find((l) => l.id === r);
|
|
1109
1115
|
if (u != null) {
|
|
1110
1116
|
const l = s.code.replace(
|
|
1111
1117
|
a,
|
|
1112
|
-
|
|
1118
|
+
$(d)
|
|
1113
1119
|
);
|
|
1114
1120
|
e.push({ ...u, code: l });
|
|
1115
1121
|
}
|
|
1116
|
-
|
|
1122
|
+
Se(e, s.hierarchicalCodes, n);
|
|
1117
1123
|
});
|
|
1118
1124
|
}
|
|
1119
|
-
function
|
|
1125
|
+
function jn(e, t) {
|
|
1120
1126
|
const n = [];
|
|
1121
|
-
return
|
|
1127
|
+
return Se(n, e?.hierarchicalCodes, t), n;
|
|
1122
1128
|
}
|
|
1123
|
-
function
|
|
1129
|
+
function zn(e) {
|
|
1124
1130
|
const t = {};
|
|
1125
1131
|
return e?.forEach((n) => {
|
|
1126
|
-
t[
|
|
1132
|
+
t[$(n)] = n.codes;
|
|
1127
1133
|
}), t;
|
|
1128
1134
|
}
|
|
1129
|
-
function
|
|
1135
|
+
function Jn(e, t, n) {
|
|
1130
1136
|
if (!n || n.length === 0 || !t)
|
|
1131
1137
|
return e;
|
|
1132
1138
|
const s = n[0].cubeRegions?.find(
|
|
@@ -1140,7 +1146,7 @@ function zn(e, t, n) {
|
|
|
1140
1146
|
const o = new Set(r.selectionValues.map((i) => i.memberValue));
|
|
1141
1147
|
return e.filter((i) => o.has(i.id));
|
|
1142
1148
|
}
|
|
1143
|
-
class
|
|
1149
|
+
class Xn {
|
|
1144
1150
|
constructor(t) {
|
|
1145
1151
|
this.client = t;
|
|
1146
1152
|
}
|
|
@@ -1165,24 +1171,24 @@ class Jn {
|
|
|
1165
1171
|
}
|
|
1166
1172
|
export {
|
|
1167
1173
|
M as Annotations,
|
|
1168
|
-
|
|
1174
|
+
gt as AssignmentStatus,
|
|
1169
1175
|
yn as AvailabilityApi,
|
|
1170
|
-
|
|
1176
|
+
ke as DATASET_DATA_URL,
|
|
1171
1177
|
Sn as DatasetApi,
|
|
1172
1178
|
C as DimensionType,
|
|
1173
|
-
|
|
1179
|
+
xe as DownloadType,
|
|
1174
1180
|
wn as FREQUENCY_DIMENSION_ID,
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1181
|
+
gn as FREQUENCY_DIM_ID,
|
|
1182
|
+
Ce as FileColumnsAttribute,
|
|
1183
|
+
Fe as GET_v3_FILTER_ALL,
|
|
1178
1184
|
vn as GET_v3_FILTER_AND,
|
|
1179
1185
|
me as GET_v3_FILTER_OR,
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
+
Xn as HierarchyApi,
|
|
1187
|
+
wt as OBSERVATION_KEY,
|
|
1188
|
+
ht as OccurrenceType,
|
|
1189
|
+
je as Periods,
|
|
1190
|
+
He as RepresentationTextType,
|
|
1191
|
+
Ke as SDMX_DATA_QUERY_PARAMS,
|
|
1186
1192
|
b as SINGLE_WILDCARD_SYMBOL,
|
|
1187
1193
|
Tn as SdmxApiClient,
|
|
1188
1194
|
de as SdmxAvailabilityMode,
|
|
@@ -1190,97 +1196,98 @@ export {
|
|
|
1190
1196
|
le as SdmxDetails,
|
|
1191
1197
|
N as SdmxReferences,
|
|
1192
1198
|
h as SeriesFilterOperator,
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1199
|
+
ze as TIME_PERIOD,
|
|
1200
|
+
Xe as TIME_PERIOD_END_ANNOTATION_KEY,
|
|
1201
|
+
Je as TIME_PERIOD_START_ANNOTATION_KEY,
|
|
1196
1202
|
Gn as buildDatasetDimensionsMetadataMap,
|
|
1197
|
-
|
|
1203
|
+
Kn as buildDatasetLastUpdatedMap,
|
|
1204
|
+
xt as dailyPattern,
|
|
1198
1205
|
$t as decodeDimensionId,
|
|
1199
|
-
|
|
1206
|
+
$n as findCodelistByDimension,
|
|
1200
1207
|
ee as generateDatasetDataRequest,
|
|
1201
|
-
|
|
1208
|
+
P as generateShortUrn,
|
|
1202
1209
|
Bn as getAdditionalColumns,
|
|
1203
1210
|
In as getAnnotationPeriod,
|
|
1204
1211
|
U as getArtifactByUrnWithWildCard,
|
|
1205
|
-
|
|
1206
|
-
|
|
1212
|
+
Pn as getAttachedDimensionsSeriesByDimension,
|
|
1213
|
+
lt as getAttachedDimensionsSeriesByTsId,
|
|
1207
1214
|
ge as getAttachedDimensionsSeriesKey,
|
|
1208
|
-
|
|
1215
|
+
mt as getAttributeValueFromDataQueryResponse,
|
|
1209
1216
|
Nn as getAvailableCodes,
|
|
1210
1217
|
bn as getAvailableCodesFromConstrains,
|
|
1211
1218
|
ue as getChildParsedUrn,
|
|
1212
|
-
|
|
1219
|
+
zn as getCodeListsData,
|
|
1213
1220
|
O as getConcept,
|
|
1214
1221
|
te as getConceptByUrn,
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1222
|
+
ut as getConceptWithScheme,
|
|
1223
|
+
ft as getConvertedMetaAttributes,
|
|
1224
|
+
Wt as getDailyRegExp,
|
|
1225
|
+
ln as getDaysColumns,
|
|
1219
1226
|
Mn as getDimensionTitle,
|
|
1220
1227
|
ne as getDimensions,
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1228
|
+
Ge as getFilteredItemsWithParents,
|
|
1229
|
+
rt as getFiltersDtoFromDataQuery,
|
|
1230
|
+
_n as getFiltersDtoMapFromDataQuery,
|
|
1231
|
+
Jn as getHierarchyAvailableCodes,
|
|
1232
|
+
jn as getHierarchyCodes,
|
|
1226
1233
|
R as getISOWeek,
|
|
1227
1234
|
T as getKeyFromUrn,
|
|
1228
1235
|
Rn as getLastUpdatedTime,
|
|
1229
1236
|
se as getLastWeekNumberOfYear,
|
|
1230
1237
|
L as getLocalizedName,
|
|
1231
|
-
|
|
1238
|
+
rn as getMonthlyData,
|
|
1232
1239
|
Qn as getMonthlyDataByQuarter,
|
|
1233
1240
|
Q as getMonthlyRegExp,
|
|
1234
1241
|
De as getParsedEndPeriodDate,
|
|
1235
1242
|
kn as getParsedResponse,
|
|
1236
1243
|
Ee as getParsedStartPeriodDate,
|
|
1237
1244
|
p as getPeriodDate,
|
|
1238
|
-
|
|
1245
|
+
mn as getPeriods,
|
|
1239
1246
|
qn as getQuarterByMonth,
|
|
1240
1247
|
B as getQuarterlyRegExp,
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1248
|
+
en as getQuartersData,
|
|
1249
|
+
Tt as getQueryTimePeriodFilters,
|
|
1250
|
+
Ye as getRequestAcceptHeader,
|
|
1251
|
+
ot as getResolvedVersionBySingleWildcard,
|
|
1252
|
+
Ve as getResponseContentType,
|
|
1253
|
+
tn as getSemiAnnualData,
|
|
1254
|
+
Vt as getSemiAnnuallyRegExp,
|
|
1255
|
+
_ as getSeriesAttributes,
|
|
1256
|
+
It as getSeriesName,
|
|
1250
1257
|
Cn as getStructureComponentsMap,
|
|
1251
1258
|
Ln as getStructureDimensions,
|
|
1252
1259
|
On as getTimeDimension,
|
|
1253
1260
|
Un as getTimePeriods,
|
|
1254
1261
|
Wn as getTimeQueryFilter,
|
|
1255
|
-
|
|
1262
|
+
Rt as getTimeRangeFromAttachment,
|
|
1256
1263
|
xn as getTimeSeriesCount,
|
|
1257
1264
|
Vn as getTimeSeriesFilterKey,
|
|
1258
|
-
|
|
1265
|
+
_t as getTimeSeriesId,
|
|
1259
1266
|
he as getWeekCode,
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1267
|
+
Dt as getWeeklyPeriodEndDate,
|
|
1268
|
+
Et as getWeeklyPeriodStartDate,
|
|
1269
|
+
qt as getWeeklyRegExp,
|
|
1270
|
+
un as getWeeksColumns,
|
|
1271
|
+
at as getWildCardPrefix,
|
|
1265
1272
|
ye as getYearPeriod,
|
|
1266
1273
|
W as getYearlyRegExp,
|
|
1267
|
-
|
|
1268
|
-
|
|
1274
|
+
on as getYears,
|
|
1275
|
+
kt as isDaily,
|
|
1269
1276
|
F as isMonthly,
|
|
1270
1277
|
G as isQuarterly,
|
|
1271
1278
|
q as isSemiAnnually,
|
|
1272
1279
|
K as isWeekly,
|
|
1273
|
-
|
|
1280
|
+
ct as isWildCardVersionCorrect,
|
|
1274
1281
|
k as isYearly,
|
|
1275
|
-
|
|
1282
|
+
Yt as monthlyPattern,
|
|
1276
1283
|
Yn as openDownloadWindow,
|
|
1277
|
-
|
|
1278
|
-
|
|
1284
|
+
Lt as quarterPattern,
|
|
1285
|
+
Hn as resolveCodelistsFromResponse,
|
|
1279
1286
|
pe as sanitizeDownloadFilename,
|
|
1280
|
-
|
|
1287
|
+
Ot as semiAnnuallyPattern,
|
|
1281
1288
|
Fn as sortPeriods,
|
|
1282
1289
|
y as splitUrn,
|
|
1283
1290
|
hn as urnMatchesIgnoreVersion,
|
|
1284
|
-
|
|
1285
|
-
|
|
1291
|
+
Ut as weeklyPattern,
|
|
1292
|
+
Ct as yearlyPattern
|
|
1286
1293
|
};
|
|
@@ -3,6 +3,7 @@ export interface DeploymentDatasetsResponseData {
|
|
|
3
3
|
}
|
|
4
4
|
export interface ChannelDataset {
|
|
5
5
|
dataset: Dataset;
|
|
6
|
+
last_updated_at?: string | null;
|
|
6
7
|
}
|
|
7
8
|
export interface Dataset {
|
|
8
9
|
details: DatasetDetails;
|
|
@@ -32,3 +33,4 @@ export interface DimensionAllValues {
|
|
|
32
33
|
export type ShortUrn = string;
|
|
33
34
|
export type DimensionKey = string;
|
|
34
35
|
export type DatasetDimensionsMetadataMap = Record<ShortUrn, Record<DimensionKey, DimensionConfig>>;
|
|
36
|
+
export type DatasetLastUpdatedMap = Record<ShortUrn, string>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@epam/statgpt-sdmx-toolkit",
|
|
3
|
-
"version": "0.7.0-dev.
|
|
3
|
+
"version": "0.7.0-dev.20",
|
|
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.7.0-dev.
|
|
18
|
-
"@epam/statgpt-shared-toolkit": "0.7.0-dev.
|
|
17
|
+
"@epam/statgpt-dial-toolkit": "0.7.0-dev.20",
|
|
18
|
+
"@epam/statgpt-shared-toolkit": "0.7.0-dev.20"
|
|
19
19
|
},
|
|
20
20
|
"peerDependencies": {
|
|
21
21
|
"compare-versions": "^6.1.1",
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
import { DeploymentDatasetsResponseData, DatasetDimensionsMetadataMap } from '../models';
|
|
1
|
+
import { DeploymentDatasetsResponseData, DatasetDimensionsMetadataMap, DatasetLastUpdatedMap } from '../models';
|
|
2
2
|
export declare function buildDatasetDimensionsMetadataMap(data: DeploymentDatasetsResponseData): DatasetDimensionsMetadataMap;
|
|
3
|
+
export declare function buildDatasetLastUpdatedMap(data: DeploymentDatasetsResponseData): DatasetLastUpdatedMap;
|