code: function qsStrict(definitions, search) {
    if (!search) {
      return {};
    }
    if (!search.startsWith(SEARCH_FLAG)) {
      throw new Error('E_MALFORMED_SEARCH', search);
    }
    if (search === SEARCH_FLAG) {
      throw new Error('E_EMPTY_SEARCH', search);
    }
  
    const usefulDefinitions = definitions.filter(swaggerInQueryDefinitions);
  
    const params = usefulDefinitions.reduce(pickupQueryParams, {
      queryStringParams: {},
      queryStringPartsLeft: getQueryStringParts(search.slice(1)).map(
        queryStringPart => {
          debug('Looking for "' + queryStringPart.name + '" definitions.');
          if (
            !usefulDefinitions.some(definition => {
              const found = queryStringPart.name === definition.name;
  
              debug('Definition found.', definition);
              return found;
            })
          ) {
            throw new YError('E_UNAUTHORIZED_QUERY_PARAM', queryStringPart.name);
          }
          return queryStringPart;
        },
      ),
    }).queryStringParams;
    debug('Params computed:', params);
    return params;
  }
docs: Parse a queryString according to the provided definitions
  @param  {Array}  definitions Swagger compatible list of defitions
  @param  {string} search      The actual query string to parse
  @return {Object}             The parsed properties
  @example
  
  import qs from 'strict-qs';
  
  const qsDefinition = [{
  name: 'pages',
  in: 'query',
  type: 'array',
  items: {
  type: 'number',
  },
  ordered: true,
  description: 'The pages to print',
  }];
  
  qs(qsDefinition, '?pages=0&pages=1&pages=2');
  // Returns:
  // {
  //  pages: [0, 1, 2], // eslint-disable-line
  // }