UNPKG

@rxx/http

Version:
44 lines (43 loc) 1.61 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var TYPE_MATCHER = /\[object ([^\]]+)\]/; var TO_STRING = Object.prototype.toString; function qs(data) { var ret = []; serialize(data, ret); return ret.join('&'); } exports.qs = qs; function getType(value) { return TO_STRING.call(value).match(TYPE_MATCHER)[1]; } function serialize(data, resultCollection, parentKey) { if (parentKey === void 0) { parentKey = ''; } var type = getType(data); if (type === 'Object') { for (var key in data) { var valueType = getType(data[key]); var keyValue = "" + (parentKey ? parentKey + "." : '') + key; if (valueType === 'String' || valueType === 'Number' || valueType === 'RegExp' || valueType === 'Boolean') { resultCollection.push(encodeURIComponent(keyValue) + "=" + encodeURIComponent(data[key])); } else if (valueType === 'Date') { resultCollection.push(encodeURIComponent(keyValue) + "=" + encodeURIComponent(String(+data[key]))); } else if (valueType === 'Object') { serialize(data[key], resultCollection, key); } else if (valueType === 'Array') { serialize(data[key], resultCollection, key); } } } else if (type === 'Array') { for (var i = 0, len = data.length; i < len; i++) { resultCollection.push(encodeURIComponent(parentKey[i]) + "=" + encodeURIComponent(data[i])); } } }