UNPKG

kitsu-core

Version:

Simple, lightweight & framework agnostic JSON:API (de)serialsation components

24 lines (21 loc) 1.01 kB
'use strict'; function queryFormat(value, key, traditional) { if (traditional && value !== null && Array.isArray(value)) return value.map(v => queryFormat(v, key, traditional)).join('&'); if (!traditional && value !== null && Array.isArray(value)) return value.map(v => queryFormat(v, `${key}[]`, traditional)).join('&');else if (value !== null && typeof value === 'object') return query(value, key, traditional);else return encodeURIComponent(key) + '=' + encodeURIComponent(value); } function paramKeyName(param) { if (param === null || param === undefined) return ''; if (['[]', ']['].includes(param.slice(-2))) { return `[${param.slice(0, -2)}][]`; } return `[${param}]`; } function query(params, prefix = undefined, traditional = true) { const str = []; for (const param in params) { str.push(queryFormat(params[param], prefix ? `${prefix}${paramKeyName(param)}` : param, traditional)); } return str.join('&'); } exports.paramKeyName = paramKeyName; exports.query = query;