UNPKG

sdmx-rest

Version:

SDMX REST API client for JavaScript

191 lines (175 loc) 5.66 kB
// Generated by CoffeeScript 2.7.0 (function() { var ContextRefType, DataQuery, FiltersType, NCNameIDType, Sdmx3SeriesKeyType, ValidQuery, createErrorMessage, defaults, expected, isValidComp, isValidDate, isValidFilters, isValidHistory, isValidKey, isValidNObs, isValidPattern, isValidQuery, query, hasProp = {}.hasOwnProperty, indexOf = [].indexOf; ({ContextRefType, Sdmx3SeriesKeyType, NCNameIDType, FiltersType} = require('../utils/sdmx-patterns')); ({isValidPattern, isValidDate, createErrorMessage} = require('../utils/validators')); defaults = { context: '*=*:*(*)', key: '*', history: false, attributes: 'dsd', measures: 'all', filters: [] }; isValidHistory = function(input, errors) { var valid; valid = typeof input === 'boolean'; if (!valid) { errors.push(`${input} is not a valid value for history. Must be true or false`); } return valid; }; isValidNObs = function(input, name, errors) { var valid; valid = typeof input === 'number' && input > 0; if (!valid) { errors.push(`${input} is not a valid value for ${name}. Must be a positive integer`); } return valid; }; isValidComp = function(input, name, errors) { var i, j, len, r, ref, valid; valid = true; if (input.indexOf(",") > -1) { ref = input.split(","); for (j = 0, len = ref.length; j < len; j++) { i = ref[j]; r = isValidPattern(i, NCNameIDType, name, errors); if (!r) { valid = false; } } } else { r = isValidPattern(input, NCNameIDType, name, errors); if (!r) { valid = false; } } return valid; }; isValidKey = function(input, name, errors) { var i, j, len, r, ref, valid; valid = true; if (input.indexOf(",") > -1) { ref = input.split(","); for (j = 0, len = ref.length; j < len; j++) { i = ref[j]; r = isValidPattern(i, Sdmx3SeriesKeyType, name, errors); if (!r) { valid = false; } } } else { r = isValidPattern(input, Sdmx3SeriesKeyType, name, errors); if (!r) { valid = false; } } return valid; }; isValidFilters = function(input, name, errors) { var filter, j, len, r, valid; valid = true; for (j = 0, len = input.length; j < len; j++) { filter = input[j]; r = isValidPattern(filter, FiltersType, name, errors); if (!r) { valid = false; } } return valid; }; ValidQuery = { context: function(i, e) { return isValidPattern(i, ContextRefType, 'context', e); }, key: function(i, e) { return isValidKey(i, 'series key', e); }, updatedAfter: function(i, e) { return !i || isValidDate(i, 'updatedAfter', e); }, firstNObs: function(i, e) { return !i || isValidNObs(i, 'firstNObs', e); }, lastNObs: function(i, e) { return !i || isValidNObs(i, 'lastNObs', e); }, obsDimension: function(i, e) { return !i || isValidPattern(i, NCNameIDType, 'obs dimension', e); }, history: function(i, e) { return isValidHistory(i, e); }, attributes: function(i, e) { return isValidComp(i, 'attributes', e); }, measures: function(i, e) { return isValidComp(i, 'measures', e); }, filters: function(i, e) { return isValidFilters(i, 'filters', e); } }; isValidQuery = function(q) { var errors, isValid, k, v; errors = []; isValid = false; for (k in q) { if (!hasProp.call(q, k)) continue; v = q[k]; isValid = ValidQuery[k](v, errors); if (!isValid) { break; } } return { isValid: isValid, errors: errors }; }; expected = ["context", "key", "updatedAfter", "firstNObs", "lastNObs", "obsDimension", "history", "attributes", "measures", "filters"]; // A query for data, as defined by the SDMX RESTful API. query = DataQuery = class DataQuery { static from(opts) { var attrs, context, filters, input, k, key, measures, ref, ref1, ref2, ref3, ref4, ref5, v; if (opts) { for (k in opts) { if (!hasProp.call(opts, k)) continue; v = opts[k]; if (indexOf.call(expected, k) < 0) { throw Error(createErrorMessage([], 'data query')); } } } context = (ref = opts != null ? opts.context : void 0) != null ? ref : defaults.context; key = (ref1 = opts != null ? opts.key : void 0) != null ? ref1 : defaults.key; attrs = (ref2 = opts != null ? opts.attributes : void 0) != null ? ref2 : defaults.attributes; measures = (ref3 = opts != null ? opts.measures : void 0) != null ? ref3 : defaults.measures; filters = (ref4 = opts != null ? opts.filters : void 0) != null ? ref4 : defaults.filters; if (!Array.isArray(filters)) { filters = [filters]; } query = { context: context, key: key, updatedAfter: opts != null ? opts.updatedAfter : void 0, firstNObs: opts != null ? opts.firstNObs : void 0, lastNObs: opts != null ? opts.lastNObs : void 0, obsDimension: opts != null ? opts.obsDimension : void 0, history: (ref5 = opts != null ? opts.history : void 0) != null ? ref5 : defaults.history, attributes: attrs, measures: measures, filters: filters }; input = isValidQuery(query); if (!input.isValid) { throw Error(createErrorMessage(input.errors, 'data query')); } return query; } }; exports.DataQuery2 = query; }).call(this);