'use strict'; function formatApiLink(...values) { let parts = []; for (let value of values) { if (value.constructor === Object) { // assert this is the last piece let variableParts = []; for (let key of Object.keys(value)) { if (value[key]) { variableParts.push( key + '=' + encodeURIComponent(value[key].toString())); } } if (variableParts.length) { parts.push('?' + variableParts.join('&')); } break; } else { parts.push(encodeURIComponent(value.toString())); } } return '/' + parts.join('/'); } function escapeParam(text) { return encodeURIComponent(text); } function unescapeParam(text) { return decodeURIComponent(text); } function formatClientLink(...values) { let parts = []; for (let value of values) { if (value.constructor === Object) { // assert this is the last piece let variableParts = []; for (let key of Object.keys(value)) { if (value[key]) { variableParts.push( key + '=' + escapeParam(value[key].toString())); } } if (variableParts.length) { parts.push(variableParts.join(';')); } break; } else { parts.push(escapeParam(value.toString())); } } return '/' + parts.join('/'); } module.exports = { formatClientLink: formatClientLink, formatApiLink: formatApiLink, escapeParam: escapeParam, unescapeParam: unescapeParam, };