airtable
Version:
The official Airtable JavaScript library.
53 lines • 2.02 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
var isArray_1 = __importDefault(require("lodash/isArray"));
var isNil_1 = __importDefault(require("lodash/isNil"));
var keys_1 = __importDefault(require("lodash/keys"));
/* eslint-enable @typescript-eslint/no-explicit-any */
// Adapted from jQuery.param:
// https://github.com/jquery/jquery/blob/2.2-stable/src/serialize.js
function buildParams(prefix, obj, addFn) {
if (isArray_1.default(obj)) {
// Serialize array item.
for (var index = 0; index < obj.length; index++) {
var value = obj[index];
if (/\[\]$/.test(prefix)) {
// Treat each array item as a scalar.
addFn(prefix, value);
}
else {
// Item is non-scalar (array or object), encode its numeric index.
buildParams(prefix + "[" + (typeof value === 'object' && value !== null ? index : '') + "]", value, addFn);
}
}
}
else if (typeof obj === 'object') {
// Serialize object item.
for (var _i = 0, _a = keys_1.default(obj); _i < _a.length; _i++) {
var key = _a[_i];
var value = obj[key];
buildParams(prefix + "[" + key + "]", value, addFn);
}
}
else {
// Serialize scalar item.
addFn(prefix, obj);
}
}
function objectToQueryParamString(obj) {
var parts = [];
var addFn = function (key, value) {
value = isNil_1.default(value) ? '' : value;
parts.push(encodeURIComponent(key) + "=" + encodeURIComponent(value));
};
for (var _i = 0, _a = keys_1.default(obj); _i < _a.length; _i++) {
var key = _a[_i];
var value = obj[key];
buildParams(key, value, addFn);
}
return parts.join('&').replace(/%20/g, '+');
}
module.exports = objectToQueryParamString;
//# sourceMappingURL=object_to_query_param_string.js.map