UNPKG

3.28 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.getSegments = getSegments;
7exports.getSegment = getSegment;
8exports.buildParamString = buildParamString;
9exports.buildUrl = buildUrl;
10exports.objectifyParams = void 0;
11
12var _object = require("./object");
13
14function _toArray(arr) { return _arrayWithHoles(arr) || _iterableToArray(arr) || _nonIterableRest(); }
15
16function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); }
17
18function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }
19
20function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
21
22function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
23
24function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
25
26var keys = Object.keys;
27/**
28 * Get the path segments from an absolute path with an optional query.
29 *
30 * @param {string} path
31 * @return {Array}
32 */
33
34function getSegments(path) {
35 var _path$split = path.split('?'),
36 _path$split2 = _slicedToArray(_path$split, 1),
37 pathComponent = _path$split2[0];
38
39 var _pathComponent$split = pathComponent.split('/'),
40 _pathComponent$split2 = _toArray(_pathComponent$split),
41 segments = _pathComponent$split2.slice(1);
42
43 return segments;
44}
45/**
46 * Get the second path segment from an absolute path with an optional query.
47 *
48 * @param {string} path
49 * @return {string}
50 */
51
52
53function getSegment(path) {
54 var _getSegments = getSegments(path),
55 _getSegments2 = _slicedToArray(_getSegments, 2),
56 segment = _getSegments2[1];
57
58 return segment;
59}
60/**
61 * Build a paramString from an the keyValues of an object
62 *
63 * @param {Object} params
64 * @return {string}
65 */
66
67
68function buildParamString(params) {
69 var paramsAsString = keys(params).filter(function (param) {
70 return params[param];
71 }).map(function (param) {
72 return "".concat(param, "=").concat(encodeURIComponent((0, _object.get)(params, param)));
73 }).join('&');
74 var preParam = paramsAsString.length ? '?' : '';
75 return "".concat(preParam).concat(paramsAsString);
76}
77/**
78 * Build a URL from the base url and given params
79 *
80 * @param {string} url
81 * @param {Object} params
82 * @return {string}
83 */
84
85
86function buildUrl(url, params) {
87 return "".concat(url).concat(buildParamString(params));
88}
89/**
90 * @param {string} params
91 * @return {Object}
92 */
93
94
95var objectifyParams = function objectifyParams(params) {
96 if (!params) {
97 return {};
98 }
99
100 return params.split('&').reduce(function (acc, param) {
101 var _param$split = param.split('='),
102 _param$split2 = _slicedToArray(_param$split, 2),
103 name = _param$split2[0],
104 value = _param$split2[1];
105
106 acc[name] = decodeURIComponent(value);
107 return acc;
108 }, {});
109};
110
111exports.objectifyParams = objectifyParams;
\No newline at end of file