{"version":3,"file":"toFormData.mjs","sources":["toFormData.js"],"sourcesContent":["'use strict';\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n    return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n    return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n    if (!path)\n        return key;\n    return path.concat(key).map(function each(token, i) {\n        // eslint-disable-next-line no-param-reassign\n        token = removeBrackets(token);\n        return !dots && i ? '[' + token + ']' : token;\n    }).join(dots ? '.' : '');\n}\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array<any>} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n    return utils.isArray(arr) && !arr.some(isVisitable);\n}\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n    return /^is[A-Z]/.test(prop);\n});\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n/**\n * It converts an object into a FormData object\n *\n * @param {Object<any, any>} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object<string, any>} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n    if (!utils.isObject(obj)) {\n        throw new TypeError('target must be an object');\n    }\n    // eslint-disable-next-line no-param-reassign\n    formData = formData || new (PlatformFormData || FormData)();\n    // eslint-disable-next-line no-param-reassign\n    options = utils.toFlatObject(options, {\n        metaTokens: true,\n        dots: false,\n        indexes: false\n    }, false, function defined(option, source) {\n        // eslint-disable-next-line no-eq-null,eqeqeq\n        return !utils.isUndefined(source[option]);\n    });\n    const metaTokens = options.metaTokens;\n    // eslint-disable-next-line no-use-before-define\n    const visitor = options.visitor || defaultVisitor;\n    const dots = options.dots;\n    const indexes = options.indexes;\n    const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n    const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n    if (!utils.isFunction(visitor)) {\n        throw new TypeError('visitor must be a function');\n    }\n    function convertValue(value) {\n        if (value === null)\n            return '';\n        if (utils.isDate(value)) {\n            return value.toISOString();\n        }\n        if (!useBlob && utils.isBlob(value)) {\n            throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n        }\n        if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n            return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n        }\n        return value;\n    }\n    /**\n     * Default visitor.\n     *\n     * @param {*} value\n     * @param {String|Number} key\n     * @param {Array<String|Number>} path\n     * @this {FormData}\n     *\n     * @returns {boolean} return true to visit the each prop of the value recursively\n     */\n    function defaultVisitor(value, key, path) {\n        let arr = value;\n        if (value && !path && typeof value === 'object') {\n            if (utils.endsWith(key, '{}')) {\n                // eslint-disable-next-line no-param-reassign\n                key = metaTokens ? key : key.slice(0, -2);\n                // eslint-disable-next-line no-param-reassign\n                value = JSON.stringify(value);\n            }\n            else if ((utils.isArray(value) && isFlatArray(value)) ||\n                ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value)))) {\n                // eslint-disable-next-line no-param-reassign\n                key = removeBrackets(key);\n                arr.forEach(function each(el, index) {\n                    !(utils.isUndefined(el) || el === null) && formData.append(\n                    // eslint-disable-next-line no-nested-ternary\n                    indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'), convertValue(el));\n                });\n                return false;\n            }\n        }\n        if (isVisitable(value)) {\n            return true;\n        }\n        formData.append(renderKey(path, key, dots), convertValue(value));\n        return false;\n    }\n    const stack = [];\n    const exposedHelpers = Object.assign(predicates, {\n        defaultVisitor,\n        convertValue,\n        isVisitable\n    });\n    function build(value, path) {\n        if (utils.isUndefined(value))\n            return;\n        if (stack.indexOf(value) !== -1) {\n            throw Error('Circular reference detected in ' + path.join('.'));\n        }\n        stack.push(value);\n        utils.forEach(value, function each(el, key) {\n            const result = !(utils.isUndefined(el) || el === null) && visitor.call(formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers);\n            if (result === true) {\n                build(el, path ? path.concat(key) : [key]);\n            }\n        });\n        stack.pop();\n    }\n    if (!utils.isObject(obj)) {\n        throw new TypeError('data must be an object');\n    }\n    build(obj);\n    return formData;\n}\nexport default toFormData;\n"],"names":["PlatformFormData"],"mappings":"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"}