UNPKG

sdmx-rest

Version:

SDMX REST API client for JavaScript

164 lines (148 loc) 4.91 kB
// Generated by CoffeeScript 2.7.0 (function() { var AvailabilityMode, AvailabilityQuery, AvailabilityReferences, ContextRefType, FiltersType, NestedNCNameIDType, Sdmx3SeriesKeyType, ValidQuery, createErrorMessage, defaults, expected, isValidComp, isValidDate, isValidEnum, isValidFilters, isValidKey, isValidPattern, isValidQuery, query, hasProp = {}.hasOwnProperty, indexOf = [].indexOf; ({AvailabilityMode} = require('./availability-mode')); ({AvailabilityReferences} = require('./availability-references')); ({ContextRefType, Sdmx3SeriesKeyType, NestedNCNameIDType, FiltersType} = require('../utils/sdmx-patterns')); ({isValidEnum, isValidPattern, isValidDate, createErrorMessage} = require('../utils/validators')); defaults = { context: '*=*:*(*)', key: '*', component: '*', filters: [], mode: AvailabilityMode.EXACT, references: AvailabilityReferences.NONE }; 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; }; isValidComp = function(input, name, errors) { var i, j, len, r, ref, valid; valid = true; if (input !== '*') { if (input.indexOf(",") > -1) { ref = input.split(","); for (j = 0, len = ref.length; j < len; j++) { i = ref[j]; r = isValidPattern(i, NestedNCNameIDType, name, errors); if (!r) { valid = false; } } } else { r = isValidPattern(input, NestedNCNameIDType, 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); }, component: function(i, e) { return isValidComp(i, 'component', e); }, updatedAfter: function(i, e) { return !i || isValidDate(i, 'updatedAfter', e); }, filters: function(i, e) { return isValidFilters(i, 'filters', e); }, mode: function(i, e) { return isValidEnum(i, AvailabilityMode, 'mode', e); }, references: function(i, e) { return isValidEnum(i, AvailabilityReferences, 'references', 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", "component", "updatedAfter", "filters", "mode", "references"]; query = AvailabilityQuery = class AvailabilityQuery { static from(opts) { var context, filters, input, k, key, 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([], 'availability 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; filters = (ref2 = opts != null ? opts.filters : void 0) != null ? ref2 : defaults.filters; if (!Array.isArray(filters)) { filters = [filters]; } query = { context: context, key: key, component: (ref3 = opts != null ? opts.component : void 0) != null ? ref3 : defaults.component, updatedAfter: opts != null ? opts.updatedAfter : void 0, filters: filters, mode: (ref4 = opts != null ? opts.mode : void 0) != null ? ref4 : defaults.mode, references: (ref5 = opts != null ? opts.references : void 0) != null ? ref5 : defaults.references }; input = isValidQuery(query); if (!input.isValid) { throw Error(createErrorMessage(input.errors, 'availability query')); } return query; } }; exports.AvailabilityQuery2 = query; }).call(this);