UNPKG

airtable

Version:

The official Airtable JavaScript library.

53 lines 2.02 kB
"use strict"; 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