1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 |
|
7 | var _extends2 = require('babel-runtime/helpers/extends');
|
8 |
|
9 | var _extends3 = _interopRequireDefault(_extends2);
|
10 |
|
11 | var _keys = require('babel-runtime/core-js/object/keys');
|
12 |
|
13 | var _keys2 = _interopRequireDefault(_keys);
|
14 |
|
15 | exports.default = serializeParamsToUrl;
|
16 |
|
17 | var _omit = require('lodash/omit');
|
18 |
|
19 | var _omit2 = _interopRequireDefault(_omit);
|
20 |
|
21 | var _queryString = require('query-string');
|
22 |
|
23 | var _queryString2 = _interopRequireDefault(_queryString);
|
24 |
|
25 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
26 |
|
27 |
|
28 | var rxClean = /(\/\(:[^\/]+\)|\/:[^\/]+)/g;
|
29 |
|
30 | function 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 |
|
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 |