-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmodule.mjs
2 lines (2 loc) · 6.15 KB
/
module.mjs
1
2
// jsonstat-euro v2.1.1 Copyright 2023 Xavier Badosa https://jsonstat.com
import e from"jsonstat-toolkit";var t="2.1.1";function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function n(e){var t=e.lang||"en",n=e.version||"1.0",a=e.dataset||null,i=e.filter||null,l=e.label||null,o={class:"query",lang:t,version:n,dataset:a};return i&&"object"===r(i)&&0!==Object.keys(i).length&&(Object.keys(i).forEach((function(e){var t=i[e];Array.isArray(t)||(i[e]=[t]),0===i[e].length&&delete i[e]})),o.filter=i),l&&"object"===r(l)&&0!==Object.keys(l).length&&(o.label=l),o}function a(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function i(e,t,r,i){var l,o=JSON.parse(JSON.stringify(e));if("string"==typeof i&&o.filter.hasOwnProperty("geo")&&-1!==o.filter.geo.indexOf(i)||(i=null),a(o,"filter")){switch(r){case"last":l=function(e){o.filter[e]=o.filter[e].slice(-1)};break;case"middle":l=function(e){var t=Math.round(o.filter[e].length/2);o.filter[e]=o.filter[e].slice(t-1,t)};break;default:l=function(e){o.filter[e]=o.filter[e].slice(0,1)}}Object.keys(o.filter).forEach(l),!0===t&&(delete o.filter.time,o.filter.lastTimePeriod=["1"]),i&&(o.filter.geo=[i])}return a(o,"label")&&a(o.label,"category")&&(Object.keys(o.label.category).forEach((function(e){o.label.category[e]=o.label.category[e].slice(0,1)})),!0===t&&delete o.label.category.time),n(o)}function l(e){var t=JSON.parse(JSON.stringify(e));return a(t,"filter")?(delete t.filter.time,t.filter.lastTimePeriod=["1"]):t.filter={lastTimePeriod:["1"]},n(t)}function o(e,t,r){void 0===r&&(r=Object.keys(t),t=n({dataset:null,filter:t}));var i=JSON.parse(JSON.stringify(e)),l=a(t,"filter"),o=a(t,"label")&&a(t.label,"category");return r.forEach((function(e){l&&a(t.filter,e)&&(a(i,"filter")||(i.filter={}),i.filter[e]=t.filter[e]),o&&a(t.label.category,e)&&(a(i,"label")?a(i.label,"category")||(i.label.category={}):i.label={},i.label.category[e]=t.label.category[e])})),n(i)}function s(e,t){var r=JSON.parse(JSON.stringify(e)),i=a(r,"filter"),l=a(r,"label"),o=l&&a(r.label,"category"),s=l&&a(r.label,"dimension");return t.forEach((function(e){i&&delete r.filter[e],l&&(o&&delete r.label.category[e],s&&delete r.label.dimension[e])})),n(r)}function c(e){return s(e,["time","lastTimePeriod","sinceTimePeriod"])}function f(e){if("string"==typeof e){if(/https?:\/\//i.test(e))return e;e={dataset:e}}if("object"===r(e)&&null!==e&&!Array.isArray(e)&&e.dataset){e=n(e);var t="".concat("https://ec.europa.eu/eurostat/api/dissemination/statistics/").concat(e.version,"/data/").concat(e.dataset,"?lang=").concat(e.lang),a=[],i=e.filter||null;return i&&0!==Object.keys(i).length&&(Object.keys(i).forEach((function(e){i[e].forEach((function(t){a.push("".concat(e,"=").concat(t))}))})),t+="&"+a.join("&")),t}return null}function u(e){e.role={geo:[],time:[],metric:[],classification:[]},e.id.forEach((function(t){switch(e.Dimension(t).role="time"===t||"geo"===t?t:"classification",t){case"geo":case"time":e.role[t].push(t);break;case"unit":case"s_adj":case"indic_co":case"na_item":case"indic":e.role.metric.push(t);break;default:e.role.classification.push(t)}})),e.role.geo.length||delete e.role.geo,e.role.time.length||delete e.role.time,e.role.metric.length||delete e.role.metric,e.role.classification.length||delete e.role.classification}function d(t){if(t)return e(f(t)).then((function(e){return"dataset"===e.class?(u(e),e):e}),(function(e){var t=e.message.slice(0,3),r=isNaN(t)?"418":t;return{class:"error",status:r,label:"418"!==r?e.message.slice(4):e.message}}))}function y(e,t){"string"==typeof e&&(e={dataset:e});var r=!1!==t?l(e):e;return d(r).then((function(e){if("error"===e.class)return e;if(e.error)return{class:"error",status:e.error.status,label:e.error.label};var t={},n={},a={};return e.id.forEach((function(r){var i=e.Dimension(r);n[r]=i.label,t[r]=i.id,a[r]=i.Category().map((function(e){return e.label}))})),{class:"query",dataset:r.dataset,filter:t,label:{dataset:e.label,dimension:n,category:a},lang:r.lang||"en",version:r.version||"1.0"}}))}function b(e,t,r,n){"string"==typeof e&&(e={dataset:e}),"boolean"!=typeof t&&(t=!1),"string"!=typeof r&&(r="first"),"string"!=typeof n&&(n=null);var l=a(e,"filter")?e.filter:null;if(l&&0!==Object.keys(l).length){var c=Object.keys(l);return y(o(e,l),!1).then((function(e){return"error"===e.class?e:y(s(i(e,t,r,n),c),!1).then((function(t){return"error"===t.class?t:o(e,t,c)}))}))}return y(e,!1).then((function(e){return e}))}function g(t,r){function n(e){if(!e.ok)throw new Error(e.status+" "+e.statusText);return e.json()}if(t){if("string"==typeof t){if(/https?:\/\//i.test(t))return new Promise((function(e){e({class:"error",status:400,label:"A URL was passed to fetchEmptyDataset. Only dataset codes and queries are accepted. "})}));t={dataset:t}}return t.filter={time_period:["null"]},fetch(f(t)).then(n).then((function(a){var i=e(a),l=a.id.indexOf("time"),o={};return i.id.forEach((function(e){"time"!==e&&(o[e]=[i.Dimension(e).id[0]])})),a.value=[],t.filter=o,fetch(f(t)).then(n).then((function(t){if(a.size[l]=t.size[l],a.dimension.time.category=t.dimension.time.category,r){var n=e(a);return"dataset"===n.class?(u(n),n):n}return a}))}),(function(e){var t=e.message.slice(0,3),r=isNaN(t)?"418":t;return{class:"error",status:r,label:"418"!==r?e.message.slice(4):e.message}}))}}function m(e,t){return e.extension.status.label[t]}function h(t){var r=a(t,"lang")?t.lang:"en",n=a(t,"dataset")?t.dataset:null,i={lang:r.toUpperCase(),datasetId:n},l=Object.keys(t.filter),o=l.map((function(e){return t.filter[e].length})),s={};l.forEach((function(e){s[e]={label:t.label.dimension[e],category:{index:t.filter[e],label:{}}},t.filter[e].forEach((function(r,n){Object.defineProperty(s[e].category.label,r,{value:t.label.category[e][n]})}))}));var c={version:"2.0",class:"dataset",label:t.label.dataset,extension:i,id:l,size:o,dimension:s,value:[]},f=e(c);return u(f),f}export{o as addParamQuery,d as fetchDataset,g as fetchEmptyDataset,b as fetchFullQuery,y as fetchQuery,h as getEmptyDataset,m as getStatusLabel,f as getURL,l as lastPeriodQuery,s as removeParamQuery,c as removeTimeQuery,u as setRole,i as simpleQuery,t as version};