UNPKG

1.57 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6
7var _extends2 = require('babel-runtime/helpers/extends');
8
9var _extends3 = _interopRequireDefault(_extends2);
10
11var _keys = require('babel-runtime/core-js/object/keys');
12
13var _keys2 = _interopRequireDefault(_keys);
14
15exports.default = serializeParamsToUrl;
16
17var _omit = require('lodash/omit');
18
19var _omit2 = _interopRequireDefault(_omit);
20
21var _queryString = require('query-string');
22
23var _queryString2 = _interopRequireDefault(_queryString);
24
25function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
26
27/** Created by hhj on 2/15/16. */
28var rxClean = /(\/\(:[^\/]+\)|\/:[^\/]+)/g;
29
30function serializeParamsToUrl(urlTemplate) {
31 var params = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
32
33 var usedKeys = [];
34 var urlWithParams = (0, _keys2.default)(params).reduce(function (url, key) {
35 return url.replace(new RegExp('(\\(:' + key + '\\)|:' + key + ')', 'g'), function () {
36 usedKeys.push(key);
37 return params[key];
38 });
39 }, urlTemplate);
40 // remove unused params from template
41 urlWithParams = urlWithParams.replace(rxClean, '');
42 if (usedKeys.length !== (0, _keys2.default)(params).length) {
43 var urlObject = urlWithParams.split('?');
44 var mergeParams = (0, _extends3.default)({}, urlObject[1] && _queryString2.default.parse(urlObject[1]), (0, _omit2.default)(params, usedKeys));
45 urlWithParams = urlObject[0] + '?' + _queryString2.default.stringify(mergeParams);
46 }
47
48 return urlWithParams;
49}
\No newline at end of file