From ac2ce43707ee2114b3181d76d673fcf5619a0041 Mon Sep 17 00:00:00 2001 From: Aniket Yadav Date: Thu, 21 Mar 2024 16:26:27 +0530 Subject: [PATCH] Implemented new APIs and resolved bugs in existing ones. Added functionality for song uploads and improved data retrieval in song-related endpoints. Enhanced overall API performance and ensured proper error handling. --- .gitignore | 3 +- controllers/Admin.controller.js | 98 +- controllers/Artist.controller.js | 78 +- controllers/album.controller.js | 136 +- controllers/auth.controller.js | 496 +- controllers/categories.controller.js | 7 +- controllers/language.controller.js | 44 +- controllers/notification.controller.js | 82 +- controllers/playlist.controller.js | 187 +- controllers/song.controller.js | 615 +- controllers/subcategories.controller.js | 94 +- controllers/user.controller.js | 597 +- middlewares/Admin.js | 2 +- middlewares/Auth/auth.middle.js | 78 +- middlewares/authjwt.js | 3 +- middlewares/idchecker.js | 42 +- middlewares/regex.js | 4 +- middlewares/uploads.js | 16 + models/artist.model.js | 1 - models/categories.model.js | 7 +- models/notification.model.js | 11 +- models/song.model.js | 8 +- models/user.model.js | 142 +- node_modules/.package-lock.json | 701 ++- node_modules/asynckit/LICENSE | 21 - node_modules/asynckit/README.md | 233 - node_modules/asynckit/bench.js | 76 - node_modules/asynckit/index.js | 6 - node_modules/asynckit/lib/abort.js | 29 - node_modules/asynckit/lib/async.js | 34 - node_modules/asynckit/lib/defer.js | 26 - node_modules/asynckit/lib/iterate.js | 75 - .../asynckit/lib/readable_asynckit.js | 91 - .../asynckit/lib/readable_parallel.js | 25 - node_modules/asynckit/lib/readable_serial.js | 25 - .../asynckit/lib/readable_serial_ordered.js | 29 - node_modules/asynckit/lib/state.js | 37 - node_modules/asynckit/lib/streamify.js | 141 - node_modules/asynckit/lib/terminator.js | 29 - node_modules/asynckit/package.json | 63 - node_modules/asynckit/parallel.js | 43 - node_modules/asynckit/serial.js | 17 - node_modules/asynckit/serialOrdered.js | 75 - node_modules/asynckit/stream.js | 21 - node_modules/axios/CHANGELOG.md | 1504 +++-- node_modules/axios/LICENSE | 20 +- node_modules/axios/MIGRATION_GUIDE.md | 3 - node_modules/axios/README.md | 987 +-- node_modules/axios/SECURITY.md | 7 +- node_modules/axios/dist/axios.js | 5345 +++++++---------- node_modules/axios/dist/axios.js.map | 1 - node_modules/axios/dist/axios.min.js | 5 +- node_modules/axios/dist/axios.min.js.map | 1 - node_modules/axios/dist/browser/axios.cjs | 3258 ---------- node_modules/axios/dist/browser/axios.cjs.map | 1 - node_modules/axios/dist/esm/axios.js | 3281 ---------- node_modules/axios/dist/esm/axios.js.map | 1 - node_modules/axios/dist/esm/axios.min.js | 2 - node_modules/axios/dist/esm/axios.min.js.map | 1 - node_modules/axios/dist/node/axios.cjs | 4355 -------------- node_modules/axios/dist/node/axios.cjs.map | 1 - node_modules/axios/index.d.cts | 542 -- node_modules/axios/index.d.ts | 525 +- node_modules/axios/index.js | 44 +- node_modules/axios/lib/adapters/adapters.js | 77 - node_modules/axios/lib/adapters/http.js | 728 +-- node_modules/axios/lib/adapters/xhr.js | 183 +- node_modules/axios/lib/axios.js | 81 +- node_modules/axios/lib/cancel/CancelToken.js | 146 +- .../axios/lib/cancel/CanceledError.js | 25 - node_modules/axios/lib/cancel/isCancel.js | 4 +- node_modules/axios/lib/core/Axios.js | 289 +- node_modules/axios/lib/core/AxiosError.js | 100 - node_modules/axios/lib/core/AxiosHeaders.js | 298 - .../axios/lib/core/InterceptorManager.js | 115 +- node_modules/axios/lib/core/buildFullPath.js | 9 +- .../axios/lib/core/dispatchRequest.js | 61 +- node_modules/axios/lib/core/mergeConfig.js | 133 +- node_modules/axios/lib/core/settle.js | 14 +- node_modules/axios/lib/core/transformData.js | 24 +- node_modules/axios/lib/defaults/index.js | 156 - .../axios/lib/defaults/transitional.js | 7 - node_modules/axios/lib/env/README.md | 3 - .../axios/lib/env/classes/FormData.js | 2 - node_modules/axios/lib/env/data.js | 1 - .../axios/lib/helpers/AxiosTransformStream.js | 191 - .../axios/lib/helpers/AxiosURLSearchParams.js | 58 - .../axios/lib/helpers/HttpStatusCode.js | 71 - .../lib/helpers/ZlibHeaderTransformStream.js | 28 - node_modules/axios/lib/helpers/bind.js | 10 +- node_modules/axios/lib/helpers/buildURL.js | 61 +- node_modules/axios/lib/helpers/callbackify.js | 16 - node_modules/axios/lib/helpers/combineURLs.js | 7 +- node_modules/axios/lib/helpers/cookies.js | 73 +- .../axios/lib/helpers/deprecatedMethod.js | 6 +- .../axios/lib/helpers/formDataToJSON.js | 95 - .../axios/lib/helpers/formDataToStream.js | 111 - node_modules/axios/lib/helpers/fromDataURI.js | 53 - .../axios/lib/helpers/isAbsoluteURL.js | 7 +- .../axios/lib/helpers/isAxiosError.js | 9 +- .../axios/lib/helpers/isURLSameOrigin.js | 91 +- node_modules/axios/lib/helpers/null.js | 2 - .../axios/lib/helpers/parseHeaders.js | 48 +- .../axios/lib/helpers/parseProtocol.js | 6 - node_modules/axios/lib/helpers/readBlob.js | 15 - node_modules/axios/lib/helpers/speedometer.js | 55 - node_modules/axios/lib/helpers/spread.js | 5 +- node_modules/axios/lib/helpers/throttle.js | 33 - node_modules/axios/lib/helpers/toFormData.js | 219 - .../axios/lib/helpers/toURLEncodedForm.js | 18 - node_modules/axios/lib/helpers/validator.js | 78 +- .../lib/platform/browser/classes/Blob.js | 3 - .../lib/platform/browser/classes/FormData.js | 3 - .../browser/classes/URLSearchParams.js | 4 - .../axios/lib/platform/browser/index.js | 13 - .../axios/lib/platform/common/utils.js | 47 - node_modules/axios/lib/platform/index.js | 7 - .../lib/platform/node/classes/FormData.js | 3 - .../platform/node/classes/URLSearchParams.js | 4 - node_modules/axios/lib/platform/node/index.js | 12 - node_modules/axios/lib/utils.js | 664 +- node_modules/axios/package.json | 204 +- node_modules/combined-stream/License | 19 - node_modules/combined-stream/Readme.md | 138 - .../combined-stream/lib/combined_stream.js | 208 - node_modules/combined-stream/package.json | 25 - node_modules/combined-stream/yarn.lock | 17 - node_modules/delayed-stream/.npmignore | 1 - node_modules/delayed-stream/License | 19 - node_modules/delayed-stream/Makefile | 7 - node_modules/delayed-stream/Readme.md | 141 - .../delayed-stream/lib/delayed_stream.js | 107 - node_modules/delayed-stream/package.json | 27 - node_modules/follow-redirects/index.js | 2 +- node_modules/follow-redirects/package.json | 2 +- node_modules/form-data/License | 19 - node_modules/form-data/README.md.bak | 358 -- node_modules/form-data/Readme.md | 358 -- node_modules/form-data/index.d.ts | 62 - node_modules/form-data/lib/browser.js | 2 - node_modules/form-data/lib/form_data.js | 501 -- node_modules/form-data/lib/populate.js | 10 - node_modules/form-data/package.json | 68 - node_modules/multer/README.md | 4 +- node_modules/multer/lib/make-middleware.js | 23 +- node_modules/multer/lib/multer-error.js | 3 +- node_modules/multer/package.json | 7 +- node_modules/proxy-from-env/.eslintrc | 29 - node_modules/proxy-from-env/.travis.yml | 10 - node_modules/proxy-from-env/LICENSE | 20 - node_modules/proxy-from-env/README.md | 131 - node_modules/proxy-from-env/index.js | 108 - node_modules/proxy-from-env/package.json | 34 - node_modules/proxy-from-env/test.js | 483 -- package-lock.json | 710 ++- package.json | 9 +- routes/admin.route.js | 2 +- routes/album.route.js | 5 + routes/artist.route.js | 13 +- routes/auth.route.js | 12 +- routes/categories.route.js | 9 +- routes/language.route.js | 1 + routes/notification.route.js | 2 +- routes/song.route.js | 30 +- routes/subcategories.route.js | 2 +- routes/user.route.js | 13 +- server.js | 92 +- uploads/1665729691641.JPEG | Bin 0 -> 28763 bytes uploads/google.png | Bin 0 -> 26396 bytes ...shree-ram-jai-shree-ram-raja-ram-60149.mp3 | Bin 0 -> 193350 bytes uploads/job_d.jpg | Bin 0 -> 2853795 bytes uploads/ruppee.png | Bin 0 -> 1870 bytes 172 files changed, 7447 insertions(+), 25614 deletions(-) create mode 100644 middlewares/uploads.js delete mode 100644 node_modules/asynckit/LICENSE delete mode 100644 node_modules/asynckit/README.md delete mode 100644 node_modules/asynckit/bench.js delete mode 100644 node_modules/asynckit/index.js delete mode 100644 node_modules/asynckit/lib/abort.js delete mode 100644 node_modules/asynckit/lib/async.js delete mode 100644 node_modules/asynckit/lib/defer.js delete mode 100644 node_modules/asynckit/lib/iterate.js delete mode 100644 node_modules/asynckit/lib/readable_asynckit.js delete mode 100644 node_modules/asynckit/lib/readable_parallel.js delete mode 100644 node_modules/asynckit/lib/readable_serial.js delete mode 100644 node_modules/asynckit/lib/readable_serial_ordered.js delete mode 100644 node_modules/asynckit/lib/state.js delete mode 100644 node_modules/asynckit/lib/streamify.js delete mode 100644 node_modules/asynckit/lib/terminator.js delete mode 100644 node_modules/asynckit/package.json delete mode 100644 node_modules/asynckit/parallel.js delete mode 100644 node_modules/asynckit/serial.js delete mode 100644 node_modules/asynckit/serialOrdered.js delete mode 100644 node_modules/asynckit/stream.js delete mode 100644 node_modules/axios/MIGRATION_GUIDE.md mode change 100644 => 100755 node_modules/axios/README.md delete mode 100644 node_modules/axios/dist/axios.js.map delete mode 100644 node_modules/axios/dist/axios.min.js.map delete mode 100644 node_modules/axios/dist/browser/axios.cjs delete mode 100644 node_modules/axios/dist/browser/axios.cjs.map delete mode 100644 node_modules/axios/dist/esm/axios.js delete mode 100644 node_modules/axios/dist/esm/axios.js.map delete mode 100644 node_modules/axios/dist/esm/axios.min.js delete mode 100644 node_modules/axios/dist/esm/axios.min.js.map delete mode 100644 node_modules/axios/dist/node/axios.cjs delete mode 100644 node_modules/axios/dist/node/axios.cjs.map delete mode 100644 node_modules/axios/index.d.cts delete mode 100644 node_modules/axios/lib/adapters/adapters.js delete mode 100644 node_modules/axios/lib/cancel/CanceledError.js delete mode 100644 node_modules/axios/lib/core/AxiosError.js delete mode 100644 node_modules/axios/lib/core/AxiosHeaders.js delete mode 100644 node_modules/axios/lib/defaults/index.js delete mode 100644 node_modules/axios/lib/defaults/transitional.js delete mode 100644 node_modules/axios/lib/env/README.md delete mode 100644 node_modules/axios/lib/env/classes/FormData.js delete mode 100644 node_modules/axios/lib/env/data.js delete mode 100644 node_modules/axios/lib/helpers/AxiosTransformStream.js delete mode 100644 node_modules/axios/lib/helpers/AxiosURLSearchParams.js delete mode 100644 node_modules/axios/lib/helpers/HttpStatusCode.js delete mode 100644 node_modules/axios/lib/helpers/ZlibHeaderTransformStream.js delete mode 100644 node_modules/axios/lib/helpers/callbackify.js delete mode 100644 node_modules/axios/lib/helpers/formDataToJSON.js delete mode 100644 node_modules/axios/lib/helpers/formDataToStream.js delete mode 100644 node_modules/axios/lib/helpers/fromDataURI.js delete mode 100644 node_modules/axios/lib/helpers/null.js delete mode 100644 node_modules/axios/lib/helpers/parseProtocol.js delete mode 100644 node_modules/axios/lib/helpers/readBlob.js delete mode 100644 node_modules/axios/lib/helpers/speedometer.js delete mode 100644 node_modules/axios/lib/helpers/throttle.js delete mode 100644 node_modules/axios/lib/helpers/toFormData.js delete mode 100644 node_modules/axios/lib/helpers/toURLEncodedForm.js delete mode 100644 node_modules/axios/lib/platform/browser/classes/Blob.js delete mode 100644 node_modules/axios/lib/platform/browser/classes/FormData.js delete mode 100644 node_modules/axios/lib/platform/browser/classes/URLSearchParams.js delete mode 100644 node_modules/axios/lib/platform/browser/index.js delete mode 100644 node_modules/axios/lib/platform/common/utils.js delete mode 100644 node_modules/axios/lib/platform/index.js delete mode 100644 node_modules/axios/lib/platform/node/classes/FormData.js delete mode 100644 node_modules/axios/lib/platform/node/classes/URLSearchParams.js delete mode 100644 node_modules/axios/lib/platform/node/index.js delete mode 100644 node_modules/combined-stream/License delete mode 100644 node_modules/combined-stream/Readme.md delete mode 100644 node_modules/combined-stream/lib/combined_stream.js delete mode 100644 node_modules/combined-stream/package.json delete mode 100644 node_modules/combined-stream/yarn.lock delete mode 100644 node_modules/delayed-stream/.npmignore delete mode 100644 node_modules/delayed-stream/License delete mode 100644 node_modules/delayed-stream/Makefile delete mode 100644 node_modules/delayed-stream/Readme.md delete mode 100644 node_modules/delayed-stream/lib/delayed_stream.js delete mode 100644 node_modules/delayed-stream/package.json delete mode 100644 node_modules/form-data/License delete mode 100644 node_modules/form-data/README.md.bak delete mode 100644 node_modules/form-data/Readme.md delete mode 100644 node_modules/form-data/index.d.ts delete mode 100644 node_modules/form-data/lib/browser.js delete mode 100644 node_modules/form-data/lib/form_data.js delete mode 100644 node_modules/form-data/lib/populate.js delete mode 100644 node_modules/form-data/package.json delete mode 100644 node_modules/proxy-from-env/.eslintrc delete mode 100644 node_modules/proxy-from-env/.travis.yml delete mode 100644 node_modules/proxy-from-env/LICENSE delete mode 100644 node_modules/proxy-from-env/README.md delete mode 100644 node_modules/proxy-from-env/index.js delete mode 100644 node_modules/proxy-from-env/package.json delete mode 100644 node_modules/proxy-from-env/test.js create mode 100644 uploads/1665729691641.JPEG create mode 100644 uploads/google.png create mode 100644 uploads/jai-shree-ram-jai-shree-ram-raja-ram-60149.mp3 create mode 100644 uploads/job_d.jpg create mode 100644 uploads/ruppee.png diff --git a/.gitignore b/.gitignore index c2658d7..d5f19d8 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -node_modules/ +node_modules +package-lock.json diff --git a/controllers/Admin.controller.js b/controllers/Admin.controller.js index 6406fd8..a4b6a11 100644 --- a/controllers/Admin.controller.js +++ b/controllers/Admin.controller.js @@ -1,4 +1,4 @@ -const User = require('../models/user.model'); +const {User} = require('../models/user.model'); const constant = require('../util/constant') const bcrypt = require('bcryptjs'); const objectConverter = require('../util/objectConverter'); @@ -6,86 +6,86 @@ const objectConverter = require('../util/objectConverter'); -const createAdmin = async (req, res) => { +// const createAdmin = async (req, res) => { - try { - let user = await User.findOne({ userTypes: constant.userTypes.admin }) +// try { +// let user = await User.findOne({ userTypes: constant.userTypes.admin }) - if (user) { - console.log('Admin Already Created', user); +// if (user) { +// console.log('Admin Already Created', user); - return res.status(201).send({ - message: 'Admin already created' - }); - } +// return res.status(201).send({ +// message: 'Admin already created' +// }); +// } - let obj = { - email: req.body.email ? req.body.email : undefined, - password: req.body.password ? bcrypt.hashSync(req.body.password) : undefined, - userName: 'Admin', - userTypes: constant.userTypes.admin +// let obj = { +// email: req.body.email ? req.body.email : undefined, +// password: req.body.password ? bcrypt.hashSync(req.body.password) : undefined, +// userName: 'Admin', +// userTypes: constant.userTypes.admin - } - if (req.file) { - const { filename, path } = req.file; - obj["image"] = { - fileName: filename, - fileAddress: path - } - } +// } +// if (req.file) { +// const { filename, path } = req.file; +// obj["image"] = { +// fileName: filename, +// fileAddress: path +// } +// } - console.log(obj); - await User.create(obj); - res.status(200).send({ - errorCode: 200, - message: 'Admin Got Created' - }) - console.log('Admin got created'); +// console.log(obj); +// await User.create(obj); +// res.status(200).send({ +// errorCode: 200, +// message: 'Admin Got Created' +// }) +// console.log('Admin got created'); - } catch (err) { - console.log(err); - res.status(500).send({ - errorCode: 500, - message: 'Internal Error while creating Admin' - }) - } -} +// } catch (err) { +// console.log(err); +// res.status(500).send({ +// errorCode: 500, +// message: 'Internal Error while creating Admin' +// }) +// } +// } const getList = async (req, res) => { try { const page = parseInt(req.query.page) || 1; - const limit = parseInt(req.query.limit) || 10; + const limit = parseInt(req.query.limit) || 5; const skipIndex = (page - 1) * limit; - const searchQuery = req.query.search || ''; // Get search query from request query parameters + const searchQuery = req.query.search || ''; let obj = { userTypes: constant.userTypes.customer }; - // Add search functionality if (searchQuery) { obj.$or = [ - { username: { $regex: searchQuery, $options: 'i' } }, // Case-insensitive search for username - { email: { $regex: searchQuery, $options: 'i' } } // Case-insensitive search for email + { username: { $regex: searchQuery, $options: 'i' } }, + { email: { $regex: searchQuery, $options: 'i' } } ]; } const users = await User.find(obj) .limit(limit) - .skip(skipIndex); - const totalCount = await User.countDocuments(obj); + .skip(skipIndex) + .lean(); // Convert to plain JavaScript objects for manipulation + + const totalCount = await User.countDocuments(obj); // Get total count of matching documents console.log('users', users) return res.status(200).send({ status: 200, message: 'Users retrieved successfully', users: users, + total_users: totalCount, // Include total data count in the response total_pages: Math.ceil(totalCount / limit), current_page: page - - }); } catch (err) { console.error(err); @@ -98,6 +98,8 @@ const getList = async (req, res) => { }; + + const update = async (req, res) => { try { const adminId = req.userId; @@ -304,7 +306,7 @@ const changePassword = async (req, res) => { module.exports = { - createAdmin, + // createAdmin, updateProfile, getList, adminProfile, diff --git a/controllers/Artist.controller.js b/controllers/Artist.controller.js index 4177fba..567c650 100644 --- a/controllers/Artist.controller.js +++ b/controllers/Artist.controller.js @@ -3,6 +3,8 @@ const Artist = require('../models/artist.model'); const createArtist = async (req, res) => { try { + console.log(req,"=============================>123"); + console.log(req.body,"hooooo") const { ArtistName } = req.body; // Check if the required fields are present in the request body @@ -21,7 +23,6 @@ const createArtist = async (req, res) => { const baseUrl = `${req.protocol}://${req.get('host')}`; const imagePath = `uploads/${req.file.filename}`; const imageUrl = `${baseUrl}/${imagePath}`; - console.log("🚀 ~ createArtist ~ imageUrl:", imageUrl); obj["image"] = { fileName: req.file.filename, @@ -29,14 +30,13 @@ const createArtist = async (req, res) => { }; obj["imageUrl"] = imageUrl; } - // Save 'obj' to the database const newArtist = await Artist.create(obj); console.log("🚀 ~ createArtist ~ newArtist:", newArtist); // Return a success response with the newly created Artist - return res.status(201).send({ - error_code: 201, + return res.status(200).send({ + error_code: 200, message: "Artist created", Artist: newArtist }); @@ -188,33 +188,55 @@ const changeArtistStatus = async (req, res) => { } }; -const getAllArtist = async (req, res) => { +const allArtist =async(req,res)=>{ try { - // Pagination parameters - const page = parseInt(req.query.page) || 1; - const limit = parseInt(req.query.limit) || 10; - const skip = (page - 1) * limit; - - // Search query - const searchQuery = req.query.search || ''; - - // Fetch artists with pagination and search - const artistsQuery = Artist.find(); - if (searchQuery) { - artistsQuery.where('ArtistName').regex(new RegExp(searchQuery, 'i')); - } - - const artists = await artistsQuery.skip(skip).limit(limit); - - // Count total number of artists for pagination - const totalCount = await Artist.countDocuments(artistsQuery.getQuery()); + const artists = await Artist.find(); return res.status(200).json({ error_code: 200, message: 'Artists fetched successfully', + artists + }); + + + } catch (error) { + console.error('Error inside getAllArtist controller:', error); + return res.status(500).json({ + error_code: 500, + message: 'Internal Server Error' + }); + + } +} + +const getAllArtist = async (req, res) => { + try { + const page = parseInt(req.query.page) || 1; + const limit = parseInt(req.query.limit) || 5; + const skip = (page - 1) * limit; + + const searchQuery = req.query.search || ''; + + // Build the query for fetching artists with pagination and search + const artistQuery = Artist.find({ + ArtistName: { $regex: searchQuery, $options: 'i' } + }); + + // Execute the query with pagination + const artists = await artistQuery.skip(skip).limit(limit); + + // Count total number of artists for pagination + const totalCount = await Artist.countDocuments({ + ArtistName: { $regex: searchQuery, $options: 'i' } + }); + + res.json({ + error_code: 200, + message: 'Artists retrieved successfully', artists, - currentPage: page, - totalPages: Math.ceil(totalCount / limit) + total_count: totalCount, + page, + limit }); } catch (error) { console.error('Error inside getAllArtist controller:', error); @@ -225,10 +247,14 @@ const getAllArtist = async (req, res) => { } }; + + + module.exports = { createArtist, updateArtist, deleteArtist, getArtistById, - changeArtistStatus, getAllArtist + changeArtistStatus, getAllArtist, + allArtist }; diff --git a/controllers/album.controller.js b/controllers/album.controller.js index cf2c408..c461d19 100644 --- a/controllers/album.controller.js +++ b/controllers/album.controller.js @@ -346,8 +346,8 @@ const getAlbums = async (req, res) => { { shortDescription: { $regex: searchQuery, $options: 'i' } } ] }) - .populate('categoryId') // Populate categoryId field - .populate('subcategoryId') // Populate subcategoryId field + .populate('categoryId') + .populate('subcategoryId') .skip(skip) .limit(limit); @@ -386,6 +386,134 @@ const getAlbums = async (req, res) => { }; +// const getAlbums = async (req, res) => { +// try { +// // Pagination parameters +// const { page = 1, limit = 10 } = req.query; +// const skip = (page - 1) * limit; +// const searchQuery = req.query.search || ''; + + +// const matchQuery = { +// SubCategoriesName: { $regex: searchQuery, $options: 'i' }, +// 'CategoriesId.deleted': { $ne: true }, +// 'subcategoryId.deleted':{$ne:true}, +// 'deleted': { $ne: true } +// }; + +// // Aggregation pipeline to exclude albums with deleted categories or subcategories +// const albums = await Album.aggregate([ +// {$match:matchQuery }, +// { +// $lookup: { +// from: 'categories', +// localField: 'categoryId', +// foreignField: '_id', +// as: 'category' +// } +// }, +// { +// $lookup: { +// from: 'subcategories', +// localField: 'subcategoryId', +// foreignField: '_id', +// as: 'subcategory' +// } +// }, +// { +// $match: { +// $and: [ +// { 'category': { $not: { $elemMatch: { 'deleted': true } } } }, // Exclude albums with deleted categories +// { 'subcategory': { $not: { $elemMatch: { 'deleted': true } } } } // Exclude albums with deleted subcategories +// ] +// } +// }, +// { $skip: skip }, +// { $limit: limit } +// ]); + +// const totalCount = await Album.countDocuments({ +// $or: [ +// { albumName: { $regex: searchQuery, $options: 'i' } }, +// { shortDescription: { $regex: searchQuery, $options: 'i' } } +// ] +// }); + +// const totalPages = Math.ceil(totalCount / limit); + +// return res.status(200).json({ +// error_code: 200, +// message: "Albums retrieved successfully", +// data: albums.map(album => ({ +// _id: album._id, +// status: album.status, +// image: album.image, +// imageUrl: album.imageUrl, +// albumName: album.albumName, +// shortDescription: album.shortDescription, +// category: album.category[0] ? album.category[0].name : null, +// subcategory: album.subcategory[0] ? album.subcategory[0].SubCategoriesName : null +// })), +// totalPages: totalPages, +// currentPage: page +// }); +// } catch (err) { +// console.log("Error inside GetAlbums Controller", err); +// return res.status(500).json({ +// error_code: 500, +// message: "Internal Server Error" +// }); +// } +// }; + +const allAlbums =async(req,res)=>{ + try { + + const albums = await Album.find(); + return res.status(200).json({ + error_code: 200, + message: 'Albums fetched successfully', + albums + }); + + } catch (error) { + console.log("Error inside GetAlbums Controller", err); + return res.status(500).json({ + error_code: 500, + message: "Internal Server Error" + }); + } +} +const getsubcategories = async (req, res) => { + try { + const { subcategoryId } = req.params; + + + const subCategories = await Album.find({ subcategoryId: subcategoryId }); + if (!subCategories || subCategories.length === 0) { + return res.status(400).send({ + error_code: 400, + message: 'subCategories not found for the given subCategories ID' + }); + } + + res.status(200).json({ + error_code: 200, + message: 'Categories retrieved successfully', + subCategories: subCategories + }); + + } catch (err) { + console.error('Error inside getCategories', err); + res.status(500).send({ + error_code: 500, + message: 'Internal Server Error' + }); + } + }; + + + @@ -395,7 +523,9 @@ module.exports = { deleteAlbum, changeAlbumStatus, getAlbums, - deletMany + allAlbums, + deletMany, + getsubcategories } \ No newline at end of file diff --git a/controllers/auth.controller.js b/controllers/auth.controller.js index 3f71927..d132297 100644 --- a/controllers/auth.controller.js +++ b/controllers/auth.controller.js @@ -1,97 +1,251 @@ -const bcrypt = require('bcryptjs'); -const User = require('../models/user.model'); +const bcrypt = require('bcryptjs'); +const { User } = require('../models/user.model'); +const multer = require('multer'); + + const jwt = require('jsonwebtoken'); const authConfig = require('../configs/auth.config'); const constant = require('../util/constant') const nodemailer = require('nodemailer'); +const sendOTPByEmail = async (email, otp) => { + try { + const transporter = nodemailer.createTransport({ + service: 'gmail', // e.g., 'Gmail' + auth: { + user: 'ay2087355@gmail.com', + pass: 'phbcdqcqdvsgdlsb' + } + }); -const signUp = async(req,res) => { - try{ - const obj = { - name : req.body.name, - password : bcrypt.hashSync(req.body.password,8), - email : req.body.email, - registerWith : constant.registerWith.Email - } - const generateOTP = () => { - return Math.floor(10000 + Math.random() * 90000); -} + const mailOptions = { + from: 'checkdemo02@gmail.com', + to: email, + subject: 'Your OTP Code', + text: `Your OTP code is: ${otp}` + }; - -const email = req.body.email; -const otp = generateOTP(); -obj['otp'] = otp; -const user = await User.create(obj); - -const transporter = nodemailer.createTransport({ - service: 'Gmail', // e.g., 'Gmail' - auth: { - user: 'checkdemo02@gmail.com', - pass: 'vqdoqmekygtousli' + // Send the email + const info = await transporter.sendMail(mailOptions); + console.log('OTP email sent:', info.response); + return info.response; + } catch (error) { + console.error('Error sending OTP email:', error); + throw error; } -}); - -const mailOptions = { - from: 'checkdemo02@gmail.com', - to: req.body.email, // The user's email - subject: 'Your OTP Code', - text: `Your OTP code is: ${otp}` +}; +const generateOTP = () => { + return Math.floor(10000 + Math.random() * 90000); }; -// Send the email -transporter.sendMail(mailOptions, (error, info) => { - if (error) { - console.error('Error sending OTP email:', error); - return res.status(500).send({ - errorCode : 500, - message : "Mail not Send" - }) - } else { - console.log('OTP email sent:', info.response); - } -}); -const token = jwt.sign({id:user._id},authConfig.secretKey,{ - expiresIn : 6000000 -}); +const signUp = async (req, res) => { + try { + const { name, email, password, confirmPassword } = req.body; + if (password !== confirmPassword) { + return res.status(400).send({ + error_code: 400, + message: 'Password and confirm password do not match' + }); + } - return res.status(201).send({ - error_code : 200, - message : 'Success', - otp : otp, - accessToken : token - }) -}catch(err){ - console.log(err); + let existingUser = await User.findOne({ email: email }); + + if (existingUser) { + if (existingUser.otpVerifly == true) { + return res.status(401).send({ + error_code: 401, + message: 'Email already registered' + }); + } + + if (existingUser.otpVerifly == false) { + existingUser.password = bcrypt.hashSync(password, 8); + existingUser.otp = generateOTP(); + + // Send OTP email + await sendOTPByEmail(email, existingUser.otp); + + // Save updated user + existingUser = await existingUser.save(); + + return res.status(200).send({ + error_code: 200, + message: 'User registered successfully. ', + email: email, + otp: existingUser.otp, + }); + } + } else { + // Create new user + const obj = { + name: name, + password: bcrypt.hashSync(password, 8), + email: email, + registerWith: constant.registerWith.Email, + otp: generateOTP() // Assuming generateOTP() function is defined + }; + + // Send OTP email + await sendOTPByEmail(email, obj.otp); + + // Create new user + const user = await User.create(obj); + return res.status(200).send({ + error_code: 200, + message: 'User registered successfully. ', + email: email, + otp: obj.otp, + }); + } + + } catch (err) { + console.error(err); res.status(500).send({ - error_code : 200, - message : 'Failed' - }) -} -} + error_code: 500, + message: 'Failed' + }); + } +}; + + + + + + + + + +// const signUp = async (req, res) => { +// try { +// const obj = { +// name: req.body.name, +// password: bcrypt.hashSync(req.body.password, 8), +// email: req.body.email, +// registerWith: constant.registerWith.Email +// } +// const generateOTP = () => { +// return Math.floor(10000 + Math.random() * 90000); +// } + + +// const email = req.body.email; +// const otp = generateOTP(); +// obj['otp'] = otp; +// const user = await User.create(obj); + +// const transporter = nodemailer.createTransport({ +// service: 'gmail', // e.g., 'Gmail' +// auth: { +// user: 'ay2087355@gmail.com', +// pass: 'phbcdqcqdvsgdlsb' +// } +// }); + +// const mailOptions = { +// from: 'checkdemo02@gmail.com', +// to: req.body.email, // The user's email +// subject: 'Your OTP Code', +// text: `Your OTP code is: ${otp}` +// }; + +// // Send the email +// transporter.sendMail(mailOptions, (error, info) => { +// if (error) { +// console.error('Error sending OTP email:', error); +// return res.status(500).send({ +// errorCode: 500, +// message: "Mail not Send" +// }) +// } else { +// console.log('OTP email sent:', info.response); +// } +// }); + + + +// return res.status(201).send({ +// error_code: 200, +// message: 'Success', +// email: email, +// otp: otp, +// }) +// } catch (err) { +// console.log(err); +// res.status(500).send({ +// error_code: 200, +// message: 'Failed' +// }) +// } +// } + +// const signIn = async (req, res) => { +// try { +// console.log(req.body,"===================================>123") +// const { email, password } = req.body; + +// if (!email){ +// return res.status(400).json({ +// error_code: 400, +// message: 'Email is required' +// }); +// } +// if (!password){ +// return res.status(400).json({ +// error_code: 400, +// message: 'Password is required' +// }); +// } + +// const user = await User.findOne({ email }); +// console.log("🚀 ~ signIn ~ user:", user) +// // console.log("🚀 ~ signIn ~ user:", user) + +// if (!user) { +// return res.status(404).json({ +// error_code: 404, +// message: 'User not found' +// }); +// } +// const isPasswordValid = bcrypt.compareSync(password, user.password); +// if (!isPasswordValid) { +// return res.status(401).json({ +// error_code: 401, +// message: 'Password is incorrect' +// }); +// } + +// const token = jwt.sign({ id: user._id,userTypes:user.userTypes }, authConfig.secretKey, { expiresIn: '1h' }); +// console.log("🚀 ~ signIn ~ token:", token) + +// return res.status(200).json({ +// error_code: 200, +// message: 'User logged in successfully', +// accessToken: token +// }); +// } catch (err) { +// console.error('Error inside signIn:', err); +// return res.status(500).json({ +// error_code: 500, +// message: 'Internal Server Error' +// }); +// } +// }; const signIn = async (req, res) => { try { - const { email, password } = req.body; + const email = req.body.email; + const password = req.body.password; - if (!email){ + if (!email || !password) { return res.status(400).json({ error_code: 400, - message: 'Email is required' - }); - } - if (!password){ - return res.status(400).json({ - error_code: 400, - message: 'Password is required' + message: 'Email and password are required' }); } - // Find user by email const user = await User.findOne({ email }); - console.log("🚀 ~ signIn ~ user:", user) if (!user) { return res.status(404).json({ @@ -100,18 +254,23 @@ const signIn = async (req, res) => { }); } - // Check if the provided password matches the user's password const isPasswordValid = bcrypt.compareSync(password, user.password); + if (!isPasswordValid) { return res.status(401).json({ error_code: 401, message: 'Password is incorrect' }); } + if (user.otpVerifly === false) { + return res.status(401).json({ + error_code: 401, + message: 'User has not been verified with OTP' + }); + } - // Generate JWT token - const token = jwt.sign({ id: user._id,userTypes:user.userTypes }, authConfig.secretKey, { expiresIn: '1h' }); - console.log("🚀 ~ signIn ~ token:", token) + const token = jwt.sign({ id: user._id, userTypes: user.userTypes }, authConfig.secretKey, { expiresIn: '1h' }); + // console.log("🚀 ~ signIn ~ token:", token) return res.status(200).json({ error_code: 200, @@ -128,34 +287,179 @@ const signIn = async (req, res) => { }; -const verifyOtp = async(req,res,next) => { - try{ - const otp = req.body.otp; - const user = await User.findOne({_id:req.userId}); - console.log(user.otp,otp); - if(user.otp!=otp){ - return res.status(400).send({ - error_code : 400, - message : 'otp is incorrect' - }) + +// const verifyOtp = async(req,res,next) => { +// try{ +// const otp = req.body.otp; +// const user = await User.findOne({_id:req.userId}); +// // console.log(user.otp,"otp"); +// if(user.otp!=otp){ +// return res.status(400).send({ +// error_code : 400, +// message : 'otp is incorrect' +// }) +// } +// user.otpVerifly = true; +// await user.save(); +// return res.status(200).send({ +// error_code : 200, +// message : 'otp Verified' +// }) + + +// }catch(err){ +// console.log('Error inside verifyOtp Controller',err); +// return res.status(500).send({ +// message : 'Internal Error', +// error_code : 500, +// }) +// } +// } + +const verifyOtp = async (req, res) => { + try { + const { email, otp } = req.body; + const user = await User.findOne({ email }); + + if (!user) { + return res.status(400).json({ + error_code: 400, + message: 'User not found' + }); } - return res.status(200).send({ - error_code : 200, - message : 'otp Verified' - }) + if (user.otp !== otp) { + return res.status(400).json({ + error_code: 400, + message: 'Incorrect OTP' + }); + } - }catch(err){ - console.log('Error inside verifyOtp Controller',err); - return res.status(500).send({ - message : 'Internal Error', - error_code : 500, - }) + user.otpVerifly = true; + await user.save(); + + return res.status(200).json({ + error_code: 200, + message: 'OTP verified successfully', + }); + + } catch (error) { + console.error('Error in verify OTP:', error); + return res.status(500).json({ + error_code: 500, + message: 'Failed' + }); } -} +}; +const resendOTP = async (req, res) => { + try { + const { email } = req.body; + + const existingUser = await User.findOne({ email: email }); + + if (!existingUser) { + return res.status(404).json({ + error_code: 404, + message: 'User not found' + }); + } + + // if (!existingUser.otpVerifly) { + // return res.status(400).json({ + // error_code: 400, + // message: 'OTP verification is not enabled for this user' + // }); + // } + + const newOTP = generateOTP(); + + existingUser.otp = newOTP; + await existingUser.save(); + + await sendOTPByEmail(email, newOTP); + + return res.status(200).json({ + error_code: 200, + message: 'OTP resent successfully' + }); + } catch (err) { + console.error('Error inside resendOTP:', err); + return res.status(500).json({ error_code: 500, message: 'Internal server error' }); + } +}; + + +const forgotPassword = async (req, res) => { + try { + console.log(req.body, "sahgasdh") + const { email } = req.body; + + const user = await User.findOne({ email: email }); + console.log("🚀 ~ forgotPassword ~ user:", user) + + if (!user) { + return res.status(404).json({ + error_code: 404, + message: 'User not found' + }); + } + + const otp = generateOTP(); + + user.otp = otp; + await user.save(); + + await sendOTPByEmail(email, otp); + + return res.status(200).json({ + error_code: 200, + message: 'OTP sent to user\'s email successfully', + otp + }); + } catch (err) { + console.error('Error inside forgotPassword:', err); + return res.status(500).json({ error_code: 500, message: 'Internal server error' }); + } +}; + +const resetPassword = async (req, res) => { + try { + const { email, newPassword, confirmPassword } = req.body; + + if (newPassword !== confirmPassword) { + return res.status(400).json({ + error_code: 400, + message: 'New password and confirm password do not match' + }); + } + + const user = await User.findOne({ email: email }); + + if (!user) { + return res.status(404).json({ + error_code: 404, + message: 'User not found' + }); + } + + user.password = bcrypt.hashSync(newPassword, 8); + await user.save(); + + return res.status(200).json({ + error_code: 200, + message: 'Password reset successfully' + }); + } catch (err) { + console.error('Error inside resetPassword:', err); + return res.status(500).json({ error_code: 500, message: 'Internal server error' }); + } +}; + + module.exports = { signIn, signUp, - verifyOtp + verifyOtp, + resendOTP, forgotPassword, resetPassword } \ No newline at end of file diff --git a/controllers/categories.controller.js b/controllers/categories.controller.js index 29395ec..ecd50d4 100644 --- a/controllers/categories.controller.js +++ b/controllers/categories.controller.js @@ -4,7 +4,10 @@ const Category = require('../models/categories.model'); const createCategories = async (req, res) => { try { - if (!req.body.categoriesName) { + + console.log(req.body) + const name =req.body; + if (!req.body.name) { return res.status(400).send({ error_code: 400, message: "Category name is required" @@ -12,7 +15,7 @@ const createCategories = async (req, res) => { } let obj = { - name: req.body.categoriesName, + name: req.body.name , }; if (req.file) { diff --git a/controllers/language.controller.js b/controllers/language.controller.js index 0bbe2e3..9f18357 100644 --- a/controllers/language.controller.js +++ b/controllers/language.controller.js @@ -1,24 +1,24 @@ const Language = require('../models/language.model'); // Function to create a new language -const createLanguage = async function (req, res) { +const createLanguage = async function (req, res) { try { let obj = { language: req.body.language ? req.body.language : undefined } if (!obj.language) { - return res.status(400).json({ error: "Language name is required" }); + return res.status(400).json({ error_code: 400,message: "Language name is required" }); } // Call the model function to create language using obj.language const language = await Language.create({ name: obj.language }); // If language is created successfully, send a success response - res.status(201).json({ message: "Language created successfully", language }); + res.status(200).json({ error_code: 200,message: "Language created successfully", language }); } catch (error) { console.error('Error creating language:', error); - res.status(500).json({ error: 'Failed to create language' }); + res.status(500).json({ error_code: 500,message: 'Failed to create language' }); } }; @@ -30,17 +30,17 @@ const updateLanguage = async function (req, res) { // Check if languageId is provided if (!languageId) { - return res.status(400).json({ error: "Language ID is required" }); + return res.status(400).json({ error_code: 400,error: "Language ID is required" }); } // Find the language by ID and update its name const language = await Language.findByIdAndUpdate(languageId, { name }, { new: true }); if (!language) { - return res.status(404).json({ error: "Language not found" }); + return res.status(404).json({ error_code: 404,message: "Language not found" }); } - res.json({ message: "Language updated successfully", language }); + res.status(200).json({ error_code: 200,message: "Language updated successfully", language }); } catch (error) { console.error('Error updating language:', error); res.status(500).json({ error: 'Failed to update language' }); @@ -52,25 +52,25 @@ const deleteLanguage = async function (req, res) { const languageId = req.params.id; if (!languageId) { - return res.status(400).json({ error: "Language ID is required" }); + return res.status(400).json({ error_code: 400,message: "Language ID is required" }); } const language = await Language.findByIdAndDelete(languageId); if (!language) { - return res.status(404).json({ error: "Language not found" }); + return res.status(404).json({error_code: 404, message: "Language not found" }); } res.json({ message: "Language deleted successfully" }); } catch (error) { console.error('Error deleting language:', error); - res.status(500).json({ error: 'Failed to delete language' }); + res.status(500).json({ error_code: 500,message: 'Failed to delete language' }); } }; const getLanguage = async function (req, res) { try { const page = parseInt(req.query.page) || 1; - const limit = parseInt(req.query.limit) || 10; + const limit = parseInt(req.query.limit) || 5; const skip = (page - 1) * limit; const searchQuery = req.query.search || ''; @@ -96,7 +96,7 @@ const getLanguage = async function (req, res) { }); } catch (error) { console.error('Error getting languages:', error); - res.status(500).json({ error: 'Failed to get languages' }); + res.status(500).json({ error_code: 500,message: 'Failed to get languages' }); } }; @@ -115,6 +115,7 @@ const changeLanguageStatus = async function (req, res) { await languageData.save(); res.status(200).send({ + error_code: 200, message: `ads status toggled successfully to ${languageData.status}`, user: languageData }); @@ -127,10 +128,27 @@ const changeLanguageStatus = async function (req, res) { } }; +//get alllanguage without pegination + +const getAllLanguage = async function (req, res) { + try { + const languages = await Language.find(); + res.json({ + error_code: 200, + message: 'Languages retrieved successfully', + languages + }); + } catch (error) { + console.error('Error getting languages:', error); + res.status(500).json({ error_code: 500,message: 'Failed to get languages' }); + } +}; + module.exports = { createLanguage, updateLanguage, deleteLanguage, changeLanguageStatus, - getLanguage + getLanguage, + getAllLanguage }; diff --git a/controllers/notification.controller.js b/controllers/notification.controller.js index 2b1ee68..89d1e0c 100644 --- a/controllers/notification.controller.js +++ b/controllers/notification.controller.js @@ -5,20 +5,72 @@ const User = require('../models/user.model'); const userConst = require('../util/constant') +// const createNotification = async (req, res) => { +// try { +// const { sendTo, Type, Title, message, user } = req.body; + +// // Validate sendTo value +// if (!sendTo || !['toAll', 'host', 'specific'].includes(sendTo)) { +// return res.status(400).json({ error_code: 400, message: 'Invalid sendTo value' }); +// } + +// let recipients = []; + +// // Determine recipients based on sendTo value +// if (sendTo === 'toAll') { +// recipients = await User.find().distinct('_id'); +// } else if (sendTo === 'host') { +// const host = await User.findOne({ role: 'host' }); +// if (host) recipients = [host._id]; +// } else if (sendTo === 'specific') { +// recipients = await User.find({ role: 'specificRole' }).distinct('_id'); +// } +// const newNotification = new Notification({ +// sendTo, +// Type, +// Title, +// message, +// user, +// recipients +// }); +// const savedNotification = await newNotification.save(); + +// return res.status(201).json({ +// error_code: 200, +// message: 'Notification created successfully', +// notification: savedNotification +// }); +// } catch (err) { +// console.error('Error inside createNotification controller:', err); +// return res.status(500).json({ +// error_code: 500, +// message: 'Internal Server Error' +// }); +// } +// }; + const createNotification = async (req, res) => { try { const { sendTo, Type, Title, message, user } = req.body; - // Validate sendTo value if (!sendTo || !['toAll', 'host', 'specific'].includes(sendTo)) { return res.status(400).json({ error_code: 400, message: 'Invalid sendTo value' }); } let recipients = []; - - // Determine recipients based on sendTo value if (sendTo === 'toAll') { recipients = await User.find().distinct('_id'); + await Promise.all(recipients.map(async (userId) => { + const newNotification = new Notification({ + sendTo, + Type, + Title, + message, + user: userId, + }); + console.log("🚀 ~ awaitPromise.all ~ newNotification:", newNotification) + await newNotification.save(); + })); } else if (sendTo === 'host') { const host = await User.findOne({ role: 'host' }); if (host) recipients = [host._id]; @@ -33,6 +85,7 @@ const createNotification = async (req, res) => { user, recipients }); + const savedNotification = await newNotification.save(); return res.status(201).json({ @@ -51,10 +104,11 @@ const createNotification = async (req, res) => { + const getNotifications = async (req, res) => { try { const page = parseInt(req.query.page) || 1; - const limit = parseInt(req.query.limit) || 5; + const limit = parseInt(req.query.limit) || 10; const skip = (page - 1) * limit; const searchQuery = req.query.search || ''; @@ -125,6 +179,23 @@ const getNotificationId = async(req,res)=>{ } } +//delete all notifications +const deleteAllNotifications = async (req, res) => { + try { + await Notification.deleteMany({}); + res.status(200).json({ + error_code: 200, + message: 'All notifications deleted successfully' + }); + } catch (err) { + console.error('Error inside deleteAllNotifications controller:', err); + res.status(500).json({ + error_code: 500, + message: 'Internal Server Error' + }); + } +}; + @@ -132,7 +203,8 @@ const getNotificationId = async(req,res)=>{ module.exports = { createNotification, getNotifications, - deleteNotification,getNotificationId + deleteNotification,getNotificationId, + deleteAllNotifications }; diff --git a/controllers/playlist.controller.js b/controllers/playlist.controller.js index f492d66..1caa125 100644 --- a/controllers/playlist.controller.js +++ b/controllers/playlist.controller.js @@ -1,125 +1,172 @@ const PlayList = require('../models/playlist.model'); -const User = require('../models/user.model'); +const Song = require('../models/song.model'); +const { User } = require('../models/user.model'); -const createPlaylist = async(req,res) => { - try{ - console.log(req.body); - let obj = { - name : req.body.name ? req.body.name : undefined , - songs : req.body.songs ? req.body.songs : undefined, - userId : req.userId +// const createPlaylist = async (req, res) => { +// try { +// console.log(req.body); +// let obj = { +// name: req.body.name ? req.body.name : undefined, +// songs: req.body.songs ? req.body.songs : undefined, +// userId: req.userId +// } +// const created_playlist = await PlayList.create(obj); +// const user = await User.findById(req.userId); +// await user.playlist.push(created_playlist._id); +// await user.save(); +// return res.status(201).send({ +// error_code: 200, +// message: 'Playlist got created' +// }) + +// } catch (err) { +// console.log('Error inside createPlaylist ', err); +// return res.status(500).send({ +// error_code: 500, +// message: 'Internal Server Error' +// }) +// } +// } + +const createPlaylist = async (req, res) => { + try { + // Check if songs are provided in the request body + if (!req.body.songs) { + return res.status(400).send({ + error_code: 400, + message: 'Songs must be provided' + }); } + + // Convert a single song ID to an array + const songIds = Array.isArray(req.body.songs) ? req.body.songs : [req.body.songs]; + + // Check if all songs exist + const songs = await Song.find({ _id: { $in: songIds } }); + if (songs.length !== songIds.length) { + return res.status(400).send({ + error_code: 400, + message: 'One or more songs do not exist' + }); + } + + let obj = { + name: req.body.name ? req.body.name : undefined, + songs: songIds, + userId: req.userId + }; + const created_playlist = await PlayList.create(obj); const user = await User.findById(req.userId); await user.playlist.push(created_playlist._id); await user.save(); return res.status(201).send({ - error_code : 200, - message : 'Playlist got created' - }) + error_code: 200, + message: 'Playlist created successfully' + }); - }catch(err) - { - console.log('Error inside createPlaylist ',err); + } catch (err) { + console.log('Error inside createPlaylist ', err); return res.status(500).send({ - error_code : 500, - message : 'Internal Server Error' - }) + error_code: 500, + message: 'Internal Server Error' + }); } -} +}; -const addSong = async(req,res) => { - try{ + + +const addSong = async (req, res) => { + try { const playlist = await PlayList.findById(req.params.id); const obj = { - name : req.body.name ? req.body.name : undefined, - } + name: req.body.name ? req.body.name : undefined, + } - playlist.songs.push(req.body.song); - await playlist.save(); - await playlist.updateOne(obj); - await playlist.save(); - return res.status(201).send({ - error_code : 200, - message : 'Songs added to playlist' - }) - - + playlist.songs.push(req.body.song); + await playlist.save(); + await playlist.updateOne(obj); + await playlist.save(); + return res.status(201).send({ + error_code: 200, + message: 'Songs added to playlist' + }) - }catch(err){ - console.log('Error inside update playlist',err); + + + } catch (err) { + console.log('Error inside update playlist', err); return res.status(500).send({ - error_code : 500, - message : 'Internal server Error' + error_code: 500, + message: 'Internal server Error' }) } } -const removeSong = async(req,res) => { - try{ - let playlist = await PlayList.findById(req.params.id); - console.log(playlist); - for(let i=0; playlist.songs.length;i++){ - if(playlist.songs[i]==req.body.song) - { - playlist.songs.splice(i,1); +const removeSong = async (req, res) => { + try { + let playlist = await PlayList.findById(req.params.id); + console.log(playlist); + for (let i = 0; playlist.songs.length; i++) { + if (playlist.songs[i] == req.body.song) { + playlist.songs.splice(i, 1); await playlist.save(); return res.status(201).send({ - error_code : 200, - message : 'Song got removed from playlist' + error_code: 200, + message: 'Song got removed from playlist' }) - } - } - }catch(err){ - console.log('Error inside removeSong Controller',err); + } + } + } catch (err) { + console.log('Error inside removeSong Controller', err); return res.status(500).send({ - error_code : 500, - message : 'Internal Server Error' + error_code: 500, + message: 'Internal Server Error' }) } } -const getPlaylist = async(req,res) => { - try{ +const getPlaylist = async (req, res) => { + try { let obj = {}; - if(req.params.id){ + if (req.params.id) { obj['_id'] = req.params.id } - const playlist = await PlayList.find(obj); + const playlist = await PlayList.find(obj); - return res.status(200).send(playlist); + return res.status(200).send(playlist); - }catch(err){ - console.log('Error inside getPlaylist Controller',err); + } catch (err) { + console.log('Error inside getPlaylist Controller', err); return res.status(500).send({ - error_code : 500, - message : 'Internal Server Error' + error_code: 500, + message: 'Internal Server Error' }) } } -const deletePlaylist = async(req,res) => { - try{ +const deletePlaylist = async (req, res) => { + try { let id = req.params.id; - await PlayList.deleteOne({_id:id}); + await PlayList.deleteOne({ _id: id }); const user = await User.findById(req.userId); - for(let i=0;i { +// try { +// const { +// categoryId, +// subcategoryId, +// albumId, +// artistId, +// title, +// musicLink, +// trackerID, +// lyrics, +// languageId +// } = req.body; + +// const { coverArtImage, musicFile } = req.files; +// const [category, subcategory, album, artist, language] = await Promise.all([ +// Category.findById(categoryId), +// Subcategory.findById(subcategoryId), +// Album.findById(albumId), +// Artist.findById(artistId), +// Language.findById(languageId) +// ]); + +// if (!category || !subcategory || !album || !artist || !language) { +// const missingEntities = []; +// if (!category) missingEntities.push('Category'); +// if (!subcategory) missingEntities.push('Subcategory'); +// if (!album) missingEntities.push('Album'); +// if (!artist) missingEntities.push('Artist'); +// if (!language) missingEntities.push('Language'); +// const errorMessage = `The following entities were not found: ${missingEntities.join(', ')}.`; +// return res.status(404).json({ error_code: 404, message: errorMessage }); +// } +// const coverArtImagePath = coverArtImage[0].path; +// const musicFilePath = musicFile[0].path; + +// const baseUrl = `${req.protocol}://${req.get('host')}`; +// const coverArtImageUrl = `${baseUrl}/${coverArtImagePath}`; +// const newSong = await Song.create({ +// categoryId, +// subcategoryId, +// albumId, +// artistId, +// title, +// musicLink, +// trackerID, +// lyrics, +// languageId, +// coverArtImage: { +// filename: coverArtImage[0].filename, +// fileAddress: coverArtImagePath, +// imageUrl: coverArtImageUrl +// }, +// musicFile: { +// filename: musicFile[0].filename, +// fileAddress: musicFilePath +// } +// }); +// return res.status(201).json({ +// error_code: 200, +// message: 'Song created successfully', +// song: newSong +// }); +// } catch (err) { +// console.error('Error inside createSong:', err); +// return res.status(500).json({ error_code: 500, message: 'Internal Server Error' }); +// } +// }; + +// const createSong = async (req, res) => { +// try { +// const { +// categoryId, +// subcategoryId, +// albumId, +// artistId, +// title, +// languageId, +// type, +// musicLink, +// trackerID, +// lyrics +// } = req.body; + +// if (!type || !['1', '2'].includes(type)) { +// return res.status(400).json({ error_code: 400, message: 'Invalid or missing type parameter' }); +// } + +// let musicFilePath; +// let musicFileUrl; // Define a variable to store the URL of the music file + +// if (type === '1') { +// if (!musicLink || !trackerID) { +// return res.status(400).json({ error_code: 400, message: 'Music link and tracker ID are required for type 1' }); +// } +// } else if (type === '2') { +// if (!req.files || !req.files.musicFile) { +// return res.status(400).json({ error_code: 400, message: 'Music file is required' }); +// } + +// if (!Array.isArray(req.files.musicFile) || req.files.musicFile.length === 0) { +// return res.status(400).json({ error_code: 400, message: 'Invalid music file provided' }); +// } +// musicFilePath = req.files.musicFile[0].path; +// musicFileUrl = `${req.protocol}://${req.get('host')}/${musicFilePath}`; // Construct the URL of the music file +// } + +// const { coverArtImage } = req.files; + +// const coverArtImagePath = coverArtImage[0].path; +// const coverArtImageUrl = `${req.protocol}://${req.get('host')}/${coverArtImagePath}`; + +// const [category, subcategory, album, artist, language] = await Promise.all([ +// Category.findById(categoryId), +// Subcategory.findById(subcategoryId), +// Album.findById(albumId), +// Artist.findById(artistId), +// Language.findById(languageId) +// ]); + +// if (![category, subcategory, album, artist, language].every(entity => entity)) { +// const missingEntities = ['Category', 'Subcategory', 'Album', 'Artist', 'Language'] +// .filter((entity, index) => ![category, subcategory, album, artist, language][index]); +// const errorMessage = `The following entities were not found: ${missingEntities.join(', ')}.`; +// return res.status(404).json({ error_code: 404, message: errorMessage }); +// } + +// let newSong; + +// if (type === '1') { +// newSong = await Song.create({ +// categoryId, +// subcategoryId, +// albumId, +// artistId, +// title, +// languageId, +// musicLink, +// trackerID, +// coverArtImage: { +// filename: coverArtImage[0].filename, +// fileAddress: coverArtImagePath, +// imageUrl: coverArtImageUrl +// }, +// }); +// } else if (type === '2') { +// newSong = await Song.create({ +// categoryId, +// subcategoryId, +// albumId, +// artistId, +// title, +// languageId, +// lyrics, +// coverArtImage: { +// filename: coverArtImage[0].filename, +// fileAddress: coverArtImagePath, +// imageUrl: coverArtImageUrl +// }, +// musicFile: { +// filename: req.files.musicFile[0].filename, +// fileAddress: musicFilePath, +// url: musicFileUrl // Include the URL of the music file in the database +// } +// }); +// } + +// return res.status(201).json({ +// error_code: 200, +// message: 'Song created successfully', +// song: newSong +// }); +// } catch (err) { +// console.error('Error inside createSong:', err); +// return res.status(500).json({ error_code: 500, message: 'Internal Server Error' }); +// } +// }; + const createSong = async (req, res) => { try { + console.log(req.body,"ehjyqgfe") const { categoryId, subcategoryId, albumId, - artistId, + artistId, title, + languageId, + type, musicLink, trackerID, - lyrics, - languageId + lyrics } = req.body; - const { coverArtImage, musicFile } = req.files; + if (!type || !['1', '2'].includes(type)) { + return res.status(400).json({ error_code: 400, message: 'Invalid or missing type parameter' }); + } - // Check if both cover art image and music file are provided - + let musicFilePath; + let musicFileUrl; - // Find all related documents in parallel - const [category, subcategory, album, artist, language] = await Promise.all([ + if (type === '1') { + if (!musicLink || !trackerID) { + return res.status(400).json({ error_code: 400, message: 'Music link and tracker ID are required for type 1' }); + } + } else if (type === '2') { + if (!req.files || !req.files.musicFile) { + return res.status(400).json({ error_code: 400, message: 'Music file is required' }); + } + + if (!Array.isArray(req.files.musicFile) || req.files.musicFile.length === 0) { + return res.status(400).json({ error_code: 400, message: 'Invalid music file provided' }); + } + musicFilePath = req.files.musicFile[0].path; + musicFileUrl = `${req.protocol}://${req.get('host')}/${musicFilePath}`; + } + + console.log("🚀 ~ createSong ~ musicFilePath:", musicFilePath) + const { coverArtImage } = req.files; + + const coverArtImagePath = coverArtImage[0].path; + const coverArtImageUrl = `${req.protocol}://${req.get('host')}/${coverArtImagePath}`; + + const [category, subcategory, album, language] = await Promise.all([ Category.findById(categoryId), Subcategory.findById(subcategoryId), Album.findById(albumId), - Artist.findById(artistId), Language.findById(languageId) ]); - // Check if all related documents exist - if (!category || !subcategory || !album || !artist || !language) { - const missingEntities = []; - if (!category) missingEntities.push('Category'); - if (!subcategory) missingEntities.push('Subcategory'); - if (!album) missingEntities.push('Album'); - if (!artist) missingEntities.push('Artist'); - if (!language) missingEntities.push('Language'); + if (![category, subcategory, album, language].every(entity => entity)) { + const missingEntities = ['Category', 'Subcategory', 'Album', 'Language'] + .filter((entity, index) => ![category, subcategory, album, language][index]); const errorMessage = `The following entities were not found: ${missingEntities.join(', ')}.`; - return res.status(404).json({ error_code: 404, message: errorMessage }); + return res.status(402 ).json({ error_code: 402, message: errorMessage }); } - // Extract file paths - const coverArtImagePath = coverArtImage[0].path; - const musicFilePath = musicFile[0].path; + const artistIdsArray = artistId.split(',').map(id => id.trim()); + console.log("🚀 ~ createSong ~ artistIdsArray:", artistIdsArray) - // Construct the image URL for cover art - const baseUrl = `${req.protocol}://${req.get('host')}`; - const coverArtImageUrl = `${baseUrl}/${coverArtImagePath}`; + let newSong; - // Create the new song - const newSong = await Song.create({ - categoryId, - subcategoryId, - albumId, - artistId, - title, - musicLink, - trackerID, - lyrics, - languageId, - coverArtImage: { - filename: coverArtImage[0].filename, - fileAddress: coverArtImagePath, - imageUrl: coverArtImageUrl // Add imageUrl to coverArtImage object - }, - musicFile: { - filename: musicFile[0].filename, - fileAddress: musicFilePath - } - }); + if (type === '1') { + newSong = await Song.create({ + categoryId, + subcategoryId, + albumId, + artistId: artistIdsArray, + title, + languageId, + musicLink, + trackerID, + coverArtImage: { + filename: coverArtImage[0].filename, + fileAddress: coverArtImagePath, + imageUrl: coverArtImageUrl + }, + }); + } else if (type === '2') { + newSong = await Song.create({ + categoryId, + subcategoryId, + albumId, + artistId: artistIdsArray, + title, + languageId, + lyrics, + coverArtImage: { + filename: coverArtImage[0].filename, + fileAddress: coverArtImagePath, + imageUrl: coverArtImageUrl + }, + musicFile: { + filename: req.files.musicFile[0].filename, + fileAddress: musicFilePath, + url: musicFileUrl // Include the URL of the music file in the database + } + }); + } + console.log("🚀 ~ createSong ~ newSong:", newSong) - // Return success response with the new song - return res.status(201).json({ + + return res.status(200).json({ error_code: 200, message: 'Song created successfully', song: newSong @@ -85,18 +298,113 @@ const createSong = async (req, res) => { console.error('Error inside createSong:', err); return res.status(500).json({ error_code: 500, message: 'Internal Server Error' }); } + }; +// const updateSong = async (req, res) => { +// try { +// const { id } = req.params; +// const updatedSong = await Song.findByIdAndUpdate(id, req.body, { new: true }); +// if (!updatedSong) { +// return res.status(404).json({ error_code: 404, message: 'Song not found' }); +// } +// return res.status(200).json({ error_code: 200, message: 'Song updated successfully', song: updatedSong }); +// } catch (err) { +// console.error('Error inside updateSong:', err); +// return res.status(500).json({ error_code: 500, message: 'Internal Server Error' }); +// } +// }; + const updateSong = async (req, res) => { try { - const { id } = req.params; // Extract the song ID from the request parameters - const updatedSong = await Song.findByIdAndUpdate(id, req.body, { new: true }); // Find song by ID and update with the request body data + console.log(req.params,"dshgudgf") + const {_id} = req.params; + // console.log("🚀 ~ updateSong ~ songId:", songId) + const song = await Song.findById(_id); + console.log("🚀 ~ updateSong ~ song:", song) + + if (!song) { + return res.status(404).json({ error_code: 404, message: 'Song not found' }); + } + + const { + categoryId, + subcategoryId, + albumId, + artistId, + title, + languageId, + type, + musicLink, + trackerID, + lyrics + } = req.body; + + const updates = {}; + + // Input validation + if (categoryId) updates.categoryId = categoryId; + if (subcategoryId) updates.subcategoryId = subcategoryId; + if (albumId) updates.albumId = albumId; + if (artistId) { + updates.artistId = artistId.split(',').map(id => id.trim()); + } + if (title) updates.title = title; + if (languageId) updates.languageId = languageId; + if (type) { + if (!['1', '2'].includes(type)) { + return res.status(400).json({ error_code: 400, message: 'Invalid type parameter' }); + } + updates.type = type; + if (type === '1') { + if (!musicLink || !trackerID) { + return res.status(400).json({ error_code: 400, message: 'Music link and tracker ID are required for type 1' }); + } + updates.musicLink = musicLink; + updates.trackerID = trackerID; + } else if (type === '2') { + // if (!req.files || !req.files.musicFile) { + // return res.status(400).json({ error_code: 400, message: 'Music file is required' }); + // } + if (req.files && req.files.musicFile) { + const musicFilePath = req.files.musicFile[0].path; + const musicFileUrl = `${req.protocol}://${req.get('host')}/uploads/${musicFilePath}`; + updates.musicFile = { + filename: req.files.musicFile[0].filename, + fileAddress: musicFilePath, + url: musicFileUrl + }; + } + } + } + if (lyrics !== undefined) updates.lyrics = lyrics; + + // Update cover art image if provided + if (req.files && req.files.coverArtImage) { + const coverArtImage = req.files.coverArtImage[0]; + const coverArtImagePath = coverArtImage.path; + const coverArtImageUrl = `${req.protocol}://${req.get('host')}/uploads/${coverArtImagePath}`; + updates.coverArtImage = { + filename: coverArtImage.filename, + fileAddress: coverArtImagePath, + imageUrl: coverArtImageUrl + }; + } + + // Perform the update and return the updated song + const updatedSong = await Song.findByIdAndUpdate(_id, updates, { new: true }); + if (!updatedSong) { return res.status(404).json({ error_code: 404, message: 'Song not found' }); } - return res.status(200).json({ error_code: 200, message: 'Song updated successfully', song: updatedSong }); + + return res.status(200).json({ + error_code: 200, + message: 'Song updated successfully', + song: updatedSong + }); } catch (err) { console.error('Error inside updateSong:', err); return res.status(500).json({ error_code: 500, message: 'Internal Server Error' }); @@ -104,9 +412,11 @@ const updateSong = async (req, res) => { }; + + const deleteSong = async (req, res) => { try { - const { id } = req.params; + const { id } = req.params; const deletedSong = await Song.findByIdAndDelete(id); if (!deletedSong) { return res.status(404).json({ error_code: 404, message: 'Song not found' }); @@ -117,19 +427,81 @@ const deleteSong = async (req, res) => { return res.status(500).json({ error_code: 500, message: 'Internal Server Error' }); } }; + + + + +// const getSong = async (req, res) => { +// try { +// const { id } = req.params; +// const song = await Song.findById(id) +// .populate('languageId', 'name') +// .populate('artistId', 'ArtistName') +// .select('title musicLink trackerID lyrics coverArtImage'); + +// if (!song) { +// return res.status(404).json({ error_code: 404, message: 'Song not found' }); +// } + +// const { languageId, artistId, musicLink, trackerID, lyrics } = song; +// const languageName = languageId ? languageId.name : null; + +// const artistName = artistId ? artistId.ArtistName : null; +// const imageUrl = song.coverArtImage ? song.coverArtImage.imageUrl : null; + +// const songData = { +// languageName: languageName, +// artistName: artistName, +// musicLink: musicLink || null, +// trackerID: trackerID || null, +// lyrics: lyrics || null, +// imageUrl: imageUrl +// }; + +// return res.status(200).json({ +// error_code: 200, +// message: 'Song retrieved successfully', +// song: songData +// }); +// } catch (err) { +// console.error('Error inside getSong:', err); +// return res.status(500).json({ error_code: 500, message: 'Internal Server Error' }); +// } +// }; + const getSong = async (req, res) => { try { - const { id } = req.params; + const { id } = req.params; const song = await Song.findById(id) .populate('languageId', 'name') .populate('artistId', 'ArtistName') - .select('title musicLink trackerID lyrics coverArtImage'); + .select('title musicLink trackerID lyrics coverArtImage musicFile'); if (!song) { return res.status(404).json({ error_code: 404, message: 'Song not found' }); } - - return res.status(200).json({ error_code: 200, message: 'Song retrieved successfully', song }); + + const { languageId, artistId, musicLink, trackerID, lyrics, coverArtImage, musicFile } = song; + const languageName = languageId ? languageId.name : 'Language not available'; + const artistNames = artistId.map(artist => artist.ArtistName); + const imageUrl = coverArtImage ? coverArtImage.imageUrl : 'Image not available'; + const url = musicFile ? musicFile.url : 'Music file not available'; + + const songData = { + languageName: languageName, + artistNames: artistNames, + musicLink: musicLink || 'Music link not available', + trackerID: trackerID || 'Tracker ID not available', + lyrics: lyrics || 'Lyrics not available', + imageUrl: imageUrl, + url: url + }; + + return res.status(200).json({ + error_code: 200, + message: 'Song retrieved successfully', + song: songData + }); } catch (err) { console.error('Error inside getSong:', err); return res.status(500).json({ error_code: 500, message: 'Internal Server Error' }); @@ -138,6 +510,8 @@ const getSong = async (req, res) => { + + const changeSongStatus = async (req, res) => { try { const { id } = req.params; @@ -166,47 +540,82 @@ const changeSongStatus = async (req, res) => { } }; + const getAllSongs = async (req, res) => { try { - const { title, artist, category } = req.query; - let query = {}; + const { title, artist, category, page, limit } = req.query; - // Build query object based on search fields - const searchFields = ['title', 'artist', 'category']; - searchFields.forEach(field => { + // Build match stage for filtering based on search fields + const matchStage = {}; + ['title', 'artist', 'category'].forEach(field => { if (req.query[field]) { - query[field] = { $regex: req.query[field], $options: 'i' }; + matchStage[field] = { $regex: req.query[field], $options: 'i' }; } }); - // Pagination parameters - const pageNumber = Math.max(1, parseInt(req.query.pageNumber) || 1); - const pageSize = Math.max(1, parseInt(req.query.pageSize) || 10); + const pageNumber = Math.max(1, parseInt(page) || 1); + const pageSize = Math.max(1, parseInt(limit) || 5); - // Count total songs based on the query - const totalSongs = await Song.countDocuments(query); - const totalPages = Math.ceil(totalSongs / pageSize); + const pipeline = [ + { $match: matchStage }, + { + $lookup: { + from: 'categories', + localField: 'categoryId', + foreignField: '_id', + as: 'category' + } + }, + { + $lookup: { + from: 'albums', + localField: 'albumId', + foreignField: '_id', + as: 'album' + } + }, + { + $lookup: { + from: 'subcategories', + localField: 'subcategoryId', + foreignField: '_id', + as: 'subcategory' + } + }, + { + $lookup: { + from: 'artists', + localField: 'artistId', + foreignField: '_id', + as: 'artist' + } + }, + { + $project: { + title: 1, + category: { $arrayElemAt: ['$category.name', 0] }, + subcategory: { $arrayElemAt: ['$subcategory.SubCategoriesName', 0] }, + artist: { $arrayElemAt: ['$artist.ArtistName', 0] }, + album: { $arrayElemAt: ['$album.albumName', 0] }, + status: '$status' + } + }, + { $sort: { title: 1 } }, + { $skip: (pageNumber - 1) * pageSize }, + { $limit: pageSize } + ]; - // Find songs based on the query and pagination - const songs = await Song.find(query) - .populate({ path: 'categoryId', select: 'name' }) - .populate({ path: 'albumId', select: 'albumName' }) - .populate({ path: 'subcategoryId', select: 'SubCategoriesName' }) - .populate({ path: 'artistId', select: 'ArtistName' }) - .sort({ title: 1 }) - .skip((pageNumber - 1) * pageSize) - .limit(pageSize); + const totalCount = await Song.countDocuments(matchStage); + const totalPages = Math.ceil(totalCount / pageSize); - // Check if songs are found - if (songs.length === 0) { - return res.status(404).json({ error_code: 404, message: 'Songs not found' }); - } - - // Return songs along with pagination details + const songs = await Song.aggregate(pipeline); return res.status(200).json({ error_code: 200, message: 'Songs retrieved successfully', songs, + // page:pageNumber, + // limit:pageSize, + total_count:totalCount, total_pages: totalPages, current_page: pageNumber }); @@ -216,6 +625,46 @@ const getAllSongs = async (req, res) => { } }; +// const getAllSongs = async (req, res) => { +// try { +// const songs = await Song.find() +// .populate('languageId', 'name') +// .populate('artistId', 'ArtistName') +// .select('title musicLink trackerID lyrics coverArtImage'); + +// if (!songs || songs.length === 0) { +// return res.status(404).json({ error_code: 404, message: 'Songs not found' }); +// } + +// const songData = songs.map(song => { +// const { languageId, artistId, musicLink, trackerID, lyrics, coverArtImage } = song; +// const languageName = languageId ? languageId.name : null; +// const artistNames = artistId ? artistId.map(artist => artist.ArtistName) : null; +// const imageUrl = coverArtImage ? coverArtImage.imageUrl : null; + +// return { +// languageName: languageName, +// artistNames: artistNames, +// musicLink: musicLink || null, +// trackerID: trackerID || null, +// lyrics: lyrics || null, +// imageUrl: imageUrl +// }; +// }); + +// return res.status(200).json({ +// error_code: 200, +// message: 'Songs retrieved successfully', +// songs: songData +// }); +// } catch (err) { +// console.error('Error inside getAllSongs:', err); +// return res.status(500).json({ error_code: 500, message: 'Internal Server Error' }); +// } +// }; + + + module.exports = { diff --git a/controllers/subcategories.controller.js b/controllers/subcategories.controller.js index c0d8e50..b2c2781 100644 --- a/controllers/subcategories.controller.js +++ b/controllers/subcategories.controller.js @@ -408,69 +408,30 @@ const changeSubCategoryStatus = async (req, res) => { } }; -// const getCategories = async (req, res) => { -// try { -// const { CategoriesId } = req.params; - - -// const categories = await SubCategories.find({ CategoriesId: CategoriesId }); -// console.log("🚀 ~ getCategories ~ categories:", categories) -// if (!categories || categories.length === 0) { -// return res.status(400).send({ -// error_code: 400, -// message: 'Categories not found for the given category ID' -// }); -// } - -// // Return the found categories -// res.status(200).json({ -// error_code: 200, -// message: 'Categories retrieved successfully', -// categories: categories -// }); - -// } catch (err) { -// console.error('Error inside getCategories', err); -// res.status(500).send({ -// error_code: 500, -// message: 'Internal Server Error' -// }); -// } -// }; - -// ------------------------------------------------ - -const getSubCategoriesfromCategory = async (req, res) => { +const getCategories = async (req, res) => { try { const { CategoriesId } = req.params; - const categories = await SubCategories.find({ CategoriesId: CategoriesId }); + const categories = await SubCategories.find({ CategoriesId: CategoriesId }); + console.log("🚀 ~ getCategories ~ categories:", categories) if (!categories || categories.length === 0) { - return res.status(400).json({ + return res.status(400).send({ error_code: 400, message: 'Categories not found for the given category ID' }); } - const categoriesWithImageUrl = categories.map(category => ({ - _id: category._id, - SubCategoriesName: category.SubCategoriesName, - imageUrl: category.image ? category.image.imageUrl : null, - status: category.status, - CategoriesId: category.CategoriesId, - categoryName: category.categoryName - })); - + // Return the found categories res.status(200).json({ error_code: 200, message: 'Categories retrieved successfully', - categories: categoriesWithImageUrl + categories: categories }); } catch (err) { console.error('Error inside getCategories', err); - res.status(500).json({ + res.status(500).send({ error_code: 500, message: 'Internal Server Error' }); @@ -479,6 +440,45 @@ const getSubCategoriesfromCategory = async (req, res) => { // ------------------------------------------------ +// const getSubCategoriesfromCategory = async (req, res) => { +// try { +// const { CategoriesId } = req.params; + +// const categories = await SubCategories.find({ CategoriesId: CategoriesId }); + +// if (!categories || categories.length === 0) { +// return res.status(400).json({ +// error_code: 400, +// message: 'Categories not found for the given category ID' +// }); +// } + +// const categoriesWithImageUrl = categories.map(category => ({ +// _id: category._id, +// SubCategoriesName: category.SubCategoriesName, +// imageUrl: category.image ? category.image.imageUrl : null, +// status: category.status, +// CategoriesId: category.CategoriesId, +// categoryName: category.categoryName +// })); + +// res.status(200).json({ +// error_code: 200, +// message: 'Categories retrieved successfully', +// categories: categoriesWithImageUrl +// }); + +// } catch (err) { +// console.error('Error inside getCategories', err); +// res.status(500).json({ +// error_code: 500, +// message: 'Internal Server Error' +// }); +// } +// }; + +// ------------------------------------------------ + module.exports = { @@ -488,6 +488,6 @@ module.exports = { getSubCategories, deleteMany, changeSubCategoryStatus, - getSubCategoriesfromCategory + getCategories }; diff --git a/controllers/user.controller.js b/controllers/user.controller.js index 3d4e40f..f19b1db 100644 --- a/controllers/user.controller.js +++ b/controllers/user.controller.js @@ -1,4 +1,4 @@ -const User = require('../models/user.model'); +// const User = require('../models/user.model'); const jwt = require('jsonwebtoken'); const authConfig = require('../configs/auth.config'); const bcrypt = require('bcryptjs'); @@ -6,48 +6,187 @@ const constant = require('../util/constant'); const Artist = require('../models/artist.model'); const Reward = require('../models/Reward.model'); const Song = require('../models/song.model'); +const axios = require('axios'); +const { User } = require('../models/user.model'); +const { validationResult } = require('express-validator'); +const nodemailer = require('nodemailer'); + + + + const sendOTPByEmail = async (email, otp) => { + try { + const transporter = nodemailer.createTransport({ + service: 'gmail', // e.g., 'Gmail' + auth: { + user: 'ay2087355@gmail.com', + pass: 'mqqqnoutaukxenlh' + } + }); + + // Send OTP email + await transporter.sendMail({ + from: 'checkdemo02@gmail.com', + to: email, + subject: 'Your OTP Code', + text: `Your OTP code is: ${otp}` + }); + + console.log('OTP email sent successfully'); + } catch (error) { + console.error('Error sending OTP email:', error); + throw new Error('Failed to send OTP email'); + } + }; + + const userRegister = async (req, res) => { + try { + // Check if the email already exists + const existingUser = await User.findOne({ email: req.body.email }); + console.log("🚀 ~ userRegister ~ existingUser:", existingUser) + if (existingUser) { + return res.status(400).json({ + error_code: 400, + message: 'Email already exists' + }); + } + + // Generate OTP + const otp = Math.floor(10000 + Math.random() * 90000); + + // Create user object with hashed password + const user = await User.create({ + email: req.body.email, + password: bcrypt.hashSync(req.body.password, 8), + registerWith: constant.registerWith.Email, + otp: otp, + userName: req.body.userName, + userType: constant.userTypes.customer + }); + console.log("🚀 ~ userRegister ~ user:", user) + + // Send OTP email + await sendOTPByEmail(user.email, otp); + + return res.status(200).json({ + error_code: 200, + message: 'Success', + user: user + }); + } catch (err) { + console.error('Error in user registration:', err); + return res.status(500).json({ + error_code: 500, + message: 'Failed' + }); + } + }; + + + //otp verify + + const verifyOTP = async (req, res) => { + try { + const { email, otp } = req.body; + const user = await User.findOne({ email }); + + if (!user) { + return res.status(400).json({ + error_code: 400, + message: 'User not found' + }); + } + + if (user.otp !== otp) { + return res.status(400).json({ + error_code: 400, + message: 'Incorrect OTP' + }); + } + + user.otpVerified = true; + await user.save(); + + return res.status(200).json({ + error_code: 200, + message: 'OTP verified successfully', + }); + + } catch (error) { + console.error('Error in verify OTP:', error); + return res.status(500).json({ + error_code: 500, + message: 'Failed' + }); + } + }; + + + const createGoogle = async (req, res) => { try { - - let user = await User.findOne({ email: req.body.email }); - var flag = 0; - - if (!user) { - let obj = { - email: req.body.email, - registerWith: constant.registerWith.google - } - user = await User.create(obj); - flag = 1 - + // Validate request body + const errors = validationResult(req); + if (!errors.isEmpty()) { + return res.status(400).json({ errors: errors.array() }); } - if (user.registerWith != constant.registerWith.google) { - return res.status(400).send({ - error_code : 400, - message: "Can't login Through google" + + // Fetch user data from Google API using access token + const response = await axios.get(`https://www.googleapis.com/oauth2/v1/userinfo?access_token=${req.body.accessToken}`); + const userData = response.data; + + // Check if the user with this Google ID already exists + let user = await User.findOne({ googleId: userData.id }); + + // If user with Google ID doesn't exist, check by email + if (!user) { + user = await User.findOne({ email: userData.email }); + } + + // If user exists, generate token and return response + if (user) { + const token = jwt.sign({ id: user._id, userType: user.userType }, process.env.JWT_SECRET, { expiresIn: '1h' }); + return res.status(200).json({ + _id: user._id, + email: user.email, + token: token, + userType: user.userType, + status: user.status, + message: 'User logged in successfully' }); } - let str = flag ? 'User Got Created' : 'User was already Created'; - const token = jwt.sign({ id: user._id }, authConfig.secretKey, { - expiresIn: 600000 + // If user doesn't exist, create a new user + const newUser = await User.create({ + email: userData.email, + name: userData.name, + profilePic: userData.picture, + authenticationType: "GOOGLE", + googleId: userData.id, }); - return res.status(201).send({ - error_code : 200, - message: str, - acessToken: token - }) - } catch (err) { - console.log(err); - return res.status(500).send({ - error_code : 500, - message: 'Error in creating user' - }) + // Generate token for the new user + const token = jwt.sign({ id: newUser._id, userType: newUser.userType }, process.env.JWT_SECRET, { expiresIn: '1h' }); + + // Send response with user data + return res.status(201).json({ + _id: newUser._id, + email: newUser.email, + token: token, + userType: newUser.userType, + authenticationType: "GOOGLE", + status: newUser.status, + message: 'New user created and logged in successfully' + }); + } catch (error) { + // Handle errors + console.error('Error inside createGoogle:', error); + return res.status(500).json({ + error_code: 500, + message: 'Internal Server Error' + }); } -} - +}; const update = async (req, res) => { try { let id = req.params.id; @@ -71,7 +210,7 @@ const update = async (req, res) => { } else { return res.status(401).send({ - error_code : 400, + error_code: 400, message: 'status can only be updated by admin' }) } @@ -84,13 +223,13 @@ const update = async (req, res) => { await user.updateOne(obj) await user.save(); return res.status(201).send({ - error_code : 200, + error_code: 200, message: "User updated Successssssfully" }) } catch (err) { console.log(err); res.status(500).send({ - error_code : 500, + error_code: 500, message: 'Error in update controller ' }) } @@ -126,14 +265,14 @@ const passUpCreate = async (req, res) => { const user = await User.findOneAndUpdate({ email: email }, { $set: obj }); user.save(); return res.status(201).send({ - error_code : 200, + error_code: 200, message: `Temporary Password is ${TempPassword} for this ${email}` }) } catch (err) { console.log(err); return res.status(500).send({ - error_code : 500, + error_code: 500, message: 'Error in passUpCreate' }) } @@ -155,7 +294,7 @@ const createFacebook = async (req, res) => { } if (user.registerWith != constant.registerWith.facebook) { return res.status(400).send({ - error_code : 400, + error_code: 400, message: "Can't login Through facebook" }); } @@ -166,7 +305,7 @@ const createFacebook = async (req, res) => { expiresIn: 600000 }); return res.status(201).send({ - error_code : 200, + error_code: 200, message: str, acessToken: token }) @@ -176,7 +315,7 @@ const createFacebook = async (req, res) => { } catch (err) { console.log(err); return res.status(500).send({ - error_code : 500, + error_code: 500, message: 'Error in creating user' }) @@ -189,7 +328,7 @@ const deleteUser = async (req, res) => { await User.deleteOne({ _id: id }); return res.status(201).send({ - error_code : 200, + error_code: 200, message: 'User Deleted succefully' }) @@ -198,7 +337,7 @@ const deleteUser = async (req, res) => { catch (err) { console.log('Error inside delete User controller', err); return res.status(500).send({ - error_code : 500, + error_code: 500, message: 'internal server error' }) } @@ -212,7 +351,7 @@ const getUserPlaylist = async (req, res) => { } catch (err) { console.log('Error inside getUserPlaylist Controller', err); return res.status(500).send({ - error_code : 500, + error_code: 500, message: 'Internal Server Error' }) } @@ -231,7 +370,7 @@ const favrioteSong = async (req, res) => { }); await user.save(); return res.status(201).send({ - error_code : 200, + error_code: 200, message: 'Song got removed from favrioteSong' }) } @@ -240,14 +379,14 @@ const favrioteSong = async (req, res) => { await user.save(); return res.status(201).send({ - error_code : 200, + error_code: 200, message: 'Song got added to favrioteSong' }) } catch (err) { console.log('Error inside favrioteSong Controller', err); return res.status(500).send({ - error_code : 500, + error_code: 500, message: 'Internal Server Error' }) } @@ -262,7 +401,7 @@ const getfavrioteSongs = async (req, res) => { } catch (err) { console.log('Error inside getFavrioteSong Controller', err); return res.status(500).send({ - error_code : 500, + error_code: 500, message: 'Internal Server Error' }) } @@ -273,33 +412,33 @@ const getfavrioteSongs = async (req, res) => { const PlayedSong = async (req, res) => { try { - + let key = req.params.id; let userId = req.userId; const user = await User.findById(userId); - - + + if (user.mostPlayedSongs[key]) { - const updatedObj = {$set : {['mostPlayedSongs.'+key]:(++user.mostPlayedSongs[key])}} - await User.findByIdAndUpdate(userId,updatedObj); - + const updatedObj = { $set: { ['mostPlayedSongs.' + key]: (++user.mostPlayedSongs[key]) } } + await User.findByIdAndUpdate(userId, updatedObj); + } - + else { - const updatedObj = {$set:{['mostPlayedSongs.'+key]:1 }} + const updatedObj = { $set: { ['mostPlayedSongs.' + key]: 1 } } console.log('not hello') - await User.findByIdAndUpdate(userId,updatedObj) + await User.findByIdAndUpdate(userId, updatedObj) } - + return res.status(201).send({ - error_code : 200, + error_code: 200, message: 'Song is Played ' }) } catch (err) { console.log('Error inside playedSong', err); return res.status(500).send({ - error_code : 500, + error_code: 500, message: 'Internal Server Error' }) } @@ -310,7 +449,7 @@ const getmostPlayedSong = async (req, res) => { const user = await User.findById(req.userId) console.log(user.mostPlayedSongs); - // Convert the object to an array of key-value pairs + // Convert the object to an array of key-value pairs const objEntries = Object.entries(user.mostPlayedSongs); // Sort the Array @@ -318,51 +457,51 @@ const getmostPlayedSong = async (req, res) => { // Convert the sorted array back to an object const sortedObj = Object.fromEntries(objEntries); - + return res.status(201).send(sortedObj); } catch (err) { - - console.log('Error inside mostPlayedSong', err); - return res.status(500).send({ - error_code : 500, + + console.log('Error inside mostPlayedSong', err); + return res.status(500).send({ + error_code: 500, message: 'Internal Server Error' }) } } -const followingArtist = async(req,res) => { - try{ +const followingArtist = async (req, res) => { + try { const artistId = req.params.id; const userId = req.userId; - const user = await User.findById(userId); + const user = await User.findById(userId); const artist = await Artist.findById(artistId); - for(let i=0;i { // Function to evaluate word alignment accuracy and timing accuracy -const evaluateAccuracy= async(req, res) => { - try{ - const song = await Song.findById(req.params.id); - const recognizedLyrics = req.recognizedLyrics; - const originalLyrics = song.lyricsTimeStamp; - const wordAlignmentAccuracy = constant.calculateWordAlignmentAccuracy(recognizedLyrics, originalLyrics); - const timingAccuracy = constant.calculateTimingAccuracy(recognizedLyrics, originalLyrics); - const totalAccuracy = (wordAlignmentAccuracy.toFixed(2) + timingAccuracy.toFixed(2))/2; - console.log(totalAccuracy); - var reward ; - switch(totalAccuracy){ - case(totalAccuracy>90) : - reward = 'A+'; - break ; - case(totalAccuracy>80) : - reward = 'A' - break; - case(totalAccuracy>70) : - reward = 'B+' - break; - case(totalAccuracy>60) : - reward = 'B' - break; - case(totalAccuracy>50) : - reward = 'C+' - break; - case(totalAccuracy>40) : - reward = 'C' - break ; - case(totalAccuracy<40) : - reward = 'F' - break; +const evaluateAccuracy = async (req, res) => { + try { + const song = await Song.findById(req.params.id); + const recognizedLyrics = req.recognizedLyrics; + const originalLyrics = song.lyricsTimeStamp; + const wordAlignmentAccuracy = constant.calculateWordAlignmentAccuracy(recognizedLyrics, originalLyrics); + const timingAccuracy = constant.calculateTimingAccuracy(recognizedLyrics, originalLyrics); + const totalAccuracy = (wordAlignmentAccuracy.toFixed(2) + timingAccuracy.toFixed(2)) / 2; + console.log(totalAccuracy); + var reward; + switch (totalAccuracy) { + case (totalAccuracy > 90): + reward = 'A+'; + break; + case (totalAccuracy > 80): + reward = 'A' + break; + case (totalAccuracy > 70): + reward = 'B+' + break; + case (totalAccuracy > 60): + reward = 'B' + break; + case (totalAccuracy > 50): + reward = 'C+' + break; + case (totalAccuracy > 40): + reward = 'C' + break; + case (totalAccuracy < 40): + reward = 'F' + break; - } - - const reward_score = await Reward.find({score : reward}); - const user = await User.findById(req.userId); - user.score += reward_score.reward; - await user.save(); - console.log(user); - return res.status(201).send({ - error_code : 200, - Score : reward - }) + } -}catch(err){ - console.log('Error inside EvaluateAccuracy Controller',err); - return res.status(500).send({ - error_code : 500, - message : 'Internal Server Error' - }) - } + const reward_score = await Reward.find({ score: reward }); + const user = await User.findById(req.userId); + user.score += reward_score.reward; + await user.save(); + console.log(user); + return res.status(201).send({ + error_code: 200, + Score: reward + }) + + } catch (err) { + console.log('Error inside EvaluateAccuracy Controller', err); + return res.status(500).send({ + error_code: 500, + message: 'Internal Server Error' + }) + } } -const ranking = async(req,res) => { - try{ - const ranking = await User.find({}).sort({score : -1}).limit(5); - return res.status(201).send(ranking); +const ranking = async (req, res) => { + try { + const ranking = await User.find({}).sort({ score: -1 }).limit(5); + return res.status(201).send(ranking); - }catch(err){ - console.log('Error inside Ranking Controller',err); + } catch (err) { + console.log('Error inside Ranking Controller', err); return res.status(500).send({ - error_code : 500, - message : 'Internal Server Error' + error_code: 500, + message: 'Internal Server Error' }) } } @@ -480,9 +619,162 @@ const changeUserStatus = async (req, res) => { } } +const usergetAllSongs =async(req,res)=>{ + try { + const song = await Song.find({status: 'Active'}); + return res.status(200).send(song); + + + }catch (err) { + console.log('Error inside changeStatus controller', err); + return res.status(500).send({ + error_code: 500, + message: 'Internal server error.' + }); + + } +} + +const newRelease = async (req, res) => { + try { + const fiveDaysAgo = new Date(); + fiveDaysAgo.setDate(fiveDaysAgo.getDate() - 3); + const songs = await Song.find({ + status: 'activate', + createdAt: { $gte: fiveDaysAgo } + }); + + return res.status(200).send({error_code:200,message:'new realese songs',song:songs}); + + } catch (err) { + console.log('Error inside newRelease controller', err); + return res.status(500).send({ + error_code: 500, + message: 'Internal server error.' + }); + } +} + + +const homeData = async (req, res) => { + try { + // Pipeline to aggregate songs with category name, artist names, and image URL + const pipeline = [ + { + $match: { status: 'activate' } + }, + { + $lookup: { + from: 'categories', + localField: 'categoryId', + foreignField: '_id', + as: 'category' + } + }, + { + $lookup: { + from: 'artists', + localField: 'artistId', + foreignField: '_id', + as: 'artists' + } + }, + { + $group: { + _id: { categoryId: '$categoryId', categoryName: '$category.name' }, + songs: { + $push: { + _id: '$_id', + title: '$title', + artistNames: '$artists.ArtistName', + imageUrl: '$coverArtImage.imageUrl' + } + } + } + }, + { + $project: { + _id: 0, + categoryName: '$_id.categoryName', + songs: { + $map: { + input: '$songs', + as: 'song', + in: { + _id: '$$song._id', + title: '$$song.title', + artistNames: '$$song.artistNames', + imageUrl: '$$song.imageUrl' + } + } + } + } + } + ]; + const categoriesWithSongs = await Song.aggregate(pipeline); + return res.status(200).json({ + error_code: 200, + message: 'Songs grouped by category retrieved successfully', + categories: categoriesWithSongs + }); + } catch (err) { + // Log and handle errors + console.error('Error inside homeData:', err); + return res.status(500).json({ error_code: 500, message: 'Internal server error' }); + } +}; + +const artistData = async (req, res) => { + try { + const pipeline = [ + { + $lookup: { + from: 'songs', + localField: '_id', + foreignField: 'artistId', + as: 'songs' + } + }, + { + $project: { + _id: 1, + ArtistName: 1, + songs: { + $map: { + input: '$songs', + as: 'song', + in: { + _id: '$$song._id', + title: '$$song.title', + status: '$$song.status', + imageUrl: '$$song.coverArtImage.imageUrl' + } + } + } + } + } + ]; + + // Execute aggregation pipeline + const artistsWithSongs = await Artist.aggregate(pipeline); + + // Return response + return res.status(200).json({ + error_code: 200, + message: 'Artist data with songs retrieved successfully', + artists: artistsWithSongs + }); + } catch (error) { + // Log and handle errors + console.error('Error inside artistData:', error); + return res.status(500).json({ error_code: 500, message: 'Internal server error' }); + } +}; module.exports = { + userRegister, + verifyOTP, createGoogle, createFacebook, update, @@ -496,5 +788,8 @@ module.exports = { followingArtist, evaluateAccuracy, ranking, - changeUserStatus + changeUserStatus,usergetAllSongs, + newRelease, + homeData, + artistData }; \ No newline at end of file diff --git a/middlewares/Admin.js b/middlewares/Admin.js index 943905c..7d76455 100644 --- a/middlewares/Admin.js +++ b/middlewares/Admin.js @@ -1,4 +1,4 @@ -const User = require('../models/user.model'); +const {User} = require('../models/user.model'); const constant = require('../util/constant') const isAdmin = async(req,res,next) => { diff --git a/middlewares/Auth/auth.middle.js b/middlewares/Auth/auth.middle.js index 1ec2078..3612e43 100644 --- a/middlewares/Auth/auth.middle.js +++ b/middlewares/Auth/auth.middle.js @@ -1,42 +1,49 @@ const regex = require('../regex'); -const User = require('../../models/user.model') +const {User} = require('../../models/user.model') +const multer = require('multer'); -const fieldCheck = async(req,res,next) => { - try{ - if(!req.body.email){ - return res.status(400).send({ - error_code : 400, - message : 'Email not provided' - }) - } - if(!req.body.password){ - return res.status(400).send({ - error_code : 400, - message : 'Password not provided' - }) - } - if(!regex.emailRegex.test(req.body.email)){ - return res.status(400).send({ - error_code : 400, - message : 'Email format is Incorrect' - }) - } - if(!regex.passRegex.test(req.body.password)){ - return res.status(400).send({ - error_code : 400, - message : 'Password format is Incorrect' - }) - } - next(); +const fieldCheck = async (req, res, next) => { + try { - }catch(err){ - console.log('Error inside auth Middelware fieldCheck',err); - return res.status(500).send({ - error_code : 500, - message : 'Internal Error' - }) + if (!req.body.email || req.body.email.trim() === '') { + return res.status(400).json({ + error_code: 400, + message: 'Email not provided or empty' + }); + } + + if (!req.body.password || req.body.password.trim() === '') { + return res.status(400).json({ + error_code: 400, + message: 'Password not provided or empty' + }); + } + + if (!regex.emailRegex.test(req.body.email)) { + return res.status(400).json({ + error_code: 400, + message: 'Email format is incorrect' + }); + } + + if (!regex.passRegex.test(req.body.password)) { + return res.status(400).json({ + error_code: 400, + message: 'Password format is incorrect' + }); + } + + next(); + + } catch (err) { + console.error('Error inside auth Middleware fieldCheck:', err); + return res.status(500).json({ + error_code: 500, + message: 'Internal Server Error' + }); } -} +}; + const uniqueEmail = async(req,res,next) => { @@ -61,6 +68,7 @@ const uniqueEmail = async(req,res,next) => { const userCheckEmail = async (req,res,next) => { try{ + const user = await User.findOne({email : req.body.email}); if(!user){ return res.status(400).send({ diff --git a/middlewares/authjwt.js b/middlewares/authjwt.js index acde747..ddd9496 100644 --- a/middlewares/authjwt.js +++ b/middlewares/authjwt.js @@ -1,5 +1,5 @@ const jwt = require('jsonwebtoken'); -const User = require('../models/user.model'); +const {User} = require('../models/user.model'); const authConfig = require('../configs/auth.config'); const verifyToken = (req,res,next)=>{ @@ -23,6 +23,7 @@ const verifyToken = (req,res,next)=>{ console.log(decoded); req.userId = decoded.id; const user = await User.findOne({_id:req.userId}); + console.log("🚀 ~ jwt.verify ~ user:", user) if(!user){ return res.status(400).send({ error_code : 400, diff --git a/middlewares/idchecker.js b/middlewares/idchecker.js index 5c7a332..1444c23 100644 --- a/middlewares/idchecker.js +++ b/middlewares/idchecker.js @@ -1,29 +1,29 @@ const mongoose = require('mongoose') -const idCheck = async(req,res,next)=>{ - try{ - if(!req.params.id) - { - return res.status(401).send({ - message : 'id not present' - }) +const idCheck = async (req, res, next) => { + try { + console.log(req.params,"sjkhfjsfad"); + if (!req.params._id) { + return res.status(400).json({ + message: 'ID not present' + }); } - let check = mongoose.isValidObjectId(req.params.id); - - if(!check){ - return res.status(400).send({ - message : 'Not a valid Param id' - }) - } - - next() - }catch(err){ - return res.status(500).send({ - message : 'Internal Server Error' - }) + if (!mongoose.isValidObjectId(req.params._id)) { + return res.status(400).json({ + message: 'Not a valid ID' + }); + } + + next(); + } catch (err) { + console.error('Error inside idCheck middleware:', err); + return res.status(500).json({ + message: 'Internal Server Error' + }); } -} +}; + module.exports = { idCheck diff --git a/middlewares/regex.js b/middlewares/regex.js index 7e80e1d..ad6b068 100644 --- a/middlewares/regex.js +++ b/middlewares/regex.js @@ -1,7 +1,7 @@ let nameRegex = /^[.a-zA-Z\s]+$/; let phoneRegex = /^(\+91[\-\s]?)?[0]?(91)?[6789]\d{9}$/; -let emailRegex = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/; -let passRegex = /^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,15}$/; +let emailRegex = /.+@.+\..+/; +let passRegex = /.{6,}/; module.exports = { diff --git a/middlewares/uploads.js b/middlewares/uploads.js new file mode 100644 index 0000000..55e7fe9 --- /dev/null +++ b/middlewares/uploads.js @@ -0,0 +1,16 @@ +const multer = require('multer'); + +const storage = multer.diskStorage({ + destination: function (req, file, cb) { + if (file.fieldname === 'coverArtImage' || file.fieldname === 'musicFile') { + cb(null, './uploads'); + } + }, + filename: function (req, file, cb) { + cb(null, file.originalname); + } +}); + +const upload = multer({ storage: storage }); + +module.exports = upload.any(); // Use upload.any() method diff --git a/models/artist.model.js b/models/artist.model.js index 2c822f5..8458626 100644 --- a/models/artist.model.js +++ b/models/artist.model.js @@ -5,7 +5,6 @@ const mongoose = require('mongoose'); const artistSchema = new mongoose.Schema({ ArtistName: { type: String, - required: true }, image: { fileName: String, diff --git a/models/categories.model.js b/models/categories.model.js index f9560e0..3b4a4c3 100644 --- a/models/categories.model.js +++ b/models/categories.model.js @@ -3,17 +3,14 @@ const mongoose = require('mongoose'); const categorySchema = new mongoose.Schema({ name: { type: String, - required: true }, image: { fileName: { type: String, - required: true + }, fileAddress: { - type: String, - required: true - } + type: String, } }, imageUrl: { type: String }, status: { diff --git a/models/notification.model.js b/models/notification.model.js index aed6509..7507fc1 100644 --- a/models/notification.model.js +++ b/models/notification.model.js @@ -1,7 +1,10 @@ const mongoose = require('mongoose'); const constant = require('../util/notification.constant') +const Schema = mongoose.Schema; const notificationSchema = new mongoose.Schema({ + + userId: { type: Schema.Types.ObjectId, ref: 'User' }, sendTo: { type: [String], enum: [constant.sendTo.toAll, constant.sendTo.host, constant.sendTo.specific], @@ -24,10 +27,10 @@ const notificationSchema = new mongoose.Schema({ type: String, required: true }, - recipients: { - type: [mongoose.SchemaType.objectId], - default: [] - } + // recipients: { + // type: [mongoose.SchemaType.objectId], + // default: [] + // } }, { timestamps: true }); module.exports = mongoose.model('Notification', notificationSchema); \ No newline at end of file diff --git a/models/song.model.js b/models/song.model.js index 186f971..76aa0a1 100644 --- a/models/song.model.js +++ b/models/song.model.js @@ -6,7 +6,10 @@ const songSchema = new Schema({ categoryId: { type: Schema.Types.ObjectId, ref: 'Category' }, subcategoryId: { type: Schema.Types.ObjectId, ref: 'SubCategories' }, albumId: { type: Schema.Types.ObjectId, ref: 'Album' }, - artistId: { type: Schema.Types.ObjectId, ref: 'Artist' }, + artistId: [{ + type: Schema.Types.ObjectId, + ref: 'Artist', + }], title: String, musicLink: String, trackerID: String, @@ -19,7 +22,8 @@ const songSchema = new Schema({ }, musicFile: { filename: String, - fileAddress: String + fileAddress: String, + url: String }, status: { type: String, diff --git a/models/user.model.js b/models/user.model.js index 90ca9d9..1969622 100644 --- a/models/user.model.js +++ b/models/user.model.js @@ -1,4 +1,5 @@ const mongoose = require("mongoose"); +const bcrypt = require('bcrypt'); const constant = require('../util/constant'); const userSchema = new mongoose.Schema({ @@ -6,129 +7,122 @@ const userSchema = new mongoose.Schema({ type: String, unique: true, default: function () { - let username = 'guest' + Math.floor(Math.random() * 10000); - return username; + return 'guest' + Math.floor(Math.random() * 10000); } }, image: { - - fileName: { - type: String, - }, - fileAddress: { - type: String, - } - + fileName: String, + fileAddress: String }, - - imageUrl:{ - type: String - }, - firstName:{ - type: String, - // required: true - }, - lastName:{ - type: String, - // required: true - - }, - - address:{ - - type: String, - - }, - mobileNo:{ - type: Number - - }, - + deviceToken: { type: String, default: "" }, + accessToken:{ type: String, default: "" }, + deviceType: { type: String, default: "" }, + imageUrl: String, + firstName: String, + lastName: String, + address: String, + mobileNo: Number, email: { type: String, - required: true, - lowercase: true, // it will covert the email into the lower case and then store in the db, - minLength: 10, // anything less than 10 will fail + // required: true, + lowercase: true, unique: true - }, password: { type: String, + // required: true }, userTypes: { type: String, enum: [constant.userTypes.admin, constant.userTypes.customer], default: constant.userTypes.customer - }, status: { type: String, enum: ['Active', 'Deactive'], default: 'Active' - }, registerWith: { type: String, enum: [constant.registerWith.Email, constant.registerWith.google, constant.registerWith.facebook], default: constant.registerWith.Email }, - playlist: { - type: [mongoose.Schema.Types.ObjectId], + playlist: [{ + type: mongoose.Schema.Types.ObjectId, ref: 'PlayList' - }, - favrioteSongs: { - type: [mongoose.Schema.Types.ObjectId], - ref: 'Song', - }, + }], + favoriteSongs: [{ + type: mongoose.Schema.Types.ObjectId, + ref: 'Song' + }], mostPlayedSongs: { type: Object, - ref: 'Song', default: {} }, - following: { - type: [mongoose.Schema.Types.ObjectId], + following: [{ + type: mongoose.Schema.Types.ObjectId, ref: 'Artist' - }, + }], score: { type: Number, default: 0 }, - otp : Number, - + otp: Number, + otpVerifly:{ + type: Boolean, + default: false + }, createdAt: { - // I want to default to a new date type: Date, - immutable: true, // This will ensure the createdAt column is never updated but once in the start - default: () => { - return Date.now(); - } + immutable: true, + default: Date.now }, updatedAt: { type: Date, - default: () => { - return Date.now(); - } + default: Date.now } - - -}) - +}); userSchema.pre('deleteOne', async function (next) { const userId = this.getFilter()['_id']; const Artist = require('../models/artist.model'); + const artist = await Artist.find({ followers: userId }); - const artist = await Artist.find({ - followers: userId - }) - - const artistPromises = artist.map(artist => { + const artistPromises = artist.map(async (artist) => { artist.followers.pull(userId); - return artist.save(); - }) + await artist.save(); + }); await Promise.all(artistPromises); +}); -}) +const User = mongoose.model("User", userSchema); -module.exports = mongoose.model("User", userSchema); \ No newline at end of file + +const findDefaultAdmin = async () => { + try { + const result = await User.findOne({ userTypes: constant.userTypes.admin }); + if (!result) { + const obj = { + userTypes: constant.userTypes.admin, + name: "musicNFT", + mobileNumber: "7038415050", + userName:"admin", + email: "admin@email.com", + password: bcrypt.hashSync("Admin@1", 10), + address: "INDIA", + otpVerifly:true + }; + const admin = await User.create(obj); + console.log("Default Admin Created 😇😉😄", admin); + } else { + console.log("Default Admin 😉😄"); + } + } catch (error) { + console.error("Error finding or creating default admin:", error); + } +}; + +findDefaultAdmin(); + +module.exports = { User }; diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json index 2bcb15d..d963cb6 100644 --- a/node_modules/.package-lock.json +++ b/node_modules/.package-lock.json @@ -4,6 +4,39 @@ "lockfileVersion": 3, "requires": true, "packages": { + "node_modules/@mapbox/node-pre-gyp": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", + "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==", + "dependencies": { + "detect-libc": "^2.0.0", + "https-proxy-agent": "^5.0.0", + "make-dir": "^3.1.0", + "node-fetch": "^2.6.7", + "nopt": "^5.0.0", + "npmlog": "^5.0.1", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.11" + }, + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/@types/node": { "version": "20.11.24", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.24.tgz", @@ -61,6 +94,46 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agent-base/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/agent-base/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -89,24 +162,47 @@ "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==" }, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" + }, + "node_modules/are-we-there-yet": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/are-we-there-yet/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, "node_modules/axios": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz", - "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==", + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", "dependencies": { - "follow-redirects": "^1.15.4", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" + "follow-redirects": "^1.14.0" } }, "node_modules/balanced-match": { @@ -114,6 +210,35 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, + "node_modules/basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/basic-auth/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/bcrypt": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.1.1.tgz", + "integrity": "sha512-AGBHOG5hPYZ5Xl9KXzU5iKq9516yEmvCKDg3ecP5kX2aB6UqTeXZxk2ELnDgDm6BQSMlLt9rDB4LoSMx0rYwww==", + "hasInstallScript": true, + "dependencies": { + "@mapbox/node-pre-gyp": "^1.0.11", + "node-addon-api": "^5.0.0" + }, + "engines": { + "node": ">= 10.0.0" + } + }, "node_modules/bcryptjs": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz", @@ -248,15 +373,20 @@ "fsevents": "~2.3.2" } }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", "engines": { - "node": ">= 0.8" + "node": ">=10" + } + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "bin": { + "color-support": "bin.js" } }, "node_modules/concat-map": { @@ -278,6 +408,11 @@ "typedarray": "^0.0.6" } }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" + }, "node_modules/content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", @@ -351,13 +486,10 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/delayed-stream": { + "node_modules/delegates": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "engines": { - "node": ">=0.4.0" - } + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" }, "node_modules/depd": { "version": "2.0.0", @@ -376,6 +508,55 @@ "npm": "1.2.8000 || >= 1.4.16" } }, + "node_modules/detect-libc": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", + "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/dicer": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz", + "integrity": "sha512-FDvbtnq7dzlPz0wyYlOExifDEZcu8h+rErEXgfxqmLfRfC/kJidEFh4+effJRO3P0xmfqyPbSMG0LveNRfTKVg==", + "dependencies": { + "readable-stream": "1.1.x", + "streamsearch": "0.1.2" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/dicer/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + }, + "node_modules/dicer/node_modules/readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/dicer/node_modules/streamsearch": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", + "integrity": "sha512-jos8u++JKm0ARcSUTAZXOVC0mSox7Bhn6sBgty73P1f3JGf7yG2clTbBNHUdde/kdvP2FESam+vM6l8jBrNxHA==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/dicer/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" + }, "node_modules/dotenv": { "version": "16.3.1", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", @@ -400,6 +581,11 @@ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, "node_modules/encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", @@ -481,6 +667,29 @@ "node": ">= 0.10.0" } }, + "node_modules/express-fileupload": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/express-fileupload/-/express-fileupload-1.5.0.tgz", + "integrity": "sha512-jSW3w9evqM37VWkEPkL2Ck5wUo2a8qa03MH+Ou/0ZSTpNlQFBvSLjU12k2nYcHhaMPv4JVvv6+Ac1OuLgUZb7w==", + "dependencies": { + "busboy": "^1.6.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/express-validator": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/express-validator/-/express-validator-7.0.1.tgz", + "integrity": "sha512-oB+z9QOzQIE8FnlINqyIFA8eIckahC6qc8KtqLdLJcU3/phVyuhXH3bA4qzcrhme+1RYaCSwrq+TlZ/kAKIARA==", + "dependencies": { + "lodash": "^4.17.21", + "validator": "^13.9.0" + }, + "engines": { + "node": ">= 8.0.0" + } + }, "node_modules/express/node_modules/body-parser": { "version": "1.20.1", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", @@ -547,9 +756,9 @@ } }, "node_modules/follow-redirects": { - "version": "1.15.5", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", - "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", "funding": [ { "type": "individual", @@ -565,19 +774,6 @@ } } }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -594,6 +790,33 @@ "node": ">= 0.6" } }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -602,6 +825,25 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/gauge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/get-intrinsic": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", @@ -620,6 +862,25 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", @@ -683,6 +944,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" + }, "node_modules/hasown": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.1.tgz", @@ -709,6 +975,39 @@ "node": ">= 0.8" } }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/https-proxy-agent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, "node_modules/iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -725,6 +1024,15 @@ "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==" }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", @@ -769,6 +1077,14 @@ "node": ">=0.10.0" } }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -861,6 +1177,28 @@ "node": ">=10" } }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -937,6 +1275,37 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/mkdirp": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", @@ -1015,6 +1384,32 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, + "node_modules/morgan": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", + "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", + "dependencies": { + "basic-auth": "~2.0.1", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-finished": "~2.3.0", + "on-headers": "~1.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/morgan/node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/mpath": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", @@ -1061,22 +1456,57 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/multer": { - "version": "1.4.5-lts.1", - "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.1.tgz", - "integrity": "sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.3.tgz", + "integrity": "sha512-np0YLKncuZoTzufbkM6wEKp68EhWJXcU6fq6QqrSwkckd2LlMgd1UqhUJLj6NS/5sZ8dE8LYDWslsltJznnXlg==", + "deprecated": "Multer 1.x is affected by CVE-2022-24434. This is fixed in v1.4.4-lts.1 which drops support for versions of Node.js before 6. Please upgrade to at least Node.js 6 and version 1.4.4-lts.1 of Multer. If you need support for older versions of Node.js, we are open to accepting patches that would fix the CVE on the main 1.x release line, whilst maintaining compatibility with Node.js 0.10.", "dependencies": { "append-field": "^1.0.0", - "busboy": "^1.0.0", + "busboy": "^0.2.11", "concat-stream": "^1.5.2", "mkdirp": "^0.5.4", "object-assign": "^4.1.1", + "on-finished": "^2.3.0", "type-is": "^1.6.4", "xtend": "^4.0.0" }, "engines": { - "node": ">= 6.0.0" + "node": ">= 0.10.0" } }, + "node_modules/multer/node_modules/busboy": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.2.14.tgz", + "integrity": "sha512-InWFDomvlkEj+xWLBfU3AvnbVYqeTWmQopiW0tWWEy5yehYm2YkGEc59sUmw/4ty5Zj/b0WHGs1LgecuBSBGrg==", + "dependencies": { + "dicer": "0.2.5", + "readable-stream": "1.1.x" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/multer/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + }, + "node_modules/multer/node_modules/readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/multer/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" + }, "node_modules/natural": { "version": "6.10.0", "resolved": "https://registry.npmjs.org/natural/-/natural-6.10.0.tgz", @@ -1103,6 +1533,49 @@ "node": ">= 0.6" } }, + "node_modules/node-addon-api": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", + "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==" + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-fetch/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/node-fetch/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/node-fetch/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/nodemailer": { "version": "6.9.3", "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.3.tgz", @@ -1181,6 +1654,17 @@ "node": ">=0.10.0" } }, + "node_modules/npmlog": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "dependencies": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + } + }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -1208,6 +1692,22 @@ "node": ">= 0.8" } }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -1225,6 +1725,14 @@ "util": "^0.10.3" } }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", @@ -1266,11 +1774,6 @@ "node": ">= 0.10" } }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, "node_modules/pstree.remy": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", @@ -1350,6 +1853,20 @@ "node": ">=8.10.0" } }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -1450,6 +1967,11 @@ "node": ">= 0.8.0" } }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, "node_modules/set-function-length": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.1.tgz", @@ -1493,6 +2015,11 @@ "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.1.tgz", "integrity": "sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==" }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, "node_modules/simple-update-notifier": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", @@ -1577,6 +2104,30 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -1596,6 +2147,33 @@ "node": ">=0.2.6" } }, + "node_modules/tar": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz", + "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -1703,6 +2281,14 @@ "node": ">= 0.4.0" } }, + "node_modules/validator": { + "version": "13.11.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.11.0.tgz", + "integrity": "sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==", + "engines": { + "node": ">= 0.10" + } + }, "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -1731,6 +2317,14 @@ "node": ">=12" } }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, "node_modules/wordnet-db": { "version": "3.1.14", "resolved": "https://registry.npmjs.org/wordnet-db/-/wordnet-db-3.1.14.tgz", @@ -1739,6 +2333,11 @@ "node": ">=0.6.0" } }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", diff --git a/node_modules/asynckit/LICENSE b/node_modules/asynckit/LICENSE deleted file mode 100644 index c9eca5d..0000000 --- a/node_modules/asynckit/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2016 Alex Indigo - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/node_modules/asynckit/README.md b/node_modules/asynckit/README.md deleted file mode 100644 index ddcc7e6..0000000 --- a/node_modules/asynckit/README.md +++ /dev/null @@ -1,233 +0,0 @@ -# asynckit [![NPM Module](https://img.shields.io/npm/v/asynckit.svg?style=flat)](https://www.npmjs.com/package/asynckit) - -Minimal async jobs utility library, with streams support. - -[![PhantomJS Build](https://img.shields.io/travis/alexindigo/asynckit/v0.4.0.svg?label=browser&style=flat)](https://travis-ci.org/alexindigo/asynckit) -[![Linux Build](https://img.shields.io/travis/alexindigo/asynckit/v0.4.0.svg?label=linux:0.12-6.x&style=flat)](https://travis-ci.org/alexindigo/asynckit) -[![Windows Build](https://img.shields.io/appveyor/ci/alexindigo/asynckit/v0.4.0.svg?label=windows:0.12-6.x&style=flat)](https://ci.appveyor.com/project/alexindigo/asynckit) - -[![Coverage Status](https://img.shields.io/coveralls/alexindigo/asynckit/v0.4.0.svg?label=code+coverage&style=flat)](https://coveralls.io/github/alexindigo/asynckit?branch=master) -[![Dependency Status](https://img.shields.io/david/alexindigo/asynckit/v0.4.0.svg?style=flat)](https://david-dm.org/alexindigo/asynckit) -[![bitHound Overall Score](https://www.bithound.io/github/alexindigo/asynckit/badges/score.svg)](https://www.bithound.io/github/alexindigo/asynckit) - - - -AsyncKit provides harness for `parallel` and `serial` iterators over list of items represented by arrays or objects. -Optionally it accepts abort function (should be synchronously return by iterator for each item), and terminates left over jobs upon an error event. For specific iteration order built-in (`ascending` and `descending`) and custom sort helpers also supported, via `asynckit.serialOrdered` method. - -It ensures async operations to keep behavior more stable and prevent `Maximum call stack size exceeded` errors, from sync iterators. - -| compression | size | -| :----------------- | -------: | -| asynckit.js | 12.34 kB | -| asynckit.min.js | 4.11 kB | -| asynckit.min.js.gz | 1.47 kB | - - -## Install - -```sh -$ npm install --save asynckit -``` - -## Examples - -### Parallel Jobs - -Runs iterator over provided array in parallel. Stores output in the `result` array, -on the matching positions. In unlikely event of an error from one of the jobs, -will terminate rest of the active jobs (if abort function is provided) -and return error along with salvaged data to the main callback function. - -#### Input Array - -```javascript -var parallel = require('asynckit').parallel - , assert = require('assert') - ; - -var source = [ 1, 1, 4, 16, 64, 32, 8, 2 ] - , expectedResult = [ 2, 2, 8, 32, 128, 64, 16, 4 ] - , expectedTarget = [ 1, 1, 2, 4, 8, 16, 32, 64 ] - , target = [] - ; - -parallel(source, asyncJob, function(err, result) -{ - assert.deepEqual(result, expectedResult); - assert.deepEqual(target, expectedTarget); -}); - -// async job accepts one element from the array -// and a callback function -function asyncJob(item, cb) -{ - // different delays (in ms) per item - var delay = item * 25; - - // pretend different jobs take different time to finish - // and not in consequential order - var timeoutId = setTimeout(function() { - target.push(item); - cb(null, item * 2); - }, delay); - - // allow to cancel "leftover" jobs upon error - // return function, invoking of which will abort this job - return clearTimeout.bind(null, timeoutId); -} -``` - -More examples could be found in [test/test-parallel-array.js](test/test-parallel-array.js). - -#### Input Object - -Also it supports named jobs, listed via object. - -```javascript -var parallel = require('asynckit/parallel') - , assert = require('assert') - ; - -var source = { first: 1, one: 1, four: 4, sixteen: 16, sixtyFour: 64, thirtyTwo: 32, eight: 8, two: 2 } - , expectedResult = { first: 2, one: 2, four: 8, sixteen: 32, sixtyFour: 128, thirtyTwo: 64, eight: 16, two: 4 } - , expectedTarget = [ 1, 1, 2, 4, 8, 16, 32, 64 ] - , expectedKeys = [ 'first', 'one', 'two', 'four', 'eight', 'sixteen', 'thirtyTwo', 'sixtyFour' ] - , target = [] - , keys = [] - ; - -parallel(source, asyncJob, function(err, result) -{ - assert.deepEqual(result, expectedResult); - assert.deepEqual(target, expectedTarget); - assert.deepEqual(keys, expectedKeys); -}); - -// supports full value, key, callback (shortcut) interface -function asyncJob(item, key, cb) -{ - // different delays (in ms) per item - var delay = item * 25; - - // pretend different jobs take different time to finish - // and not in consequential order - var timeoutId = setTimeout(function() { - keys.push(key); - target.push(item); - cb(null, item * 2); - }, delay); - - // allow to cancel "leftover" jobs upon error - // return function, invoking of which will abort this job - return clearTimeout.bind(null, timeoutId); -} -``` - -More examples could be found in [test/test-parallel-object.js](test/test-parallel-object.js). - -### Serial Jobs - -Runs iterator over provided array sequentially. Stores output in the `result` array, -on the matching positions. In unlikely event of an error from one of the jobs, -will not proceed to the rest of the items in the list -and return error along with salvaged data to the main callback function. - -#### Input Array - -```javascript -var serial = require('asynckit/serial') - , assert = require('assert') - ; - -var source = [ 1, 1, 4, 16, 64, 32, 8, 2 ] - , expectedResult = [ 2, 2, 8, 32, 128, 64, 16, 4 ] - , expectedTarget = [ 0, 1, 2, 3, 4, 5, 6, 7 ] - , target = [] - ; - -serial(source, asyncJob, function(err, result) -{ - assert.deepEqual(result, expectedResult); - assert.deepEqual(target, expectedTarget); -}); - -// extended interface (item, key, callback) -// also supported for arrays -function asyncJob(item, key, cb) -{ - target.push(key); - - // it will be automatically made async - // even it iterator "returns" in the same event loop - cb(null, item * 2); -} -``` - -More examples could be found in [test/test-serial-array.js](test/test-serial-array.js). - -#### Input Object - -Also it supports named jobs, listed via object. - -```javascript -var serial = require('asynckit').serial - , assert = require('assert') - ; - -var source = [ 1, 1, 4, 16, 64, 32, 8, 2 ] - , expectedResult = [ 2, 2, 8, 32, 128, 64, 16, 4 ] - , expectedTarget = [ 0, 1, 2, 3, 4, 5, 6, 7 ] - , target = [] - ; - -var source = { first: 1, one: 1, four: 4, sixteen: 16, sixtyFour: 64, thirtyTwo: 32, eight: 8, two: 2 } - , expectedResult = { first: 2, one: 2, four: 8, sixteen: 32, sixtyFour: 128, thirtyTwo: 64, eight: 16, two: 4 } - , expectedTarget = [ 1, 1, 4, 16, 64, 32, 8, 2 ] - , target = [] - ; - - -serial(source, asyncJob, function(err, result) -{ - assert.deepEqual(result, expectedResult); - assert.deepEqual(target, expectedTarget); -}); - -// shortcut interface (item, callback) -// works for object as well as for the arrays -function asyncJob(item, cb) -{ - target.push(item); - - // it will be automatically made async - // even it iterator "returns" in the same event loop - cb(null, item * 2); -} -``` - -More examples could be found in [test/test-serial-object.js](test/test-serial-object.js). - -_Note: Since _object_ is an _unordered_ collection of properties, -it may produce unexpected results with sequential iterations. -Whenever order of the jobs' execution is important please use `serialOrdered` method._ - -### Ordered Serial Iterations - -TBD - -For example [compare-property](compare-property) package. - -### Streaming interface - -TBD - -## Want to Know More? - -More examples can be found in [test folder](test/). - -Or open an [issue](https://github.com/alexindigo/asynckit/issues) with questions and/or suggestions. - -## License - -AsyncKit is licensed under the MIT license. diff --git a/node_modules/asynckit/bench.js b/node_modules/asynckit/bench.js deleted file mode 100644 index c612f1a..0000000 --- a/node_modules/asynckit/bench.js +++ /dev/null @@ -1,76 +0,0 @@ -/* eslint no-console: "off" */ - -var asynckit = require('./') - , async = require('async') - , assert = require('assert') - , expected = 0 - ; - -var Benchmark = require('benchmark'); -var suite = new Benchmark.Suite; - -var source = []; -for (var z = 1; z < 100; z++) -{ - source.push(z); - expected += z; -} - -suite -// add tests - -.add('async.map', function(deferred) -{ - var total = 0; - - async.map(source, - function(i, cb) - { - setImmediate(function() - { - total += i; - cb(null, total); - }); - }, - function(err, result) - { - assert.ifError(err); - assert.equal(result[result.length - 1], expected); - deferred.resolve(); - }); -}, {'defer': true}) - - -.add('asynckit.parallel', function(deferred) -{ - var total = 0; - - asynckit.parallel(source, - function(i, cb) - { - setImmediate(function() - { - total += i; - cb(null, total); - }); - }, - function(err, result) - { - assert.ifError(err); - assert.equal(result[result.length - 1], expected); - deferred.resolve(); - }); -}, {'defer': true}) - - -// add listeners -.on('cycle', function(ev) -{ - console.log(String(ev.target)); -}) -.on('complete', function() -{ - console.log('Fastest is ' + this.filter('fastest').map('name')); -}) -// run async -.run({ 'async': true }); diff --git a/node_modules/asynckit/index.js b/node_modules/asynckit/index.js deleted file mode 100644 index 455f945..0000000 --- a/node_modules/asynckit/index.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = -{ - parallel : require('./parallel.js'), - serial : require('./serial.js'), - serialOrdered : require('./serialOrdered.js') -}; diff --git a/node_modules/asynckit/lib/abort.js b/node_modules/asynckit/lib/abort.js deleted file mode 100644 index 114367e..0000000 --- a/node_modules/asynckit/lib/abort.js +++ /dev/null @@ -1,29 +0,0 @@ -// API -module.exports = abort; - -/** - * Aborts leftover active jobs - * - * @param {object} state - current state object - */ -function abort(state) -{ - Object.keys(state.jobs).forEach(clean.bind(state)); - - // reset leftover jobs - state.jobs = {}; -} - -/** - * Cleans up leftover job by invoking abort function for the provided job id - * - * @this state - * @param {string|number} key - job id to abort - */ -function clean(key) -{ - if (typeof this.jobs[key] == 'function') - { - this.jobs[key](); - } -} diff --git a/node_modules/asynckit/lib/async.js b/node_modules/asynckit/lib/async.js deleted file mode 100644 index 7f1288a..0000000 --- a/node_modules/asynckit/lib/async.js +++ /dev/null @@ -1,34 +0,0 @@ -var defer = require('./defer.js'); - -// API -module.exports = async; - -/** - * Runs provided callback asynchronously - * even if callback itself is not - * - * @param {function} callback - callback to invoke - * @returns {function} - augmented callback - */ -function async(callback) -{ - var isAsync = false; - - // check if async happened - defer(function() { isAsync = true; }); - - return function async_callback(err, result) - { - if (isAsync) - { - callback(err, result); - } - else - { - defer(function nextTick_callback() - { - callback(err, result); - }); - } - }; -} diff --git a/node_modules/asynckit/lib/defer.js b/node_modules/asynckit/lib/defer.js deleted file mode 100644 index b67110c..0000000 --- a/node_modules/asynckit/lib/defer.js +++ /dev/null @@ -1,26 +0,0 @@ -module.exports = defer; - -/** - * Runs provided function on next iteration of the event loop - * - * @param {function} fn - function to run - */ -function defer(fn) -{ - var nextTick = typeof setImmediate == 'function' - ? setImmediate - : ( - typeof process == 'object' && typeof process.nextTick == 'function' - ? process.nextTick - : null - ); - - if (nextTick) - { - nextTick(fn); - } - else - { - setTimeout(fn, 0); - } -} diff --git a/node_modules/asynckit/lib/iterate.js b/node_modules/asynckit/lib/iterate.js deleted file mode 100644 index 5d2839a..0000000 --- a/node_modules/asynckit/lib/iterate.js +++ /dev/null @@ -1,75 +0,0 @@ -var async = require('./async.js') - , abort = require('./abort.js') - ; - -// API -module.exports = iterate; - -/** - * Iterates over each job object - * - * @param {array|object} list - array or object (named list) to iterate over - * @param {function} iterator - iterator to run - * @param {object} state - current job status - * @param {function} callback - invoked when all elements processed - */ -function iterate(list, iterator, state, callback) -{ - // store current index - var key = state['keyedList'] ? state['keyedList'][state.index] : state.index; - - state.jobs[key] = runJob(iterator, key, list[key], function(error, output) - { - // don't repeat yourself - // skip secondary callbacks - if (!(key in state.jobs)) - { - return; - } - - // clean up jobs - delete state.jobs[key]; - - if (error) - { - // don't process rest of the results - // stop still active jobs - // and reset the list - abort(state); - } - else - { - state.results[key] = output; - } - - // return salvaged results - callback(error, state.results); - }); -} - -/** - * Runs iterator over provided job element - * - * @param {function} iterator - iterator to invoke - * @param {string|number} key - key/index of the element in the list of jobs - * @param {mixed} item - job description - * @param {function} callback - invoked after iterator is done with the job - * @returns {function|mixed} - job abort function or something else - */ -function runJob(iterator, key, item, callback) -{ - var aborter; - - // allow shortcut if iterator expects only two arguments - if (iterator.length == 2) - { - aborter = iterator(item, async(callback)); - } - // otherwise go with full three arguments - else - { - aborter = iterator(item, key, async(callback)); - } - - return aborter; -} diff --git a/node_modules/asynckit/lib/readable_asynckit.js b/node_modules/asynckit/lib/readable_asynckit.js deleted file mode 100644 index 78ad240..0000000 --- a/node_modules/asynckit/lib/readable_asynckit.js +++ /dev/null @@ -1,91 +0,0 @@ -var streamify = require('./streamify.js') - , defer = require('./defer.js') - ; - -// API -module.exports = ReadableAsyncKit; - -/** - * Base constructor for all streams - * used to hold properties/methods - */ -function ReadableAsyncKit() -{ - ReadableAsyncKit.super_.apply(this, arguments); - - // list of active jobs - this.jobs = {}; - - // add stream methods - this.destroy = destroy; - this._start = _start; - this._read = _read; -} - -/** - * Destroys readable stream, - * by aborting outstanding jobs - * - * @returns {void} - */ -function destroy() -{ - if (this.destroyed) - { - return; - } - - this.destroyed = true; - - if (typeof this.terminator == 'function') - { - this.terminator(); - } -} - -/** - * Starts provided jobs in async manner - * - * @private - */ -function _start() -{ - // first argument – runner function - var runner = arguments[0] - // take away first argument - , args = Array.prototype.slice.call(arguments, 1) - // second argument - input data - , input = args[0] - // last argument - result callback - , endCb = streamify.callback.call(this, args[args.length - 1]) - ; - - args[args.length - 1] = endCb; - // third argument - iterator - args[1] = streamify.iterator.call(this, args[1]); - - // allow time for proper setup - defer(function() - { - if (!this.destroyed) - { - this.terminator = runner.apply(null, args); - } - else - { - endCb(null, Array.isArray(input) ? [] : {}); - } - }.bind(this)); -} - - -/** - * Implement _read to comply with Readable streams - * Doesn't really make sense for flowing object mode - * - * @private - */ -function _read() -{ - -} diff --git a/node_modules/asynckit/lib/readable_parallel.js b/node_modules/asynckit/lib/readable_parallel.js deleted file mode 100644 index 5d2929f..0000000 --- a/node_modules/asynckit/lib/readable_parallel.js +++ /dev/null @@ -1,25 +0,0 @@ -var parallel = require('../parallel.js'); - -// API -module.exports = ReadableParallel; - -/** - * Streaming wrapper to `asynckit.parallel` - * - * @param {array|object} list - array or object (named list) to iterate over - * @param {function} iterator - iterator to run - * @param {function} callback - invoked when all elements processed - * @returns {stream.Readable#} - */ -function ReadableParallel(list, iterator, callback) -{ - if (!(this instanceof ReadableParallel)) - { - return new ReadableParallel(list, iterator, callback); - } - - // turn on object mode - ReadableParallel.super_.call(this, {objectMode: true}); - - this._start(parallel, list, iterator, callback); -} diff --git a/node_modules/asynckit/lib/readable_serial.js b/node_modules/asynckit/lib/readable_serial.js deleted file mode 100644 index 7822698..0000000 --- a/node_modules/asynckit/lib/readable_serial.js +++ /dev/null @@ -1,25 +0,0 @@ -var serial = require('../serial.js'); - -// API -module.exports = ReadableSerial; - -/** - * Streaming wrapper to `asynckit.serial` - * - * @param {array|object} list - array or object (named list) to iterate over - * @param {function} iterator - iterator to run - * @param {function} callback - invoked when all elements processed - * @returns {stream.Readable#} - */ -function ReadableSerial(list, iterator, callback) -{ - if (!(this instanceof ReadableSerial)) - { - return new ReadableSerial(list, iterator, callback); - } - - // turn on object mode - ReadableSerial.super_.call(this, {objectMode: true}); - - this._start(serial, list, iterator, callback); -} diff --git a/node_modules/asynckit/lib/readable_serial_ordered.js b/node_modules/asynckit/lib/readable_serial_ordered.js deleted file mode 100644 index 3de89c4..0000000 --- a/node_modules/asynckit/lib/readable_serial_ordered.js +++ /dev/null @@ -1,29 +0,0 @@ -var serialOrdered = require('../serialOrdered.js'); - -// API -module.exports = ReadableSerialOrdered; -// expose sort helpers -module.exports.ascending = serialOrdered.ascending; -module.exports.descending = serialOrdered.descending; - -/** - * Streaming wrapper to `asynckit.serialOrdered` - * - * @param {array|object} list - array or object (named list) to iterate over - * @param {function} iterator - iterator to run - * @param {function} sortMethod - custom sort function - * @param {function} callback - invoked when all elements processed - * @returns {stream.Readable#} - */ -function ReadableSerialOrdered(list, iterator, sortMethod, callback) -{ - if (!(this instanceof ReadableSerialOrdered)) - { - return new ReadableSerialOrdered(list, iterator, sortMethod, callback); - } - - // turn on object mode - ReadableSerialOrdered.super_.call(this, {objectMode: true}); - - this._start(serialOrdered, list, iterator, sortMethod, callback); -} diff --git a/node_modules/asynckit/lib/state.js b/node_modules/asynckit/lib/state.js deleted file mode 100644 index cbea7ad..0000000 --- a/node_modules/asynckit/lib/state.js +++ /dev/null @@ -1,37 +0,0 @@ -// API -module.exports = state; - -/** - * Creates initial state object - * for iteration over list - * - * @param {array|object} list - list to iterate over - * @param {function|null} sortMethod - function to use for keys sort, - * or `null` to keep them as is - * @returns {object} - initial state object - */ -function state(list, sortMethod) -{ - var isNamedList = !Array.isArray(list) - , initState = - { - index : 0, - keyedList: isNamedList || sortMethod ? Object.keys(list) : null, - jobs : {}, - results : isNamedList ? {} : [], - size : isNamedList ? Object.keys(list).length : list.length - } - ; - - if (sortMethod) - { - // sort array keys based on it's values - // sort object's keys just on own merit - initState.keyedList.sort(isNamedList ? sortMethod : function(a, b) - { - return sortMethod(list[a], list[b]); - }); - } - - return initState; -} diff --git a/node_modules/asynckit/lib/streamify.js b/node_modules/asynckit/lib/streamify.js deleted file mode 100644 index f56a1c9..0000000 --- a/node_modules/asynckit/lib/streamify.js +++ /dev/null @@ -1,141 +0,0 @@ -var async = require('./async.js'); - -// API -module.exports = { - iterator: wrapIterator, - callback: wrapCallback -}; - -/** - * Wraps iterators with long signature - * - * @this ReadableAsyncKit# - * @param {function} iterator - function to wrap - * @returns {function} - wrapped function - */ -function wrapIterator(iterator) -{ - var stream = this; - - return function(item, key, cb) - { - var aborter - , wrappedCb = async(wrapIteratorCallback.call(stream, cb, key)) - ; - - stream.jobs[key] = wrappedCb; - - // it's either shortcut (item, cb) - if (iterator.length == 2) - { - aborter = iterator(item, wrappedCb); - } - // or long format (item, key, cb) - else - { - aborter = iterator(item, key, wrappedCb); - } - - return aborter; - }; -} - -/** - * Wraps provided callback function - * allowing to execute snitch function before - * real callback - * - * @this ReadableAsyncKit# - * @param {function} callback - function to wrap - * @returns {function} - wrapped function - */ -function wrapCallback(callback) -{ - var stream = this; - - var wrapped = function(error, result) - { - return finisher.call(stream, error, result, callback); - }; - - return wrapped; -} - -/** - * Wraps provided iterator callback function - * makes sure snitch only called once, - * but passes secondary calls to the original callback - * - * @this ReadableAsyncKit# - * @param {function} callback - callback to wrap - * @param {number|string} key - iteration key - * @returns {function} wrapped callback - */ -function wrapIteratorCallback(callback, key) -{ - var stream = this; - - return function(error, output) - { - // don't repeat yourself - if (!(key in stream.jobs)) - { - callback(error, output); - return; - } - - // clean up jobs - delete stream.jobs[key]; - - return streamer.call(stream, error, {key: key, value: output}, callback); - }; -} - -/** - * Stream wrapper for iterator callback - * - * @this ReadableAsyncKit# - * @param {mixed} error - error response - * @param {mixed} output - iterator output - * @param {function} callback - callback that expects iterator results - */ -function streamer(error, output, callback) -{ - if (error && !this.error) - { - this.error = error; - this.pause(); - this.emit('error', error); - // send back value only, as expected - callback(error, output && output.value); - return; - } - - // stream stuff - this.push(output); - - // back to original track - // send back value only, as expected - callback(error, output && output.value); -} - -/** - * Stream wrapper for finishing callback - * - * @this ReadableAsyncKit# - * @param {mixed} error - error response - * @param {mixed} output - iterator output - * @param {function} callback - callback that expects final results - */ -function finisher(error, output, callback) -{ - // signal end of the stream - // only for successfully finished streams - if (!error) - { - this.push(null); - } - - // back to original track - callback(error, output); -} diff --git a/node_modules/asynckit/lib/terminator.js b/node_modules/asynckit/lib/terminator.js deleted file mode 100644 index d6eb992..0000000 --- a/node_modules/asynckit/lib/terminator.js +++ /dev/null @@ -1,29 +0,0 @@ -var abort = require('./abort.js') - , async = require('./async.js') - ; - -// API -module.exports = terminator; - -/** - * Terminates jobs in the attached state context - * - * @this AsyncKitState# - * @param {function} callback - final callback to invoke after termination - */ -function terminator(callback) -{ - if (!Object.keys(this.jobs).length) - { - return; - } - - // fast forward iteration index - this.index = this.size; - - // abort jobs - abort(this); - - // send back results we have so far - async(callback)(null, this.results); -} diff --git a/node_modules/asynckit/package.json b/node_modules/asynckit/package.json deleted file mode 100644 index 51147d6..0000000 --- a/node_modules/asynckit/package.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "name": "asynckit", - "version": "0.4.0", - "description": "Minimal async jobs utility library, with streams support", - "main": "index.js", - "scripts": { - "clean": "rimraf coverage", - "lint": "eslint *.js lib/*.js test/*.js", - "test": "istanbul cover --reporter=json tape -- 'test/test-*.js' | tap-spec", - "win-test": "tape test/test-*.js", - "browser": "browserify -t browserify-istanbul test/lib/browserify_adjustment.js test/test-*.js | obake --coverage | tap-spec", - "report": "istanbul report", - "size": "browserify index.js | size-table asynckit", - "debug": "tape test/test-*.js" - }, - "pre-commit": [ - "clean", - "lint", - "test", - "browser", - "report", - "size" - ], - "repository": { - "type": "git", - "url": "git+https://github.com/alexindigo/asynckit.git" - }, - "keywords": [ - "async", - "jobs", - "parallel", - "serial", - "iterator", - "array", - "object", - "stream", - "destroy", - "terminate", - "abort" - ], - "author": "Alex Indigo ", - "license": "MIT", - "bugs": { - "url": "https://github.com/alexindigo/asynckit/issues" - }, - "homepage": "https://github.com/alexindigo/asynckit#readme", - "devDependencies": { - "browserify": "^13.0.0", - "browserify-istanbul": "^2.0.0", - "coveralls": "^2.11.9", - "eslint": "^2.9.0", - "istanbul": "^0.4.3", - "obake": "^0.1.2", - "phantomjs-prebuilt": "^2.1.7", - "pre-commit": "^1.1.3", - "reamde": "^1.1.0", - "rimraf": "^2.5.2", - "size-table": "^0.2.0", - "tap-spec": "^4.1.1", - "tape": "^4.5.1" - }, - "dependencies": {} -} diff --git a/node_modules/asynckit/parallel.js b/node_modules/asynckit/parallel.js deleted file mode 100644 index 3c50344..0000000 --- a/node_modules/asynckit/parallel.js +++ /dev/null @@ -1,43 +0,0 @@ -var iterate = require('./lib/iterate.js') - , initState = require('./lib/state.js') - , terminator = require('./lib/terminator.js') - ; - -// Public API -module.exports = parallel; - -/** - * Runs iterator over provided array elements in parallel - * - * @param {array|object} list - array or object (named list) to iterate over - * @param {function} iterator - iterator to run - * @param {function} callback - invoked when all elements processed - * @returns {function} - jobs terminator - */ -function parallel(list, iterator, callback) -{ - var state = initState(list); - - while (state.index < (state['keyedList'] || list).length) - { - iterate(list, iterator, state, function(error, result) - { - if (error) - { - callback(error, result); - return; - } - - // looks like it's the last one - if (Object.keys(state.jobs).length === 0) - { - callback(null, state.results); - return; - } - }); - - state.index++; - } - - return terminator.bind(state, callback); -} diff --git a/node_modules/asynckit/serial.js b/node_modules/asynckit/serial.js deleted file mode 100644 index 6cd949a..0000000 --- a/node_modules/asynckit/serial.js +++ /dev/null @@ -1,17 +0,0 @@ -var serialOrdered = require('./serialOrdered.js'); - -// Public API -module.exports = serial; - -/** - * Runs iterator over provided array elements in series - * - * @param {array|object} list - array or object (named list) to iterate over - * @param {function} iterator - iterator to run - * @param {function} callback - invoked when all elements processed - * @returns {function} - jobs terminator - */ -function serial(list, iterator, callback) -{ - return serialOrdered(list, iterator, null, callback); -} diff --git a/node_modules/asynckit/serialOrdered.js b/node_modules/asynckit/serialOrdered.js deleted file mode 100644 index 607eafe..0000000 --- a/node_modules/asynckit/serialOrdered.js +++ /dev/null @@ -1,75 +0,0 @@ -var iterate = require('./lib/iterate.js') - , initState = require('./lib/state.js') - , terminator = require('./lib/terminator.js') - ; - -// Public API -module.exports = serialOrdered; -// sorting helpers -module.exports.ascending = ascending; -module.exports.descending = descending; - -/** - * Runs iterator over provided sorted array elements in series - * - * @param {array|object} list - array or object (named list) to iterate over - * @param {function} iterator - iterator to run - * @param {function} sortMethod - custom sort function - * @param {function} callback - invoked when all elements processed - * @returns {function} - jobs terminator - */ -function serialOrdered(list, iterator, sortMethod, callback) -{ - var state = initState(list, sortMethod); - - iterate(list, iterator, state, function iteratorHandler(error, result) - { - if (error) - { - callback(error, result); - return; - } - - state.index++; - - // are we there yet? - if (state.index < (state['keyedList'] || list).length) - { - iterate(list, iterator, state, iteratorHandler); - return; - } - - // done here - callback(null, state.results); - }); - - return terminator.bind(state, callback); -} - -/* - * -- Sort methods - */ - -/** - * sort helper to sort array elements in ascending order - * - * @param {mixed} a - an item to compare - * @param {mixed} b - an item to compare - * @returns {number} - comparison result - */ -function ascending(a, b) -{ - return a < b ? -1 : a > b ? 1 : 0; -} - -/** - * sort helper to sort array elements in descending order - * - * @param {mixed} a - an item to compare - * @param {mixed} b - an item to compare - * @returns {number} - comparison result - */ -function descending(a, b) -{ - return -1 * ascending(a, b); -} diff --git a/node_modules/asynckit/stream.js b/node_modules/asynckit/stream.js deleted file mode 100644 index d43465f..0000000 --- a/node_modules/asynckit/stream.js +++ /dev/null @@ -1,21 +0,0 @@ -var inherits = require('util').inherits - , Readable = require('stream').Readable - , ReadableAsyncKit = require('./lib/readable_asynckit.js') - , ReadableParallel = require('./lib/readable_parallel.js') - , ReadableSerial = require('./lib/readable_serial.js') - , ReadableSerialOrdered = require('./lib/readable_serial_ordered.js') - ; - -// API -module.exports = -{ - parallel : ReadableParallel, - serial : ReadableSerial, - serialOrdered : ReadableSerialOrdered, -}; - -inherits(ReadableAsyncKit, Readable); - -inherits(ReadableParallel, ReadableAsyncKit); -inherits(ReadableSerial, ReadableAsyncKit); -inherits(ReadableSerialOrdered, ReadableAsyncKit); diff --git a/node_modules/axios/CHANGELOG.md b/node_modules/axios/CHANGELOG.md index 6fd5c9b..5e2b3d0 100644 --- a/node_modules/axios/CHANGELOG.md +++ b/node_modules/axios/CHANGELOG.md @@ -1,855 +1,775 @@ # Changelog -## [1.6.7](https://github.com/axios/axios/compare/v1.6.6...v1.6.7) (2024-01-25) +### 0.21.4 (September 6, 2021) +Fixes and Functionality: +- Fixing JSON transform when data is stringified. Providing backward compatibility and complying to the JSON RFC standard ([#4020](https://github.com/axios/axios/pull/4020)) -### Bug Fixes - -* capture async stack only for rejections with native error objects; ([#6203](https://github.com/axios/axios/issues/6203)) ([1a08f90](https://github.com/axios/axios/commit/1a08f90f402336e4d00e9ee82f211c6adb1640b0)) - -### Contributors to this release - -- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+30/-26 (#6203 )") -- avatar [zhoulixiang](https://github.com/zh-lx "+0/-3 (#6186 )") - -## [1.6.6](https://github.com/axios/axios/compare/v1.6.5...v1.6.6) (2024-01-24) - - -### Bug Fixes - -* fixed missed dispatchBeforeRedirect argument ([#5778](https://github.com/axios/axios/issues/5778)) ([a1938ff](https://github.com/axios/axios/commit/a1938ff073fcb0f89011f001dfbc1fa1dc995e39)) -* wrap errors to improve async stack trace ([#5987](https://github.com/axios/axios/issues/5987)) ([123f354](https://github.com/axios/axios/commit/123f354b920f154a209ea99f76b7b2ef3d9ebbab)) - -### Contributors to this release - -- avatar [Ilya Priven](https://github.com/ikonst "+91/-8 (#5987 )") -- avatar [Zao Soula](https://github.com/zaosoula "+6/-6 (#5778 )") - -## [1.6.5](https://github.com/axios/axios/compare/v1.6.4...v1.6.5) (2024-01-05) - - -### Bug Fixes - -* **ci:** refactor notify action as a job of publish action; ([#6176](https://github.com/axios/axios/issues/6176)) ([0736f95](https://github.com/axios/axios/commit/0736f95ce8776366dc9ca569f49ba505feb6373c)) -* **dns:** fixed lookup error handling; ([#6175](https://github.com/axios/axios/issues/6175)) ([f4f2b03](https://github.com/axios/axios/commit/f4f2b039dd38eb4829e8583caede4ed6d2dd59be)) - -### Contributors to this release - -- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+41/-6 (#6176 #6175 )") -- avatar [Jay](https://github.com/jasonsaayman "+6/-1 ()") - -## [1.6.4](https://github.com/axios/axios/compare/v1.6.3...v1.6.4) (2024-01-03) - - -### Bug Fixes - -* **security:** fixed formToJSON prototype pollution vulnerability; ([#6167](https://github.com/axios/axios/issues/6167)) ([3c0c11c](https://github.com/axios/axios/commit/3c0c11cade045c4412c242b5727308cff9897a0e)) -* **security:** fixed security vulnerability in follow-redirects ([#6163](https://github.com/axios/axios/issues/6163)) ([75af1cd](https://github.com/axios/axios/commit/75af1cdff5b3a6ca3766d3d3afbc3115bb0811b8)) - -### Contributors to this release - -- avatar [Jay](https://github.com/jasonsaayman "+34/-6 ()") -- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+34/-3 (#6172 #6167 )") -- avatar [Guy Nesher](https://github.com/gnesher "+10/-10 (#6163 )") - -## [1.6.3](https://github.com/axios/axios/compare/v1.6.2...v1.6.3) (2023-12-26) - - -### Bug Fixes - -* Regular Expression Denial of Service (ReDoS) ([#6132](https://github.com/axios/axios/issues/6132)) ([5e7ad38](https://github.com/axios/axios/commit/5e7ad38fb0f819fceb19fb2ee5d5d38f56aa837d)) - -### Contributors to this release - -- avatar [Jay](https://github.com/jasonsaayman "+15/-6 (#6145 )") -- avatar [Willian Agostini](https://github.com/WillianAgostini "+17/-2 (#6132 )") -- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+3/-0 (#6084 )") - -## [1.6.2](https://github.com/axios/axios/compare/v1.6.1...v1.6.2) (2023-11-14) - - -### Features - -* **withXSRFToken:** added withXSRFToken option as a workaround to achieve the old `withCredentials` behavior; ([#6046](https://github.com/axios/axios/issues/6046)) ([cff9967](https://github.com/axios/axios/commit/cff996779b272a5e94c2b52f5503ccf668bc42dc)) - -### PRs -- feat(withXSRFToken): added withXSRFToken option as a workaround to achieve the old `withCredentials` behavior; ( [#6046](https://api.github.com/repos/axios/axios/pulls/6046) ) -``` - -📢 This PR added 'withXSRFToken' option as a replacement for old withCredentials behaviour. -You should now use withXSRFToken along with withCredential to get the old behavior. -This functionality is considered as a fix. -``` - -### Contributors to this release - -- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+271/-146 (#6081 #6080 #6079 #6078 #6046 #6064 #6063 )") -- avatar [Ng Choon Khon (CK)](https://github.com/ckng0221 "+4/-4 (#6073 )") -- avatar [Muhammad Noman](https://github.com/mnomanmemon "+2/-2 (#6048 )") - -## [1.6.1](https://github.com/axios/axios/compare/v1.6.0...v1.6.1) (2023-11-08) - - -### Bug Fixes - -* **formdata:** fixed content-type header normalization for non-standard browser environments; ([#6056](https://github.com/axios/axios/issues/6056)) ([dd465ab](https://github.com/axios/axios/commit/dd465ab22bbfa262c6567be6574bf46a057d5288)) -* **platform:** fixed emulated browser detection in node.js environment; ([#6055](https://github.com/axios/axios/issues/6055)) ([3dc8369](https://github.com/axios/axios/commit/3dc8369e505e32a4e12c22f154c55fd63ac67fbb)) - -### Contributors to this release - -- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+432/-65 (#6059 #6056 #6055 )") -- avatar [Fabian Meyer](https://github.com/meyfa "+5/-2 (#5835 )") - -### PRs -- feat(withXSRFToken): added withXSRFToken option as a workaround to achieve the old `withCredentials` behavior; ( [#6046](https://api.github.com/repos/axios/axios/pulls/6046) ) -``` - -📢 This PR added 'withXSRFToken' option as a replacement for old withCredentials behaviour. -You should now use withXSRFToken along with withCredential to get the old behavior. -This functionality is considered as a fix. -``` - -# [1.6.0](https://github.com/axios/axios/compare/v1.5.1...v1.6.0) (2023-10-26) - - -### Bug Fixes - -* **CSRF:** fixed CSRF vulnerability CVE-2023-45857 ([#6028](https://github.com/axios/axios/issues/6028)) ([96ee232](https://github.com/axios/axios/commit/96ee232bd3ee4de2e657333d4d2191cd389e14d0)) -* **dns:** fixed lookup function decorator to work properly in node v20; ([#6011](https://github.com/axios/axios/issues/6011)) ([5aaff53](https://github.com/axios/axios/commit/5aaff532a6b820bb9ab6a8cd0f77131b47e2adb8)) -* **types:** fix AxiosHeaders types; ([#5931](https://github.com/axios/axios/issues/5931)) ([a1c8ad0](https://github.com/axios/axios/commit/a1c8ad008b3c13d53e135bbd0862587fb9d3fc09)) - -### PRs -- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) -``` - -⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 -``` - -### Contributors to this release - -- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+449/-114 (#6032 #6021 #6011 #5932 #5931 )") -- avatar [Valentin Panov](https://github.com/valentin-panov "+4/-4 (#6028 )") -- avatar [Rinku Chaudhari](https://github.com/therealrinku "+1/-1 (#5889 )") - -## [1.5.1](https://github.com/axios/axios/compare/v1.5.0...v1.5.1) (2023-09-26) - - -### Bug Fixes - -* **adapters:** improved adapters loading logic to have clear error messages; ([#5919](https://github.com/axios/axios/issues/5919)) ([e410779](https://github.com/axios/axios/commit/e4107797a7a1376f6209fbecfbbce73d3faa7859)) -* **formdata:** fixed automatic addition of the `Content-Type` header for FormData in non-browser environments; ([#5917](https://github.com/axios/axios/issues/5917)) ([bc9af51](https://github.com/axios/axios/commit/bc9af51b1886d1b3529617702f2a21a6c0ed5d92)) -* **headers:** allow `content-encoding` header to handle case-insensitive values ([#5890](https://github.com/axios/axios/issues/5890)) ([#5892](https://github.com/axios/axios/issues/5892)) ([4c89f25](https://github.com/axios/axios/commit/4c89f25196525e90a6e75eda9cb31ae0a2e18acd)) -* **types:** removed duplicated code ([9e62056](https://github.com/axios/axios/commit/9e6205630e1c9cf863adf141c0edb9e6d8d4b149)) - -### Contributors to this release - -- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+89/-18 (#5919 #5917 )") -- avatar [David Dallas](https://github.com/DavidJDallas "+11/-5 ()") -- avatar [Sean Sattler](https://github.com/fb-sean "+2/-8 ()") -- avatar [Mustafa Ateş Uzun](https://github.com/0o001 "+4/-4 ()") -- avatar [Przemyslaw Motacki](https://github.com/sfc-gh-pmotacki "+2/-1 (#5892 )") -- avatar [Michael Di Prisco](https://github.com/Cadienvan "+1/-1 ()") - -### PRs -- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) -``` - -⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 -``` - -# [1.5.0](https://github.com/axios/axios/compare/v1.4.0...v1.5.0) (2023-08-26) - - -### Bug Fixes - -* **adapter:** make adapter loading error more clear by using platform-specific adapters explicitly ([#5837](https://github.com/axios/axios/issues/5837)) ([9a414bb](https://github.com/axios/axios/commit/9a414bb6c81796a95c6c7fe668637825458e8b6d)) -* **dns:** fixed `cacheable-lookup` integration; ([#5836](https://github.com/axios/axios/issues/5836)) ([b3e327d](https://github.com/axios/axios/commit/b3e327dcc9277bdce34c7ef57beedf644b00d628)) -* **headers:** added support for setting header names that overlap with class methods; ([#5831](https://github.com/axios/axios/issues/5831)) ([d8b4ca0](https://github.com/axios/axios/commit/d8b4ca0ea5f2f05efa4edfe1e7684593f9f68273)) -* **headers:** fixed common Content-Type header merging; ([#5832](https://github.com/axios/axios/issues/5832)) ([8fda276](https://github.com/axios/axios/commit/8fda2766b1e6bcb72c3fabc146223083ef13ce17)) - - -### Features - -* export getAdapter function ([#5324](https://github.com/axios/axios/issues/5324)) ([ca73eb8](https://github.com/axios/axios/commit/ca73eb878df0ae2dace81fe3a7f1fb5986231bf1)) -* **export:** export adapters without `unsafe` prefix ([#5839](https://github.com/axios/axios/issues/5839)) ([1601f4a](https://github.com/axios/axios/commit/1601f4a27a81ab47fea228f1e244b2c4e3ce28bf)) - -### Contributors to this release - -- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+66/-29 (#5839 #5837 #5836 #5832 #5831 )") -- avatar [夜葬](https://github.com/geekact "+42/-0 (#5324 )") -- avatar [Jonathan Budiman](https://github.com/JBudiman00 "+30/-0 (#5788 )") -- avatar [Michael Di Prisco](https://github.com/Cadienvan "+3/-5 (#5791 )") - -### PRs -- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) -``` - -⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 -``` - -# [1.4.0](https://github.com/axios/axios/compare/v1.3.6...v1.4.0) (2023-04-27) - - -### Bug Fixes - -* **formdata:** add `multipart/form-data` content type for FormData payload on custom client environments; ([#5678](https://github.com/axios/axios/issues/5678)) ([bbb61e7](https://github.com/axios/axios/commit/bbb61e70cb1185adfb1cbbb86eaf6652c48d89d1)) -* **package:** export package internals with unsafe path prefix; ([#5677](https://github.com/axios/axios/issues/5677)) ([df38c94](https://github.com/axios/axios/commit/df38c949f26414d88ba29ec1e353c4d4f97eaf09)) - - -### Features - -* **dns:** added support for a custom lookup function; ([#5339](https://github.com/axios/axios/issues/5339)) ([2701911](https://github.com/axios/axios/commit/2701911260a1faa5cc5e1afe437121b330a3b7bb)) -* **types:** export `AxiosHeaderValue` type. ([#5525](https://github.com/axios/axios/issues/5525)) ([726f1c8](https://github.com/axios/axios/commit/726f1c8e00cffa0461a8813a9bdcb8f8b9d762cf)) - - -### Performance Improvements - -* **merge-config:** optimize mergeConfig performance by avoiding duplicate key visits; ([#5679](https://github.com/axios/axios/issues/5679)) ([e6f7053](https://github.com/axios/axios/commit/e6f7053bf1a3e87cf1f9da8677e12e3fe829d68e)) - -### Contributors to this release - -- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+151/-16 (#5684 #5339 #5679 #5678 #5677 )") -- avatar [Arthur Fiorette](https://github.com/arthurfiorette "+19/-19 (#5525 )") -- avatar [PIYUSH NEGI](https://github.com/npiyush97 "+2/-18 (#5670 )") - -### PRs -- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) -``` - -⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 -``` - -## [1.3.6](https://github.com/axios/axios/compare/v1.3.5...v1.3.6) (2023-04-19) - - -### Bug Fixes - -* **types:** added transport to RawAxiosRequestConfig ([#5445](https://github.com/axios/axios/issues/5445)) ([6f360a2](https://github.com/axios/axios/commit/6f360a2531d8d70363fd9becef6a45a323f170e2)) -* **utils:** make isFormData detection logic stricter to avoid unnecessary calling of the `toString` method on the target; ([#5661](https://github.com/axios/axios/issues/5661)) ([aa372f7](https://github.com/axios/axios/commit/aa372f7306295dfd1100c1c2c77ce95c95808e76)) - -### Contributors to this release - -- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+48/-10 (#5665 #5661 #5663 )") -- avatar [Michael Di Prisco](https://github.com/Cadienvan "+2/-0 (#5445 )") - -### PRs -- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) -``` - -⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 -``` - -## [1.3.5](https://github.com/axios/axios/compare/v1.3.4...v1.3.5) (2023-04-05) - - -### Bug Fixes - -* **headers:** fixed isValidHeaderName to support full list of allowed characters; ([#5584](https://github.com/axios/axios/issues/5584)) ([e7decef](https://github.com/axios/axios/commit/e7decef6a99f4627e27ed9ea5b00ce8e201c3841)) -* **params:** re-added the ability to set the function as `paramsSerializer` config; ([#5633](https://github.com/axios/axios/issues/5633)) ([a56c866](https://github.com/axios/axios/commit/a56c8661209d5ce5a645a05f294a0e08a6c1f6b3)) - -### Contributors to this release - -- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+28/-10 (#5633 #5584 )") - -### PRs -- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) -``` - -⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 -``` - -## [1.3.4](https://github.com/axios/axios/compare/v1.3.3...v1.3.4) (2023-02-22) - - -### Bug Fixes - -* **blob:** added a check to make sure the Blob class is available in the browser's global scope; ([#5548](https://github.com/axios/axios/issues/5548)) ([3772c8f](https://github.com/axios/axios/commit/3772c8fe74112a56e3e9551f894d899bc3a9443a)) -* **http:** fixed regression bug when handling synchronous errors inside the adapter; ([#5564](https://github.com/axios/axios/issues/5564)) ([a3b246c](https://github.com/axios/axios/commit/a3b246c9de5c3bc4b5a742e15add55b375479451)) - -### Contributors to this release - -- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+38/-26 (#5564 )") -- avatar [lcysgsg](https://github.com/lcysgsg "+4/-0 (#5548 )") -- avatar [Michael Di Prisco](https://github.com/Cadienvan "+3/-0 (#5444 )") - -### PRs -- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) -``` - -⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 -``` - -## [1.3.3](https://github.com/axios/axios/compare/v1.3.2...v1.3.3) (2023-02-13) - - -### Bug Fixes - -* **formdata:** added a check to make sure the FormData class is available in the browser's global scope; ([#5545](https://github.com/axios/axios/issues/5545)) ([a6dfa72](https://github.com/axios/axios/commit/a6dfa72010db5ad52db8bd13c0f98e537e8fd05d)) -* **formdata:** fixed setting NaN as Content-Length for form payload in some cases; ([#5535](https://github.com/axios/axios/issues/5535)) ([c19f7bf](https://github.com/axios/axios/commit/c19f7bf770f90ae8307f4ea3104f227056912da1)) -* **headers:** fixed the filtering logic of the clear method; ([#5542](https://github.com/axios/axios/issues/5542)) ([ea87ebf](https://github.com/axios/axios/commit/ea87ebfe6d1699af072b9e7cd40faf8f14b0ab93)) - -### Contributors to this release - -- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+11/-7 (#5545 #5535 #5542 )") -- avatar [陈若枫](https://github.com/ruofee "+2/-2 (#5467 )") - -### PRs -- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) -``` - -⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 -``` - -## [1.3.2](https://github.com/axios/axios/compare/v1.3.1...v1.3.2) (2023-02-03) - - -### Bug Fixes - -* **http:** treat http://localhost as base URL for relative paths to avoid `ERR_INVALID_URL` error; ([#5528](https://github.com/axios/axios/issues/5528)) ([128d56f](https://github.com/axios/axios/commit/128d56f4a0fb8f5f2ed6e0dd80bc9225fee9538c)) -* **http:** use explicit import instead of TextEncoder global; ([#5530](https://github.com/axios/axios/issues/5530)) ([6b3c305](https://github.com/axios/axios/commit/6b3c305fc40c56428e0afabedc6f4d29c2830f6f)) - -### Contributors to this release - -- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+2/-1 (#5530 #5528 )") - -### PRs -- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) -``` - -⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 -``` - -## [1.3.1](https://github.com/axios/axios/compare/v1.3.0...v1.3.1) (2023-02-01) - - -### Bug Fixes - -* **formdata:** add hotfix to use the asynchronous API to compute the content-length header value; ([#5521](https://github.com/axios/axios/issues/5521)) ([96d336f](https://github.com/axios/axios/commit/96d336f527619f21da012fe1f117eeb53e5a2120)) -* **serializer:** fixed serialization of array-like objects; ([#5518](https://github.com/axios/axios/issues/5518)) ([08104c0](https://github.com/axios/axios/commit/08104c028c0f9353897b1b6691d74c440fd0c32d)) - -### Contributors to this release - -- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+27/-8 (#5521 #5518 )") - -### PRs -- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) -``` - -⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 -``` - -# [1.3.0](https://github.com/axios/axios/compare/v1.2.6...v1.3.0) (2023-01-31) - - -### Bug Fixes - -* **headers:** fixed & optimized clear method; ([#5507](https://github.com/axios/axios/issues/5507)) ([9915635](https://github.com/axios/axios/commit/9915635c69d0ab70daca5738488421f67ca60959)) -* **http:** add zlib headers if missing ([#5497](https://github.com/axios/axios/issues/5497)) ([65e8d1e](https://github.com/axios/axios/commit/65e8d1e28ce829f47a837e45129730e541950d3c)) - - -### Features - -* **fomdata:** added support for spec-compliant FormData & Blob types; ([#5316](https://github.com/axios/axios/issues/5316)) ([6ac574e](https://github.com/axios/axios/commit/6ac574e00a06731288347acea1e8246091196953)) - -### Contributors to this release - -- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+352/-67 (#5514 #5512 #5510 #5509 #5508 #5316 #5507 )") -- avatar [ItsNotGoodName](https://github.com/ItsNotGoodName "+43/-2 (#5497 )") - -### PRs -- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) -``` - -⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 -``` - -## [1.2.6](https://github.com/axios/axios/compare/v1.2.5...v1.2.6) (2023-01-28) - - -### Bug Fixes - -* **headers:** added missed Authorization accessor; ([#5502](https://github.com/axios/axios/issues/5502)) ([342c0ba](https://github.com/axios/axios/commit/342c0ba9a16ea50f5ed7d2366c5c1a2c877e3f26)) -* **types:** fixed `CommonRequestHeadersList` & `CommonResponseHeadersList` types to be private in commonJS; ([#5503](https://github.com/axios/axios/issues/5503)) ([5a3d0a3](https://github.com/axios/axios/commit/5a3d0a3234d77361a1bc7cedee2da1e11df08e2c)) - -### Contributors to this release - -- ![avatar](https://avatars.githubusercontent.com/u/12586868?v=4&s=16) [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+24/-9 (#5503 #5502 )") - -### PRs -- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) -``` - -⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 -``` - -## [1.2.5](https://github.com/axios/axios/compare/v1.2.4...v1.2.5) (2023-01-26) - - -### Bug Fixes - -* **types:** fixed AxiosHeaders to handle spread syntax by making all methods non-enumerable; ([#5499](https://github.com/axios/axios/issues/5499)) ([580f1e8](https://github.com/axios/axios/commit/580f1e8033a61baa38149d59fd16019de3932c22)) - -### Contributors to this release - -- ![avatar](https://avatars.githubusercontent.com/u/12586868?v=4&s=16) [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+82/-54 (#5499 )") -- ![avatar](https://avatars.githubusercontent.com/u/20516159?v=4&s=16) [Elliot Ford](https://github.com/EFord36 "+1/-1 (#5462 )") - -### PRs -- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) -``` - -⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 -``` - -## [1.2.4](https://github.com/axios/axios/compare/v1.2.3...v1.2.4) (2023-01-22) - - -### Bug Fixes - -* **types:** renamed `RawAxiosRequestConfig` back to `AxiosRequestConfig`; ([#5486](https://github.com/axios/axios/issues/5486)) ([2a71f49](https://github.com/axios/axios/commit/2a71f49bc6c68495fa419003a3107ed8bd703ad0)) -* **types:** fix `AxiosRequestConfig` generic; ([#5478](https://github.com/axios/axios/issues/5478)) ([9bce81b](https://github.com/axios/axios/commit/186ea062da8b7d578ae78b1a5c220986b9bce81b)) - -### Contributors to this release - -- ![avatar](https://avatars.githubusercontent.com/u/12586868?v=4&s=16) [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+242/-108 (#5486 #5482 )") -- ![avatar](https://avatars.githubusercontent.com/u/9430821?v=4&s=16) [Daniel Hillmann](https://github.com/hilleer "+1/-1 (#5478 )") - -### PRs -- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) -``` - -⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 -``` - -## [1.2.3](https://github.com/axios/axios/compare/1.2.2...1.2.3) (2023-01-10) - - -### Bug Fixes - -* **types:** fixed AxiosRequestConfig header interface by refactoring it to RawAxiosRequestConfig; ([#5420](https://github.com/axios/axios/issues/5420)) ([0811963](https://github.com/axios/axios/commit/08119634a22f1d5b19f5c9ea0adccb6d3eebc3bc)) - -### Contributors to this release - -- ![avatar](https://avatars.githubusercontent.com/u/12586868?v=4&s=16) [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+938/-442 (#5456 #5455 #5453 #5451 #5449 #5447 #5446 #5443 #5442 #5439 #5420 )") - -### PRs -- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) -``` - -⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 -``` - -## [1.2.2] - 2022-12-29 - -### Fixed -- fix(ci): fix release script inputs [#5392](https://github.com/axios/axios/pull/5392) -- fix(ci): prerelease scipts [#5377](https://github.com/axios/axios/pull/5377) -- fix(ci): release scripts [#5376](https://github.com/axios/axios/pull/5376) -- fix(ci): typescript tests [#5375](https://github.com/axios/axios/pull/5375) -- fix: Brotli decompression [#5353](https://github.com/axios/axios/pull/5353) -- fix: add missing HttpStatusCode [#5345](https://github.com/axios/axios/pull/5345) - -### Chores -- chore(ci): set conventional-changelog header config [#5406](https://github.com/axios/axios/pull/5406) -- chore(ci): fix automatic contributors resolving [#5403](https://github.com/axios/axios/pull/5403) -- chore(ci): improved logging for the contributors list generator [#5398](https://github.com/axios/axios/pull/5398) -- chore(ci): fix release action [#5397](https://github.com/axios/axios/pull/5397) -- chore(ci): fix version bump script by adding bump argument for target version [#5393](https://github.com/axios/axios/pull/5393) -- chore(deps): bump decode-uri-component from 0.2.0 to 0.2.2 [#5342](https://github.com/axios/axios/pull/5342) -- chore(ci): GitHub Actions Release script [#5384](https://github.com/axios/axios/pull/5384) -- chore(ci): release scripts [#5364](https://github.com/axios/axios/pull/5364) - -### Contributors to this release -- ![avatar](https://avatars.githubusercontent.com/u/12586868?v=4&s=16) [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS) -- ![avatar](https://avatars.githubusercontent.com/u/1652293?v=4&s=16) [Winnie](https://github.com/winniehell) - -## [1.2.1] - 2022-12-05 - -### Changed -- feat(exports): export mergeConfig [#5151](https://github.com/axios/axios/pull/5151) - -### Fixed -- fix(CancelledError): include config [#4922](https://github.com/axios/axios/pull/4922) -- fix(general): removing multiple/trailing/leading whitespace [#5022](https://github.com/axios/axios/pull/5022) -- fix(headers): decompression for responses without Content-Length header [#5306](https://github.com/axios/axios/pull/5306) -- fix(webWorker): exception to sending form data in web worker [#5139](https://github.com/axios/axios/pull/5139) - -### Refactors -- refactor(types): AxiosProgressEvent.event type to any [#5308](https://github.com/axios/axios/pull/5308) -- refactor(types): add missing types for static AxiosError.from method [#4956](https://github.com/axios/axios/pull/4956) - -### Chores -- chore(docs): remove README link to non-existent upgrade guide [#5307](https://github.com/axios/axios/pull/5307) -- chore(docs): typo in issue template name [#5159](https://github.com/axios/axios/pull/5159) - -### Contributors to this release +Huge thanks to everyone who contributed to this release via code (authors listed below) or via reviews and triaging on GitHub: +- [Jay](mailto:jasonsaayman@gmail.com) +- [Guillaume Fortaine](https://github.com/gfortaine) +- [Yusuke Kawasaki](https://github.com/kawanet) - [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS) -- [Zachary Lysobey](https://github.com/zachlysobey) -- [Kevin Ennis](https://github.com/kevincennis) -- [Philipp Loose](https://github.com/phloose) -- [secondl1ght](https://github.com/secondl1ght) -- [wenzheng](https://github.com/0x30) -- [Ivan Barsukov](https://github.com/ovarn) -- [Arthur Fiorette](https://github.com/arthurfiorette) -### PRs -- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) -``` - -⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 -``` +### 0.21.3 (September 4, 2021) -## [1.2.0] - 2022-11-10 +Fixes and Functionality: +- Fixing response interceptor not being called when request interceptor is attached ([#4013](https://github.com/axios/axios/pull/4013)) -### Changed +Huge thanks to everyone who contributed to this release via code (authors listed below) or via reviews and triaging on GitHub: -- changed: refactored module exports [#5162](https://github.com/axios/axios/pull/5162) -- change: re-added support for loading Axios with require('axios').default [#5225](https://github.com/axios/axios/pull/5225) +- [Jay](mailto:jasonsaayman@gmail.com) +- [Julian Hollmann](https://github.com/nerdbeere) -### Fixed +### 0.21.2 (September 4, 2021) -- fix: improve AxiosHeaders class [#5224](https://github.com/axios/axios/pull/5224) -- fix: TypeScript type definitions for commonjs [#5196](https://github.com/axios/axios/pull/5196) -- fix: type definition of use method on AxiosInterceptorManager to match the the README [#5071](https://github.com/axios/axios/pull/5071) -- fix: __dirname is not defined in the sandbox [#5269](https://github.com/axios/axios/pull/5269) -- fix: AxiosError.toJSON method to avoid circular references [#5247](https://github.com/axios/axios/pull/5247) -- fix: Z_BUF_ERROR when content-encoding is set but the response body is empty [#5250](https://github.com/axios/axios/pull/5250) +Fixes and Functionality: -### Refactors -- refactor: allowing adapters to be loaded by name [#5277](https://github.com/axios/axios/pull/5277) +- Updating axios requests to be delayed by pre-emptive promise creation ([#2702](https://github.com/axios/axios/pull/2702)) +- Adding "synchronous" and "runWhen" options to interceptors api ([#2702](https://github.com/axios/axios/pull/2702)) +- Updating of transformResponse ([#3377](https://github.com/axios/axios/pull/3377)) +- Adding ability to omit User-Agent header ([#3703](https://github.com/axios/axios/pull/3703)) +- Adding multiple JSON improvements ([#3688](https://github.com/axios/axios/pull/3688), [#3763](https://github.com/axios/axios/pull/3763)) +- Fixing quadratic runtime and extra memory usage when setting a maxContentLength ([#3738](https://github.com/axios/axios/pull/3738)) +- Adding parseInt to config.timeout ([#3781](https://github.com/axios/axios/pull/3781)) +- Adding custom return type support to interceptor ([#3783](https://github.com/axios/axios/pull/3783)) +- Adding security fix for ReDoS vulnerability ([#3980](https://github.com/axios/axios/pull/3980)) -### Chores +Internal and Tests: -- chore: force CI restart [#5243](https://github.com/axios/axios/pull/5243) -- chore: update ECOSYSTEM.md [#5077](https://github.com/axios/axios/pull/5077) -- chore: update get/index.html [#5116](https://github.com/axios/axios/pull/5116) -- chore: update Sandbox UI/UX [#5205](https://github.com/axios/axios/pull/5205) -- chore:(actions): remove git credentials after checkout [#5235](https://github.com/axios/axios/pull/5235) -- chore(actions): bump actions/dependency-review-action from 2 to 3 [#5266](https://github.com/axios/axios/pull/5266) -- chore(packages): bump loader-utils from 1.4.1 to 1.4.2 [#5295](https://github.com/axios/axios/pull/5295) -- chore(packages): bump engine.io from 6.2.0 to 6.2.1 [#5294](https://github.com/axios/axios/pull/5294) -- chore(packages): bump socket.io-parser from 4.0.4 to 4.0.5 [#5241](https://github.com/axios/axios/pull/5241) -- chore(packages): bump loader-utils from 1.4.0 to 1.4.1 [#5245](https://github.com/axios/axios/pull/5245) -- chore(docs): update Resources links in README [#5119](https://github.com/axios/axios/pull/5119) -- chore(docs): update the link for JSON url [#5265](https://github.com/axios/axios/pull/5265) -- chore(docs): fix broken links [#5218](https://github.com/axios/axios/pull/5218) -- chore(docs): update and rename UPGRADE_GUIDE.md to MIGRATION_GUIDE.md [#5170](https://github.com/axios/axios/pull/5170) -- chore(docs): typo fix line #856 and #920 [#5194](https://github.com/axios/axios/pull/5194) -- chore(docs): typo fix #800 [#5193](https://github.com/axios/axios/pull/5193) -- chore(docs): fix typos [#5184](https://github.com/axios/axios/pull/5184) -- chore(docs): fix punctuation in README.md [#5197](https://github.com/axios/axios/pull/5197) -- chore(docs): update readme in the Handling Errors section - issue reference #5260 [#5261](https://github.com/axios/axios/pull/5261) -- chore: remove \b from filename [#5207](https://github.com/axios/axios/pull/5207) -- chore(docs): update CHANGELOG.md [#5137](https://github.com/axios/axios/pull/5137) -- chore: add sideEffects false to package.json [#5025](https://github.com/axios/axios/pull/5025) +- Updating build dev dependancies ([#3401](https://github.com/axios/axios/pull/3401)) +- Fixing builds running on Travis CI ([#3538](https://github.com/axios/axios/pull/3538)) +- Updating follow rediect version ([#3694](https://github.com/axios/axios/pull/3694), [#3771](https://github.com/axios/axios/pull/3771)) +- Updating karma sauce launcher to fix failing sauce tests ([#3712](https://github.com/axios/axios/pull/3712), [#3717](https://github.com/axios/axios/pull/3717)) +- Updating content-type header for application/json to not contain charset field, according do RFC 8259 ([#2154](https://github.com/axios/axios/pull/2154)) +- Fixing tests by bumping karma-sauce-launcher version ([#3813](https://github.com/axios/axios/pull/3813)) +- Changing testing process from Travis CI to GitHub Actions ([#3938](https://github.com/axios/axios/pull/3938)) -### Contributors to this release +Documentation: -- [Maddy Miller](https://github.com/me4502) -- [Amit Saini](https://github.com/amitsainii) -- [ecyrbe](https://github.com/ecyrbe) -- [Ikko Ashimine](https://github.com/eltociear) -- [Geeth Gunnampalli](https://github.com/thetechie7) -- [Shreem Asati](https://github.com/shreem-123) -- [Frieder Bluemle](https://github.com/friederbluemle) -- [윤세영](https://github.com/yunseyeong) -- [Claudio Busatto](https://github.com/cjcbusatto) -- [Remco Haszing](https://github.com/remcohaszing) +- Updating documentation around the use of `AUTH_TOKEN` with multiple domain endpoints ([#3539](https://github.com/axios/axios/pull/3539)) +- Remove duplication of item in changelog ([#3523](https://github.com/axios/axios/pull/3523)) +- Fixing gramatical errors ([#2642](https://github.com/axios/axios/pull/2642)) +- Fixing spelling error ([#3567](https://github.com/axios/axios/pull/3567)) +- Moving gitpod metion ([#2637](https://github.com/axios/axios/pull/2637)) +- Adding new axios documentation website link ([#3681](https://github.com/axios/axios/pull/3681), [#3707](https://github.com/axios/axios/pull/3707)) +- Updating documentation around dispatching requests ([#3772](https://github.com/axios/axios/pull/3772)) +- Adding documentation for the type guard isAxiosError ([#3767](https://github.com/axios/axios/pull/3767)) +- Adding explanation of cancel token ([#3803](https://github.com/axios/axios/pull/3803)) +- Updating CI status badge ([#3953](https://github.com/axios/axios/pull/3953)) +- Fixing errors with JSON documentation ([#3936](https://github.com/axios/axios/pull/3936)) +- Fixing README typo under Request Config ([#3825](https://github.com/axios/axios/pull/3825)) +- Adding axios-multi-api to the ecosystem file ([#3817](https://github.com/axios/axios/pull/3817)) +- Adding SECURITY.md to properly disclose security vulnerabilities ([#3981](https://github.com/axios/axios/pull/3981)) + +Huge thanks to everyone who contributed to this release via code (authors listed below) or via reviews and triaging on GitHub: + +- [Jay](mailto:jasonsaayman@gmail.com) +- [Sasha Korotkov](https://github.com/SashaKoro) +- [Daniel Lopretto](https://github.com/timemachine3030) +- [Mike Bishop](https://github.com/MikeBishop) - [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS) -- [Csaba Maulis](https://github.com/om4csaba) -- [MoPaMo](https://github.com/MoPaMo) -- [Daniel Fjeldstad](https://github.com/w3bdesign) -- [Adrien Brunet](https://github.com/adrien-may) -- [Frazer Smith](https://github.com/Fdawgs) -- [HaiTao](https://github.com/836334258) -- [AZM](https://github.com/aziyatali) -- [relbns](https://github.com/relbns) +- [Mark](https://github.com/bimbiltu) +- [Philipe Gouveia Paixão](https://github.com/piiih) +- [hippo](https://github.com/hippo2cat) +- [ready-research](https://github.com/ready-research) +- [Xianming Zhong](https://github.com/chinesedfan) +- [Christopher Chrapka](https://github.com/OJezu) +- [Brian Anglin](https://github.com/anglinb) +- [Kohta Ito](https://github.com/koh110) +- [Ali Clark](https://github.com/aliclark) +- [caikan](https://github.com/caikan) +- [Elina Gorshkova](https://github.com/elinagorshkova) +- [Ryota Ikezawa](https://github.com/paveg) +- [Nisar Hassan Naqvi](https://github.com/nisarhassan12) +- [Jake](https://github.com/codemaster138) +- [TagawaHirotaka](https://github.com/wafuwafu13) +- [Johannes Jarbratt](https://github.com/johachi) +- [Mo Sattler](https://github.com/MoSattler) +- [Sam Carlton](https://github.com/ThatGuySam) +- [Matt Czapliński](https://github.com/MattCCC) +- [Ziding Zhang](https://github.com/zidingz) -### PRs -- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) -``` - -⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 -``` +### 0.21.1 (December 21, 2020) -## [1.1.3] - 2022-10-15 +Fixes and Functionality: -### Added +- Hotfix: Prevent SSRF ([#3410](https://github.com/axios/axios/pull/3410)) +- Protocol not parsed when setting proxy config from env vars ([#3070](https://github.com/axios/axios/pull/3070)) +- Updating axios in types to be lower case ([#2797](https://github.com/axios/axios/pull/2797)) +- Adding a type guard for `AxiosError` ([#2949](https://github.com/axios/axios/pull/2949)) -- Added custom params serializer support [#5113](https://github.com/axios/axios/pull/5113) +Internal and Tests: -### Fixed +- Remove the skipping of the `socket` http test ([#3364](https://github.com/axios/axios/pull/3364)) +- Use different socket for Win32 test ([#3375](https://github.com/axios/axios/pull/3375)) -- Fixed top-level export to keep them in-line with static properties [#5109](https://github.com/axios/axios/pull/5109) -- Stopped including null values to query string. [#5108](https://github.com/axios/axios/pull/5108) -- Restored proxy config backwards compatibility with 0.x [#5097](https://github.com/axios/axios/pull/5097) -- Added back AxiosHeaders in AxiosHeaderValue [#5103](https://github.com/axios/axios/pull/5103) -- Pin CDN install instructions to a specific version [#5060](https://github.com/axios/axios/pull/5060) -- Handling of array values fixed for AxiosHeaders [#5085](https://github.com/axios/axios/pull/5085) +Huge thanks to everyone who contributed to this release via code (authors listed below) or via reviews and triaging on GitHub: -### Chores +- Daniel Lopretto +- Jason Kwok +- Jay +- Jonathan Foster +- Remco Haszing +- Xianming Zhong -- docs: match badge style, add link to them [#5046](https://github.com/axios/axios/pull/5046) -- chore: fixing comments typo [#5054](https://github.com/axios/axios/pull/5054) -- chore: update issue template [#5061](https://github.com/axios/axios/pull/5061) -- chore: added progress capturing section to the docs; [#5084](https://github.com/axios/axios/pull/5084) +### 0.21.0 (October 23, 2020) -### Contributors to this release +Fixes and Functionality: -- [Jason Saayman](https://github.com/jasonsaayman) -- [scarf](https://github.com/scarf005) -- [Lenz Weber-Tronic](https://github.com/phryneas) -- [Arvindh](https://github.com/itsarvindh) -- [Félix Legrelle](https://github.com/FelixLgr) -- [Patrick Petrovic](https://github.com/ppati000) -- [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS) -- [littledian](https://github.com/littledian) -- [ChronosMasterOfAllTime](https://github.com/ChronosMasterOfAllTime) +- Fixing requestHeaders.Authorization ([#3287](https://github.com/axios/axios/pull/3287)) +- Fixing node types ([#3237](https://github.com/axios/axios/pull/3237)) +- Fixing axios.delete ignores config.data ([#3282](https://github.com/axios/axios/pull/3282)) +- Revert "Fixing overwrite Blob/File type as Content-Type in browser. (#1773)" ([#3289](https://github.com/axios/axios/pull/3289)) +- Fixing an issue that type 'null' and 'undefined' is not assignable to validateStatus when typescript strict option is enabled ([#3200](https://github.com/axios/axios/pull/3200)) -### PRs -- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) -``` - -⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 -``` +Internal and Tests: -## [1.1.2] - 2022-10-07 +- Lock travis to not use node v15 ([#3361](https://github.com/axios/axios/pull/3361)) -### Fixed +Documentation: -- Fixed broken exports for UMD builds. +- Fixing simple typo, existant -> existent ([#3252](https://github.com/axios/axios/pull/3252)) +- Fixing typos ([#3309](https://github.com/axios/axios/pull/3309)) -### Contributors to this release +Huge thanks to everyone who contributed to this release via code (authors listed below) or via reviews and triaging on GitHub: -- [Jason Saayman](https://github.com/jasonsaayman) +- Allan Cruz <57270969+Allanbcruz@users.noreply.github.com> +- George Cheng +- Jay +- Kevin Kirsche +- Remco Haszing +- Taemin Shin +- Tim Gates +- Xianming Zhong -### PRs -- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) -``` - -⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 -``` +### 0.20.0 (August 20, 2020) -## [1.1.1] - 2022-10-07 +Release of 0.20.0-pre as a full release with no other changes. -### Fixed +### 0.20.0-pre (July 15, 2020) -- Fixed broken exports for common js. This fix breaks a prior fix, I will fix both issues ASAP but the commonJS use is more impactful. +Fixes and Functionality: -### Contributors to this release +- Fixing response with utf-8 BOM can not parse to json ([#2419](https://github.com/axios/axios/pull/2419)) + - fix: remove byte order marker (UTF-8 BOM) when transform response + - fix: remove BOM only utf-8 + - test: utf-8 BOM + - fix: incorrect param name +- Refactor mergeConfig without utils.deepMerge ([#2844](https://github.com/axios/axios/pull/2844)) + - Adding failing test + - Fixing #2587 default custom config persisting + - Adding Concat keys and filter duplicates + - Fixed value from CPE + - update for review feedbacks + - no deepMerge + - only merge between plain objects + - fix rename + - always merge config by mergeConfig + - extract function mergeDeepProperties + - refactor mergeConfig with all keys, and add special logic for validateStatus + - add test for resetting headers + - add lots of tests and fix a bug + - should not inherit `data` + - use simple toString +- Fixing overwrite Blob/File type as Content-Type in browser. ([#1773](https://github.com/axios/axios/pull/1773)) +- Fixing an issue that type 'null' is not assignable to validateStatus ([#2773](https://github.com/axios/axios/pull/2773)) +- Fixing special char encoding ([#1671](https://github.com/axios/axios/pull/1671)) + - removing @ character from replacement list since it is a reserved character + - Updating buildURL test to not include the @ character + - Removing console logs +- Fixing password encoding with special characters in basic authentication ([#1492](https://github.com/axios/axios/pull/1492)) + - Fixing password encoding with special characters in basic authentication + - Adding test to check if password with non-Latin1 characters pass +- Fixing 'Network Error' in react native android ([#1487](https://github.com/axios/axios/pull/1487)) + There is a bug in react native Android platform when using get method. It will trigger a 'Network Error' when passing the requestData which is an empty string to request.send function. So if the requestData is an empty string we can set it to null as well to fix the bug. +- Fixing Cookie Helper with Async Components ([#1105](https://github.com/axios/axios/pull/1105)) ([#1107](https://github.com/axios/axios/pull/1107)) +- Fixing 'progressEvent' type ([#2851](https://github.com/axios/axios/pull/2851)) + - Fix 'progressEvent' type + - Update axios.ts +- Fixing getting local files (file://) failed ([#2470](https://github.com/axios/axios/pull/2470)) + - fix issue #2416, #2396 + - fix Eslint warn + - Modify judgment conditions + - add unit test + - update unit test + - update unit test +- Allow PURGE method in typings ([#2191](https://github.com/axios/axios/pull/2191)) +- Adding option to disable automatic decompression ([#2661](https://github.com/axios/axios/pull/2661)) + - Adding ability to disable auto decompression + - Updating decompress documentation in README + - Fixing test\unit\adapters\http.js lint errors + - Adding test for disabling auto decompression + - Removing changes that fixed lint errors in tests + - Removing formatting change to unit test +- Add independent `maxBodyLength` option ([#2781](https://github.com/axios/axios/pull/2781)) + - Add independent option to set the maximum size of the request body + - Remove maxBodyLength check + - Update README + - Assert for error code and message +- Adding responseEncoding to mergeConfig ([#1745](https://github.com/axios/axios/pull/1745)) +- Compatible with follow-redirect aborts the request ([#2689](https://github.com/axios/axios/pull/2689)) + - Compatible with follow-redirect aborts the request + - Use the error code +- Fix merging of params ([#2656](https://github.com/axios/axios/pull/2656)) + - Name function to avoid ESLint func-names warning + - Switch params config to merge list and update tests + - Restore testing of both false and null + - Restore test cases for keys without defaults + - Include test for non-object values that aren't false-y. +- Revert `finally` as `then` ([#2683](https://github.com/axios/axios/pull/2683)) -- [Jason Saayman](https://github.com/jasonsaayman) +Internal and Tests: -### PRs -- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) -``` - -⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 -``` +- Fix stale bot config ([#3049](https://github.com/axios/axios/pull/3049)) + - fix stale bot config + - fix multiple lines +- Add days and change name to work ([#3035](https://github.com/axios/axios/pull/3035)) +- Update close-issues.yml ([#3031](https://github.com/axios/axios/pull/3031)) + - Update close-issues.yml + Update close message to read better 😄 + - Fix use of quotations + Use single quotes as per other .yml files + - Remove user name form message +- Add GitHub actions to close stale issues/prs ([#3029](https://github.com/axios/axios/pull/3029)) + - prepare stale actions + - update messages + - Add exempt labels and lighten up comments +- Add GitHub actions to close invalid issues ([#3022](https://github.com/axios/axios/pull/3022)) + - add close actions + - fix with checkout + - update issue templates + - add reminder + - update close message +- Add test with Node.js 12 ([#2860](https://github.com/axios/axios/pull/2860)) + - test with Node.js 12 + - test with latest +- Adding console log on sandbox server startup ([#2210](https://github.com/axios/axios/pull/2210)) + - Adding console log on sandbox server startup + - Update server.js + Add server error handling + - Update server.js + Better error message, remove retry. +- Adding tests for method `options` type definitions ([#1996](https://github.com/axios/axios/pull/1996)) + Update tests. +- Add test for redirecting with too large response ([#2695](https://github.com/axios/axios/pull/2695)) +- Fixing unit test failure in Windows OS ([#2601](https://github.com/axios/axios/pull/2601)) +- Fixing issue for HEAD method and gzipped response ([#2666](https://github.com/axios/axios/pull/2666)) +- Fix tests in browsers ([#2748](https://github.com/axios/axios/pull/2748)) +- chore: add `jsdelivr` and `unpkg` support ([#2443](https://github.com/axios/axios/pull/2443)) -## [1.1.0] - 2022-10-06 +Documentation: -### Fixed +- Adding support for URLSearchParams in node ([#1900](https://github.com/axios/axios/pull/1900)) + - Adding support for URLSearchParams in node + - Remove un-needed code + - Update utils.js + - Make changes as suggested +- Adding table of content (preview) ([#3050](https://github.com/axios/axios/pull/3050)) + - add toc (preview) + - remove toc in toc + Signed-off-by: Moni + - fix sublinks + - fix indentation + - remove redundant table links + - update caps and indent + - remove axios +- Replace 'blacklist' with 'blocklist' ([#3006](https://github.com/axios/axios/pull/3006)) +- docs(): Detailed config options environment. ([#2088](https://github.com/axios/axios/pull/2088)) + - docs(): Detailed config options environment. + - Update README.md +- Include axios-data-unpacker in ECOSYSTEM.md ([#2080](https://github.com/axios/axios/pull/2080)) +- Allow opening examples in Gitpod ([#1958](https://github.com/axios/axios/pull/1958)) +- Remove axios.all() and axios.spread() from Readme.md ([#2727](https://github.com/axios/axios/pull/2727)) + - remove axios.all(), axios.spread() + - replace example + - axios.all() -> Promise.all() + - axios.spread(function (acct, perms)) -> function (acct, perms) + - add deprecated mark +- Update README.md ([#2887](https://github.com/axios/axios/pull/2887)) + Small change to the data attribute doc of the config. A request body can also be set for DELETE methods but this wasn't mentioned in the documentation (it only mentioned POST, PUT and PATCH). Took my some 10-20 minutes until I realized that I don't need to manipulate the request body with transformRequest in the case of DELETE. +- Include swagger-taxos-codegen in ECOSYSTEM.md ([#2162](https://github.com/axios/axios/pull/2162)) +- Add CDNJS version badge in README.md ([#878](https://github.com/axios/axios/pull/878)) + This badge will show the version on CDNJS! +- Documentation update to clear up ambiguity in code examples ([#2928](https://github.com/axios/axios/pull/2928)) + - Made an adjustment to the documentation to clear up any ambiguity around the use of "fs". This should help clear up that the code examples with "fs" cannot be used on the client side. +- Update README.md about validateStatus ([#2912](https://github.com/axios/axios/pull/2912)) + Rewrote the comment from "Reject only if the status code is greater than or equal to 500" to "Resolve only if the status code is less than 500" +- Updating documentation for usage form-data ([#2805](https://github.com/axios/axios/pull/2805)) + Closes #2049 +- Fixing CHANGELOG.md issue link ([#2784](https://github.com/axios/axios/pull/2784)) +- Include axios-hooks in ECOSYSTEM.md ([#2003](https://github.com/axios/axios/pull/2003)) +- Added Response header access instructions ([#1901](https://github.com/axios/axios/pull/1901)) + - Added Response header access instructions + - Added note about using bracket notation +- Add `onUploadProgress` and `onDownloadProgress` are browser only ([#2763](https://github.com/axios/axios/pull/2763)) + Saw in #928 and #1966 that `onUploadProgress` and `onDownloadProgress` only work in the browser and was missing that from the README. +- Update ' sign to ` in proxy spec ([#2778](https://github.com/axios/axios/pull/2778)) +- Adding jsDelivr link in README ([#1110](https://github.com/axios/axios/pull/1110)) + - Adding jsDelivr link + - Add SRI + - Remove SRI -- Fixed missing exports in type definition index.d.ts [#5003](https://github.com/axios/axios/pull/5003) -- Fixed query params composing [#5018](https://github.com/axios/axios/pull/5018) -- Fixed GenericAbortSignal interface by making it more generic [#5021](https://github.com/axios/axios/pull/5021) -- Fixed adding "clear" to AxiosInterceptorManager [#5010](https://github.com/axios/axios/pull/5010) -- Fixed commonjs & umd exports [#5030](https://github.com/axios/axios/pull/5030) -- Fixed inability to access response headers when using axios 1.x with Jest [#5036](https://github.com/axios/axios/pull/5036) +Huge thanks to everyone who contributed to this release via code (authors listed +below) or via reviews and triaging on GitHub: -### Contributors to this release +- Alan Wang +- Alexandru Ungureanu +- Anubhav Srivastava +- Benny Neugebauer +- Cr <631807682@qq.com> +- David +- David Ko +- David Tanner +- Emily Morehouse +- Felipe Martins +- Fonger <5862369+Fonger@users.noreply.github.com> +- Frostack +- George Cheng +- grumblerchester +- Gustavo López +- hexaez <45806662+hexaez@users.noreply.github.com> +- huangzuizui +- Ian Wijma +- Jay +- jeffjing +- jennynju <46782518+jennynju@users.noreply.github.com> +- Jimmy Liao <52391190+jimmy-liao-gogoro@users.noreply.github.com> +- Jonathan Sharpe +- JounQin +- Justin Beckwith +- Kamil Posiadała <3dcreator.pl@gmail.com> +- Lukas Drgon +- marcinx +- Martti Laine +- Michał Zarach +- Moni +- Motonori Iwata <121048+iwata@users.noreply.github.com> +- Nikita Galkin +- Petr Mares +- Philippe Recto +- Remco Haszing +- rockcs1992 +- Ryan Bown +- Samina Fu +- Simone Busoli +- Spencer von der Ohe +- Sven Efftinge +- Taegyeoung Oh +- Taemin Shin +- Thibault Ehrhart <1208424+ehrhart@users.noreply.github.com> +- Xianming Zhong +- Yasu Flores +- Zac Delventhal -- [Trim21](https://github.com/trim21) -- [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS) -- [shingo.sasaki](https://github.com/s-sasaki-0529) -- [Ivan Pepelko](https://github.com/ivanpepelko) -- [Richard Kořínek](https://github.com/risa) +### 0.19.2 (Jan 20, 2020) -### PRs -- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) -``` - -⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 -``` +- Remove unnecessary XSS check ([#2679](https://github.com/axios/axios/pull/2679)) (see ([#2646](https://github.com/axios/axios/issues/2646)) for discussion) -## [1.0.0] - 2022-10-04 +### 0.19.1 (Jan 7, 2020) -### Added +Fixes and Functionality: -- Added stack trace to AxiosError [#4624](https://github.com/axios/axios/pull/4624) -- Add AxiosError to AxiosStatic [#4654](https://github.com/axios/axios/pull/4654) -- Replaced Rollup as our build runner [#4596](https://github.com/axios/axios/pull/4596) -- Added generic TS types for the exposed toFormData helper [#4668](https://github.com/axios/axios/pull/4668) -- Added listen callback function [#4096](https://github.com/axios/axios/pull/4096) -- Added instructions for installing using PNPM [#4207](https://github.com/axios/axios/pull/4207) -- Added generic AxiosAbortSignal TS interface to avoid importing AbortController polyfill [#4229](https://github.com/axios/axios/pull/4229) -- Added axios-url-template in ECOSYSTEM.md [#4238](https://github.com/axios/axios/pull/4238) -- Added a clear() function to the request and response interceptors object so a user can ensure that all interceptors have been removed from an axios instance [#4248](https://github.com/axios/axios/pull/4248) -- Added react hook plugin [#4319](https://github.com/axios/axios/pull/4319) -- Adding HTTP status code for transformResponse [#4580](https://github.com/axios/axios/pull/4580) -- Added blob to the list of protocols supported by the browser [#4678](https://github.com/axios/axios/pull/4678) -- Resolving proxy from env on redirect [#4436](https://github.com/axios/axios/pull/4436) -- Added enhanced toFormData implementation with additional options [4704](https://github.com/axios/axios/pull/4704) -- Adding Canceler parameters config and request [#4711](https://github.com/axios/axios/pull/4711) -- Added automatic payload serialization to application/x-www-form-urlencoded [#4714](https://github.com/axios/axios/pull/4714) -- Added the ability for webpack users to overwrite built-ins [#4715](https://github.com/axios/axios/pull/4715) -- Added string[] to AxiosRequestHeaders type [#4322](https://github.com/axios/axios/pull/4322) -- Added the ability for the url-encoded-form serializer to respect the formSerializer config [#4721](https://github.com/axios/axios/pull/4721) -- Added isCancel type assert [#4293](https://github.com/axios/axios/pull/4293) -- Added data URL support for node.js [#4725](https://github.com/axios/axios/pull/4725) -- Adding types for progress event callbacks [#4675](https://github.com/axios/axios/pull/4675) -- URL params serializer [#4734](https://github.com/axios/axios/pull/4734) -- Added axios.formToJSON method [#4735](https://github.com/axios/axios/pull/4735) -- Bower platform add data protocol [#4804](https://github.com/axios/axios/pull/4804) -- Use WHATWG URL API instead of url.parse() [#4852](https://github.com/axios/axios/pull/4852) -- Add ENUM containing Http Status Codes to typings [#4903](https://github.com/axios/axios/pull/4903) -- Improve typing of timeout in index.d.ts [#4934](https://github.com/axios/axios/pull/4934) +- Fixing invalid agent issue ([#1904](https://github.com/axios/axios/pull/1904)) +- Fix ignore set withCredentials false ([#2582](https://github.com/axios/axios/pull/2582)) +- Delete useless default to hash ([#2458](https://github.com/axios/axios/pull/2458)) +- Fix HTTP/HTTPs agents passing to follow-redirect ([#1904](https://github.com/axios/axios/pull/1904)) +- Fix ignore set withCredentials false ([#2582](https://github.com/axios/axios/pull/2582)) +- Fix CI build failure ([#2570](https://github.com/axios/axios/pull/2570)) +- Remove dependency on is-buffer from package.json ([#1816](https://github.com/axios/axios/pull/1816)) +- Adding options typings ([#2341](https://github.com/axios/axios/pull/2341)) +- Adding Typescript HTTP method definition for LINK and UNLINK. ([#2444](https://github.com/axios/axios/pull/2444)) +- Update dist with newest changes, fixes Custom Attributes issue +- Change syntax to see if build passes ([#2488](https://github.com/axios/axios/pull/2488)) +- Update Webpack + deps, remove now unnecessary polyfills ([#2410](https://github.com/axios/axios/pull/2410)) +- Fix to prevent XSS, throw an error when the URL contains a JS script ([#2464](https://github.com/axios/axios/pull/2464)) +- Add custom timeout error copy in config ([#2275](https://github.com/axios/axios/pull/2275)) +- Add error toJSON example ([#2466](https://github.com/axios/axios/pull/2466)) +- Fixing Vulnerability A Fortify Scan finds a critical Cross-Site Scrip… ([#2451](https://github.com/axios/axios/pull/2451)) +- Fixing subdomain handling on no_proxy ([#2442](https://github.com/axios/axios/pull/2442)) +- Make redirection from HTTP to HTTPS work ([#2426](https://github.com/axios/axios/pull/2426)) and ([#2547](https://github.com/axios/axios/pull/2547)) +- Add toJSON property to AxiosError type ([#2427](https://github.com/axios/axios/pull/2427)) +- Fixing socket hang up error on node side for slow response. ([#1752](https://github.com/axios/axios/pull/1752)) +- Alternative syntax to send data into the body ([#2317](https://github.com/axios/axios/pull/2317)) +- Fixing custom config options ([#2207](https://github.com/axios/axios/pull/2207)) +- Fixing set `config.method` after mergeConfig for Axios.prototype.request ([#2383](https://github.com/axios/axios/pull/2383)) +- Axios create url bug ([#2290](https://github.com/axios/axios/pull/2290)) +- Do not modify config.url when using a relative baseURL (resolves [#1628](https://github.com/axios/axios/issues/1098)) ([#2391](https://github.com/axios/axios/pull/2391)) -### Changed +Internal: -- Updated AxiosError.config to be optional in the type definition [#4665](https://github.com/axios/axios/pull/4665) -- Updated README emphasizing the URLSearchParam built-in interface over other solutions [#4590](https://github.com/axios/axios/pull/4590) -- Include request and config when creating a CanceledError instance [#4659](https://github.com/axios/axios/pull/4659) -- Changed func-names eslint rule to as-needed [#4492](https://github.com/axios/axios/pull/4492) -- Replacing deprecated substr() with slice() as substr() is deprecated [#4468](https://github.com/axios/axios/pull/4468) -- Updating HTTP links in README.md to use HTTPS [#4387](https://github.com/axios/axios/pull/4387) -- Updated to a better trim() polyfill [#4072](https://github.com/axios/axios/pull/4072) -- Updated types to allow specifying partial default headers on instance create [#4185](https://github.com/axios/axios/pull/4185) -- Expanded isAxiosError types [#4344](https://github.com/axios/axios/pull/4344) -- Updated type definition for axios instance methods [#4224](https://github.com/axios/axios/pull/4224) -- Updated eslint config [#4722](https://github.com/axios/axios/pull/4722) -- Updated Docs [#4742](https://github.com/axios/axios/pull/4742) -- Refactored Axios to use ES2017 [#4787](https://github.com/axios/axios/pull/4787) +- Revert "Update Webpack + deps, remove now unnecessary polyfills" ([#2479](https://github.com/axios/axios/pull/2479)) +- Order of if/else blocks is causing unit tests mocking XHR. ([#2201](https://github.com/axios/axios/pull/2201)) +- Add license badge ([#2446](https://github.com/axios/axios/pull/2446)) +- Fix travis CI build [#2386](https://github.com/axios/axios/pull/2386) +- Fix cancellation error on build master. #2290 #2207 ([#2407](https://github.com/axios/axios/pull/2407)) +Documentation: -### Deprecated -- There are multiple deprecations, refactors and fixes provided in this release. Please read through the full release notes to see how this may impact your project and use case. +- Fixing typo in CHANGELOG.md: s/Functionallity/Functionality ([#2639](https://github.com/axios/axios/pull/2639)) +- Fix badge, use master branch ([#2538](https://github.com/axios/axios/pull/2538)) +- Fix typo in changelog [#2193](https://github.com/axios/axios/pull/2193) +- Document fix ([#2514](https://github.com/axios/axios/pull/2514)) +- Update docs with no_proxy change, issue #2484 ([#2513](https://github.com/axios/axios/pull/2513)) +- Fixing missing words in docs template ([#2259](https://github.com/axios/axios/pull/2259)) +- 🐛Fix request finally documentation in README ([#2189](https://github.com/axios/axios/pull/2189)) +- updating spelling and adding link to docs ([#2212](https://github.com/axios/axios/pull/2212)) +- docs: minor tweak ([#2404](https://github.com/axios/axios/pull/2404)) +- Update response interceptor docs ([#2399](https://github.com/axios/axios/pull/2399)) +- Update README.md ([#2504](https://github.com/axios/axios/pull/2504)) +- Fix word 'sintaxe' to 'syntax' in README.md ([#2432](https://github.com/axios/axios/pull/2432)) +- updating README: notes on CommonJS autocomplete ([#2256](https://github.com/axios/axios/pull/2256)) +- Fix grammar in README.md ([#2271](https://github.com/axios/axios/pull/2271)) +- Doc fixes, minor examples cleanup ([#2198](https://github.com/axios/axios/pull/2198)) -### Removed +### 0.19.0 (May 30, 2019) -- Removed incorrect argument for NetworkError constructor [#4656](https://github.com/axios/axios/pull/4656) -- Removed Webpack [#4596](https://github.com/axios/axios/pull/4596) -- Removed function that transform arguments to array [#4544](https://github.com/axios/axios/pull/4544) +Fixes and Functionality: -### Fixed +- Added support for no_proxy env variable ([#1693](https://github.com/axios/axios/pull/1693/files)) - Chance Dickson +- Unzip response body only for statuses != 204 ([#1129](https://github.com/axios/axios/pull/1129)) - drawski +- Destroy stream on exceeding maxContentLength (fixes [#1098](https://github.com/axios/axios/issues/1098)) ([#1485](https://github.com/axios/axios/pull/1485)) - Gadzhi Gadzhiev +- Makes Axios error generic to use AxiosResponse ([#1738](https://github.com/axios/axios/pull/1738)) - Suman Lama +- Fixing Mocha tests by locking follow-redirects version to 1.5.10 ([#1993](https://github.com/axios/axios/pull/1993)) - grumblerchester +- Allow uppercase methods in typings. ([#1781](https://github.com/axios/axios/pull/1781)) - Ken Powers +- Fixing building url with hash mark ([#1771](https://github.com/axios/axios/pull/1771)) - Anatoly Ryabov +- This commit fix building url with hash map (fragment identifier) when parameters are present: they must not be added after `#`, because client cut everything after `#` +- Preserve HTTP method when following redirect ([#1758](https://github.com/axios/axios/pull/1758)) - Rikki Gibson +- Add `getUri` signature to TypeScript definition. ([#1736](https://github.com/axios/axios/pull/1736)) - Alexander Trauzzi +- Adding isAxiosError flag to errors thrown by axios ([#1419](https://github.com/axios/axios/pull/1419)) - Ayush Gupta -- Fixed grammar in README [#4649](https://github.com/axios/axios/pull/4649) -- Fixed code error in README [#4599](https://github.com/axios/axios/pull/4599) -- Optimized the code that checks cancellation [#4587](https://github.com/axios/axios/pull/4587) -- Fix url pointing to defaults.js in README [#4532](https://github.com/axios/axios/pull/4532) -- Use type alias instead of interface for AxiosPromise [#4505](https://github.com/axios/axios/pull/4505) -- Fix some word spelling and lint style in code comments [#4500](https://github.com/axios/axios/pull/4500) -- Edited readme with 3 updated browser icons of Chrome, FireFox and Safari [#4414](https://github.com/axios/axios/pull/4414) -- Bump follow-redirects from 1.14.9 to 1.15.0 [#4673](https://github.com/axios/axios/pull/4673) -- Fixing http tests to avoid hanging when assertions fail [#4435](https://github.com/axios/axios/pull/4435) -- Fix TS definition for AxiosRequestTransformer [#4201](https://github.com/axios/axios/pull/4201) -- Fix grammatical issues in README [#4232](https://github.com/axios/axios/pull/4232) -- Fixing instance.defaults.headers type [#4557](https://github.com/axios/axios/pull/4557) -- Fixed race condition on immediate requests cancellation [#4261](https://github.com/axios/axios/pull/4261) -- Fixing Z_BUF_ERROR when no content [#4701](https://github.com/axios/axios/pull/4701) -- Fixing proxy beforeRedirect regression [#4708](https://github.com/axios/axios/pull/4708) -- Fixed AxiosError status code type [#4717](https://github.com/axios/axios/pull/4717) -- Fixed AxiosError stack capturing [#4718](https://github.com/axios/axios/pull/4718) -- Fixing AxiosRequestHeaders typings [#4334](https://github.com/axios/axios/pull/4334) -- Fixed max body length defaults [#4731](https://github.com/axios/axios/pull/4731) -- Fixed toFormData Blob issue on node>v17 [#4728](https://github.com/axios/axios/pull/4728) -- Bump grunt from 1.5.2 to 1.5.3 [#4743](https://github.com/axios/axios/pull/4743) -- Fixing content-type header repeated [#4745](https://github.com/axios/axios/pull/4745) -- Fixed timeout error message for http [4738](https://github.com/axios/axios/pull/4738) -- Request ignores false, 0 and empty string as body values [#4785](https://github.com/axios/axios/pull/4785) -- Added back missing minified builds [#4805](https://github.com/axios/axios/pull/4805) -- Fixed a type error [#4815](https://github.com/axios/axios/pull/4815) -- Fixed a regression bug with unsubscribing from cancel token; [#4819](https://github.com/axios/axios/pull/4819) -- Remove repeated compression algorithm [#4820](https://github.com/axios/axios/pull/4820) -- The error of calling extend to pass parameters [#4857](https://github.com/axios/axios/pull/4857) -- SerializerOptions.indexes allows boolean | null | undefined [#4862](https://github.com/axios/axios/pull/4862) -- Require interceptors to return values [#4874](https://github.com/axios/axios/pull/4874) -- Removed unused imports [#4949](https://github.com/axios/axios/pull/4949) -- Allow null indexes on formSerializer and paramsSerializer [#4960](https://github.com/axios/axios/pull/4960) +Internal: -### Chores -- Set permissions for GitHub actions [#4765](https://github.com/axios/axios/pull/4765) -- Included githubactions in the dependabot config [#4770](https://github.com/axios/axios/pull/4770) -- Included dependency review [#4771](https://github.com/axios/axios/pull/4771) -- Update security.md [#4784](https://github.com/axios/axios/pull/4784) -- Remove unnecessary spaces [#4854](https://github.com/axios/axios/pull/4854) -- Simplify the import path of AxiosError [#4875](https://github.com/axios/axios/pull/4875) -- Fix Gitpod dead link [#4941](https://github.com/axios/axios/pull/4941) -- Enable syntax highlighting for a code block [#4970](https://github.com/axios/axios/pull/4970) -- Using Logo Axios in Readme.md [#4993](https://github.com/axios/axios/pull/4993) -- Fix markup for note in README [#4825](https://github.com/axios/axios/pull/4825) -- Fix typo and formatting, add colons [#4853](https://github.com/axios/axios/pull/4853) -- Fix typo in readme [#4942](https://github.com/axios/axios/pull/4942) +- Fixing .eslintrc without extension ([#1789](https://github.com/axios/axios/pull/1789)) - Manoel +- Fix failing SauceLabs tests by updating configuration - Emily Morehouse +- Add issue templates - Emily Morehouse -### Security +Documentation: -- Update SECURITY.md [#4687](https://github.com/axios/axios/pull/4687) +- Consistent coding style in README ([#1787](https://github.com/axios/axios/pull/1787)) - Ali Servet Donmez +- Add information about auth parameter to README ([#2166](https://github.com/axios/axios/pull/2166)) - xlaguna +- Add DELETE to list of methods that allow data as a config option ([#2169](https://github.com/axios/axios/pull/2169)) - Daniela Borges Matos de Carvalho +- Update ECOSYSTEM.md - Add Axios Endpoints ([#2176](https://github.com/axios/axios/pull/2176)) - Renan +- Add r2curl in ECOSYSTEM ([#2141](https://github.com/axios/axios/pull/2141)) - 유용우 / CX +- Update README.md - Add instructions for installing with yarn ([#2036](https://github.com/axios/axios/pull/2036)) - Victor Hermes +- Fixing spacing for README.md ([#2066](https://github.com/axios/axios/pull/2066)) - Josh McCarty +- Update README.md. - Change `.then` to `.finally` in example code ([#2090](https://github.com/axios/axios/pull/2090)) - Omar Cai +- Clarify what values responseType can have in Node ([#2121](https://github.com/axios/axios/pull/2121)) - Tyler Breisacher +- docs(ECOSYSTEM): add axios-api-versioning ([#2020](https://github.com/axios/axios/pull/2020)) - Weffe +- It seems that `responseType: 'blob'` doesn't actually work in Node (when I tried using it, response.data was a string, not a Blob, since Node doesn't have Blobs), so this clarifies that this option should only be used in the browser +- Update README.md. - Add Querystring library note ([#1896](https://github.com/axios/axios/pull/1896)) - Dmitriy Eroshenko +- Add react-hooks-axios to Libraries section of ECOSYSTEM.md ([#1925](https://github.com/axios/axios/pull/1925)) - Cody Chan +- Clarify in README that default timeout is 0 (no timeout) ([#1750](https://github.com/axios/axios/pull/1750)) - Ben Standefer -### Contributors to this release +### 0.19.0-beta.1 (Aug 9, 2018) -- [Bertrand Marron](https://github.com/tusbar) -- [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS) -- [Dan Mooney](https://github.com/danmooney) -- [Michael Li](https://github.com/xiaoyu-tamu) -- [aong](https://github.com/yxwzaxns) -- [Des Preston](https://github.com/despreston) -- [Ted Robertson](https://github.com/tredondo) -- [zhoulixiang](https://github.com/zh-lx) -- [Arthur Fiorette](https://github.com/arthurfiorette) -- [Kumar Shanu](https://github.com/Kr-Shanu) -- [JALAL](https://github.com/JLL32) -- [Jingyi Lin](https://github.com/MageeLin) -- [Philipp Loose](https://github.com/phloose) -- [Alexander Shchukin](https://github.com/sashsvamir) -- [Dave Cardwell](https://github.com/davecardwell) -- [Cat Scarlet](https://github.com/catscarlet) -- [Luca Pizzini](https://github.com/lpizzinidev) -- [Kai](https://github.com/Schweinepriester) -- [Maxime Bargiel](https://github.com/mbargiel) -- [Brian Helba](https://github.com/brianhelba) -- [reslear](https://github.com/reslear) -- [Jamie Slome](https://github.com/JamieSlome) -- [Landro3](https://github.com/Landro3) -- [rafw87](https://github.com/rafw87) -- [Afzal Sayed](https://github.com/afzalsayed96) -- [Koki Oyatsu](https://github.com/kaishuu0123) -- [Dave](https://github.com/wangcch) -- [暴走老七](https://github.com/baozouai) -- [Spencer](https://github.com/spalger) -- [Adrian Wieprzkowicz](https://github.com/Argeento) -- [Jamie Telin](https://github.com/lejahmie) -- [毛呆](https://github.com/aweikalee) -- [Kirill Shakirov](https://github.com/turisap) -- [Rraji Abdelbari](https://github.com/estarossa0) -- [Jelle Schutter](https://github.com/jelleschutter) -- [Tom Ceuppens](https://github.com/KyorCode) -- [Johann Cooper](https://github.com/JohannCooper) -- [Dimitris Halatsis](https://github.com/mitsos1os) -- [chenjigeng](https://github.com/chenjigeng) -- [João Gabriel Quaresma](https://github.com/joaoGabriel55) -- [Victor Augusto](https://github.com/VictorAugDB) -- [neilnaveen](https://github.com/neilnaveen) -- [Pavlos](https://github.com/psmoros) -- [Kiryl Valkovich](https://github.com/visortelle) -- [Naveen](https://github.com/naveensrinivasan) -- [wenzheng](https://github.com/0x30) -- [hcwhan](https://github.com/hcwhan) -- [Bassel Rachid](https://github.com/basselworkforce) -- [Grégoire Pineau](https://github.com/lyrixx) -- [felipedamin](https://github.com/felipedamin) -- [Karl Horky](https://github.com/karlhorky) -- [Yue JIN](https://github.com/kingyue737) -- [Usman Ali Siddiqui](https://github.com/usman250994) -- [WD](https://github.com/techbirds) -- [Günther Foidl](https://github.com/gfoidl) -- [Stephen Jennings](https://github.com/jennings) -- [C.T.Lin](https://github.com/chentsulin) -- [mia-z](https://github.com/mia-z) -- [Parth Banathia](https://github.com/Parth0105) -- [parth0105pluang](https://github.com/parth0105pluang) -- [Marco Weber](https://github.com/mrcwbr) -- [Luca Pizzini](https://github.com/lpizzinidev) -- [Willian Agostini](https://github.com/WillianAgostini) -- [Huyen Nguyen](https://github.com/huyenltnguyen) \ No newline at end of file +**NOTE:** This is a beta version of this release. There may be functionality that is broken in +certain browsers, though we suspect that builds are hanging and not erroring. See +https://saucelabs.com/u/axios for the most up-to-date information. + +New Functionality: + +- Add getUri method ([#1712](https://github.com/axios/axios/issues/1712)) +- Add support for no_proxy env variable ([#1693](https://github.com/axios/axios/issues/1693)) +- Add toJSON to decorated Axios errors to facilitate serialization ([#1625](https://github.com/axios/axios/issues/1625)) +- Add second then on axios call ([#1623](https://github.com/axios/axios/issues/1623)) +- Typings: allow custom return types +- Add option to specify character set in responses (with http adapter) + +Fixes: + +- Fix Keep defaults local to instance ([#385](https://github.com/axios/axios/issues/385)) +- Correctly catch exception in http test ([#1475](https://github.com/axios/axios/issues/1475)) +- Fix accept header normalization ([#1698](https://github.com/axios/axios/issues/1698)) +- Fix http adapter to allow HTTPS connections via HTTP ([#959](https://github.com/axios/axios/issues/959)) +- Fix Removes usage of deprecated Buffer constructor. ([#1555](https://github.com/axios/axios/issues/1555), [#1622](https://github.com/axios/axios/issues/1622)) +- Fix defaults to use httpAdapter if available ([#1285](https://github.com/axios/axios/issues/1285)) + - Fixing defaults to use httpAdapter if available + - Use a safer, cross-platform method to detect the Node environment +- Fix Reject promise if request is cancelled by the browser ([#537](https://github.com/axios/axios/issues/537)) +- [Typescript] Fix missing type parameters on delete/head methods +- [NS]: Send `false` flag isStandardBrowserEnv for Nativescript +- Fix missing type parameters on delete/head +- Fix Default method for an instance always overwritten by get +- Fix type error when socketPath option in AxiosRequestConfig +- Capture errors on request data streams +- Decorate resolve and reject to clear timeout in all cases + +Huge thanks to everyone who contributed to this release via code (authors listed +below) or via reviews and triaging on GitHub: + +- Andrew Scott +- Anthony Gauthier +- arpit +- ascott18 +- Benedikt Rötsch +- Chance Dickson +- Dave Stewart +- Deric Cain +- Guillaume Briday +- Jacob Wejendorp +- Jim Lynch +- johntron +- Justin Beckwith +- Justin Beckwith +- Khaled Garbaya +- Lim Jing Rong +- Mark van den Broek +- Martti Laine +- mattridley +- mattridley +- Nicolas Del Valle +- Nilegfx +- pbarbiero +- Rikki Gibson +- Sako Hartounian +- Shane Fitzpatrick +- Stephan Schneider +- Steven +- Tim Garthwaite +- Tim Johns +- Yutaro Miyazaki + +### 0.18.0 (Feb 19, 2018) + +- Adding support for UNIX Sockets when running with Node.js ([#1070](https://github.com/axios/axios/pull/1070)) +- Fixing typings ([#1177](https://github.com/axios/axios/pull/1177)): + - AxiosRequestConfig.proxy: allows type false + - AxiosProxyConfig: added auth field +- Adding function signature in AxiosInstance interface so AxiosInstance can be invoked ([#1192](https://github.com/axios/axios/pull/1192), [#1254](https://github.com/axios/axios/pull/1254)) +- Allowing maxContentLength to pass through to redirected calls as maxBodyLength in follow-redirects config ([#1287](https://github.com/axios/axios/pull/1287)) +- Fixing configuration when using an instance - method can now be set ([#1342](https://github.com/axios/axios/pull/1342)) + +### 0.17.1 (Nov 11, 2017) + +- Fixing issue with web workers ([#1160](https://github.com/axios/axios/pull/1160)) +- Allowing overriding transport ([#1080](https://github.com/axios/axios/pull/1080)) +- Updating TypeScript typings ([#1165](https://github.com/axios/axios/pull/1165), [#1125](https://github.com/axios/axios/pull/1125), [#1131](https://github.com/axios/axios/pull/1131)) + +### 0.17.0 (Oct 21, 2017) + +- **BREAKING** Fixing issue with `baseURL` and interceptors ([#950](https://github.com/axios/axios/pull/950)) +- **BREAKING** Improving handing of duplicate headers ([#874](https://github.com/axios/axios/pull/874)) +- Adding support for disabling proxies ([#691](https://github.com/axios/axios/pull/691)) +- Updating TypeScript typings with generic type parameters ([#1061](https://github.com/axios/axios/pull/1061)) + +### 0.16.2 (Jun 3, 2017) + +- Fixing issue with including `buffer` in bundle ([#887](https://github.com/axios/axios/pull/887)) +- Including underlying request in errors ([#830](https://github.com/axios/axios/pull/830)) +- Convert `method` to lowercase ([#930](https://github.com/axios/axios/pull/930)) + +### 0.16.1 (Apr 8, 2017) + +- Improving HTTP adapter to return last request in case of redirects ([#828](https://github.com/axios/axios/pull/828)) +- Updating `follow-redirects` dependency ([#829](https://github.com/axios/axios/pull/829)) +- Adding support for passing `Buffer` in node ([#773](https://github.com/axios/axios/pull/773)) + +### 0.16.0 (Mar 31, 2017) + +- **BREAKING** Removing `Promise` from axios typings in favor of built-in type declarations ([#480](https://github.com/axios/axios/issues/480)) +- Adding `options` shortcut method ([#461](https://github.com/axios/axios/pull/461)) +- Fixing issue with using `responseType: 'json'` in browsers incompatible with XHR Level 2 ([#654](https://github.com/axios/axios/pull/654)) +- Improving React Native detection ([#731](https://github.com/axios/axios/pull/731)) +- Fixing `combineURLs` to support empty `relativeURL` ([#581](https://github.com/axios/axios/pull/581)) +- Removing `PROTECTION_PREFIX` support ([#561](https://github.com/axios/axios/pull/561)) + +### 0.15.3 (Nov 27, 2016) + +- Fixing issue with custom instances and global defaults ([#443](https://github.com/axios/axios/issues/443)) +- Renaming `axios.d.ts` to `index.d.ts` ([#519](https://github.com/axios/axios/issues/519)) +- Adding `get`, `head`, and `delete` to `defaults.headers` ([#509](https://github.com/axios/axios/issues/509)) +- Fixing issue with `btoa` and IE ([#507](https://github.com/axios/axios/issues/507)) +- Adding support for proxy authentication ([#483](https://github.com/axios/axios/pull/483)) +- Improving HTTP adapter to use `http` protocol by default ([#493](https://github.com/axios/axios/pull/493)) +- Fixing proxy issues ([#491](https://github.com/axios/axios/pull/491)) + +### 0.15.2 (Oct 17, 2016) + +- Fixing issue with calling `cancel` after response has been received ([#482](https://github.com/axios/axios/issues/482)) + +### 0.15.1 (Oct 14, 2016) + +- Fixing issue with UMD ([#485](https://github.com/axios/axios/issues/485)) + +### 0.15.0 (Oct 10, 2016) + +- Adding cancellation support ([#452](https://github.com/axios/axios/pull/452)) +- Moving default adapter to global defaults ([#437](https://github.com/axios/axios/pull/437)) +- Fixing issue with `file` URI scheme ([#440](https://github.com/axios/axios/pull/440)) +- Fixing issue with `params` objects that have no prototype ([#445](https://github.com/axios/axios/pull/445)) + +### 0.14.0 (Aug 27, 2016) + +- **BREAKING** Updating TypeScript definitions ([#419](https://github.com/axios/axios/pull/419)) +- **BREAKING** Replacing `agent` option with `httpAgent` and `httpsAgent` ([#387](https://github.com/axios/axios/pull/387)) +- **BREAKING** Splitting `progress` event handlers into `onUploadProgress` and `onDownloadProgress` ([#423](https://github.com/axios/axios/pull/423)) +- Adding support for `http_proxy` and `https_proxy` environment variables ([#366](https://github.com/axios/axios/pull/366)) +- Fixing issue with `auth` config option and `Authorization` header ([#397](https://github.com/axios/axios/pull/397)) +- Don't set XSRF header if `xsrfCookieName` is `null` ([#406](https://github.com/axios/axios/pull/406)) + +### 0.13.1 (Jul 16, 2016) + +- Fixing issue with response data not being transformed on error ([#378](https://github.com/axios/axios/issues/378)) + +### 0.13.0 (Jul 13, 2016) + +- **BREAKING** Improved error handling ([#345](https://github.com/axios/axios/pull/345)) +- **BREAKING** Response transformer now invoked in dispatcher not adapter ([10eb238](https://github.com/axios/axios/commit/10eb23865101f9347570552c04e9d6211376e25e)) +- **BREAKING** Request adapters now return a `Promise` ([157efd5](https://github.com/axios/axios/commit/157efd5615890301824e3121cc6c9d2f9b21f94a)) +- Fixing issue with `withCredentials` not being overwritten ([#343](https://github.com/axios/axios/issues/343)) +- Fixing regression with request transformer being called before request interceptor ([#352](https://github.com/axios/axios/issues/352)) +- Fixing custom instance defaults ([#341](https://github.com/axios/axios/issues/341)) +- Fixing instances created from `axios.create` to have same API as default axios ([#217](https://github.com/axios/axios/issues/217)) + +### 0.12.0 (May 31, 2016) + +- Adding support for `URLSearchParams` ([#317](https://github.com/axios/axios/pull/317)) +- Adding `maxRedirects` option ([#307](https://github.com/axios/axios/pull/307)) + +### 0.11.1 (May 17, 2016) + +- Fixing IE CORS support ([#313](https://github.com/axios/axios/pull/313)) +- Fixing detection of `FormData` ([#325](https://github.com/axios/axios/pull/325)) +- Adding `Axios` class to exports ([#321](https://github.com/axios/axios/pull/321)) + +### 0.11.0 (Apr 26, 2016) + +- Adding support for Stream with HTTP adapter ([#296](https://github.com/axios/axios/pull/296)) +- Adding support for custom HTTP status code error ranges ([#308](https://github.com/axios/axios/pull/308)) +- Fixing issue with ArrayBuffer ([#299](https://github.com/axios/axios/pull/299)) + +### 0.10.0 (Apr 20, 2016) + +- Fixing issue with some requests sending `undefined` instead of `null` ([#250](https://github.com/axios/axios/pull/250)) +- Fixing basic auth for HTTP adapter ([#252](https://github.com/axios/axios/pull/252)) +- Fixing request timeout for XHR adapter ([#227](https://github.com/axios/axios/pull/227)) +- Fixing IE8 support by using `onreadystatechange` instead of `onload` ([#249](https://github.com/axios/axios/pull/249)) +- Fixing IE9 cross domain requests ([#251](https://github.com/axios/axios/pull/251)) +- Adding `maxContentLength` option ([#275](https://github.com/axios/axios/pull/275)) +- Fixing XHR support for WebWorker environment ([#279](https://github.com/axios/axios/pull/279)) +- Adding request instance to response ([#200](https://github.com/axios/axios/pull/200)) + +### 0.9.1 (Jan 24, 2016) + +- Improving handling of request timeout in node ([#124](https://github.com/axios/axios/issues/124)) +- Fixing network errors not rejecting ([#205](https://github.com/axios/axios/pull/205)) +- Fixing issue with IE rejecting on HTTP 204 ([#201](https://github.com/axios/axios/issues/201)) +- Fixing host/port when following redirects ([#198](https://github.com/axios/axios/pull/198)) + +### 0.9.0 (Jan 18, 2016) + +- Adding support for custom adapters +- Fixing Content-Type header being removed when data is false ([#195](https://github.com/axios/axios/pull/195)) +- Improving XDomainRequest implementation ([#185](https://github.com/axios/axios/pull/185)) +- Improving config merging and order of precedence ([#183](https://github.com/axios/axios/pull/183)) +- Fixing XDomainRequest support for only <= IE9 ([#182](https://github.com/axios/axios/pull/182)) + +### 0.8.1 (Dec 14, 2015) + +- Adding support for passing XSRF token for cross domain requests when using `withCredentials` ([#168](https://github.com/axios/axios/pull/168)) +- Fixing error with format of basic auth header ([#178](https://github.com/axios/axios/pull/173)) +- Fixing error with JSON payloads throwing `InvalidStateError` in some cases ([#174](https://github.com/axios/axios/pull/174)) + +### 0.8.0 (Dec 11, 2015) + +- Adding support for creating instances of axios ([#123](https://github.com/axios/axios/pull/123)) +- Fixing http adapter to use `Buffer` instead of `String` in case of `responseType === 'arraybuffer'` ([#128](https://github.com/axios/axios/pull/128)) +- Adding support for using custom parameter serializer with `paramsSerializer` option ([#121](https://github.com/axios/axios/pull/121)) +- Fixing issue in IE8 caused by `forEach` on `arguments` ([#127](https://github.com/axios/axios/pull/127)) +- Adding support for following redirects in node ([#146](https://github.com/axios/axios/pull/146)) +- Adding support for transparent decompression if `content-encoding` is set ([#149](https://github.com/axios/axios/pull/149)) +- Adding support for transparent XDomainRequest to handle cross domain requests in IE9 ([#140](https://github.com/axios/axios/pull/140)) +- Adding support for HTTP basic auth via Authorization header ([#167](https://github.com/axios/axios/pull/167)) +- Adding support for baseURL option ([#160](https://github.com/axios/axios/pull/160)) + +### 0.7.0 (Sep 29, 2015) + +- Fixing issue with minified bundle in IE8 ([#87](https://github.com/axios/axios/pull/87)) +- Adding support for passing agent in node ([#102](https://github.com/axios/axios/pull/102)) +- Adding support for returning result from `axios.spread` for chaining ([#106](https://github.com/axios/axios/pull/106)) +- Fixing typescript definition ([#105](https://github.com/axios/axios/pull/105)) +- Fixing default timeout config for node ([#112](https://github.com/axios/axios/pull/112)) +- Adding support for use in web workers, and react-native ([#70](https://github.com/axios/axios/issue/70)), ([#98](https://github.com/axios/axios/pull/98)) +- Adding support for fetch like API `axios(url[, config])` ([#116](https://github.com/axios/axios/issues/116)) + +### 0.6.0 (Sep 21, 2015) + +- Removing deprecated success/error aliases +- Fixing issue with array params not being properly encoded ([#49](https://github.com/axios/axios/pull/49)) +- Fixing issue with User-Agent getting overridden ([#69](https://github.com/axios/axios/issues/69)) +- Adding support for timeout config ([#56](https://github.com/axios/axios/issues/56)) +- Removing es6-promise dependency +- Fixing issue preventing `length` to be used as a parameter ([#91](https://github.com/axios/axios/pull/91)) +- Fixing issue with IE8 ([#85](https://github.com/axios/axios/pull/85)) +- Converting build to UMD + +### 0.5.4 (Apr 08, 2015) + +- Fixing issue with FormData not being sent ([#53](https://github.com/axios/axios/issues/53)) + +### 0.5.3 (Apr 07, 2015) + +- Using JSON.parse unconditionally when transforming response string ([#55](https://github.com/axios/axios/issues/55)) + +### 0.5.2 (Mar 13, 2015) + +- Adding support for `statusText` in response ([#46](https://github.com/axios/axios/issues/46)) + +### 0.5.1 (Mar 10, 2015) + +- Fixing issue using strict mode ([#45](https://github.com/axios/axios/issues/45)) +- Fixing issue with standalone build ([#47](https://github.com/axios/axios/issues/47)) + +### 0.5.0 (Jan 23, 2015) + +- Adding support for intercepetors ([#14](https://github.com/axios/axios/issues/14)) +- Updating es6-promise dependency + +### 0.4.2 (Dec 10, 2014) + +- Fixing issue with `Content-Type` when using `FormData` ([#22](https://github.com/axios/axios/issues/22)) +- Adding support for TypeScript ([#25](https://github.com/axios/axios/issues/25)) +- Fixing issue with standalone build ([#29](https://github.com/axios/axios/issues/29)) +- Fixing issue with verbs needing to be capitalized in some browsers ([#30](https://github.com/axios/axios/issues/30)) + +### 0.4.1 (Oct 15, 2014) + +- Adding error handling to request for node.js ([#18](https://github.com/axios/axios/issues/18)) + +### 0.4.0 (Oct 03, 2014) + +- Adding support for `ArrayBuffer` and `ArrayBufferView` ([#10](https://github.com/axios/axios/issues/10)) +- Adding support for utf-8 for node.js ([#13](https://github.com/axios/axios/issues/13)) +- Adding support for SSL for node.js ([#12](https://github.com/axios/axios/issues/12)) +- Fixing incorrect `Content-Type` header ([#9](https://github.com/axios/axios/issues/9)) +- Adding standalone build without bundled es6-promise ([#11](https://github.com/axios/axios/issues/11)) +- Deprecating `success`/`error` in favor of `then`/`catch` + +### 0.3.1 (Sep 16, 2014) + +- Fixing missing post body when using node.js ([#3](https://github.com/axios/axios/issues/3)) + +### 0.3.0 (Sep 16, 2014) + +- Fixing `success` and `error` to properly receive response data as individual arguments ([#8](https://github.com/axios/axios/issues/8)) +- Updating `then` and `catch` to receive response data as a single object ([#6](https://github.com/axios/axios/issues/6)) +- Fixing issue with `all` not working ([#7](https://github.com/axios/axios/issues/7)) + +### 0.2.2 (Sep 14, 2014) + +- Fixing bundling with browserify ([#4](https://github.com/axios/axios/issues/4)) + +### 0.2.1 (Sep 12, 2014) + +- Fixing build problem causing ridiculous file sizes + +### 0.2.0 (Sep 12, 2014) + +- Adding support for `all` and `spread` +- Adding support for node.js ([#1](https://github.com/axios/axios/issues/1)) + +### 0.1.0 (Aug 29, 2014) + +- Initial release diff --git a/node_modules/axios/LICENSE b/node_modules/axios/LICENSE index 05006a5..d36c80e 100644 --- a/node_modules/axios/LICENSE +++ b/node_modules/axios/LICENSE @@ -1,7 +1,19 @@ -# Copyright (c) 2014-present Matt Zabriskie & Collaborators +Copyright (c) 2014-present Matt Zabriskie -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/axios/MIGRATION_GUIDE.md b/node_modules/axios/MIGRATION_GUIDE.md deleted file mode 100644 index ec3ae0d..0000000 --- a/node_modules/axios/MIGRATION_GUIDE.md +++ /dev/null @@ -1,3 +0,0 @@ -# Migration Guide - -## 0.x.x -> 1.1.0 diff --git a/node_modules/axios/README.md b/node_modules/axios/README.md old mode 100644 new mode 100755 index f012e44..b8c019a --- a/node_modules/axios/README.md +++ b/node_modules/axios/README.md @@ -1,88 +1,28 @@ -

- Platinum sponsors -
-

- -
- - - - - - - - -

Alloy is the integration development platform that makes it simple and
fast for SaaS companies to launch critical user-facing integrations.

-

- Sign up free • - Documentation -

-

-
- -

- Gold sponsors -

-

- -
- - - - - - - -

API-first authentication, authorization, and fraud prevention

-

- Website • - DocumentationNode.js Backend SDK -

-
- - -

-
-
-
- -

Promise based HTTP client for the browser and node.js

- -

- Website • - Documentation -

- -
+# axios [![npm version](https://img.shields.io/npm/v/axios.svg?style=flat-square)](https://www.npmjs.org/package/axios) [![CDNJS](https://img.shields.io/cdnjs/v/axios.svg?style=flat-square)](https://cdnjs.com/libraries/axios) -[![Build status](https://img.shields.io/github/actions/workflow/status/axios/axios/ci.yml?branch=v1.x&label=CI&logo=github&style=flat-square)](https://github.com/axios/axios/actions/workflows/ci.yml) -[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod&style=flat-square)](https://gitpod.io/#https://github.com/axios/axios) +![Build status](https://github.com/axios/axios/actions/workflows/ci.yml/badge.svg) +[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/axios/axios) [![code coverage](https://img.shields.io/coveralls/mzabriskie/axios.svg?style=flat-square)](https://coveralls.io/r/mzabriskie/axios) -[![install size](https://img.shields.io/badge/dynamic/json?url=https://packagephobia.com/v2/api.json?p=axios&query=$.install.pretty&label=install%20size&style=flat-square)](https://packagephobia.now.sh/result?p=axios) -[![npm bundle size](https://img.shields.io/bundlephobia/minzip/axios?style=flat-square)](https://bundlephobia.com/package/axios@latest) -[![npm downloads](https://img.shields.io/npm/dm/axios.svg?style=flat-square)](https://npm-stat.com/charts.html?package=axios) +[![install size](https://packagephobia.now.sh/badge?p=axios)](https://packagephobia.now.sh/result?p=axios) +[![npm downloads](https://img.shields.io/npm/dm/axios.svg?style=flat-square)](http://npm-stat.com/charts.html?package=axios) [![gitter chat](https://img.shields.io/gitter/room/mzabriskie/axios.svg?style=flat-square)](https://gitter.im/mzabriskie/axios) [![code helpers](https://www.codetriage.com/axios/axios/badges/users.svg)](https://www.codetriage.com/axios/axios) -[![Known Vulnerabilities](https://snyk.io/test/npm/axios/badge.svg)](https://snyk.io/test/npm/axios) +Promise based HTTP client for the browser and node.js - - -
+> New axios docs website: [click here](https://axios-http.com/) ## Table of Contents - [Features](#features) - [Browser Support](#browser-support) - [Installing](#installing) - - [Package manager](#package-manager) - - [CDN](#cdn) - [Example](#example) - [Axios API](#axios-api) - [Request method aliases](#request-method-aliases) - - [Concurrency 👎](#concurrency-deprecated) + - [Concurrency (Deprecated)](#concurrency-deprecated) - [Creating an instance](#creating-an-instance) - [Instance methods](#instance-methods) - [Request Config](#request-config) @@ -92,23 +32,13 @@ - [Custom instance defaults](#custom-instance-defaults) - [Config order of precedence](#config-order-of-precedence) - [Interceptors](#interceptors) - - [Multiple Interceptors](#multiple-interceptors) - [Handling Errors](#handling-errors) - [Cancellation](#cancellation) - - [AbortController](#abortcontroller) - - [CancelToken 👎](#canceltoken-deprecated) - [Using application/x-www-form-urlencoded format](#using-applicationx-www-form-urlencoded-format) - - [URLSearchParams](#urlsearchparams) - - [Query string](#query-string-older-browsers) - - [🆕 Automatic serialization](#-automatic-serialization-to-urlsearchparams) - - [Using multipart/form-data format](#using-multipartform-data-format) - - [FormData](#formdata) - - [🆕 Automatic serialization](#-automatic-serialization-to-formdata) - - [Files Posting](#files-posting) - - [HTML Form Posting](#-html-form-posting-browser) - - [🆕 Progress capturing](#-progress-capturing) - - [🆕 Rate limiting](#-progress-capturing) - - [🆕 AxiosHeaders](#-axiosheaders) + - [Browser](#browser) + - [Node.js](#nodejs) + - [Query string](#query-string) + - [Form data](#form-data) - [Semver](#semver) - [Promises](#promises) - [TypeScript](#typescript) @@ -119,18 +49,17 @@ ## Features - Make [XMLHttpRequests](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest) from the browser -- Make [http](https://nodejs.org/api/http.html) requests from node.js +- Make [http](http://nodejs.org/api/http.html) requests from node.js - Supports the [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) API - Intercept request and response - Transform request and response data - Cancel requests -- Automatic transforms for [JSON](https://www.json.org/json-en.html) data -- 🆕 Automatic data object serialization to `multipart/form-data` and `x-www-form-urlencoded` body encodings -- Client side support for protecting against [XSRF](https://en.wikipedia.org/wiki/Cross-site_request_forgery) +- Automatic transforms for JSON data +- Client side support for protecting against [XSRF](http://en.wikipedia.org/wiki/Cross-site_request_forgery) ## Browser Support -![Chrome](https://raw.githubusercontent.com/alrra/browser-logos/main/src/chrome/chrome_48x48.png) | ![Firefox](https://raw.githubusercontent.com/alrra/browser-logos/main/src/firefox/firefox_48x48.png) | ![Safari](https://raw.githubusercontent.com/alrra/browser-logos/main/src/safari/safari_48x48.png) | ![Opera](https://raw.githubusercontent.com/alrra/browser-logos/main/src/opera/opera_48x48.png) | ![Edge](https://raw.githubusercontent.com/alrra/browser-logos/main/src/edge/edge_48x48.png) | ![IE](https://raw.githubusercontent.com/alrra/browser-logos/master/src/archive/internet-explorer_9-11/internet-explorer_9-11_48x48.png) | +![Chrome](https://raw.github.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png) | ![Firefox](https://raw.github.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png) | ![Safari](https://raw.github.com/alrra/browser-logos/master/src/safari/safari_48x48.png) | ![Opera](https://raw.github.com/alrra/browser-logos/master/src/opera/opera_48x48.png) | ![Edge](https://raw.github.com/alrra/browser-logos/master/src/edge/edge_48x48.png) | ![IE](https://raw.github.com/alrra/browser-logos/master/src/archive/internet-explorer_9-11/internet-explorer_9-11_48x48.png) | --- | --- | --- | --- | --- | --- | Latest ✔ | Latest ✔ | Latest ✔ | Latest ✔ | Latest ✔ | 11 ✔ | @@ -138,8 +67,6 @@ Latest ✔ | Latest ✔ | Latest ✔ | Latest ✔ | Latest ✔ | 11 ✔ | ## Installing -### Package manager - Using npm: ```bash @@ -158,64 +85,33 @@ Using yarn: $ yarn add axios ``` -Using pnpm: - -```bash -$ pnpm add axios -``` - -Once the package is installed, you can import the library using `import` or `require` approach: - -```js -import axios, {isCancel, AxiosError} from 'axios'; -``` - -You can also use the default export, since the named export is just a re-export from the Axios factory: - -```js -import axios from 'axios'; - -console.log(axios.isCancel('something')); -```` - -If you use `require` for importing, **only default export is available**: - -```js -const axios = require('axios'); - -console.log(axios.isCancel('something')); -``` - -For cases where something went wrong when trying to import a module into a custom or legacy environment, -you can try importing the module package directly: - -```js -const axios = require('axios/dist/browser/axios.cjs'); // browser commonJS bundle (ES2017) -// const axios = require('axios/dist/node/axios.cjs'); // node commonJS bundle (ES2017) -``` - -### CDN - -Using jsDelivr CDN (ES5 UMD browser module): +Using jsDelivr CDN: ```html - + ``` Using unpkg CDN: ```html - + ``` ## Example -> **Note**: CommonJS usage -> In order to gain the TypeScript typings (for intellisense / autocomplete) while using CommonJS imports with `require()`, use the following approach: +### note: CommonJS usage +In order to gain the TypeScript typings (for intellisense / autocomplete) while using CommonJS imports with `require()` use the following approach: ```js -import axios from 'axios'; -//const axios = require('axios'); // legacy way +const axios = require('axios').default; + +// axios. will now provide autocomplete and parameter typings +``` + +Performing a `GET` request + +```js +const axios = require('axios'); // Make a request for a user with a given ID axios.get('/user?ID=12345') @@ -227,7 +123,7 @@ axios.get('/user?ID=12345') // handle error console.log(error); }) - .finally(function () { + .then(function () { // always executed }); @@ -243,9 +139,9 @@ axios.get('/user', { .catch(function (error) { console.log(error); }) - .finally(function () { + .then(function () { // always executed - }); + }); // Want to use async/await? Add the `async` keyword to your outer function/method. async function getUser() { @@ -258,7 +154,7 @@ async function getUser() { } ``` -> **Note**: `async/await` is part of ECMAScript 2017 and is not supported in Internet +> **NOTE:** `async/await` is part of ECMAScript 2017 and is not supported in Internet > Explorer and older browsers, so use with caution. Performing a `POST` request @@ -316,7 +212,7 @@ axios({ // GET request for remote image in node.js axios({ method: 'get', - url: 'https://bit.ly/2mTM3nY', + url: 'http://bit.ly/2mTM3nY', responseType: 'stream' }) .then(function (response) { @@ -333,7 +229,7 @@ axios('/user/12345'); ### Request method aliases -For convenience, aliases have been provided for all common request methods. +For convenience aliases have been provided for all supported request methods. ##### axios.request(config) ##### axios.get(url[, config]) @@ -427,18 +323,11 @@ These are the available config options for making requests. Only the `url` is re params: { ID: 12345 }, - - // `paramsSerializer` is an optional config that allows you to customize serializing `params`. - paramsSerializer: { - //Custom encoder function which sends key/value pairs in an iterative fashion. - encode?: (param: string): string => { /* Do custom operations here and return transformed string */ }, - - // Custom serializer function for the entire parameter. Allows user to mimic pre 1.x behaviour. - serialize?: (params: Record, options?: ParamsSerializerOptions ), - - //Configuration for formatting array indexes in the params. - indexes: false // Three available options: (1) indexes: null (leads to no brackets), (2) (default) indexes: false (leads to empty brackets), (3) indexes: true (leads to brackets with indexes). + // `paramsSerializer` is an optional function in charge of serializing `params` + // (e.g. https://www.npmjs.com/package/qs, http://api.jquery.com/jquery.param/) + paramsSerializer: function (params) { + return Qs.stringify(params, {arrayFormat: 'brackets'}) }, // `data` is the data to be sent as the request body @@ -446,11 +335,11 @@ These are the available config options for making requests. Only the `url` is re // When no `transformRequest` is set, must be of one of the following types: // - string, plain object, ArrayBuffer, ArrayBufferView, URLSearchParams // - Browser only: FormData, File, Blob - // - Node only: Stream, Buffer, FormData (form-data package) + // - Node only: Stream, Buffer data: { firstName: 'Fred' }, - + // syntax alternative to send data into the body // method post // only the value is sent, not the key @@ -494,20 +383,17 @@ These are the available config options for making requests. Only the `url` is re // `xsrfHeaderName` is the name of the http header that carries the xsrf token value xsrfHeaderName: 'X-XSRF-TOKEN', // default - - // `undefined` (default) - set XSRF header only for the same origin requests - withXSRFToken: boolean | undefined | ((config: InternalAxiosRequestConfig) => boolean | undefined), // `onUploadProgress` allows handling of progress events for uploads - // browser & node.js - onUploadProgress: function ({loaded, total, progress, bytes, estimated, rate, upload = true}) { - // Do whatever you want with the Axios progress event + // browser only + onUploadProgress: function (progressEvent) { + // Do whatever you want with the native progress event }, // `onDownloadProgress` allows handling of progress events for downloads - // browser & node.js - onDownloadProgress: function ({loaded, total, progress, bytes, estimated, rate, download = true}) { - // Do whatever you want with the Axios progress event + // browser only + onDownloadProgress: function (progressEvent) { + // Do whatever you want with the native progress event }, // `maxContentLength` defines the max size of the http response content in bytes allowed in node.js @@ -526,27 +412,13 @@ These are the available config options for making requests. Only the `url` is re // `maxRedirects` defines the maximum number of redirects to follow in node.js. // If set to 0, no redirects will be followed. - maxRedirects: 21, // default - - // `beforeRedirect` defines a function that will be called before redirect. - // Use this to adjust the request options upon redirecting, - // to inspect the latest response headers, - // or to cancel the request by throwing an error - // If maxRedirects is set to 0, `beforeRedirect` is not used. - beforeRedirect: (options, { headers }) => { - if (options.hostname === "example.com") { - options.auth = "user:password"; - } - }, + maxRedirects: 5, // default // `socketPath` defines a UNIX Socket to be used in node.js. // e.g. '/var/run/docker.sock' to send requests to the docker daemon. // Only either `socketPath` or `proxy` can be specified. // If both are specified, `socketPath` is used. socketPath: null, // default - - // `transport` determines the transport method that will be used to make the request. If defined, it will be used. Otherwise, if `maxRedirects` is 0, the default `http` or `https` library will be used, depending on the protocol specified in `protocol`. Otherwise, the `httpFollow` or `httpsFollow` library will be used, again depending on the protocol, which can handle redirects. - transport: undefined, // default // `httpAgent` and `httpsAgent` define a custom agent to be used when performing http // and https requests, respectively, in node.js. This allows options to be added like @@ -564,11 +436,10 @@ These are the available config options for making requests. Only the `url` is re // supplies credentials. // This will set an `Proxy-Authorization` header, overwriting any existing // `Proxy-Authorization` custom headers you have set using `headers`. - // If the proxy server uses HTTPS, then you must set the protocol to `https`. + // If the proxy server uses HTTPS, then you must set the protocol to `https`. proxy: { protocol: 'https', host: '127.0.0.1', - // hostname: '127.0.0.1' // Takes precedence over 'host' if both are defined port: 9000, auth: { username: 'mikeymike', @@ -581,23 +452,12 @@ These are the available config options for making requests. Only the `url` is re cancelToken: new CancelToken(function (cancel) { }), - // an alternative way to cancel Axios requests using AbortController - signal: new AbortController().signal, - - // `decompress` indicates whether or not the response body should be decompressed - // automatically. If set to `true` will also remove the 'content-encoding' header + // `decompress` indicates whether or not the response body should be decompressed + // automatically. If set to `true` will also remove the 'content-encoding' header // from the responses objects of all decompressed responses // - Node only (XHR cannot turn off decompression) decompress: true, // default - // `insecureHTTPParser` boolean. - // Indicates where to use an insecure HTTP parser that accepts invalid HTTP headers. - // This may allow interoperability with non-conformant HTTP implementations. - // Using the insecure parser should be avoided. - // see options https://nodejs.org/dist/latest-v12.x/docs/api/http.html#http_http_request_url_options_callback - // see also https://nodejs.org/en/blog/vulnerability/february-2020-security-releases/#strict-http-header-parsing-none - insecureHTTPParser: undefined, // default - // transitional options for backward compatibility that may be removed in the newer versions transitional: { // silent JSON parsing mode @@ -607,28 +467,10 @@ These are the available config options for making requests. Only the `url` is re // try to parse the response string as JSON even if `responseType` is not 'json' forcedJSONParsing: true, - + // throw ETIMEDOUT error instead of generic ECONNABORTED on request timeouts clarifyTimeoutError: false, - }, - - env: { - // The FormData class to be used to automatically serialize the payload into a FormData object - FormData: window?.FormData || global?.FormData - }, - - formSerializer: { - visitor: (value, key, path, helpers) => {}; // custom visitor function to serialize form values - dots: boolean; // use dots instead of brackets format - metaTokens: boolean; // keep special endings like {} in parameter key - indexes: boolean; // array indexes format null - no brackets, false - empty brackets, true - brackets with indexes - }, - - // http adapter only (node.js) - maxRate: [ - 100 * 1024, // 100KB/s upload limit, - 100 * 1024 // 100KB/s download limit - ] + } } ``` @@ -648,7 +490,7 @@ The response for a request contains the following information. statusText: 'OK', // `headers` the HTTP headers that the server responded with - // All header names are lowercase and can be accessed using the bracket notation. + // All header names are lower cased and can be accessed using the bracket notation. // Example: `response.headers['content-type']` headers: {}, @@ -707,7 +549,7 @@ instance.defaults.headers.common['Authorization'] = AUTH_TOKEN; ### Config order of precedence -Config will be merged with an order of precedence. The order is library defaults found in [lib/defaults.js](https://github.com/axios/axios/blob/master/lib/defaults/index.js#L28), then `defaults` property of the instance, and finally `config` argument for the request. The latter will take precedence over the former. Here's an example. +Config will be merged with an order of precedence. The order is library defaults found in [lib/defaults.js](https://github.com/axios/axios/blob/master/lib/defaults.js#L28), then `defaults` property of the instance, and finally `config` argument for the request. The latter will take precedence over the former. Here's an example. ```js // Create an instance using the config defaults provided by the library @@ -757,15 +599,6 @@ const myInterceptor = axios.interceptors.request.use(function () {/*...*/}); axios.interceptors.request.eject(myInterceptor); ``` -You can also clear all interceptors for requests or responses. -```js -const instance = axios.create(); -instance.interceptors.request.use(function () {/*...*/}); -instance.interceptors.request.clear(); // Removes interceptors from requests -instance.interceptors.response.use(function () {/*...*/}); -instance.interceptors.response.clear(); // Removes interceptors from responses -``` - You can add interceptors to a custom instance of axios. ```js @@ -774,7 +607,7 @@ instance.interceptors.request.use(function () {/*...*/}); ``` When you add request interceptors, they are presumed to be asynchronous by default. This can cause a delay -in the execution of your axios request when the main thread is blocked (a promise is created under the hood for +in the execution of your axios request when the main thread is blocked (a promise is created under the hood for the interceptor and your request gets put on the bottom of the call stack). If your request interceptors are synchronous you can add a flag to the options object that will tell axios to run the code synchronously and avoid any delays in request execution. @@ -785,7 +618,7 @@ axios.interceptors.request.use(function (config) { }, null, { synchronous: true }); ``` -If you want to execute a particular interceptor based on a runtime check, +If you want to execute a particular interceptor based on a runtime check, you can add a `runWhen` function to the options object. The interceptor will not be executed **if and only if** the return of `runWhen` is `false`. The function will be called with the config object (don't forget that you can bind your own arguments to it as well.) This can be handy when you have an @@ -801,55 +634,8 @@ axios.interceptors.request.use(function (config) { }, null, { runWhen: onGetCall }); ``` -### Multiple Interceptors - -Given you add multiple response interceptors -and when the response was fulfilled -- then each interceptor is executed -- then they are executed in the order they were added -- then only the last interceptor's result is returned -- then every interceptor receives the result of its predecessor -- and when the fulfillment-interceptor throws - - then the following fulfillment-interceptor is not called - - then the following rejection-interceptor is called - - once caught, another following fulfill-interceptor is called again (just like in a promise chain). - -Read [the interceptor tests](./test/specs/interceptors.spec.js) for seeing all this in code. - -## Error Types - -There are many different axios error messages that can appear that can provide basic information about the specifics of the error and where opportunities may lie in debugging. - -The general structure of axios errors is as follows: -| Property | Definition | -| -------- | ---------- | -| message | A quick summary of the error message and the status it failed with. | -| name | This defines where the error originated from. For axios, it will always be an 'AxiosError'. | -| stack | Provides the stack trace of the error. | -| config | An axios config object with specific instance configurations defined by the user from when the request was made | -| code | Represents an axios identified error. The table below lists out specific definitions for internal axios error. | -| status | HTTP response status code. See [here](https://en.wikipedia.org/wiki/List_of_HTTP_status_codes) for common HTTP response status code meanings. - -Below is a list of potential axios identified error -| Code | Definition | -| -------- | ---------- | -| ERR_BAD_OPTION_VALUE | Invalid or unsupported value provided in axios configuration. | -| ERR_BAD_OPTION | Invalid option provided in axios configuration. | -| ECONNABORTED | Request timed out due to exceeding timeout specified in axios configuration. | -| ETIMEDOUT | Request timed out due to exceeding default axios timelimit. | -| ERR_NETWORK | Network-related issue. -| ERR_FR_TOO_MANY_REDIRECTS | Request is redirected too many times; exceeds max redirects specified in axios configuration. -| ERR_DEPRECATED | Deprecated feature or method used in axios. -| ERR_BAD_RESPONSE | Response cannot be parsed properly or is in an unexpected format. -| ERR_BAD_REQUEST | Requested has unexpected format or missing required parameters. | -| ERR_CANCELED | Feature or method is canceled explicitly by the user. -| ERR_NOT_SUPPORT | Feature or method not supported in the current axios environment. -| ERR_INVALID_URL | Invalid URL provided for axios request. - ## Handling Errors -the default behavior is to reject every response that returns with a status code that falls out of the range of 2xx and treat it as an error. - ```js axios.get('/user/12345') .catch(function (error) { @@ -872,7 +658,7 @@ axios.get('/user/12345') }); ``` -Using the `validateStatus` config option, you can override the default condition (status >= 200 && status < 300) and define HTTP code(s) that should throw an error. +Using the `validateStatus` config option, you can define HTTP code(s) that should throw an error. ```js axios.get('/user/12345', { @@ -893,29 +679,9 @@ axios.get('/user/12345') ## Cancellation -### AbortController +You can cancel a request using a *cancel token*. -Starting from `v0.22.0` Axios supports AbortController to cancel requests in fetch API way: - -```js -const controller = new AbortController(); - -axios.get('/foo/bar', { - signal: controller.signal -}).then(function(response) { - //... -}); -// cancel the request -controller.abort() -``` - -### CancelToken `👎deprecated` - -You can also cancel a request using a *CancelToken*. - -> The axios cancel token API is based on the withdrawn [cancellable promises proposal](https://github.com/tc39/proposal-cancelable-promises). - -> This API is deprecated since v0.22.0 and shouldn't be used in new projects +> The axios cancel token API is based on the withdrawn [cancelable promises proposal](https://github.com/tc39/proposal-cancelable-promises). You can create a cancel token using the `CancelToken.source` factory as shown below: @@ -960,26 +726,25 @@ axios.get('/user/12345', { cancel(); ``` -> **Note:** you can cancel several requests with the same cancel token/abort controller. -> If a cancellation token is already cancelled at the moment of starting an Axios request, then the request is cancelled immediately, without any attempts to make a real request. +> Note: you can cancel several requests with the same cancel token. +> If a cancellation token is already cancelled at the moment of starting an Axios request, then the request is cancelled immediately, without any attempts to make real request. -> During the transition period, you can use both cancellation APIs, even for the same request: +## Using application/x-www-form-urlencoded format -## Using `application/x-www-form-urlencoded` format +By default, axios serializes JavaScript objects to `JSON`. To send data in the `application/x-www-form-urlencoded` format instead, you can use one of the following options. -### URLSearchParams +### Browser -By default, axios serializes JavaScript objects to `JSON`. To send data in the [`application/x-www-form-urlencoded` format](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST) instead, you can use the [`URLSearchParams`](https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams) API, which is [supported](http://www.caniuse.com/#feat=urlsearchparams) in the vast majority of browsers,and [ Node](https://nodejs.org/api/url.html#url_class_urlsearchparams) starting with v10 (released in 2018). +In a browser, you can use the [`URLSearchParams`](https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams) API as follows: ```js -const params = new URLSearchParams({ foo: 'bar' }); -params.append('extraparam', 'value'); +const params = new URLSearchParams(); +params.append('param1', 'value1'); +params.append('param2', 'value2'); axios.post('/foo', params); ``` -### Query string (Older browsers) - -For compatibility with very old browsers, there is a [polyfill](https://github.com/WebReflection/url-search-params) available (make sure to polyfill the global environment). +> Note that `URLSearchParams` is not supported by all browsers (see [caniuse.com](http://www.caniuse.com/#feat=urlsearchparams)), but there is a [polyfill](https://github.com/WebReflection/url-search-params) available (make sure to polyfill the global environment). Alternatively, you can encode data using the [`qs`](https://github.com/ljharb/qs) library: @@ -1002,607 +767,68 @@ const options = { axios(options); ``` -### Older Node.js versions +### Node.js -For older Node.js engines, you can use the [`querystring`](https://nodejs.org/api/querystring.html) module as follows: +#### Query string + +In node.js, you can use the [`querystring`](https://nodejs.org/api/querystring.html) module as follows: ```js const querystring = require('querystring'); -axios.post('https://something.com/', querystring.stringify({ foo: 'bar' })); +axios.post('http://something.com/', querystring.stringify({ foo: 'bar' })); +``` + +or ['URLSearchParams'](https://nodejs.org/api/url.html#url_class_urlsearchparams) from ['url module'](https://nodejs.org/api/url.html) as follows: + +```js +const url = require('url'); +const params = new url.URLSearchParams({ foo: 'bar' }); +axios.post('http://something.com/', params.toString()); ``` You can also use the [`qs`](https://github.com/ljharb/qs) library. -> **Note**: The `qs` library is preferable if you need to stringify nested objects, as the `querystring` method has [known issues](https://github.com/nodejs/node-v0.x-archive/issues/1665) with that use case. +###### NOTE +The `qs` library is preferable if you need to stringify nested objects, as the `querystring` method has known issues with that use case (https://github.com/nodejs/node-v0.x-archive/issues/1665). -### 🆕 Automatic serialization to URLSearchParams - -Axios will automatically serialize the data object to urlencoded format if the content-type header is set to "application/x-www-form-urlencoded". - -```js -const data = { - x: 1, - arr: [1, 2, 3], - arr2: [1, [2], 3], - users: [{name: 'Peter', surname: 'Griffin'}, {name: 'Thomas', surname: 'Anderson'}], -}; - -await axios.postForm('https://postman-echo.com/post', data, - {headers: {'content-type': 'application/x-www-form-urlencoded'}} -); -``` - -The server will handle it as: - -```js - { - x: '1', - 'arr[]': [ '1', '2', '3' ], - 'arr2[0]': '1', - 'arr2[1][0]': '2', - 'arr2[2]': '3', - 'arr3[]': [ '1', '2', '3' ], - 'users[0][name]': 'Peter', - 'users[0][surname]': 'griffin', - 'users[1][name]': 'Thomas', - 'users[1][surname]': 'Anderson' - } -```` - -If your backend body-parser (like `body-parser` of `express.js`) supports nested objects decoding, you will get the same object on the server-side automatically - -```js - var app = express(); - - app.use(bodyParser.urlencoded({ extended: true })); // support encoded bodies - - app.post('/', function (req, res, next) { - // echo body as JSON - res.send(JSON.stringify(req.body)); - }); - - server = app.listen(3000); -``` - -## Using `multipart/form-data` format - -### FormData - -To send the data as a `multipart/formdata` you need to pass a formData instance as a payload. -Setting the `Content-Type` header is not required as Axios guesses it based on the payload type. - -```js -const formData = new FormData(); -formData.append('foo', 'bar'); - -axios.post('https://httpbin.org/post', formData); -``` +#### Form data In node.js, you can use the [`form-data`](https://github.com/form-data/form-data) library as follows: ```js const FormData = require('form-data'); - + const form = new FormData(); form.append('my_field', 'my value'); form.append('my_buffer', new Buffer(10)); form.append('my_file', fs.createReadStream('/foo/bar.jpg')); -axios.post('https://example.com', form) +axios.post('https://example.com', form, { headers: form.getHeaders() }) ``` -### 🆕 Automatic serialization to FormData - -Starting from `v0.27.0`, Axios supports automatic object serialization to a FormData object if the request `Content-Type` -header is set to `multipart/form-data`. - -The following request will submit the data in a FormData format (Browser & Node.js): +Alternatively, use an interceptor: ```js -import axios from 'axios'; - -axios.post('https://httpbin.org/post', {x: 1}, { - headers: { - 'Content-Type': 'multipart/form-data' +axios.interceptors.request.use(config => { + if (config.data instanceof FormData) { + Object.assign(config.headers, config.data.getHeaders()); } -}).then(({data}) => console.log(data)); -``` - -In the `node.js` build, the ([`form-data`](https://github.com/form-data/form-data)) polyfill is used by default. - -You can overload the FormData class by setting the `env.FormData` config variable, -but you probably won't need it in most cases: - -```js -const axios = require('axios'); -var FormData = require('form-data'); - -axios.post('https://httpbin.org/post', {x: 1, buf: new Buffer(10)}, { - headers: { - 'Content-Type': 'multipart/form-data' - } -}).then(({data}) => console.log(data)); -``` - -Axios FormData serializer supports some special endings to perform the following operations: - -- `{}` - serialize the value with JSON.stringify -- `[]` - unwrap the array-like object as separate fields with the same key - -> **Note**: unwrap/expand operation will be used by default on arrays and FileList objects - -FormData serializer supports additional options via `config.formSerializer: object` property to handle rare cases: - -- `visitor: Function` - user-defined visitor function that will be called recursively to serialize the data object -to a `FormData` object by following custom rules. - -- `dots: boolean = false` - use dot notation instead of brackets to serialize arrays and objects; - -- `metaTokens: boolean = true` - add the special ending (e.g `user{}: '{"name": "John"}'`) in the FormData key. -The back-end body-parser could potentially use this meta-information to automatically parse the value as JSON. - -- `indexes: null|false|true = false` - controls how indexes will be added to unwrapped keys of `flat` array-like objects - - - `null` - don't add brackets (`arr: 1`, `arr: 2`, `arr: 3`) - - `false`(default) - add empty brackets (`arr[]: 1`, `arr[]: 2`, `arr[]: 3`) - - `true` - add brackets with indexes (`arr[0]: 1`, `arr[1]: 2`, `arr[2]: 3`) - -Let's say we have an object like this one: - -```js -const obj = { - x: 1, - arr: [1, 2, 3], - arr2: [1, [2], 3], - users: [{name: 'Peter', surname: 'Griffin'}, {name: 'Thomas', surname: 'Anderson'}], - 'obj2{}': [{x:1}] -}; -``` - -The following steps will be executed by the Axios serializer internally: - -```js -const formData = new FormData(); -formData.append('x', '1'); -formData.append('arr[]', '1'); -formData.append('arr[]', '2'); -formData.append('arr[]', '3'); -formData.append('arr2[0]', '1'); -formData.append('arr2[1][0]', '2'); -formData.append('arr2[2]', '3'); -formData.append('users[0][name]', 'Peter'); -formData.append('users[0][surname]', 'Griffin'); -formData.append('users[1][name]', 'Thomas'); -formData.append('users[1][surname]', 'Anderson'); -formData.append('obj2{}', '[{"x":1}]'); -``` - -Axios supports the following shortcut methods: `postForm`, `putForm`, `patchForm` -which are just the corresponding http methods with the `Content-Type` header preset to `multipart/form-data`. - -## Files Posting - -You can easily submit a single file: - -```js -await axios.postForm('https://httpbin.org/post', { - 'myVar' : 'foo', - 'file': document.querySelector('#fileInput').files[0] + return config; }); ``` -or multiple files as `multipart/form-data`: - -```js -await axios.postForm('https://httpbin.org/post', { - 'files[]': document.querySelector('#fileInput').files -}); -``` - -`FileList` object can be passed directly: - -```js -await axios.postForm('https://httpbin.org/post', document.querySelector('#fileInput').files) -``` - -All files will be sent with the same field names: `files[]`. - -## 🆕 HTML Form Posting (browser) - -Pass HTML Form element as a payload to submit it as `multipart/form-data` content. - -```js -await axios.postForm('https://httpbin.org/post', document.querySelector('#htmlForm')); -``` - -`FormData` and `HTMLForm` objects can also be posted as `JSON` by explicitly setting the `Content-Type` header to `application/json`: - -```js -await axios.post('https://httpbin.org/post', document.querySelector('#htmlForm'), { - headers: { - 'Content-Type': 'application/json' - } -}) -``` - -For example, the Form - -```html -
- - - - - - - - - -
-``` - -will be submitted as the following JSON object: - -```js -{ - "foo": "1", - "deep": { - "prop": { - "spaced": "3" - } - }, - "baz": [ - "4", - "5" - ], - "user": { - "age": "value2" - } -} -```` - -Sending `Blobs`/`Files` as JSON (`base64`) is not currently supported. - -## 🆕 Progress capturing - -Axios supports both browser and node environments to capture request upload/download progress. - -```js -await axios.post(url, data, { - onUploadProgress: function (axiosProgressEvent) { - /*{ - loaded: number; - total?: number; - progress?: number; // in range [0..1] - bytes: number; // how many bytes have been transferred since the last trigger (delta) - estimated?: number; // estimated time in seconds - rate?: number; // upload speed in bytes - upload: true; // upload sign - }*/ - }, - - onDownloadProgress: function (axiosProgressEvent) { - /*{ - loaded: number; - total?: number; - progress?: number; - bytes: number; - estimated?: number; - rate?: number; // download speed in bytes - download: true; // download sign - }*/ - } -}); -``` - -You can also track stream upload/download progress in node.js: - -```js -const {data} = await axios.post(SERVER_URL, readableStream, { - onUploadProgress: ({progress}) => { - console.log((progress * 100).toFixed(2)); - }, - - headers: { - 'Content-Length': contentLength - }, - - maxRedirects: 0 // avoid buffering the entire stream -}); -```` - -> **Note:** -> Capturing FormData upload progress is not currently supported in node.js environments. - -> **⚠️ Warning** -> It is recommended to disable redirects by setting maxRedirects: 0 to upload the stream in the **node.js** environment, -> as follow-redirects package will buffer the entire stream in RAM without following the "backpressure" algorithm. - - -## 🆕 Rate limiting - -Download and upload rate limits can only be set for the http adapter (node.js): - -```js -const {data} = await axios.post(LOCAL_SERVER_URL, myBuffer, { - onUploadProgress: ({progress, rate}) => { - console.log(`Upload [${(progress*100).toFixed(2)}%]: ${(rate / 1024).toFixed(2)}KB/s`) - }, - - maxRate: [100 * 1024], // 100KB/s limit -}); -``` - -## 🆕 AxiosHeaders - -Axios has its own `AxiosHeaders` class to manipulate headers using a Map-like API that guarantees caseless work. -Although HTTP is case-insensitive in headers, Axios will retain the case of the original header for stylistic reasons -and for a workaround when servers mistakenly consider the header's case. -The old approach of directly manipulating headers object is still available, but deprecated and not recommended for future usage. - -### Working with headers - -An AxiosHeaders object instance can contain different types of internal values. that control setting and merging logic. -The final headers object with string values is obtained by Axios by calling the `toJSON` method. - -> Note: By JSON here we mean an object consisting only of string values intended to be sent over the network. - -The header value can be one of the following types: -- `string` - normal string value that will be sent to the server -- `null` - skip header when rendering to JSON -- `false` - skip header when rendering to JSON, additionally indicates that `set` method must be called with `rewrite` option set to `true` - to overwrite this value (Axios uses this internally to allow users to opt out of installing certain headers like `User-Agent` or `Content-Type`) -- `undefined` - value is not set - -> Note: The header value is considered set if it is not equal to undefined. - -The headers object is always initialized inside interceptors and transformers: - -```ts - axios.interceptors.request.use((request: InternalAxiosRequestConfig) => { - request.headers.set('My-header', 'value'); - - request.headers.set({ - "My-set-header1": "my-set-value1", - "My-set-header2": "my-set-value2" - }); - - request.headers.set('User-Agent', false); // disable subsequent setting the header by Axios - - request.headers.setContentType('text/plain'); - - request.headers['My-set-header2'] = 'newValue' // direct access is deprecated - - return request; - } - ); -```` - -You can iterate over an `AxiosHeaders` instance using a `for...of` statement: - -````js -const headers = new AxiosHeaders({ - foo: '1', - bar: '2', - baz: '3' -}); - -for(const [header, value] of headers) { - console.log(header, value); -} - -// foo 1 -// bar 2 -// baz 3 -```` - -### new AxiosHeaders(headers?) - -Constructs a new `AxiosHeaders` instance. - -``` -constructor(headers?: RawAxiosHeaders | AxiosHeaders | string); -``` - -If the headers object is a string, it will be parsed as RAW HTTP headers. - -````js -const headers = new AxiosHeaders(` -Host: www.bing.com -User-Agent: curl/7.54.0 -Accept: */*`); - -console.log(headers); - -// Object [AxiosHeaders] { -// host: 'www.bing.com', -// 'user-agent': 'curl/7.54.0', -// accept: '*/*' -// } -```` - -### AxiosHeaders#set - -```ts -set(headerName, value: Axios, rewrite?: boolean); -set(headerName, value, rewrite?: (this: AxiosHeaders, value: string, name: string, headers: RawAxiosHeaders) => boolean); -set(headers?: RawAxiosHeaders | AxiosHeaders | string, rewrite?: boolean); -``` - -The `rewrite` argument controls the overwriting behavior: -- `false` - do not overwrite if header's value is set (is not `undefined`) -- `undefined` (default) - overwrite the header unless its value is set to `false` -- `true` - rewrite anyway - -The option can also accept a user-defined function that determines whether the value should be overwritten or not. - -Returns `this`. - -### AxiosHeaders#get(header) - -``` - get(headerName: string, matcher?: true | AxiosHeaderMatcher): AxiosHeaderValue; - get(headerName: string, parser: RegExp): RegExpExecArray | null; -```` - -Returns the internal value of the header. It can take an extra argument to parse the header's value with `RegExp.exec`, -matcher function or internal key-value parser. - -```ts -const headers = new AxiosHeaders({ - 'Content-Type': 'multipart/form-data; boundary=Asrf456BGe4h' -}); - -console.log(headers.get('Content-Type')); -// multipart/form-data; boundary=Asrf456BGe4h - -console.log(headers.get('Content-Type', true)); // parse key-value pairs from a string separated with \s,;= delimiters: -// [Object: null prototype] { -// 'multipart/form-data': undefined, -// boundary: 'Asrf456BGe4h' -// } - - -console.log(headers.get('Content-Type', (value, name, headers) => { - return String(value).replace(/a/g, 'ZZZ'); -})); -// multipZZZrt/form-dZZZtZZZ; boundZZZry=Asrf456BGe4h - -console.log(headers.get('Content-Type', /boundary=(\w+)/)?.[0]); -// boundary=Asrf456BGe4h - -``` - -Returns the value of the header. - -### AxiosHeaders#has(header, matcher?) - -``` -has(header: string, matcher?: AxiosHeaderMatcher): boolean; -``` - -Returns `true` if the header is set (has no `undefined` value). - -### AxiosHeaders#delete(header, matcher?) - -``` -delete(header: string | string[], matcher?: AxiosHeaderMatcher): boolean; -``` - -Returns `true` if at least one header has been removed. - -### AxiosHeaders#clear(matcher?) - -``` -clear(matcher?: AxiosHeaderMatcher): boolean; -``` - -Removes all headers. -Unlike the `delete` method matcher, this optional matcher will be used to match against the header name rather than the value. - -```ts -const headers = new AxiosHeaders({ - 'foo': '1', - 'x-foo': '2', - 'x-bar': '3', -}); - -console.log(headers.clear(/^x-/)); // true - -console.log(headers.toJSON()); // [Object: null prototype] { foo: '1' } -``` - -Returns `true` if at least one header has been cleared. - -### AxiosHeaders#normalize(format); - -If the headers object was changed directly, it can have duplicates with the same name but in different cases. -This method normalizes the headers object by combining duplicate keys into one. -Axios uses this method internally after calling each interceptor. -Set `format` to true for converting headers name to lowercase and capitalize the initial letters (`cOntEnt-type` => `Content-Type`) - -```js -const headers = new AxiosHeaders({ - 'foo': '1', -}); - -headers.Foo = '2'; -headers.FOO = '3'; - -console.log(headers.toJSON()); // [Object: null prototype] { foo: '1', Foo: '2', FOO: '3' } -console.log(headers.normalize().toJSON()); // [Object: null prototype] { foo: '3' } -console.log(headers.normalize(true).toJSON()); // [Object: null prototype] { Foo: '3' } -``` - -Returns `this`. - -### AxiosHeaders#concat(...targets) - -``` -concat(...targets: Array): AxiosHeaders; -``` - -Merges the instance with targets into a new `AxiosHeaders` instance. If the target is a string, it will be parsed as RAW HTTP headers. - -Returns a new `AxiosHeaders` instance. - -### AxiosHeaders#toJSON(asStrings?) - -```` -toJSON(asStrings?: boolean): RawAxiosHeaders; -```` - -Resolve all internal headers values into a new null prototype object. -Set `asStrings` to true to resolve arrays as a string containing all elements, separated by commas. - -### AxiosHeaders.from(thing?) - -```` -from(thing?: AxiosHeaders | RawAxiosHeaders | string): AxiosHeaders; -```` - -Returns a new `AxiosHeaders` instance created from the raw headers passed in, -or simply returns the given headers object if it's an `AxiosHeaders` instance. - -### AxiosHeaders.concat(...targets) - -```` -concat(...targets: Array): AxiosHeaders; -```` - -Returns a new `AxiosHeaders` instance created by merging the target objects. - -### Shortcuts - -The following shortcuts are available: - -- `setContentType`, `getContentType`, `hasContentType` - -- `setContentLength`, `getContentLength`, `hasContentLength` - -- `setAccept`, `getAccept`, `hasAccept` - -- `setUserAgent`, `getUserAgent`, `hasUserAgent` - -- `setContentEncoding`, `getContentEncoding`, `hasContentEncoding` - - ## Semver Until axios reaches a `1.0` release, breaking changes will be released with a new minor version. For example `0.5.1`, and `0.5.4` will have the same API, but `0.6.0` will have breaking changes. ## Promises -axios depends on a native ES6 Promise implementation to be [supported](https://caniuse.com/promises). +axios depends on a native ES6 Promise implementation to be [supported](http://caniuse.com/promises). If your environment doesn't support ES6 Promises, you can [polyfill](https://github.com/jakearchibald/es6-promise). ## TypeScript -axios includes [TypeScript](https://typescriptlang.org) definitions and a type guard for axios errors. +axios includes [TypeScript](http://typescriptlang.org) definitions and a type guard for axios errors. ```typescript let user: User = null; @@ -1618,29 +844,24 @@ try { } ``` -Because axios dual publishes with an ESM default export and a CJS `module.exports`, there are some caveats. -The recommended setting is to use `"moduleResolution": "node16"` (this is implied by `"module": "node16"`). Note that this requires TypeScript 4.7 or greater. -If use ESM, your settings should be fine. -If you compile TypeScript to CJS and you can’t use `"moduleResolution": "node 16"`, you have to enable `esModuleInterop`. -If you use TypeScript to type check CJS JavaScript code, your only option is to use `"moduleResolution": "node16"`. - ## Online one-click setup -You can use Gitpod, an online IDE(which is free for Open Source) for contributing or running the examples online. +You can use Gitpod an online IDE(which is free for Open Source) for contributing or running the examples online. -[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/axios/axios/blob/main/examples/server.js) +[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/axios/axios/blob/master/examples/server.js) ## Resources -* [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md) -* [Ecosystem](https://github.com/axios/axios/blob/v1.x/ECOSYSTEM.md) -* [Contributing Guide](https://github.com/axios/axios/blob/v1.x/CONTRIBUTING.md) -* [Code of Conduct](https://github.com/axios/axios/blob/v1.x/CODE_OF_CONDUCT.md) +* [Changelog](https://github.com/axios/axios/blob/master/CHANGELOG.md) +* [Upgrade Guide](https://github.com/axios/axios/blob/master/UPGRADE_GUIDE.md) +* [Ecosystem](https://github.com/axios/axios/blob/master/ECOSYSTEM.md) +* [Contributing Guide](https://github.com/axios/axios/blob/master/CONTRIBUTING.md) +* [Code of Conduct](https://github.com/axios/axios/blob/master/CODE_OF_CONDUCT.md) ## Credits -axios is heavily inspired by the [$http service](https://docs.angularjs.org/api/ng/service/$http) provided in [AngularJS](https://angularjs.org/). Ultimately axios is an effort to provide a standalone `$http`-like service for use outside of AngularJS. +axios is heavily inspired by the [$http service](https://docs.angularjs.org/api/ng/service/$http) provided in [Angular](https://angularjs.org/). Ultimately axios is an effort to provide a standalone `$http`-like service for use outside of Angular. ## License diff --git a/node_modules/axios/SECURITY.md b/node_modules/axios/SECURITY.md index a5a2b7d..353df9a 100644 --- a/node_modules/axios/SECURITY.md +++ b/node_modules/axios/SECURITY.md @@ -1,6 +1,5 @@ -# Reporting a Vulnerability +# Security Policy -If you discover a security vulnerability in axios please disclose it via [our huntr page](https://huntr.dev/repos/axios/axios/). Bounty eligibility, CVE assignment, response times and past reports are all there. +## Reporting a Vulnerability - -Thank you for improving the security of axios. +Please report security issues to jasonsaayman@gmail.com diff --git a/node_modules/axios/dist/axios.js b/node_modules/axios/dist/axios.js index 24a83e5..f253910 100644 --- a/node_modules/axios/dist/axios.js +++ b/node_modules/axios/dist/axios.js @@ -1,3422 +1,2193 @@ -// Axios v1.6.7 Copyright (c) 2024 Matt Zabriskie and contributors -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.axios = factory()); -})(this, (function () { 'use strict'; +/* axios v0.21.4 | (c) 2021 by Matt Zabriskie */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else if(typeof exports === 'object') + exports["axios"] = factory(); + else + root["axios"] = factory(); +})(window, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = "./index.js"); +/******/ }) +/************************************************************************/ +/******/ ({ - function ownKeys(object, enumerableOnly) { - var keys = Object.keys(object); - if (Object.getOwnPropertySymbols) { - var symbols = Object.getOwnPropertySymbols(object); - enumerableOnly && (symbols = symbols.filter(function (sym) { - return Object.getOwnPropertyDescriptor(object, sym).enumerable; - })), keys.push.apply(keys, symbols); +/***/ "./index.js": +/*!******************!*\ + !*** ./index.js ***! + \******************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(/*! ./lib/axios */ "./lib/axios.js"); + +/***/ }), + +/***/ "./lib/adapters/xhr.js": +/*!*****************************!*\ + !*** ./lib/adapters/xhr.js ***! + \*****************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(/*! ./../utils */ "./lib/utils.js"); +var settle = __webpack_require__(/*! ./../core/settle */ "./lib/core/settle.js"); +var cookies = __webpack_require__(/*! ./../helpers/cookies */ "./lib/helpers/cookies.js"); +var buildURL = __webpack_require__(/*! ./../helpers/buildURL */ "./lib/helpers/buildURL.js"); +var buildFullPath = __webpack_require__(/*! ../core/buildFullPath */ "./lib/core/buildFullPath.js"); +var parseHeaders = __webpack_require__(/*! ./../helpers/parseHeaders */ "./lib/helpers/parseHeaders.js"); +var isURLSameOrigin = __webpack_require__(/*! ./../helpers/isURLSameOrigin */ "./lib/helpers/isURLSameOrigin.js"); +var createError = __webpack_require__(/*! ../core/createError */ "./lib/core/createError.js"); + +module.exports = function xhrAdapter(config) { + return new Promise(function dispatchXhrRequest(resolve, reject) { + var requestData = config.data; + var requestHeaders = config.headers; + var responseType = config.responseType; + + if (utils.isFormData(requestData)) { + delete requestHeaders['Content-Type']; // Let the browser set it } - return keys; - } - function _objectSpread2(target) { - for (var i = 1; i < arguments.length; i++) { - var source = null != arguments[i] ? arguments[i] : {}; - i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { - _defineProperty(target, key, source[key]); - }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { - Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); - }); + + var request = new XMLHttpRequest(); + + // HTTP basic authentication + if (config.auth) { + var username = config.auth.username || ''; + var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : ''; + requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password); } - return target; - } - function _regeneratorRuntime() { - _regeneratorRuntime = function () { - return exports; - }; - var exports = {}, - Op = Object.prototype, - hasOwn = Op.hasOwnProperty, - $Symbol = "function" == typeof Symbol ? Symbol : {}, - iteratorSymbol = $Symbol.iterator || "@@iterator", - asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", - toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; - function define(obj, key, value) { - return Object.defineProperty(obj, key, { - value: value, - enumerable: !0, - configurable: !0, - writable: !0 - }), obj[key]; - } - try { - define({}, ""); - } catch (err) { - define = function (obj, key, value) { - return obj[key] = value; - }; - } - function wrap(innerFn, outerFn, self, tryLocsList) { - var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, - generator = Object.create(protoGenerator.prototype), - context = new Context(tryLocsList || []); - return generator._invoke = function (innerFn, self, context) { - var state = "suspendedStart"; - return function (method, arg) { - if ("executing" === state) throw new Error("Generator is already running"); - if ("completed" === state) { - if ("throw" === method) throw arg; - return doneResult(); - } - for (context.method = method, context.arg = arg;;) { - var delegate = context.delegate; - if (delegate) { - var delegateResult = maybeInvokeDelegate(delegate, context); - if (delegateResult) { - if (delegateResult === ContinueSentinel) continue; - return delegateResult; - } - } - if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { - if ("suspendedStart" === state) throw state = "completed", context.arg; - context.dispatchException(context.arg); - } else "return" === context.method && context.abrupt("return", context.arg); - state = "executing"; - var record = tryCatch(innerFn, self, context); - if ("normal" === record.type) { - if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; - return { - value: record.arg, - done: context.done - }; - } - "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); - } - }; - }(innerFn, self, context), generator; - } - function tryCatch(fn, obj, arg) { - try { - return { - type: "normal", - arg: fn.call(obj, arg) - }; - } catch (err) { - return { - type: "throw", - arg: err - }; - } - } - exports.wrap = wrap; - var ContinueSentinel = {}; - function Generator() {} - function GeneratorFunction() {} - function GeneratorFunctionPrototype() {} - var IteratorPrototype = {}; - define(IteratorPrototype, iteratorSymbol, function () { - return this; - }); - var getProto = Object.getPrototypeOf, - NativeIteratorPrototype = getProto && getProto(getProto(values([]))); - NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); - var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); - function defineIteratorMethods(prototype) { - ["next", "throw", "return"].forEach(function (method) { - define(prototype, method, function (arg) { - return this._invoke(method, arg); - }); - }); - } - function AsyncIterator(generator, PromiseImpl) { - function invoke(method, arg, resolve, reject) { - var record = tryCatch(generator[method], generator, arg); - if ("throw" !== record.type) { - var result = record.arg, - value = result.value; - return value && "object" == typeof value && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { - invoke("next", value, resolve, reject); - }, function (err) { - invoke("throw", err, resolve, reject); - }) : PromiseImpl.resolve(value).then(function (unwrapped) { - result.value = unwrapped, resolve(result); - }, function (error) { - return invoke("throw", error, resolve, reject); - }); - } - reject(record.arg); - } - var previousPromise; - this._invoke = function (method, arg) { - function callInvokeWithMethodAndArg() { - return new PromiseImpl(function (resolve, reject) { - invoke(method, arg, resolve, reject); - }); - } - return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); - }; - } - function maybeInvokeDelegate(delegate, context) { - var method = delegate.iterator[context.method]; - if (undefined === method) { - if (context.delegate = null, "throw" === context.method) { - if (delegate.iterator.return && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method)) return ContinueSentinel; - context.method = "throw", context.arg = new TypeError("The iterator does not provide a 'throw' method"); - } - return ContinueSentinel; - } - var record = tryCatch(method, delegate.iterator, context.arg); - if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; - var info = record.arg; - return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); - } - function pushTryEntry(locs) { - var entry = { - tryLoc: locs[0] - }; - 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); - } - function resetTryEntry(entry) { - var record = entry.completion || {}; - record.type = "normal", delete record.arg, entry.completion = record; - } - function Context(tryLocsList) { - this.tryEntries = [{ - tryLoc: "root" - }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); - } - function values(iterable) { - if (iterable) { - var iteratorMethod = iterable[iteratorSymbol]; - if (iteratorMethod) return iteratorMethod.call(iterable); - if ("function" == typeof iterable.next) return iterable; - if (!isNaN(iterable.length)) { - var i = -1, - next = function next() { - for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; - return next.value = undefined, next.done = !0, next; - }; - return next.next = next; - } - } - return { - next: doneResult - }; - } - function doneResult() { - return { - value: undefined, - done: !0 - }; - } - return GeneratorFunction.prototype = GeneratorFunctionPrototype, define(Gp, "constructor", GeneratorFunctionPrototype), define(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { - var ctor = "function" == typeof genFun && genFun.constructor; - return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); - }, exports.mark = function (genFun) { - return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; - }, exports.awrap = function (arg) { - return { - __await: arg - }; - }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { - return this; - }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { - void 0 === PromiseImpl && (PromiseImpl = Promise); - var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); - return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { - return result.done ? result.value : iter.next(); - }); - }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { - return this; - }), define(Gp, "toString", function () { - return "[object Generator]"; - }), exports.keys = function (object) { - var keys = []; - for (var key in object) keys.push(key); - return keys.reverse(), function next() { - for (; keys.length;) { - var key = keys.pop(); - if (key in object) return next.value = key, next.done = !1, next; - } - return next.done = !0, next; - }; - }, exports.values = values, Context.prototype = { - constructor: Context, - reset: function (skipTempReset) { - if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); - }, - stop: function () { - this.done = !0; - var rootRecord = this.tryEntries[0].completion; - if ("throw" === rootRecord.type) throw rootRecord.arg; - return this.rval; - }, - dispatchException: function (exception) { - if (this.done) throw exception; - var context = this; - function handle(loc, caught) { - return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; - } - for (var i = this.tryEntries.length - 1; i >= 0; --i) { - var entry = this.tryEntries[i], - record = entry.completion; - if ("root" === entry.tryLoc) return handle("end"); - if (entry.tryLoc <= this.prev) { - var hasCatch = hasOwn.call(entry, "catchLoc"), - hasFinally = hasOwn.call(entry, "finallyLoc"); - if (hasCatch && hasFinally) { - if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); - if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); - } else if (hasCatch) { - if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); - } else { - if (!hasFinally) throw new Error("try statement without catch or finally"); - if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); - } - } - } - }, - abrupt: function (type, arg) { - for (var i = this.tryEntries.length - 1; i >= 0; --i) { - var entry = this.tryEntries[i]; - if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { - var finallyEntry = entry; - break; - } - } - finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); - var record = finallyEntry ? finallyEntry.completion : {}; - return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); - }, - complete: function (record, afterLoc) { - if ("throw" === record.type) throw record.arg; - return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; - }, - finish: function (finallyLoc) { - for (var i = this.tryEntries.length - 1; i >= 0; --i) { - var entry = this.tryEntries[i]; - if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; - } - }, - catch: function (tryLoc) { - for (var i = this.tryEntries.length - 1; i >= 0; --i) { - var entry = this.tryEntries[i]; - if (entry.tryLoc === tryLoc) { - var record = entry.completion; - if ("throw" === record.type) { - var thrown = record.arg; - resetTryEntry(entry); - } - return thrown; - } - } - throw new Error("illegal catch attempt"); - }, - delegateYield: function (iterable, resultName, nextLoc) { - return this.delegate = { - iterator: values(iterable), - resultName: resultName, - nextLoc: nextLoc - }, "next" === this.method && (this.arg = undefined), ContinueSentinel; - } - }, exports; - } - function _typeof(obj) { - "@babel/helpers - typeof"; - return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { - return typeof obj; - } : function (obj) { - return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; - }, _typeof(obj); - } - function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { - try { - var info = gen[key](arg); - var value = info.value; - } catch (error) { - reject(error); - return; - } - if (info.done) { - resolve(value); - } else { - Promise.resolve(value).then(_next, _throw); - } - } - function _asyncToGenerator(fn) { - return function () { - var self = this, - args = arguments; - return new Promise(function (resolve, reject) { - var gen = fn.apply(self, args); - function _next(value) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); - } - function _throw(err) { - asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); - } - _next(undefined); - }); - }; - } - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - Object.defineProperty(Constructor, "prototype", { - writable: false - }); - return Constructor; - } - function _defineProperty(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { - value: value, - enumerable: true, - configurable: true, - writable: true - }); - } else { - obj[key] = value; - } - return obj; - } - function _slicedToArray(arr, i) { - return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); - } - function _toArray(arr) { - return _arrayWithHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableRest(); - } - function _toConsumableArray(arr) { - return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); - } - function _arrayWithoutHoles(arr) { - if (Array.isArray(arr)) return _arrayLikeToArray(arr); - } - function _arrayWithHoles(arr) { - if (Array.isArray(arr)) return arr; - } - function _iterableToArray(iter) { - if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); - } - function _iterableToArrayLimit(arr, i) { - var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; - if (_i == null) return; - var _arr = []; - var _n = true; - var _d = false; - var _s, _e; - try { - for (_i = _i.call(arr); !(_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; - } - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === "string") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === "Object" && o.constructor) n = o.constructor.name; - if (n === "Map" || n === "Set") return Array.from(o); - if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; - return arr2; - } - function _nonIterableSpread() { - throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } + var fullPath = buildFullPath(config.baseURL, config.url); + request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true); - function bind(fn, thisArg) { - return function wrap() { - return fn.apply(thisArg, arguments); - }; - } + // Set the request timeout in MS + request.timeout = config.timeout; - // utils is a library of generic helper functions non-specific to axios - - var toString = Object.prototype.toString; - var getPrototypeOf = Object.getPrototypeOf; - var kindOf = function (cache) { - return function (thing) { - var str = toString.call(thing); - return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase()); - }; - }(Object.create(null)); - var kindOfTest = function kindOfTest(type) { - type = type.toLowerCase(); - return function (thing) { - return kindOf(thing) === type; - }; - }; - var typeOfTest = function typeOfTest(type) { - return function (thing) { - return _typeof(thing) === type; - }; - }; - - /** - * Determine if a value is an Array - * - * @param {Object} val The value to test - * - * @returns {boolean} True if value is an Array, otherwise false - */ - var isArray = Array.isArray; - - /** - * Determine if a value is undefined - * - * @param {*} val The value to test - * - * @returns {boolean} True if the value is undefined, otherwise false - */ - var isUndefined = typeOfTest('undefined'); - - /** - * Determine if a value is a Buffer - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a Buffer, otherwise false - */ - function isBuffer(val) { - return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor) && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val); - } - - /** - * Determine if a value is an ArrayBuffer - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is an ArrayBuffer, otherwise false - */ - var isArrayBuffer = kindOfTest('ArrayBuffer'); - - /** - * Determine if a value is a view on an ArrayBuffer - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false - */ - function isArrayBufferView(val) { - var result; - if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) { - result = ArrayBuffer.isView(val); - } else { - result = val && val.buffer && isArrayBuffer(val.buffer); - } - return result; - } - - /** - * Determine if a value is a String - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a String, otherwise false - */ - var isString = typeOfTest('string'); - - /** - * Determine if a value is a Function - * - * @param {*} val The value to test - * @returns {boolean} True if value is a Function, otherwise false - */ - var isFunction = typeOfTest('function'); - - /** - * Determine if a value is a Number - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a Number, otherwise false - */ - var isNumber = typeOfTest('number'); - - /** - * Determine if a value is an Object - * - * @param {*} thing The value to test - * - * @returns {boolean} True if value is an Object, otherwise false - */ - var isObject = function isObject(thing) { - return thing !== null && _typeof(thing) === 'object'; - }; - - /** - * Determine if a value is a Boolean - * - * @param {*} thing The value to test - * @returns {boolean} True if value is a Boolean, otherwise false - */ - var isBoolean = function isBoolean(thing) { - return thing === true || thing === false; - }; - - /** - * Determine if a value is a plain Object - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a plain Object, otherwise false - */ - var isPlainObject = function isPlainObject(val) { - if (kindOf(val) !== 'object') { - return false; - } - var prototype = getPrototypeOf(val); - return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val); - }; - - /** - * Determine if a value is a Date - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a Date, otherwise false - */ - var isDate = kindOfTest('Date'); - - /** - * Determine if a value is a File - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a File, otherwise false - */ - var isFile = kindOfTest('File'); - - /** - * Determine if a value is a Blob - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a Blob, otherwise false - */ - var isBlob = kindOfTest('Blob'); - - /** - * Determine if a value is a FileList - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a File, otherwise false - */ - var isFileList = kindOfTest('FileList'); - - /** - * Determine if a value is a Stream - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a Stream, otherwise false - */ - var isStream = function isStream(val) { - return isObject(val) && isFunction(val.pipe); - }; - - /** - * Determine if a value is a FormData - * - * @param {*} thing The value to test - * - * @returns {boolean} True if value is an FormData, otherwise false - */ - var isFormData = function isFormData(thing) { - var kind; - return thing && (typeof FormData === 'function' && thing instanceof FormData || isFunction(thing.append) && ((kind = kindOf(thing)) === 'formdata' || - // detect form-data instance - kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')); - }; - - /** - * Determine if a value is a URLSearchParams object - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a URLSearchParams object, otherwise false - */ - var isURLSearchParams = kindOfTest('URLSearchParams'); - - /** - * Trim excess whitespace off the beginning and end of a string - * - * @param {String} str The String to trim - * - * @returns {String} The String freed of excess whitespace - */ - var trim = function trim(str) { - return str.trim ? str.trim() : str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''); - }; - - /** - * Iterate over an Array or an Object invoking a function for each item. - * - * If `obj` is an Array callback will be called passing - * the value, index, and complete array for each item. - * - * If 'obj' is an Object callback will be called passing - * the value, key, and complete object for each property. - * - * @param {Object|Array} obj The object to iterate - * @param {Function} fn The callback to invoke for each item - * - * @param {Boolean} [allOwnKeys = false] - * @returns {any} - */ - function forEach(obj, fn) { - var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}, - _ref$allOwnKeys = _ref.allOwnKeys, - allOwnKeys = _ref$allOwnKeys === void 0 ? false : _ref$allOwnKeys; - // Don't bother if no value provided - if (obj === null || typeof obj === 'undefined') { - return; - } - var i; - var l; - - // Force an array if not already something iterable - if (_typeof(obj) !== 'object') { - /*eslint no-param-reassign:0*/ - obj = [obj]; - } - if (isArray(obj)) { - // Iterate over array values - for (i = 0, l = obj.length; i < l; i++) { - fn.call(null, obj[i], i, obj); - } - } else { - // Iterate over object keys - var keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj); - var len = keys.length; - var key; - for (i = 0; i < len; i++) { - key = keys[i]; - fn.call(null, obj[key], key, obj); - } - } - } - function findKey(obj, key) { - key = key.toLowerCase(); - var keys = Object.keys(obj); - var i = keys.length; - var _key; - while (i-- > 0) { - _key = keys[i]; - if (key === _key.toLowerCase()) { - return _key; - } - } - return null; - } - var _global = function () { - /*eslint no-undef:0*/ - if (typeof globalThis !== "undefined") return globalThis; - return typeof self !== "undefined" ? self : typeof window !== 'undefined' ? window : global; - }(); - var isContextDefined = function isContextDefined(context) { - return !isUndefined(context) && context !== _global; - }; - - /** - * Accepts varargs expecting each argument to be an object, then - * immutably merges the properties of each object and returns result. - * - * When multiple objects contain the same key the later object in - * the arguments list will take precedence. - * - * Example: - * - * ```js - * var result = merge({foo: 123}, {foo: 456}); - * console.log(result.foo); // outputs 456 - * ``` - * - * @param {Object} obj1 Object to merge - * - * @returns {Object} Result of all merge properties - */ - function /* obj1, obj2, obj3, ... */ - merge() { - var _ref2 = isContextDefined(this) && this || {}, - caseless = _ref2.caseless; - var result = {}; - var assignValue = function assignValue(val, key) { - var targetKey = caseless && findKey(result, key) || key; - if (isPlainObject(result[targetKey]) && isPlainObject(val)) { - result[targetKey] = merge(result[targetKey], val); - } else if (isPlainObject(val)) { - result[targetKey] = merge({}, val); - } else if (isArray(val)) { - result[targetKey] = val.slice(); - } else { - result[targetKey] = val; - } - }; - for (var i = 0, l = arguments.length; i < l; i++) { - arguments[i] && forEach(arguments[i], assignValue); - } - return result; - } - - /** - * Extends object a by mutably adding to it the properties of object b. - * - * @param {Object} a The object to be extended - * @param {Object} b The object to copy properties from - * @param {Object} thisArg The object to bind function to - * - * @param {Boolean} [allOwnKeys] - * @returns {Object} The resulting value of object a - */ - var extend = function extend(a, b, thisArg) { - var _ref3 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}, - allOwnKeys = _ref3.allOwnKeys; - forEach(b, function (val, key) { - if (thisArg && isFunction(val)) { - a[key] = bind(val, thisArg); - } else { - a[key] = val; - } - }, { - allOwnKeys: allOwnKeys - }); - return a; - }; - - /** - * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM) - * - * @param {string} content with BOM - * - * @returns {string} content value without BOM - */ - var stripBOM = function stripBOM(content) { - if (content.charCodeAt(0) === 0xFEFF) { - content = content.slice(1); - } - return content; - }; - - /** - * Inherit the prototype methods from one constructor into another - * @param {function} constructor - * @param {function} superConstructor - * @param {object} [props] - * @param {object} [descriptors] - * - * @returns {void} - */ - var inherits = function inherits(constructor, superConstructor, props, descriptors) { - constructor.prototype = Object.create(superConstructor.prototype, descriptors); - constructor.prototype.constructor = constructor; - Object.defineProperty(constructor, 'super', { - value: superConstructor.prototype - }); - props && Object.assign(constructor.prototype, props); - }; - - /** - * Resolve object with deep prototype chain to a flat object - * @param {Object} sourceObj source object - * @param {Object} [destObj] - * @param {Function|Boolean} [filter] - * @param {Function} [propFilter] - * - * @returns {Object} - */ - var toFlatObject = function toFlatObject(sourceObj, destObj, filter, propFilter) { - var props; - var i; - var prop; - var merged = {}; - destObj = destObj || {}; - // eslint-disable-next-line no-eq-null,eqeqeq - if (sourceObj == null) return destObj; - do { - props = Object.getOwnPropertyNames(sourceObj); - i = props.length; - while (i-- > 0) { - prop = props[i]; - if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) { - destObj[prop] = sourceObj[prop]; - merged[prop] = true; - } - } - sourceObj = filter !== false && getPrototypeOf(sourceObj); - } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype); - return destObj; - }; - - /** - * Determines whether a string ends with the characters of a specified string - * - * @param {String} str - * @param {String} searchString - * @param {Number} [position= 0] - * - * @returns {boolean} - */ - var endsWith = function endsWith(str, searchString, position) { - str = String(str); - if (position === undefined || position > str.length) { - position = str.length; - } - position -= searchString.length; - var lastIndex = str.indexOf(searchString, position); - return lastIndex !== -1 && lastIndex === position; - }; - - /** - * Returns new array from array like object or null if failed - * - * @param {*} [thing] - * - * @returns {?Array} - */ - var toArray = function toArray(thing) { - if (!thing) return null; - if (isArray(thing)) return thing; - var i = thing.length; - if (!isNumber(i)) return null; - var arr = new Array(i); - while (i-- > 0) { - arr[i] = thing[i]; - } - return arr; - }; - - /** - * Checking if the Uint8Array exists and if it does, it returns a function that checks if the - * thing passed in is an instance of Uint8Array - * - * @param {TypedArray} - * - * @returns {Array} - */ - // eslint-disable-next-line func-names - var isTypedArray = function (TypedArray) { - // eslint-disable-next-line func-names - return function (thing) { - return TypedArray && thing instanceof TypedArray; - }; - }(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array)); - - /** - * For each entry in the object, call the function with the key and value. - * - * @param {Object} obj - The object to iterate over. - * @param {Function} fn - The function to call for each entry. - * - * @returns {void} - */ - var forEachEntry = function forEachEntry(obj, fn) { - var generator = obj && obj[Symbol.iterator]; - var iterator = generator.call(obj); - var result; - while ((result = iterator.next()) && !result.done) { - var pair = result.value; - fn.call(obj, pair[0], pair[1]); - } - }; - - /** - * It takes a regular expression and a string, and returns an array of all the matches - * - * @param {string} regExp - The regular expression to match against. - * @param {string} str - The string to search. - * - * @returns {Array} - */ - var matchAll = function matchAll(regExp, str) { - var matches; - var arr = []; - while ((matches = regExp.exec(str)) !== null) { - arr.push(matches); - } - return arr; - }; - - /* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */ - var isHTMLForm = kindOfTest('HTMLFormElement'); - var toCamelCase = function toCamelCase(str) { - return str.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g, function replacer(m, p1, p2) { - return p1.toUpperCase() + p2; - }); - }; - - /* Creating a function that will check if an object has a property. */ - var hasOwnProperty = function (_ref4) { - var hasOwnProperty = _ref4.hasOwnProperty; - return function (obj, prop) { - return hasOwnProperty.call(obj, prop); - }; - }(Object.prototype); - - /** - * Determine if a value is a RegExp object - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a RegExp object, otherwise false - */ - var isRegExp = kindOfTest('RegExp'); - var reduceDescriptors = function reduceDescriptors(obj, reducer) { - var descriptors = Object.getOwnPropertyDescriptors(obj); - var reducedDescriptors = {}; - forEach(descriptors, function (descriptor, name) { - var ret; - if ((ret = reducer(descriptor, name, obj)) !== false) { - reducedDescriptors[name] = ret || descriptor; - } - }); - Object.defineProperties(obj, reducedDescriptors); - }; - - /** - * Makes all methods read-only - * @param {Object} obj - */ - - var freezeMethods = function freezeMethods(obj) { - reduceDescriptors(obj, function (descriptor, name) { - // skip restricted props in strict mode - if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) { - return false; - } - var value = obj[name]; - if (!isFunction(value)) return; - descriptor.enumerable = false; - if ('writable' in descriptor) { - descriptor.writable = false; + function onloadend() { + if (!request) { return; } - if (!descriptor.set) { - descriptor.set = function () { - throw Error('Can not rewrite read-only method \'' + name + '\''); - }; - } - }); - }; - var toObjectSet = function toObjectSet(arrayOrString, delimiter) { - var obj = {}; - var define = function define(arr) { - arr.forEach(function (value) { - obj[value] = true; - }); - }; - isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter)); - return obj; - }; - var noop = function noop() {}; - var toFiniteNumber = function toFiniteNumber(value, defaultValue) { - value = +value; - return Number.isFinite(value) ? value : defaultValue; - }; - var ALPHA = 'abcdefghijklmnopqrstuvwxyz'; - var DIGIT = '0123456789'; - var ALPHABET = { - DIGIT: DIGIT, - ALPHA: ALPHA, - ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT - }; - var generateString = function generateString() { - var size = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 16; - var alphabet = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ALPHABET.ALPHA_DIGIT; - var str = ''; - var length = alphabet.length; - while (size--) { - str += alphabet[Math.random() * length | 0]; - } - return str; - }; + // Prepare the response + var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null; + var responseData = !responseType || responseType === 'text' || responseType === 'json' ? + request.responseText : request.response; + var response = { + data: responseData, + status: request.status, + statusText: request.statusText, + headers: responseHeaders, + config: config, + request: request + }; - /** - * If the thing is a FormData object, return true, otherwise return false. - * - * @param {unknown} thing - The thing to check. - * - * @returns {boolean} - */ - function isSpecCompliantForm(thing) { - return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]); - } - var toJSONObject = function toJSONObject(obj) { - var stack = new Array(10); - var visit = function visit(source, i) { - if (isObject(source)) { - if (stack.indexOf(source) >= 0) { + settle(resolve, reject, response); + + // Clean up request + request = null; + } + + if ('onloadend' in request) { + // Use onloadend if available + request.onloadend = onloadend; + } else { + // Listen for ready state to emulate onloadend + request.onreadystatechange = function handleLoad() { + if (!request || request.readyState !== 4) { return; } - if (!('toJSON' in source)) { - stack[i] = source; - var target = isArray(source) ? [] : {}; - forEach(source, function (value, key) { - var reducedValue = visit(value, i + 1); - !isUndefined(reducedValue) && (target[key] = reducedValue); - }); - stack[i] = undefined; - return target; - } - } - return source; - }; - return visit(obj, 0); - }; - var isAsyncFn = kindOfTest('AsyncFunction'); - var isThenable = function isThenable(thing) { - return thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing["catch"]); - }; - var utils$1 = { - isArray: isArray, - isArrayBuffer: isArrayBuffer, - isBuffer: isBuffer, - isFormData: isFormData, - isArrayBufferView: isArrayBufferView, - isString: isString, - isNumber: isNumber, - isBoolean: isBoolean, - isObject: isObject, - isPlainObject: isPlainObject, - isUndefined: isUndefined, - isDate: isDate, - isFile: isFile, - isBlob: isBlob, - isRegExp: isRegExp, - isFunction: isFunction, - isStream: isStream, - isURLSearchParams: isURLSearchParams, - isTypedArray: isTypedArray, - isFileList: isFileList, - forEach: forEach, - merge: merge, - extend: extend, - trim: trim, - stripBOM: stripBOM, - inherits: inherits, - toFlatObject: toFlatObject, - kindOf: kindOf, - kindOfTest: kindOfTest, - endsWith: endsWith, - toArray: toArray, - forEachEntry: forEachEntry, - matchAll: matchAll, - isHTMLForm: isHTMLForm, - hasOwnProperty: hasOwnProperty, - hasOwnProp: hasOwnProperty, - // an alias to avoid ESLint no-prototype-builtins detection - reduceDescriptors: reduceDescriptors, - freezeMethods: freezeMethods, - toObjectSet: toObjectSet, - toCamelCase: toCamelCase, - noop: noop, - toFiniteNumber: toFiniteNumber, - findKey: findKey, - global: _global, - isContextDefined: isContextDefined, - ALPHABET: ALPHABET, - generateString: generateString, - isSpecCompliantForm: isSpecCompliantForm, - toJSONObject: toJSONObject, - isAsyncFn: isAsyncFn, - isThenable: isThenable - }; - /** - * Create an Error with the specified message, config, error code, request and response. - * - * @param {string} message The error message. - * @param {string} [code] The error code (for example, 'ECONNABORTED'). - * @param {Object} [config] The config. - * @param {Object} [request] The request. - * @param {Object} [response] The response. - * - * @returns {Error} The created error. - */ - function AxiosError(message, code, config, request, response) { - Error.call(this); - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } else { - this.stack = new Error().stack; - } - this.message = message; - this.name = 'AxiosError'; - code && (this.code = code); - config && (this.config = config); - request && (this.request = request); - response && (this.response = response); - } - utils$1.inherits(AxiosError, Error, { - toJSON: function toJSON() { - return { - // Standard - message: this.message, - name: this.name, - // Microsoft - description: this.description, - number: this.number, - // Mozilla - fileName: this.fileName, - lineNumber: this.lineNumber, - columnNumber: this.columnNumber, - stack: this.stack, - // Axios - config: utils$1.toJSONObject(this.config), - code: this.code, - status: this.response && this.response.status ? this.response.status : null + // The request errored out and we didn't get a response, this will be + // handled by onerror instead + // With one exception: request that using file: protocol, most browsers + // will return status as 0 even though it's a successful request + if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) { + return; + } + // readystate handler is calling before onerror or ontimeout handlers, + // so we should call onloadend on the next 'tick' + setTimeout(onloadend); }; } - }); - var prototype$1 = AxiosError.prototype; - var descriptors = {}; - ['ERR_BAD_OPTION_VALUE', 'ERR_BAD_OPTION', 'ECONNABORTED', 'ETIMEDOUT', 'ERR_NETWORK', 'ERR_FR_TOO_MANY_REDIRECTS', 'ERR_DEPRECATED', 'ERR_BAD_RESPONSE', 'ERR_BAD_REQUEST', 'ERR_CANCELED', 'ERR_NOT_SUPPORT', 'ERR_INVALID_URL' - // eslint-disable-next-line func-names - ].forEach(function (code) { - descriptors[code] = { - value: code + + // Handle browser request cancellation (as opposed to a manual cancellation) + request.onabort = function handleAbort() { + if (!request) { + return; + } + + reject(createError('Request aborted', config, 'ECONNABORTED', request)); + + // Clean up request + request = null; }; - }); - Object.defineProperties(AxiosError, descriptors); - Object.defineProperty(prototype$1, 'isAxiosError', { - value: true - }); - // eslint-disable-next-line func-names - AxiosError.from = function (error, code, config, request, response, customProps) { - var axiosError = Object.create(prototype$1); - utils$1.toFlatObject(error, axiosError, function filter(obj) { - return obj !== Error.prototype; - }, function (prop) { - return prop !== 'isAxiosError'; - }); - AxiosError.call(axiosError, error.message, code, config, request, response); - axiosError.cause = error; - axiosError.name = error.name; - customProps && Object.assign(axiosError, customProps); - return axiosError; - }; + // Handle low level network errors + request.onerror = function handleError() { + // Real errors are hidden from us by the browser + // onerror should only fire if it's a network error + reject(createError('Network Error', config, null, request)); - // eslint-disable-next-line strict - var httpAdapter = null; + // Clean up request + request = null; + }; - /** - * Determines if the given thing is a array or js object. - * - * @param {string} thing - The object or array to be visited. - * - * @returns {boolean} - */ - function isVisitable(thing) { - return utils$1.isPlainObject(thing) || utils$1.isArray(thing); - } + // Handle timeout + request.ontimeout = function handleTimeout() { + var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded'; + if (config.timeoutErrorMessage) { + timeoutErrorMessage = config.timeoutErrorMessage; + } + reject(createError( + timeoutErrorMessage, + config, + config.transitional && config.transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED', + request)); - /** - * It removes the brackets from the end of a string - * - * @param {string} key - The key of the parameter. - * - * @returns {string} the key without the brackets. - */ - function removeBrackets(key) { - return utils$1.endsWith(key, '[]') ? key.slice(0, -2) : key; - } + // Clean up request + request = null; + }; - /** - * It takes a path, a key, and a boolean, and returns a string - * - * @param {string} path - The path to the current key. - * @param {string} key - The key of the current object being iterated over. - * @param {string} dots - If true, the key will be rendered with dots instead of brackets. - * - * @returns {string} The path to the current key. - */ - function renderKey(path, key, dots) { - if (!path) return key; - return path.concat(key).map(function each(token, i) { - // eslint-disable-next-line no-param-reassign - token = removeBrackets(token); - return !dots && i ? '[' + token + ']' : token; - }).join(dots ? '.' : ''); - } + // Add xsrf header + // This is only done if running in a standard browser environment. + // Specifically not if we're in a web worker, or react-native. + if (utils.isStandardBrowserEnv()) { + // Add xsrf header + var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ? + cookies.read(config.xsrfCookieName) : + undefined; - /** - * If the array is an array and none of its elements are visitable, then it's a flat array. - * - * @param {Array} arr - The array to check - * - * @returns {boolean} - */ - function isFlatArray(arr) { - return utils$1.isArray(arr) && !arr.some(isVisitable); - } - var predicates = utils$1.toFlatObject(utils$1, {}, null, function filter(prop) { - return /^is[A-Z]/.test(prop); - }); - - /** - * Convert a data object to FormData - * - * @param {Object} obj - * @param {?Object} [formData] - * @param {?Object} [options] - * @param {Function} [options.visitor] - * @param {Boolean} [options.metaTokens = true] - * @param {Boolean} [options.dots = false] - * @param {?Boolean} [options.indexes = false] - * - * @returns {Object} - **/ - - /** - * It converts an object into a FormData object - * - * @param {Object} obj - The object to convert to form data. - * @param {string} formData - The FormData object to append to. - * @param {Object} options - * - * @returns - */ - function toFormData(obj, formData, options) { - if (!utils$1.isObject(obj)) { - throw new TypeError('target must be an object'); + if (xsrfValue) { + requestHeaders[config.xsrfHeaderName] = xsrfValue; + } } - // eslint-disable-next-line no-param-reassign - formData = formData || new (FormData)(); - - // eslint-disable-next-line no-param-reassign - options = utils$1.toFlatObject(options, { - metaTokens: true, - dots: false, - indexes: false - }, false, function defined(option, source) { - // eslint-disable-next-line no-eq-null,eqeqeq - return !utils$1.isUndefined(source[option]); - }); - var metaTokens = options.metaTokens; - // eslint-disable-next-line no-use-before-define - var visitor = options.visitor || defaultVisitor; - var dots = options.dots; - var indexes = options.indexes; - var _Blob = options.Blob || typeof Blob !== 'undefined' && Blob; - var useBlob = _Blob && utils$1.isSpecCompliantForm(formData); - if (!utils$1.isFunction(visitor)) { - throw new TypeError('visitor must be a function'); - } - function convertValue(value) { - if (value === null) return ''; - if (utils$1.isDate(value)) { - return value.toISOString(); - } - if (!useBlob && utils$1.isBlob(value)) { - throw new AxiosError('Blob is not supported. Use a Buffer instead.'); - } - if (utils$1.isArrayBuffer(value) || utils$1.isTypedArray(value)) { - return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value); - } - return value; - } - - /** - * Default visitor. - * - * @param {*} value - * @param {String|Number} key - * @param {Array} path - * @this {FormData} - * - * @returns {boolean} return true to visit the each prop of the value recursively - */ - function defaultVisitor(value, key, path) { - var arr = value; - if (value && !path && _typeof(value) === 'object') { - if (utils$1.endsWith(key, '{}')) { - // eslint-disable-next-line no-param-reassign - key = metaTokens ? key : key.slice(0, -2); - // eslint-disable-next-line no-param-reassign - value = JSON.stringify(value); - } else if (utils$1.isArray(value) && isFlatArray(value) || (utils$1.isFileList(value) || utils$1.endsWith(key, '[]')) && (arr = utils$1.toArray(value))) { - // eslint-disable-next-line no-param-reassign - key = removeBrackets(key); - arr.forEach(function each(el, index) { - !(utils$1.isUndefined(el) || el === null) && formData.append( - // eslint-disable-next-line no-nested-ternary - indexes === true ? renderKey([key], index, dots) : indexes === null ? key : key + '[]', convertValue(el)); - }); - return false; - } - } - if (isVisitable(value)) { - return true; - } - formData.append(renderKey(path, key, dots), convertValue(value)); - return false; - } - var stack = []; - var exposedHelpers = Object.assign(predicates, { - defaultVisitor: defaultVisitor, - convertValue: convertValue, - isVisitable: isVisitable - }); - function build(value, path) { - if (utils$1.isUndefined(value)) return; - if (stack.indexOf(value) !== -1) { - throw Error('Circular reference detected in ' + path.join('.')); - } - stack.push(value); - utils$1.forEach(value, function each(el, key) { - var result = !(utils$1.isUndefined(el) || el === null) && visitor.call(formData, el, utils$1.isString(key) ? key.trim() : key, path, exposedHelpers); - if (result === true) { - build(el, path ? path.concat(key) : [key]); + // Add headers to the request + if ('setRequestHeader' in request) { + utils.forEach(requestHeaders, function setRequestHeader(val, key) { + if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') { + // Remove Content-Type if data is undefined + delete requestHeaders[key]; + } else { + // Otherwise add header to the request + request.setRequestHeader(key, val); } }); - stack.pop(); } - if (!utils$1.isObject(obj)) { - throw new TypeError('data must be an object'); + + // Add withCredentials to request if needed + if (!utils.isUndefined(config.withCredentials)) { + request.withCredentials = !!config.withCredentials; } - build(obj); - return formData; + + // Add responseType to request if needed + if (responseType && responseType !== 'json') { + request.responseType = config.responseType; + } + + // Handle progress if needed + if (typeof config.onDownloadProgress === 'function') { + request.addEventListener('progress', config.onDownloadProgress); + } + + // Not all browsers support upload events + if (typeof config.onUploadProgress === 'function' && request.upload) { + request.upload.addEventListener('progress', config.onUploadProgress); + } + + if (config.cancelToken) { + // Handle cancellation + config.cancelToken.promise.then(function onCanceled(cancel) { + if (!request) { + return; + } + + request.abort(); + reject(cancel); + // Clean up request + request = null; + }); + } + + if (!requestData) { + requestData = null; + } + + // Send the request + request.send(requestData); + }); +}; + + +/***/ }), + +/***/ "./lib/axios.js": +/*!**********************!*\ + !*** ./lib/axios.js ***! + \**********************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(/*! ./utils */ "./lib/utils.js"); +var bind = __webpack_require__(/*! ./helpers/bind */ "./lib/helpers/bind.js"); +var Axios = __webpack_require__(/*! ./core/Axios */ "./lib/core/Axios.js"); +var mergeConfig = __webpack_require__(/*! ./core/mergeConfig */ "./lib/core/mergeConfig.js"); +var defaults = __webpack_require__(/*! ./defaults */ "./lib/defaults.js"); + +/** + * Create an instance of Axios + * + * @param {Object} defaultConfig The default config for the instance + * @return {Axios} A new instance of Axios + */ +function createInstance(defaultConfig) { + var context = new Axios(defaultConfig); + var instance = bind(Axios.prototype.request, context); + + // Copy axios.prototype to instance + utils.extend(instance, Axios.prototype, context); + + // Copy context to instance + utils.extend(instance, context); + + return instance; +} + +// Create the default instance to be exported +var axios = createInstance(defaults); + +// Expose Axios class to allow class inheritance +axios.Axios = Axios; + +// Factory for creating new instances +axios.create = function create(instanceConfig) { + return createInstance(mergeConfig(axios.defaults, instanceConfig)); +}; + +// Expose Cancel & CancelToken +axios.Cancel = __webpack_require__(/*! ./cancel/Cancel */ "./lib/cancel/Cancel.js"); +axios.CancelToken = __webpack_require__(/*! ./cancel/CancelToken */ "./lib/cancel/CancelToken.js"); +axios.isCancel = __webpack_require__(/*! ./cancel/isCancel */ "./lib/cancel/isCancel.js"); + +// Expose all/spread +axios.all = function all(promises) { + return Promise.all(promises); +}; +axios.spread = __webpack_require__(/*! ./helpers/spread */ "./lib/helpers/spread.js"); + +// Expose isAxiosError +axios.isAxiosError = __webpack_require__(/*! ./helpers/isAxiosError */ "./lib/helpers/isAxiosError.js"); + +module.exports = axios; + +// Allow use of default import syntax in TypeScript +module.exports.default = axios; + + +/***/ }), + +/***/ "./lib/cancel/Cancel.js": +/*!******************************!*\ + !*** ./lib/cancel/Cancel.js ***! + \******************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/** + * A `Cancel` is an object that is thrown when an operation is canceled. + * + * @class + * @param {string=} message The message. + */ +function Cancel(message) { + this.message = message; +} + +Cancel.prototype.toString = function toString() { + return 'Cancel' + (this.message ? ': ' + this.message : ''); +}; + +Cancel.prototype.__CANCEL__ = true; + +module.exports = Cancel; + + +/***/ }), + +/***/ "./lib/cancel/CancelToken.js": +/*!***********************************!*\ + !*** ./lib/cancel/CancelToken.js ***! + \***********************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Cancel = __webpack_require__(/*! ./Cancel */ "./lib/cancel/Cancel.js"); + +/** + * A `CancelToken` is an object that can be used to request cancellation of an operation. + * + * @class + * @param {Function} executor The executor function. + */ +function CancelToken(executor) { + if (typeof executor !== 'function') { + throw new TypeError('executor must be a function.'); } - /** - * It encodes a string by replacing all characters that are not in the unreserved set with - * their percent-encoded equivalents - * - * @param {string} str - The string to encode. - * - * @returns {string} The encoded string. - */ - function encode$1(str) { - var charMap = { - '!': '%21', - "'": '%27', - '(': '%28', - ')': '%29', - '~': '%7E', - '%20': '+', - '%00': '\x00' + var resolvePromise; + this.promise = new Promise(function promiseExecutor(resolve) { + resolvePromise = resolve; + }); + + var token = this; + executor(function cancel(message) { + if (token.reason) { + // Cancellation has already been requested + return; + } + + token.reason = new Cancel(message); + resolvePromise(token.reason); + }); +} + +/** + * Throws a `Cancel` if cancellation has been requested. + */ +CancelToken.prototype.throwIfRequested = function throwIfRequested() { + if (this.reason) { + throw this.reason; + } +}; + +/** + * Returns an object that contains a new `CancelToken` and a function that, when called, + * cancels the `CancelToken`. + */ +CancelToken.source = function source() { + var cancel; + var token = new CancelToken(function executor(c) { + cancel = c; + }); + return { + token: token, + cancel: cancel + }; +}; + +module.exports = CancelToken; + + +/***/ }), + +/***/ "./lib/cancel/isCancel.js": +/*!********************************!*\ + !*** ./lib/cancel/isCancel.js ***! + \********************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +module.exports = function isCancel(value) { + return !!(value && value.__CANCEL__); +}; + + +/***/ }), + +/***/ "./lib/core/Axios.js": +/*!***************************!*\ + !*** ./lib/core/Axios.js ***! + \***************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(/*! ./../utils */ "./lib/utils.js"); +var buildURL = __webpack_require__(/*! ../helpers/buildURL */ "./lib/helpers/buildURL.js"); +var InterceptorManager = __webpack_require__(/*! ./InterceptorManager */ "./lib/core/InterceptorManager.js"); +var dispatchRequest = __webpack_require__(/*! ./dispatchRequest */ "./lib/core/dispatchRequest.js"); +var mergeConfig = __webpack_require__(/*! ./mergeConfig */ "./lib/core/mergeConfig.js"); +var validator = __webpack_require__(/*! ../helpers/validator */ "./lib/helpers/validator.js"); + +var validators = validator.validators; +/** + * Create a new instance of Axios + * + * @param {Object} instanceConfig The default config for the instance + */ +function Axios(instanceConfig) { + this.defaults = instanceConfig; + this.interceptors = { + request: new InterceptorManager(), + response: new InterceptorManager() + }; +} + +/** + * Dispatch a request + * + * @param {Object} config The config specific for this request (merged with this.defaults) + */ +Axios.prototype.request = function request(config) { + /*eslint no-param-reassign:0*/ + // Allow for axios('example/url'[, config]) a la fetch API + if (typeof config === 'string') { + config = arguments[1] || {}; + config.url = arguments[0]; + } else { + config = config || {}; + } + + config = mergeConfig(this.defaults, config); + + // Set config.method + if (config.method) { + config.method = config.method.toLowerCase(); + } else if (this.defaults.method) { + config.method = this.defaults.method.toLowerCase(); + } else { + config.method = 'get'; + } + + var transitional = config.transitional; + + if (transitional !== undefined) { + validator.assertOptions(transitional, { + silentJSONParsing: validators.transitional(validators.boolean, '1.0.0'), + forcedJSONParsing: validators.transitional(validators.boolean, '1.0.0'), + clarifyTimeoutError: validators.transitional(validators.boolean, '1.0.0') + }, false); + } + + // filter out skipped interceptors + var requestInterceptorChain = []; + var synchronousRequestInterceptors = true; + this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) { + if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) { + return; + } + + synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous; + + requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected); + }); + + var responseInterceptorChain = []; + this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) { + responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected); + }); + + var promise; + + if (!synchronousRequestInterceptors) { + var chain = [dispatchRequest, undefined]; + + Array.prototype.unshift.apply(chain, requestInterceptorChain); + chain = chain.concat(responseInterceptorChain); + + promise = Promise.resolve(config); + while (chain.length) { + promise = promise.then(chain.shift(), chain.shift()); + } + + return promise; + } + + + var newConfig = config; + while (requestInterceptorChain.length) { + var onFulfilled = requestInterceptorChain.shift(); + var onRejected = requestInterceptorChain.shift(); + try { + newConfig = onFulfilled(newConfig); + } catch (error) { + onRejected(error); + break; + } + } + + try { + promise = dispatchRequest(newConfig); + } catch (error) { + return Promise.reject(error); + } + + while (responseInterceptorChain.length) { + promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift()); + } + + return promise; +}; + +Axios.prototype.getUri = function getUri(config) { + config = mergeConfig(this.defaults, config); + return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\?/, ''); +}; + +// Provide aliases for supported request methods +utils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) { + /*eslint func-names:0*/ + Axios.prototype[method] = function(url, config) { + return this.request(mergeConfig(config || {}, { + method: method, + url: url, + data: (config || {}).data + })); + }; +}); + +utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { + /*eslint func-names:0*/ + Axios.prototype[method] = function(url, data, config) { + return this.request(mergeConfig(config || {}, { + method: method, + url: url, + data: data + })); + }; +}); + +module.exports = Axios; + + +/***/ }), + +/***/ "./lib/core/InterceptorManager.js": +/*!****************************************!*\ + !*** ./lib/core/InterceptorManager.js ***! + \****************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(/*! ./../utils */ "./lib/utils.js"); + +function InterceptorManager() { + this.handlers = []; +} + +/** + * Add a new interceptor to the stack + * + * @param {Function} fulfilled The function to handle `then` for a `Promise` + * @param {Function} rejected The function to handle `reject` for a `Promise` + * + * @return {Number} An ID used to remove interceptor later + */ +InterceptorManager.prototype.use = function use(fulfilled, rejected, options) { + this.handlers.push({ + fulfilled: fulfilled, + rejected: rejected, + synchronous: options ? options.synchronous : false, + runWhen: options ? options.runWhen : null + }); + return this.handlers.length - 1; +}; + +/** + * Remove an interceptor from the stack + * + * @param {Number} id The ID that was returned by `use` + */ +InterceptorManager.prototype.eject = function eject(id) { + if (this.handlers[id]) { + this.handlers[id] = null; + } +}; + +/** + * Iterate over all the registered interceptors + * + * This method is particularly useful for skipping over any + * interceptors that may have become `null` calling `eject`. + * + * @param {Function} fn The function to call for each interceptor + */ +InterceptorManager.prototype.forEach = function forEach(fn) { + utils.forEach(this.handlers, function forEachHandler(h) { + if (h !== null) { + fn(h); + } + }); +}; + +module.exports = InterceptorManager; + + +/***/ }), + +/***/ "./lib/core/buildFullPath.js": +/*!***********************************!*\ + !*** ./lib/core/buildFullPath.js ***! + \***********************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var isAbsoluteURL = __webpack_require__(/*! ../helpers/isAbsoluteURL */ "./lib/helpers/isAbsoluteURL.js"); +var combineURLs = __webpack_require__(/*! ../helpers/combineURLs */ "./lib/helpers/combineURLs.js"); + +/** + * Creates a new URL by combining the baseURL with the requestedURL, + * only when the requestedURL is not already an absolute URL. + * If the requestURL is absolute, this function returns the requestedURL untouched. + * + * @param {string} baseURL The base URL + * @param {string} requestedURL Absolute or relative URL to combine + * @returns {string} The combined full path + */ +module.exports = function buildFullPath(baseURL, requestedURL) { + if (baseURL && !isAbsoluteURL(requestedURL)) { + return combineURLs(baseURL, requestedURL); + } + return requestedURL; +}; + + +/***/ }), + +/***/ "./lib/core/createError.js": +/*!*********************************!*\ + !*** ./lib/core/createError.js ***! + \*********************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var enhanceError = __webpack_require__(/*! ./enhanceError */ "./lib/core/enhanceError.js"); + +/** + * Create an Error with the specified message, config, error code, request and response. + * + * @param {string} message The error message. + * @param {Object} config The config. + * @param {string} [code] The error code (for example, 'ECONNABORTED'). + * @param {Object} [request] The request. + * @param {Object} [response] The response. + * @returns {Error} The created error. + */ +module.exports = function createError(message, config, code, request, response) { + var error = new Error(message); + return enhanceError(error, config, code, request, response); +}; + + +/***/ }), + +/***/ "./lib/core/dispatchRequest.js": +/*!*************************************!*\ + !*** ./lib/core/dispatchRequest.js ***! + \*************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(/*! ./../utils */ "./lib/utils.js"); +var transformData = __webpack_require__(/*! ./transformData */ "./lib/core/transformData.js"); +var isCancel = __webpack_require__(/*! ../cancel/isCancel */ "./lib/cancel/isCancel.js"); +var defaults = __webpack_require__(/*! ../defaults */ "./lib/defaults.js"); + +/** + * Throws a `Cancel` if cancellation has been requested. + */ +function throwIfCancellationRequested(config) { + if (config.cancelToken) { + config.cancelToken.throwIfRequested(); + } +} + +/** + * Dispatch a request to the server using the configured adapter. + * + * @param {object} config The config that is to be used for the request + * @returns {Promise} The Promise to be fulfilled + */ +module.exports = function dispatchRequest(config) { + throwIfCancellationRequested(config); + + // Ensure headers exist + config.headers = config.headers || {}; + + // Transform request data + config.data = transformData.call( + config, + config.data, + config.headers, + config.transformRequest + ); + + // Flatten headers + config.headers = utils.merge( + config.headers.common || {}, + config.headers[config.method] || {}, + config.headers + ); + + utils.forEach( + ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], + function cleanHeaderConfig(method) { + delete config.headers[method]; + } + ); + + var adapter = config.adapter || defaults.adapter; + + return adapter(config).then(function onAdapterResolution(response) { + throwIfCancellationRequested(config); + + // Transform response data + response.data = transformData.call( + config, + response.data, + response.headers, + config.transformResponse + ); + + return response; + }, function onAdapterRejection(reason) { + if (!isCancel(reason)) { + throwIfCancellationRequested(config); + + // Transform response data + if (reason && reason.response) { + reason.response.data = transformData.call( + config, + reason.response.data, + reason.response.headers, + config.transformResponse + ); + } + } + + return Promise.reject(reason); + }); +}; + + +/***/ }), + +/***/ "./lib/core/enhanceError.js": +/*!**********************************!*\ + !*** ./lib/core/enhanceError.js ***! + \**********************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/** + * Update an Error with the specified config, error code, and response. + * + * @param {Error} error The error to update. + * @param {Object} config The config. + * @param {string} [code] The error code (for example, 'ECONNABORTED'). + * @param {Object} [request] The request. + * @param {Object} [response] The response. + * @returns {Error} The error. + */ +module.exports = function enhanceError(error, config, code, request, response) { + error.config = config; + if (code) { + error.code = code; + } + + error.request = request; + error.response = response; + error.isAxiosError = true; + + error.toJSON = function toJSON() { + return { + // Standard + message: this.message, + name: this.name, + // Microsoft + description: this.description, + number: this.number, + // Mozilla + fileName: this.fileName, + lineNumber: this.lineNumber, + columnNumber: this.columnNumber, + stack: this.stack, + // Axios + config: this.config, + code: this.code }; - return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) { - return charMap[match]; + }; + return error; +}; + + +/***/ }), + +/***/ "./lib/core/mergeConfig.js": +/*!*********************************!*\ + !*** ./lib/core/mergeConfig.js ***! + \*********************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(/*! ../utils */ "./lib/utils.js"); + +/** + * Config-specific merge-function which creates a new config-object + * by merging two configuration objects together. + * + * @param {Object} config1 + * @param {Object} config2 + * @returns {Object} New object resulting from merging config2 to config1 + */ +module.exports = function mergeConfig(config1, config2) { + // eslint-disable-next-line no-param-reassign + config2 = config2 || {}; + var config = {}; + + var valueFromConfig2Keys = ['url', 'method', 'data']; + var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params']; + var defaultToConfig2Keys = [ + 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer', + 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName', + 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress', + 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent', + 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding' + ]; + var directMergeKeys = ['validateStatus']; + + function getMergedValue(target, source) { + if (utils.isPlainObject(target) && utils.isPlainObject(source)) { + return utils.merge(target, source); + } else if (utils.isPlainObject(source)) { + return utils.merge({}, source); + } else if (utils.isArray(source)) { + return source.slice(); + } + return source; + } + + function mergeDeepProperties(prop) { + if (!utils.isUndefined(config2[prop])) { + config[prop] = getMergedValue(config1[prop], config2[prop]); + } else if (!utils.isUndefined(config1[prop])) { + config[prop] = getMergedValue(undefined, config1[prop]); + } + } + + utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) { + if (!utils.isUndefined(config2[prop])) { + config[prop] = getMergedValue(undefined, config2[prop]); + } + }); + + utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties); + + utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) { + if (!utils.isUndefined(config2[prop])) { + config[prop] = getMergedValue(undefined, config2[prop]); + } else if (!utils.isUndefined(config1[prop])) { + config[prop] = getMergedValue(undefined, config1[prop]); + } + }); + + utils.forEach(directMergeKeys, function merge(prop) { + if (prop in config2) { + config[prop] = getMergedValue(config1[prop], config2[prop]); + } else if (prop in config1) { + config[prop] = getMergedValue(undefined, config1[prop]); + } + }); + + var axiosKeys = valueFromConfig2Keys + .concat(mergeDeepPropertiesKeys) + .concat(defaultToConfig2Keys) + .concat(directMergeKeys); + + var otherKeys = Object + .keys(config1) + .concat(Object.keys(config2)) + .filter(function filterAxiosKeys(key) { + return axiosKeys.indexOf(key) === -1; }); + + utils.forEach(otherKeys, mergeDeepProperties); + + return config; +}; + + +/***/ }), + +/***/ "./lib/core/settle.js": +/*!****************************!*\ + !*** ./lib/core/settle.js ***! + \****************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var createError = __webpack_require__(/*! ./createError */ "./lib/core/createError.js"); + +/** + * Resolve or reject a Promise based on response status. + * + * @param {Function} resolve A function that resolves the promise. + * @param {Function} reject A function that rejects the promise. + * @param {object} response The response. + */ +module.exports = function settle(resolve, reject, response) { + var validateStatus = response.config.validateStatus; + if (!response.status || !validateStatus || validateStatus(response.status)) { + resolve(response); + } else { + reject(createError( + 'Request failed with status code ' + response.status, + response.config, + null, + response.request, + response + )); + } +}; + + +/***/ }), + +/***/ "./lib/core/transformData.js": +/*!***********************************!*\ + !*** ./lib/core/transformData.js ***! + \***********************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(/*! ./../utils */ "./lib/utils.js"); +var defaults = __webpack_require__(/*! ./../defaults */ "./lib/defaults.js"); + +/** + * Transform the data for a request or a response + * + * @param {Object|String} data The data to be transformed + * @param {Array} headers The headers for the request or response + * @param {Array|Function} fns A single function or Array of functions + * @returns {*} The resulting transformed data + */ +module.exports = function transformData(data, headers, fns) { + var context = this || defaults; + /*eslint no-param-reassign:0*/ + utils.forEach(fns, function transform(fn) { + data = fn.call(context, data, headers); + }); + + return data; +}; + + +/***/ }), + +/***/ "./lib/defaults.js": +/*!*************************!*\ + !*** ./lib/defaults.js ***! + \*************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(/*! ./utils */ "./lib/utils.js"); +var normalizeHeaderName = __webpack_require__(/*! ./helpers/normalizeHeaderName */ "./lib/helpers/normalizeHeaderName.js"); +var enhanceError = __webpack_require__(/*! ./core/enhanceError */ "./lib/core/enhanceError.js"); + +var DEFAULT_CONTENT_TYPE = { + 'Content-Type': 'application/x-www-form-urlencoded' +}; + +function setContentTypeIfUnset(headers, value) { + if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) { + headers['Content-Type'] = value; + } +} + +function getDefaultAdapter() { + var adapter; + if (typeof XMLHttpRequest !== 'undefined') { + // For browsers use XHR adapter + adapter = __webpack_require__(/*! ./adapters/xhr */ "./lib/adapters/xhr.js"); + } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') { + // For node use HTTP adapter + adapter = __webpack_require__(/*! ./adapters/http */ "./lib/adapters/xhr.js"); + } + return adapter; +} + +function stringifySafely(rawValue, parser, encoder) { + if (utils.isString(rawValue)) { + try { + (parser || JSON.parse)(rawValue); + return utils.trim(rawValue); + } catch (e) { + if (e.name !== 'SyntaxError') { + throw e; + } + } } - /** - * It takes a params object and converts it to a FormData object - * - * @param {Object} params - The parameters to be converted to a FormData object. - * @param {Object} options - The options object passed to the Axios constructor. - * - * @returns {void} - */ - function AxiosURLSearchParams(params, options) { - this._pairs = []; - params && toFormData(params, this, options); - } - var prototype = AxiosURLSearchParams.prototype; - prototype.append = function append(name, value) { - this._pairs.push([name, value]); - }; - prototype.toString = function toString(encoder) { - var _encode = encoder ? function (value) { - return encoder.call(this, value, encode$1); - } : encode$1; - return this._pairs.map(function each(pair) { - return _encode(pair[0]) + '=' + _encode(pair[1]); - }, '').join('&'); - }; + return (encoder || JSON.stringify)(rawValue); +} - /** - * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their - * URI encoded counterparts - * - * @param {string} val The value to be encoded. - * - * @returns {string} The encoded value. - */ - function encode(val) { - return encodeURIComponent(val).replace(/%3A/gi, ':').replace(/%24/g, '$').replace(/%2C/gi, ',').replace(/%20/g, '+').replace(/%5B/gi, '[').replace(/%5D/gi, ']'); - } +var defaults = { - /** - * Build a URL by appending params to the end - * - * @param {string} url The base of the url (e.g., http://www.google.com) - * @param {object} [params] The params to be appended - * @param {?object} options - * - * @returns {string} The formatted url - */ - function buildURL(url, params, options) { - /*eslint no-param-reassign:0*/ - if (!params) { - return url; - } - var _encode = options && options.encode || encode; - var serializeFn = options && options.serialize; - var serializedParams; - if (serializeFn) { - serializedParams = serializeFn(params, options); - } else { - serializedParams = utils$1.isURLSearchParams(params) ? params.toString() : new AxiosURLSearchParams(params, options).toString(_encode); - } - if (serializedParams) { - var hashmarkIndex = url.indexOf("#"); - if (hashmarkIndex !== -1) { - url = url.slice(0, hashmarkIndex); - } - url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams; - } - return url; - } - - var InterceptorManager = /*#__PURE__*/function () { - function InterceptorManager() { - _classCallCheck(this, InterceptorManager); - this.handlers = []; - } - - /** - * Add a new interceptor to the stack - * - * @param {Function} fulfilled The function to handle `then` for a `Promise` - * @param {Function} rejected The function to handle `reject` for a `Promise` - * - * @return {Number} An ID used to remove interceptor later - */ - _createClass(InterceptorManager, [{ - key: "use", - value: function use(fulfilled, rejected, options) { - this.handlers.push({ - fulfilled: fulfilled, - rejected: rejected, - synchronous: options ? options.synchronous : false, - runWhen: options ? options.runWhen : null - }); - return this.handlers.length - 1; - } - - /** - * Remove an interceptor from the stack - * - * @param {Number} id The ID that was returned by `use` - * - * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise - */ - }, { - key: "eject", - value: function eject(id) { - if (this.handlers[id]) { - this.handlers[id] = null; - } - } - - /** - * Clear all interceptors from the stack - * - * @returns {void} - */ - }, { - key: "clear", - value: function clear() { - if (this.handlers) { - this.handlers = []; - } - } - - /** - * Iterate over all the registered interceptors - * - * This method is particularly useful for skipping over any - * interceptors that may have become `null` calling `eject`. - * - * @param {Function} fn The function to call for each interceptor - * - * @returns {void} - */ - }, { - key: "forEach", - value: function forEach(fn) { - utils$1.forEach(this.handlers, function forEachHandler(h) { - if (h !== null) { - fn(h); - } - }); - } - }]); - return InterceptorManager; - }(); - var InterceptorManager$1 = InterceptorManager; - - var transitionalDefaults = { + transitional: { silentJSONParsing: true, forcedJSONParsing: true, clarifyTimeoutError: false - }; + }, - var URLSearchParams$1 = typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams; + adapter: getDefaultAdapter(), - var FormData$1 = typeof FormData !== 'undefined' ? FormData : null; + transformRequest: [function transformRequest(data, headers) { + normalizeHeaderName(headers, 'Accept'); + normalizeHeaderName(headers, 'Content-Type'); - var Blob$1 = typeof Blob !== 'undefined' ? Blob : null; - - var platform$1 = { - isBrowser: true, - classes: { - URLSearchParams: URLSearchParams$1, - FormData: FormData$1, - Blob: Blob$1 - }, - protocols: ['http', 'https', 'file', 'blob', 'url', 'data'] - }; - - var hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined'; - - /** - * Determine if we're running in a standard browser environment - * - * This allows axios to run in a web worker, and react-native. - * Both environments support XMLHttpRequest, but not fully standard globals. - * - * web workers: - * typeof window -> undefined - * typeof document -> undefined - * - * react-native: - * navigator.product -> 'ReactNative' - * nativescript - * navigator.product -> 'NativeScript' or 'NS' - * - * @returns {boolean} - */ - var hasStandardBrowserEnv = function (product) { - return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0; - }(typeof navigator !== 'undefined' && navigator.product); - - /** - * Determine if we're running in a standard browser webWorker environment - * - * Although the `isStandardBrowserEnv` method indicates that - * `allows axios to run in a web worker`, the WebWorker will still be - * filtered out due to its judgment standard - * `typeof window !== 'undefined' && typeof document !== 'undefined'`. - * This leads to a problem when axios post `FormData` in webWorker - */ - var hasStandardBrowserWebWorkerEnv = function () { - return typeof WorkerGlobalScope !== 'undefined' && - // eslint-disable-next-line no-undef - self instanceof WorkerGlobalScope && typeof self.importScripts === 'function'; - }(); - - var utils = /*#__PURE__*/Object.freeze({ - __proto__: null, - hasBrowserEnv: hasBrowserEnv, - hasStandardBrowserWebWorkerEnv: hasStandardBrowserWebWorkerEnv, - hasStandardBrowserEnv: hasStandardBrowserEnv - }); - - var platform = _objectSpread2(_objectSpread2({}, utils), platform$1); - - function toURLEncodedForm(data, options) { - return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({ - visitor: function visitor(value, key, path, helpers) { - if (platform.isNode && utils$1.isBuffer(value)) { - this.append(key, value.toString('base64')); - return false; - } - return helpers.defaultVisitor.apply(this, arguments); - } - }, options)); - } - - /** - * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z'] - * - * @param {string} name - The name of the property to get. - * - * @returns An array of strings. - */ - function parsePropPath(name) { - // foo[x][y][z] - // foo.x.y.z - // foo-x-y-z - // foo x y z - return utils$1.matchAll(/\w+|\[(\w*)]/g, name).map(function (match) { - return match[0] === '[]' ? '' : match[1] || match[0]; - }); - } - - /** - * Convert an array to an object. - * - * @param {Array} arr - The array to convert to an object. - * - * @returns An object with the same keys and values as the array. - */ - function arrayToObject(arr) { - var obj = {}; - var keys = Object.keys(arr); - var i; - var len = keys.length; - var key; - for (i = 0; i < len; i++) { - key = keys[i]; - obj[key] = arr[key]; + if (utils.isFormData(data) || + utils.isArrayBuffer(data) || + utils.isBuffer(data) || + utils.isStream(data) || + utils.isFile(data) || + utils.isBlob(data) + ) { + return data; } - return obj; - } - - /** - * It takes a FormData object and returns a JavaScript object - * - * @param {string} formData The FormData object to convert to JSON. - * - * @returns {Object | null} The converted object. - */ - function formDataToJSON(formData) { - function buildPath(path, value, target, index) { - var name = path[index++]; - if (name === '__proto__') return true; - var isNumericKey = Number.isFinite(+name); - var isLast = index >= path.length; - name = !name && utils$1.isArray(target) ? target.length : name; - if (isLast) { - if (utils$1.hasOwnProp(target, name)) { - target[name] = [target[name], value]; - } else { - target[name] = value; - } - return !isNumericKey; - } - if (!target[name] || !utils$1.isObject(target[name])) { - target[name] = []; - } - var result = buildPath(path, value, target[name], index); - if (result && utils$1.isArray(target[name])) { - target[name] = arrayToObject(target[name]); - } - return !isNumericKey; + if (utils.isArrayBufferView(data)) { + return data.buffer; } - if (utils$1.isFormData(formData) && utils$1.isFunction(formData.entries)) { - var obj = {}; - utils$1.forEachEntry(formData, function (name, value) { - buildPath(parsePropPath(name), value, obj, 0); - }); - return obj; + if (utils.isURLSearchParams(data)) { + setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8'); + return data.toString(); } - return null; - } + if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) { + setContentTypeIfUnset(headers, 'application/json'); + return stringifySafely(data); + } + return data; + }], - /** - * It takes a string, tries to parse it, and if it fails, it returns the stringified version - * of the input - * - * @param {any} rawValue - The value to be stringified. - * @param {Function} parser - A function that parses a string into a JavaScript object. - * @param {Function} encoder - A function that takes a value and returns a string. - * - * @returns {string} A stringified version of the rawValue. - */ - function stringifySafely(rawValue, parser, encoder) { - if (utils$1.isString(rawValue)) { + transformResponse: [function transformResponse(data) { + var transitional = this.transitional; + var silentJSONParsing = transitional && transitional.silentJSONParsing; + var forcedJSONParsing = transitional && transitional.forcedJSONParsing; + var strictJSONParsing = !silentJSONParsing && this.responseType === 'json'; + + if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) { try { - (parser || JSON.parse)(rawValue); - return utils$1.trim(rawValue); + return JSON.parse(data); } catch (e) { - if (e.name !== 'SyntaxError') { + if (strictJSONParsing) { + if (e.name === 'SyntaxError') { + throw enhanceError(e, this, 'E_JSON_PARSE'); + } throw e; } } } - return (encoder || JSON.stringify)(rawValue); - } - var defaults = { - transitional: transitionalDefaults, - adapter: ['xhr', 'http'], - transformRequest: [function transformRequest(data, headers) { - var contentType = headers.getContentType() || ''; - var hasJSONContentType = contentType.indexOf('application/json') > -1; - var isObjectPayload = utils$1.isObject(data); - if (isObjectPayload && utils$1.isHTMLForm(data)) { - data = new FormData(data); - } - var isFormData = utils$1.isFormData(data); - if (isFormData) { - return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data; - } - if (utils$1.isArrayBuffer(data) || utils$1.isBuffer(data) || utils$1.isStream(data) || utils$1.isFile(data) || utils$1.isBlob(data)) { - return data; - } - if (utils$1.isArrayBufferView(data)) { - return data.buffer; - } - if (utils$1.isURLSearchParams(data)) { - headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false); - return data.toString(); - } - var isFileList; - if (isObjectPayload) { - if (contentType.indexOf('application/x-www-form-urlencoded') > -1) { - return toURLEncodedForm(data, this.formSerializer).toString(); - } - if ((isFileList = utils$1.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) { - var _FormData = this.env && this.env.FormData; - return toFormData(isFileList ? { - 'files[]': data - } : data, _FormData && new _FormData(), this.formSerializer); - } - } - if (isObjectPayload || hasJSONContentType) { - headers.setContentType('application/json', false); - return stringifySafely(data); - } - return data; - }], - transformResponse: [function transformResponse(data) { - var transitional = this.transitional || defaults.transitional; - var forcedJSONParsing = transitional && transitional.forcedJSONParsing; - var JSONRequested = this.responseType === 'json'; - if (data && utils$1.isString(data) && (forcedJSONParsing && !this.responseType || JSONRequested)) { - var silentJSONParsing = transitional && transitional.silentJSONParsing; - var strictJSONParsing = !silentJSONParsing && JSONRequested; - try { - return JSON.parse(data); - } catch (e) { - if (strictJSONParsing) { - if (e.name === 'SyntaxError') { - throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response); - } - throw e; - } - } - } - return data; - }], - /** - * A timeout in milliseconds to abort a request. If set to 0 (default) a - * timeout is not created. - */ - timeout: 0, - xsrfCookieName: 'XSRF-TOKEN', - xsrfHeaderName: 'X-XSRF-TOKEN', - maxContentLength: -1, - maxBodyLength: -1, - env: { - FormData: platform.classes.FormData, - Blob: platform.classes.Blob - }, - validateStatus: function validateStatus(status) { - return status >= 200 && status < 300; - }, - headers: { - common: { - 'Accept': 'application/json, text/plain, */*', - 'Content-Type': undefined - } - } - }; - utils$1.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], function (method) { - defaults.headers[method] = {}; - }); - var defaults$1 = defaults; - // RawAxiosHeaders whose duplicates are ignored by node - // c.f. https://nodejs.org/api/http.html#http_message_headers - var ignoreDuplicateOf = utils$1.toObjectSet(['age', 'authorization', 'content-length', 'content-type', 'etag', 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since', 'last-modified', 'location', 'max-forwards', 'proxy-authorization', 'referer', 'retry-after', 'user-agent']); + return data; + }], /** - * Parse headers into an object - * - * ``` - * Date: Wed, 27 Aug 2014 08:58:49 GMT - * Content-Type: application/json - * Connection: keep-alive - * Transfer-Encoding: chunked - * ``` - * - * @param {String} rawHeaders Headers needing to be parsed - * - * @returns {Object} Headers parsed into an object + * A timeout in milliseconds to abort a request. If set to 0 (default) a + * timeout is not created. */ - var parseHeaders = (function (rawHeaders) { - var parsed = {}; - var key; - var val; - var i; - rawHeaders && rawHeaders.split('\n').forEach(function parser(line) { - i = line.indexOf(':'); - key = line.substring(0, i).trim().toLowerCase(); - val = line.substring(i + 1).trim(); - if (!key || parsed[key] && ignoreDuplicateOf[key]) { + timeout: 0, + + xsrfCookieName: 'XSRF-TOKEN', + xsrfHeaderName: 'X-XSRF-TOKEN', + + maxContentLength: -1, + maxBodyLength: -1, + + validateStatus: function validateStatus(status) { + return status >= 200 && status < 300; + } +}; + +defaults.headers = { + common: { + 'Accept': 'application/json, text/plain, */*' + } +}; + +utils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) { + defaults.headers[method] = {}; +}); + +utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { + defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE); +}); + +module.exports = defaults; + + +/***/ }), + +/***/ "./lib/helpers/bind.js": +/*!*****************************!*\ + !*** ./lib/helpers/bind.js ***! + \*****************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +module.exports = function bind(fn, thisArg) { + return function wrap() { + var args = new Array(arguments.length); + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i]; + } + return fn.apply(thisArg, args); + }; +}; + + +/***/ }), + +/***/ "./lib/helpers/buildURL.js": +/*!*********************************!*\ + !*** ./lib/helpers/buildURL.js ***! + \*********************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(/*! ./../utils */ "./lib/utils.js"); + +function encode(val) { + return encodeURIComponent(val). + replace(/%3A/gi, ':'). + replace(/%24/g, '$'). + replace(/%2C/gi, ','). + replace(/%20/g, '+'). + replace(/%5B/gi, '['). + replace(/%5D/gi, ']'); +} + +/** + * Build a URL by appending params to the end + * + * @param {string} url The base of the url (e.g., http://www.google.com) + * @param {object} [params] The params to be appended + * @returns {string} The formatted url + */ +module.exports = function buildURL(url, params, paramsSerializer) { + /*eslint no-param-reassign:0*/ + if (!params) { + return url; + } + + var serializedParams; + if (paramsSerializer) { + serializedParams = paramsSerializer(params); + } else if (utils.isURLSearchParams(params)) { + serializedParams = params.toString(); + } else { + var parts = []; + + utils.forEach(params, function serialize(val, key) { + if (val === null || typeof val === 'undefined') { return; } - if (key === 'set-cookie') { - if (parsed[key]) { - parsed[key].push(val); - } else { - parsed[key] = [val]; - } - } else { - parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val; - } - }); - return parsed; - }); - var $internals = Symbol('internals'); - function normalizeHeader(header) { - return header && String(header).trim().toLowerCase(); - } - function normalizeValue(value) { - if (value === false || value == null) { - return value; - } - return utils$1.isArray(value) ? value.map(normalizeValue) : String(value); - } - function parseTokens(str) { - var tokens = Object.create(null); - var tokensRE = /([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g; - var match; - while (match = tokensRE.exec(str)) { - tokens[match[1]] = match[2]; - } - return tokens; - } - var isValidHeaderName = function isValidHeaderName(str) { - return /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim()); - }; - function matchHeaderValue(context, value, header, filter, isHeaderNameFilter) { - if (utils$1.isFunction(filter)) { - return filter.call(this, value, header); - } - if (isHeaderNameFilter) { - value = header; - } - if (!utils$1.isString(value)) return; - if (utils$1.isString(filter)) { - return value.indexOf(filter) !== -1; - } - if (utils$1.isRegExp(filter)) { - return filter.test(value); - } - } - function formatHeader(header) { - return header.trim().toLowerCase().replace(/([a-z\d])(\w*)/g, function (w, _char, str) { - return _char.toUpperCase() + str; - }); - } - function buildAccessors(obj, header) { - var accessorName = utils$1.toCamelCase(' ' + header); - ['get', 'set', 'has'].forEach(function (methodName) { - Object.defineProperty(obj, methodName + accessorName, { - value: function value(arg1, arg2, arg3) { - return this[methodName].call(this, header, arg1, arg2, arg3); - }, - configurable: true + if (utils.isArray(val)) { + key = key + '[]'; + } else { + val = [val]; + } + + utils.forEach(val, function parseValue(v) { + if (utils.isDate(v)) { + v = v.toISOString(); + } else if (utils.isObject(v)) { + v = JSON.stringify(v); + } + parts.push(encode(key) + '=' + encode(v)); }); }); + + serializedParams = parts.join('&'); } - var AxiosHeaders = /*#__PURE__*/function (_Symbol$iterator, _Symbol$toStringTag) { - function AxiosHeaders(headers) { - _classCallCheck(this, AxiosHeaders); - headers && this.set(headers); + + if (serializedParams) { + var hashmarkIndex = url.indexOf('#'); + if (hashmarkIndex !== -1) { + url = url.slice(0, hashmarkIndex); } - _createClass(AxiosHeaders, [{ - key: "set", - value: function set(header, valueOrRewrite, rewrite) { - var self = this; - function setHeader(_value, _header, _rewrite) { - var lHeader = normalizeHeader(_header); - if (!lHeader) { - throw new Error('header name must be a non-empty string'); - } - var key = utils$1.findKey(self, lHeader); - if (!key || self[key] === undefined || _rewrite === true || _rewrite === undefined && self[key] !== false) { - self[key || _header] = normalizeValue(_value); - } - } - var setHeaders = function setHeaders(headers, _rewrite) { - return utils$1.forEach(headers, function (_value, _header) { - return setHeader(_value, _header, _rewrite); - }); - }; - if (utils$1.isPlainObject(header) || header instanceof this.constructor) { - setHeaders(header, valueOrRewrite); - } else if (utils$1.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) { - setHeaders(parseHeaders(header), valueOrRewrite); - } else { - header != null && setHeader(valueOrRewrite, header, rewrite); - } - return this; - } - }, { - key: "get", - value: function get(header, parser) { - header = normalizeHeader(header); - if (header) { - var key = utils$1.findKey(this, header); - if (key) { - var value = this[key]; - if (!parser) { - return value; - } - if (parser === true) { - return parseTokens(value); - } - if (utils$1.isFunction(parser)) { - return parser.call(this, value, key); - } - if (utils$1.isRegExp(parser)) { - return parser.exec(value); - } - throw new TypeError('parser must be boolean|regexp|function'); - } - } - } - }, { - key: "has", - value: function has(header, matcher) { - header = normalizeHeader(header); - if (header) { - var key = utils$1.findKey(this, header); - return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher))); - } - return false; - } - }, { - key: "delete", - value: function _delete(header, matcher) { - var self = this; - var deleted = false; - function deleteHeader(_header) { - _header = normalizeHeader(_header); - if (_header) { - var key = utils$1.findKey(self, _header); - if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) { - delete self[key]; - deleted = true; - } - } - } - if (utils$1.isArray(header)) { - header.forEach(deleteHeader); - } else { - deleteHeader(header); - } - return deleted; - } - }, { - key: "clear", - value: function clear(matcher) { - var keys = Object.keys(this); - var i = keys.length; - var deleted = false; - while (i--) { - var key = keys[i]; - if (!matcher || matchHeaderValue(this, this[key], key, matcher, true)) { - delete this[key]; - deleted = true; - } - } - return deleted; - } - }, { - key: "normalize", - value: function normalize(format) { - var self = this; - var headers = {}; - utils$1.forEach(this, function (value, header) { - var key = utils$1.findKey(headers, header); - if (key) { - self[key] = normalizeValue(value); - delete self[header]; - return; - } - var normalized = format ? formatHeader(header) : String(header).trim(); - if (normalized !== header) { - delete self[header]; - } - self[normalized] = normalizeValue(value); - headers[normalized] = true; - }); - return this; - } - }, { - key: "concat", - value: function concat() { - var _this$constructor; - for (var _len = arguments.length, targets = new Array(_len), _key = 0; _key < _len; _key++) { - targets[_key] = arguments[_key]; - } - return (_this$constructor = this.constructor).concat.apply(_this$constructor, [this].concat(targets)); - } - }, { - key: "toJSON", - value: function toJSON(asStrings) { - var obj = Object.create(null); - utils$1.forEach(this, function (value, header) { - value != null && value !== false && (obj[header] = asStrings && utils$1.isArray(value) ? value.join(', ') : value); - }); - return obj; - } - }, { - key: _Symbol$iterator, - value: function value() { - return Object.entries(this.toJSON())[Symbol.iterator](); - } - }, { - key: "toString", - value: function toString() { - return Object.entries(this.toJSON()).map(function (_ref) { - var _ref2 = _slicedToArray(_ref, 2), - header = _ref2[0], - value = _ref2[1]; - return header + ': ' + value; - }).join('\n'); - } - }, { - key: _Symbol$toStringTag, - get: function get() { - return 'AxiosHeaders'; - } - }], [{ - key: "from", - value: function from(thing) { - return thing instanceof this ? thing : new this(thing); - } - }, { - key: "concat", - value: function concat(first) { - var computed = new this(first); - for (var _len2 = arguments.length, targets = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { - targets[_key2 - 1] = arguments[_key2]; - } - targets.forEach(function (target) { - return computed.set(target); - }); - return computed; - } - }, { - key: "accessor", - value: function accessor(header) { - var internals = this[$internals] = this[$internals] = { - accessors: {} - }; - var accessors = internals.accessors; - var prototype = this.prototype; - function defineAccessor(_header) { - var lHeader = normalizeHeader(_header); - if (!accessors[lHeader]) { - buildAccessors(prototype, _header); - accessors[lHeader] = true; - } - } - utils$1.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header); - return this; - } - }]); - return AxiosHeaders; - }(Symbol.iterator, Symbol.toStringTag); - AxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']); - // reserved names hotfix - utils$1.reduceDescriptors(AxiosHeaders.prototype, function (_ref3, key) { - var value = _ref3.value; - var mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set` - return { - get: function get() { - return value; - }, - set: function set(headerValue) { - this[mapped] = headerValue; - } - }; - }); - utils$1.freezeMethods(AxiosHeaders); - var AxiosHeaders$1 = AxiosHeaders; - - /** - * Transform the data for a request or a response - * - * @param {Array|Function} fns A single function or Array of functions - * @param {?Object} response The response object - * - * @returns {*} The resulting transformed data - */ - function transformData(fns, response) { - var config = this || defaults$1; - var context = response || config; - var headers = AxiosHeaders$1.from(context.headers); - var data = context.data; - utils$1.forEach(fns, function transform(fn) { - data = fn.call(config, data, headers.normalize(), response ? response.status : undefined); - }); - headers.normalize(); - return data; + url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams; } - function isCancel(value) { - return !!(value && value.__CANCEL__); - } + return url; +}; - /** - * A `CanceledError` is an object that is thrown when an operation is canceled. - * - * @param {string=} message The message. - * @param {Object=} config The config. - * @param {Object=} request The request. - * - * @returns {CanceledError} The created error. - */ - function CanceledError(message, config, request) { - // eslint-disable-next-line no-eq-null,eqeqeq - AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request); - this.name = 'CanceledError'; - } - utils$1.inherits(CanceledError, AxiosError, { - __CANCEL__: true - }); - /** - * Resolve or reject a Promise based on response status. - * - * @param {Function} resolve A function that resolves the promise. - * @param {Function} reject A function that rejects the promise. - * @param {object} response The response. - * - * @returns {object} The response. - */ - function settle(resolve, reject, response) { - var validateStatus = response.config.validateStatus; - if (!response.status || !validateStatus || validateStatus(response.status)) { - resolve(response); - } else { - reject(new AxiosError('Request failed with status code ' + response.status, [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4], response.config, response.request, response)); - } - } +/***/ }), + +/***/ "./lib/helpers/combineURLs.js": +/*!************************************!*\ + !*** ./lib/helpers/combineURLs.js ***! + \************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/** + * Creates a new URL by combining the specified URLs + * + * @param {string} baseURL The base URL + * @param {string} relativeURL The relative URL + * @returns {string} The combined URL + */ +module.exports = function combineURLs(baseURL, relativeURL) { + return relativeURL + ? baseURL.replace(/\/+$/, '') + '/' + relativeURL.replace(/^\/+/, '') + : baseURL; +}; + + +/***/ }), + +/***/ "./lib/helpers/cookies.js": +/*!********************************!*\ + !*** ./lib/helpers/cookies.js ***! + \********************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(/*! ./../utils */ "./lib/utils.js"); + +module.exports = ( + utils.isStandardBrowserEnv() ? - var cookies = platform.hasStandardBrowserEnv ? // Standard browser envs support document.cookie - { - write: function write(name, value, expires, path, domain, secure) { - var cookie = [name + '=' + encodeURIComponent(value)]; - utils$1.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString()); - utils$1.isString(path) && cookie.push('path=' + path); - utils$1.isString(domain) && cookie.push('domain=' + domain); - secure === true && cookie.push('secure'); - document.cookie = cookie.join('; '); - }, - read: function read(name) { - var match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)')); - return match ? decodeURIComponent(match[3]) : null; - }, - remove: function remove(name) { - this.write(name, '', Date.now() - 86400000); - } - } : - // Non-standard browser env (web workers, react-native) lack needed support. - { - write: function write() {}, - read: function read() { - return null; - }, - remove: function remove() {} - }; + (function standardBrowserEnv() { + return { + write: function write(name, value, expires, path, domain, secure) { + var cookie = []; + cookie.push(name + '=' + encodeURIComponent(value)); - /** - * Determines whether the specified URL is absolute - * - * @param {string} url The URL to test - * - * @returns {boolean} True if the specified URL is absolute, otherwise false - */ - function isAbsoluteURL(url) { - // A URL is considered absolute if it begins with "://" or "//" (protocol-relative URL). - // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed - // by any combination of letters, digits, plus, period, or hyphen. - return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url); - } + if (utils.isNumber(expires)) { + cookie.push('expires=' + new Date(expires).toGMTString()); + } - /** - * Creates a new URL by combining the specified URLs - * - * @param {string} baseURL The base URL - * @param {string} relativeURL The relative URL - * - * @returns {string} The combined URL - */ - function combineURLs(baseURL, relativeURL) { - return relativeURL ? baseURL.replace(/\/?\/$/, '') + '/' + relativeURL.replace(/^\/+/, '') : baseURL; - } + if (utils.isString(path)) { + cookie.push('path=' + path); + } - /** - * Creates a new URL by combining the baseURL with the requestedURL, - * only when the requestedURL is not already an absolute URL. - * If the requestURL is absolute, this function returns the requestedURL untouched. - * - * @param {string} baseURL The base URL - * @param {string} requestedURL Absolute or relative URL to combine - * - * @returns {string} The combined full path - */ - function buildFullPath(baseURL, requestedURL) { - if (baseURL && !isAbsoluteURL(requestedURL)) { - return combineURLs(baseURL, requestedURL); - } - return requestedURL; - } + if (utils.isString(domain)) { + cookie.push('domain=' + domain); + } + + if (secure === true) { + cookie.push('secure'); + } + + document.cookie = cookie.join('; '); + }, + + read: function read(name) { + var match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)')); + return (match ? decodeURIComponent(match[3]) : null); + }, + + remove: function remove(name) { + this.write(name, '', Date.now() - 86400000); + } + }; + })() : + + // Non standard browser env (web workers, react-native) lack needed support. + (function nonStandardBrowserEnv() { + return { + write: function write() {}, + read: function read() { return null; }, + remove: function remove() {} + }; + })() +); + + +/***/ }), + +/***/ "./lib/helpers/isAbsoluteURL.js": +/*!**************************************!*\ + !*** ./lib/helpers/isAbsoluteURL.js ***! + \**************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/** + * Determines whether the specified URL is absolute + * + * @param {string} url The URL to test + * @returns {boolean} True if the specified URL is absolute, otherwise false + */ +module.exports = function isAbsoluteURL(url) { + // A URL is considered absolute if it begins with "://" or "//" (protocol-relative URL). + // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed + // by any combination of letters, digits, plus, period, or hyphen. + return /^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(url); +}; + + +/***/ }), + +/***/ "./lib/helpers/isAxiosError.js": +/*!*************************************!*\ + !*** ./lib/helpers/isAxiosError.js ***! + \*************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/** + * Determines whether the payload is an error thrown by Axios + * + * @param {*} payload The value to test + * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false + */ +module.exports = function isAxiosError(payload) { + return (typeof payload === 'object') && (payload.isAxiosError === true); +}; + + +/***/ }), + +/***/ "./lib/helpers/isURLSameOrigin.js": +/*!****************************************!*\ + !*** ./lib/helpers/isURLSameOrigin.js ***! + \****************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(/*! ./../utils */ "./lib/utils.js"); + +module.exports = ( + utils.isStandardBrowserEnv() ? - var isURLSameOrigin = platform.hasStandardBrowserEnv ? // Standard browser envs have full support of the APIs needed to test // whether the request URL is of the same origin as current location. - function standardBrowserEnv() { - var msie = /(msie|trident)/i.test(navigator.userAgent); - var urlParsingNode = document.createElement('a'); - var originURL; + (function standardBrowserEnv() { + var msie = /(msie|trident)/i.test(navigator.userAgent); + var urlParsingNode = document.createElement('a'); + var originURL; - /** - * Parse a URL to discover its components + /** + * Parse a URL to discover it's components * * @param {String} url The URL to be parsed * @returns {Object} */ - function resolveURL(url) { - var href = url; - if (msie) { + function resolveURL(url) { + var href = url; + + if (msie) { // IE needs attribute set twice to normalize properties + urlParsingNode.setAttribute('href', href); + href = urlParsingNode.href; + } + urlParsingNode.setAttribute('href', href); - href = urlParsingNode.href; + + // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils + return { + href: urlParsingNode.href, + protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '', + host: urlParsingNode.host, + search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '', + hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '', + hostname: urlParsingNode.hostname, + port: urlParsingNode.port, + pathname: (urlParsingNode.pathname.charAt(0) === '/') ? + urlParsingNode.pathname : + '/' + urlParsingNode.pathname + }; } - urlParsingNode.setAttribute('href', href); - // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils - return { - href: urlParsingNode.href, - protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '', - host: urlParsingNode.host, - search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '', - hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '', - hostname: urlParsingNode.hostname, - port: urlParsingNode.port, - pathname: urlParsingNode.pathname.charAt(0) === '/' ? urlParsingNode.pathname : '/' + urlParsingNode.pathname - }; - } - originURL = resolveURL(window.location.href); + originURL = resolveURL(window.location.href); - /** + /** * Determine if a URL shares the same origin as the current location * * @param {String} requestURL The URL to test * @returns {boolean} True if URL shares the same origin, otherwise false */ - return function isURLSameOrigin(requestURL) { - var parsed = utils$1.isString(requestURL) ? resolveURL(requestURL) : requestURL; - return parsed.protocol === originURL.protocol && parsed.host === originURL.host; - }; - }() : + return function isURLSameOrigin(requestURL) { + var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL; + return (parsed.protocol === originURL.protocol && + parsed.host === originURL.host); + }; + })() : + // Non standard browser envs (web workers, react-native) lack needed support. - function nonStandardBrowserEnv() { - return function isURLSameOrigin() { - return true; - }; - }(); - - function parseProtocol(url) { - var match = /^([-+\w]{1,25})(:?\/\/|:)/.exec(url); - return match && match[1] || ''; - } - - /** - * Calculate data maxRate - * @param {Number} [samplesCount= 10] - * @param {Number} [min= 1000] - * @returns {Function} - */ - function speedometer(samplesCount, min) { - samplesCount = samplesCount || 10; - var bytes = new Array(samplesCount); - var timestamps = new Array(samplesCount); - var head = 0; - var tail = 0; - var firstSampleTS; - min = min !== undefined ? min : 1000; - return function push(chunkLength) { - var now = Date.now(); - var startedAt = timestamps[tail]; - if (!firstSampleTS) { - firstSampleTS = now; - } - bytes[head] = chunkLength; - timestamps[head] = now; - var i = tail; - var bytesCount = 0; - while (i !== head) { - bytesCount += bytes[i++]; - i = i % samplesCount; - } - head = (head + 1) % samplesCount; - if (head === tail) { - tail = (tail + 1) % samplesCount; - } - if (now - firstSampleTS < min) { - return; - } - var passed = startedAt && now - startedAt; - return passed ? Math.round(bytesCount * 1000 / passed) : undefined; - }; - } - - function progressEventReducer(listener, isDownloadStream) { - var bytesNotified = 0; - var _speedometer = speedometer(50, 250); - return function (e) { - var loaded = e.loaded; - var total = e.lengthComputable ? e.total : undefined; - var progressBytes = loaded - bytesNotified; - var rate = _speedometer(progressBytes); - var inRange = loaded <= total; - bytesNotified = loaded; - var data = { - loaded: loaded, - total: total, - progress: total ? loaded / total : undefined, - bytes: progressBytes, - rate: rate ? rate : undefined, - estimated: rate && total && inRange ? (total - loaded) / rate : undefined, - event: e + (function nonStandardBrowserEnv() { + return function isURLSameOrigin() { + return true; }; - data[isDownloadStream ? 'download' : 'upload'] = true; - listener(data); - }; - } - var isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined'; - var xhrAdapter = isXHRAdapterSupported && function (config) { - return new Promise(function dispatchXhrRequest(resolve, reject) { - var requestData = config.data; - var requestHeaders = AxiosHeaders$1.from(config.headers).normalize(); - var responseType = config.responseType, - withXSRFToken = config.withXSRFToken; - var onCanceled; - function done() { - if (config.cancelToken) { - config.cancelToken.unsubscribe(onCanceled); - } - if (config.signal) { - config.signal.removeEventListener('abort', onCanceled); - } - } - var contentType; - if (utils$1.isFormData(requestData)) { - if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) { - requestHeaders.setContentType(false); // Let the browser set it - } else if ((contentType = requestHeaders.getContentType()) !== false) { - // fix semicolon duplication issue for ReactNative FormData implementation - var _ref = contentType ? contentType.split(';').map(function (token) { - return token.trim(); - }).filter(Boolean) : [], - _ref2 = _toArray(_ref), - type = _ref2[0], - tokens = _ref2.slice(1); - requestHeaders.setContentType([type || 'multipart/form-data'].concat(_toConsumableArray(tokens)).join('; ')); - } - } - var request = new XMLHttpRequest(); + })() +); - // HTTP basic authentication - if (config.auth) { - var username = config.auth.username || ''; - var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : ''; - requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password)); - } - var fullPath = buildFullPath(config.baseURL, config.url); - request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true); - // Set the request timeout in MS - request.timeout = config.timeout; - function onloadend() { - if (!request) { - return; - } - // Prepare the response - var responseHeaders = AxiosHeaders$1.from('getAllResponseHeaders' in request && request.getAllResponseHeaders()); - var responseData = !responseType || responseType === 'text' || responseType === 'json' ? request.responseText : request.response; - var response = { - data: responseData, - status: request.status, - statusText: request.statusText, - headers: responseHeaders, - config: config, - request: request - }; - settle(function _resolve(value) { - resolve(value); - done(); - }, function _reject(err) { - reject(err); - done(); - }, response); +/***/ }), - // Clean up request - request = null; - } - if ('onloadend' in request) { - // Use onloadend if available - request.onloadend = onloadend; - } else { - // Listen for ready state to emulate onloadend - request.onreadystatechange = function handleLoad() { - if (!request || request.readyState !== 4) { - return; - } +/***/ "./lib/helpers/normalizeHeaderName.js": +/*!********************************************!*\ + !*** ./lib/helpers/normalizeHeaderName.js ***! + \********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { - // The request errored out and we didn't get a response, this will be - // handled by onerror instead - // With one exception: request that using file: protocol, most browsers - // will return status as 0 even though it's a successful request - if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) { - return; - } - // readystate handler is calling before onerror or ontimeout handlers, - // so we should call onloadend on the next 'tick' - setTimeout(onloadend); - }; - } +"use strict"; - // Handle browser request cancellation (as opposed to a manual cancellation) - request.onabort = function handleAbort() { - if (!request) { - return; - } - reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request)); - // Clean up request - request = null; - }; +var utils = __webpack_require__(/*! ../utils */ "./lib/utils.js"); - // Handle low level network errors - request.onerror = function handleError() { - // Real errors are hidden from us by the browser - // onerror should only fire if it's a network error - reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request)); - - // Clean up request - request = null; - }; - - // Handle timeout - request.ontimeout = function handleTimeout() { - var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded'; - var transitional = config.transitional || transitionalDefaults; - if (config.timeoutErrorMessage) { - timeoutErrorMessage = config.timeoutErrorMessage; - } - reject(new AxiosError(timeoutErrorMessage, transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED, config, request)); - - // Clean up request - request = null; - }; - - // Add xsrf header - // This is only done if running in a standard browser environment. - // Specifically not if we're in a web worker, or react-native. - if (platform.hasStandardBrowserEnv) { - withXSRFToken && utils$1.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(config)); - if (withXSRFToken || withXSRFToken !== false && isURLSameOrigin(fullPath)) { - // Add xsrf header - var xsrfValue = config.xsrfHeaderName && config.xsrfCookieName && cookies.read(config.xsrfCookieName); - if (xsrfValue) { - requestHeaders.set(config.xsrfHeaderName, xsrfValue); - } - } - } - - // Remove Content-Type if data is undefined - requestData === undefined && requestHeaders.setContentType(null); - - // Add headers to the request - if ('setRequestHeader' in request) { - utils$1.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) { - request.setRequestHeader(key, val); - }); - } - - // Add withCredentials to request if needed - if (!utils$1.isUndefined(config.withCredentials)) { - request.withCredentials = !!config.withCredentials; - } - - // Add responseType to request if needed - if (responseType && responseType !== 'json') { - request.responseType = config.responseType; - } - - // Handle progress if needed - if (typeof config.onDownloadProgress === 'function') { - request.addEventListener('progress', progressEventReducer(config.onDownloadProgress, true)); - } - - // Not all browsers support upload events - if (typeof config.onUploadProgress === 'function' && request.upload) { - request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress)); - } - if (config.cancelToken || config.signal) { - // Handle cancellation - // eslint-disable-next-line func-names - onCanceled = function onCanceled(cancel) { - if (!request) { - return; - } - reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel); - request.abort(); - request = null; - }; - config.cancelToken && config.cancelToken.subscribe(onCanceled); - if (config.signal) { - config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled); - } - } - var protocol = parseProtocol(fullPath); - if (protocol && platform.protocols.indexOf(protocol) === -1) { - reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config)); - return; - } - - // Send the request - request.send(requestData || null); - }); - }; - - var knownAdapters = { - http: httpAdapter, - xhr: xhrAdapter - }; - utils$1.forEach(knownAdapters, function (fn, value) { - if (fn) { - try { - Object.defineProperty(fn, 'name', { - value: value - }); - } catch (e) { - // eslint-disable-next-line no-empty - } - Object.defineProperty(fn, 'adapterName', { - value: value - }); +module.exports = function normalizeHeaderName(headers, normalizedName) { + utils.forEach(headers, function processHeader(value, name) { + if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) { + headers[normalizedName] = value; + delete headers[name]; } }); - var renderReason = function renderReason(reason) { - return "- ".concat(reason); - }; - var isResolvedHandle = function isResolvedHandle(adapter) { - return utils$1.isFunction(adapter) || adapter === null || adapter === false; - }; - var adapters = { - getAdapter: function getAdapter(adapters) { - adapters = utils$1.isArray(adapters) ? adapters : [adapters]; - var _adapters = adapters, - length = _adapters.length; - var nameOrAdapter; - var adapter; - var rejectedReasons = {}; - for (var i = 0; i < length; i++) { - nameOrAdapter = adapters[i]; - var id = void 0; - adapter = nameOrAdapter; - if (!isResolvedHandle(nameOrAdapter)) { - adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()]; - if (adapter === undefined) { - throw new AxiosError("Unknown adapter '".concat(id, "'")); - } - } - if (adapter) { - break; - } - rejectedReasons[id || '#' + i] = adapter; - } - if (!adapter) { - var reasons = Object.entries(rejectedReasons).map(function (_ref) { - var _ref2 = _slicedToArray(_ref, 2), - id = _ref2[0], - state = _ref2[1]; - return "adapter ".concat(id, " ") + (state === false ? 'is not supported by the environment' : 'is not available in the build'); - }); - var s = length ? reasons.length > 1 ? 'since :\n' + reasons.map(renderReason).join('\n') : ' ' + renderReason(reasons[0]) : 'as no adapter specified'; - throw new AxiosError("There is no suitable adapter to dispatch the request " + s, 'ERR_NOT_SUPPORT'); - } - return adapter; - }, - adapters: knownAdapters - }; +}; - /** - * Throws a `CanceledError` if cancellation has been requested. - * - * @param {Object} config The config that is to be used for the request - * - * @returns {void} - */ - function throwIfCancellationRequested(config) { - if (config.cancelToken) { - config.cancelToken.throwIfRequested(); + +/***/ }), + +/***/ "./lib/helpers/parseHeaders.js": +/*!*************************************!*\ + !*** ./lib/helpers/parseHeaders.js ***! + \*************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(/*! ./../utils */ "./lib/utils.js"); + +// Headers whose duplicates are ignored by node +// c.f. https://nodejs.org/api/http.html#http_message_headers +var ignoreDuplicateOf = [ + 'age', 'authorization', 'content-length', 'content-type', 'etag', + 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since', + 'last-modified', 'location', 'max-forwards', 'proxy-authorization', + 'referer', 'retry-after', 'user-agent' +]; + +/** + * Parse headers into an object + * + * ``` + * Date: Wed, 27 Aug 2014 08:58:49 GMT + * Content-Type: application/json + * Connection: keep-alive + * Transfer-Encoding: chunked + * ``` + * + * @param {String} headers Headers needing to be parsed + * @returns {Object} Headers parsed into an object + */ +module.exports = function parseHeaders(headers) { + var parsed = {}; + var key; + var val; + var i; + + if (!headers) { return parsed; } + + utils.forEach(headers.split('\n'), function parser(line) { + i = line.indexOf(':'); + key = utils.trim(line.substr(0, i)).toLowerCase(); + val = utils.trim(line.substr(i + 1)); + + if (key) { + if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) { + return; + } + if (key === 'set-cookie') { + parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]); + } else { + parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val; + } } - if (config.signal && config.signal.aborted) { - throw new CanceledError(null, config); + }); + + return parsed; +}; + + +/***/ }), + +/***/ "./lib/helpers/spread.js": +/*!*******************************!*\ + !*** ./lib/helpers/spread.js ***! + \*******************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/** + * Syntactic sugar for invoking a function and expanding an array for arguments. + * + * Common use case would be to use `Function.prototype.apply`. + * + * ```js + * function f(x, y, z) {} + * var args = [1, 2, 3]; + * f.apply(null, args); + * ``` + * + * With `spread` this example can be re-written. + * + * ```js + * spread(function(x, y, z) {})([1, 2, 3]); + * ``` + * + * @param {Function} callback + * @returns {Function} + */ +module.exports = function spread(callback) { + return function wrap(arr) { + return callback.apply(null, arr); + }; +}; + + +/***/ }), + +/***/ "./lib/helpers/validator.js": +/*!**********************************!*\ + !*** ./lib/helpers/validator.js ***! + \**********************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var pkg = __webpack_require__(/*! ./../../package.json */ "./package.json"); + +var validators = {}; + +// eslint-disable-next-line func-names +['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) { + validators[type] = function validator(thing) { + return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type; + }; +}); + +var deprecatedWarnings = {}; +var currentVerArr = pkg.version.split('.'); + +/** + * Compare package versions + * @param {string} version + * @param {string?} thanVersion + * @returns {boolean} + */ +function isOlderVersion(version, thanVersion) { + var pkgVersionArr = thanVersion ? thanVersion.split('.') : currentVerArr; + var destVer = version.split('.'); + for (var i = 0; i < 3; i++) { + if (pkgVersionArr[i] > destVer[i]) { + return true; + } else if (pkgVersionArr[i] < destVer[i]) { + return false; } } + return false; +} - /** - * Dispatch a request to the server using the configured adapter. - * - * @param {object} config The config that is to be used for the request - * - * @returns {Promise} The Promise to be fulfilled - */ - function dispatchRequest(config) { - throwIfCancellationRequested(config); - config.headers = AxiosHeaders$1.from(config.headers); +/** + * Transitional option validator + * @param {function|boolean?} validator + * @param {string?} version + * @param {string} message + * @returns {function} + */ +validators.transitional = function transitional(validator, version, message) { + var isDeprecated = version && isOlderVersion(version); - // Transform request data - config.data = transformData.call(config, config.transformRequest); - if (['post', 'put', 'patch'].indexOf(config.method) !== -1) { - config.headers.setContentType('application/x-www-form-urlencoded', false); - } - var adapter = adapters.getAdapter(config.adapter || defaults$1.adapter); - return adapter(config).then(function onAdapterResolution(response) { - throwIfCancellationRequested(config); - - // Transform response data - response.data = transformData.call(config, config.transformResponse, response); - response.headers = AxiosHeaders$1.from(response.headers); - return response; - }, function onAdapterRejection(reason) { - if (!isCancel(reason)) { - throwIfCancellationRequested(config); - - // Transform response data - if (reason && reason.response) { - reason.response.data = transformData.call(config, config.transformResponse, reason.response); - reason.response.headers = AxiosHeaders$1.from(reason.response.headers); - } - } - return Promise.reject(reason); - }); + function formatMessage(opt, desc) { + return '[Axios v' + pkg.version + '] Transitional option \'' + opt + '\'' + desc + (message ? '. ' + message : ''); } - var headersToObject = function headersToObject(thing) { - return thing instanceof AxiosHeaders$1 ? thing.toJSON() : thing; - }; - - /** - * Config-specific merge-function which creates a new config-object - * by merging two configuration objects together. - * - * @param {Object} config1 - * @param {Object} config2 - * - * @returns {Object} New object resulting from merging config2 to config1 - */ - function mergeConfig(config1, config2) { - // eslint-disable-next-line no-param-reassign - config2 = config2 || {}; - var config = {}; - function getMergedValue(target, source, caseless) { - if (utils$1.isPlainObject(target) && utils$1.isPlainObject(source)) { - return utils$1.merge.call({ - caseless: caseless - }, target, source); - } else if (utils$1.isPlainObject(source)) { - return utils$1.merge({}, source); - } else if (utils$1.isArray(source)) { - return source.slice(); - } - return source; - } - - // eslint-disable-next-line consistent-return - function mergeDeepProperties(a, b, caseless) { - if (!utils$1.isUndefined(b)) { - return getMergedValue(a, b, caseless); - } else if (!utils$1.isUndefined(a)) { - return getMergedValue(undefined, a, caseless); - } - } - - // eslint-disable-next-line consistent-return - function valueFromConfig2(a, b) { - if (!utils$1.isUndefined(b)) { - return getMergedValue(undefined, b); - } - } - - // eslint-disable-next-line consistent-return - function defaultToConfig2(a, b) { - if (!utils$1.isUndefined(b)) { - return getMergedValue(undefined, b); - } else if (!utils$1.isUndefined(a)) { - return getMergedValue(undefined, a); - } - } - - // eslint-disable-next-line consistent-return - function mergeDirectKeys(a, b, prop) { - if (prop in config2) { - return getMergedValue(a, b); - } else if (prop in config1) { - return getMergedValue(undefined, a); - } - } - var mergeMap = { - url: valueFromConfig2, - method: valueFromConfig2, - data: valueFromConfig2, - baseURL: defaultToConfig2, - transformRequest: defaultToConfig2, - transformResponse: defaultToConfig2, - paramsSerializer: defaultToConfig2, - timeout: defaultToConfig2, - timeoutMessage: defaultToConfig2, - withCredentials: defaultToConfig2, - withXSRFToken: defaultToConfig2, - adapter: defaultToConfig2, - responseType: defaultToConfig2, - xsrfCookieName: defaultToConfig2, - xsrfHeaderName: defaultToConfig2, - onUploadProgress: defaultToConfig2, - onDownloadProgress: defaultToConfig2, - decompress: defaultToConfig2, - maxContentLength: defaultToConfig2, - maxBodyLength: defaultToConfig2, - beforeRedirect: defaultToConfig2, - transport: defaultToConfig2, - httpAgent: defaultToConfig2, - httpsAgent: defaultToConfig2, - cancelToken: defaultToConfig2, - socketPath: defaultToConfig2, - responseEncoding: defaultToConfig2, - validateStatus: mergeDirectKeys, - headers: function headers(a, b) { - return mergeDeepProperties(headersToObject(a), headersToObject(b), true); - } - }; - utils$1.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) { - var merge = mergeMap[prop] || mergeDeepProperties; - var configValue = merge(config1[prop], config2[prop], prop); - utils$1.isUndefined(configValue) && merge !== mergeDirectKeys || (config[prop] = configValue); - }); - return config; - } - - var VERSION = "1.6.7"; - - var validators$1 = {}; - // eslint-disable-next-line func-names - ['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function (type, i) { - validators$1[type] = function validator(thing) { - return _typeof(thing) === type || 'a' + (i < 1 ? 'n ' : ' ') + type; - }; - }); - var deprecatedWarnings = {}; - - /** - * Transitional option validator - * - * @param {function|boolean?} validator - set to false if the transitional option has been removed - * @param {string?} version - deprecated version / removed since version - * @param {string?} message - some message with additional info - * - * @returns {function} - */ - validators$1.transitional = function transitional(validator, version, message) { - function formatMessage(opt, desc) { - return '[Axios v' + VERSION + '] Transitional option \'' + opt + '\'' + desc + (message ? '. ' + message : ''); + return function(value, opt, opts) { + if (validator === false) { + throw new Error(formatMessage(opt, ' has been removed in ' + version)); } - // eslint-disable-next-line func-names - return function (value, opt, opts) { - if (validator === false) { - throw new AxiosError(formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')), AxiosError.ERR_DEPRECATED); - } - if (version && !deprecatedWarnings[opt]) { - deprecatedWarnings[opt] = true; - // eslint-disable-next-line no-console - console.warn(formatMessage(opt, ' has been deprecated since v' + version + ' and will be removed in the near future')); - } - return validator ? validator(value, opt, opts) : true; - }; + if (isDeprecated && !deprecatedWarnings[opt]) { + deprecatedWarnings[opt] = true; + // eslint-disable-next-line no-console + console.warn( + formatMessage( + opt, + ' has been deprecated since v' + version + ' and will be removed in the near future' + ) + ); + } + + return validator ? validator(value, opt, opts) : true; }; +}; - /** - * Assert object's properties type - * - * @param {object} options - * @param {object} schema - * @param {boolean?} allowUnknown - * - * @returns {object} - */ +/** + * Assert object's properties type + * @param {object} options + * @param {object} schema + * @param {boolean?} allowUnknown + */ - function assertOptions(options, schema, allowUnknown) { - if (_typeof(options) !== 'object') { - throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE); - } - var keys = Object.keys(options); - var i = keys.length; - while (i-- > 0) { - var opt = keys[i]; - var validator = schema[opt]; - if (validator) { - var value = options[opt]; - var result = value === undefined || validator(value, opt, options); - if (result !== true) { - throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE); - } - continue; +function assertOptions(options, schema, allowUnknown) { + if (typeof options !== 'object') { + throw new TypeError('options must be an object'); + } + var keys = Object.keys(options); + var i = keys.length; + while (i-- > 0) { + var opt = keys[i]; + var validator = schema[opt]; + if (validator) { + var value = options[opt]; + var result = value === undefined || validator(value, opt, options); + if (result !== true) { + throw new TypeError('option ' + opt + ' must be ' + result); } - if (allowUnknown !== true) { - throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION); + continue; + } + if (allowUnknown !== true) { + throw Error('Unknown option ' + opt); + } + } +} + +module.exports = { + isOlderVersion: isOlderVersion, + assertOptions: assertOptions, + validators: validators +}; + + +/***/ }), + +/***/ "./lib/utils.js": +/*!**********************!*\ + !*** ./lib/utils.js ***! + \**********************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var bind = __webpack_require__(/*! ./helpers/bind */ "./lib/helpers/bind.js"); + +// utils is a library of generic helper functions non-specific to axios + +var toString = Object.prototype.toString; + +/** + * Determine if a value is an Array + * + * @param {Object} val The value to test + * @returns {boolean} True if value is an Array, otherwise false + */ +function isArray(val) { + return toString.call(val) === '[object Array]'; +} + +/** + * Determine if a value is undefined + * + * @param {Object} val The value to test + * @returns {boolean} True if the value is undefined, otherwise false + */ +function isUndefined(val) { + return typeof val === 'undefined'; +} + +/** + * Determine if a value is a Buffer + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Buffer, otherwise false + */ +function isBuffer(val) { + return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor) + && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val); +} + +/** + * Determine if a value is an ArrayBuffer + * + * @param {Object} val The value to test + * @returns {boolean} True if value is an ArrayBuffer, otherwise false + */ +function isArrayBuffer(val) { + return toString.call(val) === '[object ArrayBuffer]'; +} + +/** + * Determine if a value is a FormData + * + * @param {Object} val The value to test + * @returns {boolean} True if value is an FormData, otherwise false + */ +function isFormData(val) { + return (typeof FormData !== 'undefined') && (val instanceof FormData); +} + +/** + * Determine if a value is a view on an ArrayBuffer + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false + */ +function isArrayBufferView(val) { + var result; + if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) { + result = ArrayBuffer.isView(val); + } else { + result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer); + } + return result; +} + +/** + * Determine if a value is a String + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a String, otherwise false + */ +function isString(val) { + return typeof val === 'string'; +} + +/** + * Determine if a value is a Number + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Number, otherwise false + */ +function isNumber(val) { + return typeof val === 'number'; +} + +/** + * Determine if a value is an Object + * + * @param {Object} val The value to test + * @returns {boolean} True if value is an Object, otherwise false + */ +function isObject(val) { + return val !== null && typeof val === 'object'; +} + +/** + * Determine if a value is a plain Object + * + * @param {Object} val The value to test + * @return {boolean} True if value is a plain Object, otherwise false + */ +function isPlainObject(val) { + if (toString.call(val) !== '[object Object]') { + return false; + } + + var prototype = Object.getPrototypeOf(val); + return prototype === null || prototype === Object.prototype; +} + +/** + * Determine if a value is a Date + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Date, otherwise false + */ +function isDate(val) { + return toString.call(val) === '[object Date]'; +} + +/** + * Determine if a value is a File + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a File, otherwise false + */ +function isFile(val) { + return toString.call(val) === '[object File]'; +} + +/** + * Determine if a value is a Blob + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Blob, otherwise false + */ +function isBlob(val) { + return toString.call(val) === '[object Blob]'; +} + +/** + * Determine if a value is a Function + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Function, otherwise false + */ +function isFunction(val) { + return toString.call(val) === '[object Function]'; +} + +/** + * Determine if a value is a Stream + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Stream, otherwise false + */ +function isStream(val) { + return isObject(val) && isFunction(val.pipe); +} + +/** + * Determine if a value is a URLSearchParams object + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a URLSearchParams object, otherwise false + */ +function isURLSearchParams(val) { + return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams; +} + +/** + * Trim excess whitespace off the beginning and end of a string + * + * @param {String} str The String to trim + * @returns {String} The String freed of excess whitespace + */ +function trim(str) { + return str.trim ? str.trim() : str.replace(/^\s+|\s+$/g, ''); +} + +/** + * Determine if we're running in a standard browser environment + * + * This allows axios to run in a web worker, and react-native. + * Both environments support XMLHttpRequest, but not fully standard globals. + * + * web workers: + * typeof window -> undefined + * typeof document -> undefined + * + * react-native: + * navigator.product -> 'ReactNative' + * nativescript + * navigator.product -> 'NativeScript' or 'NS' + */ +function isStandardBrowserEnv() { + if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' || + navigator.product === 'NativeScript' || + navigator.product === 'NS')) { + return false; + } + return ( + typeof window !== 'undefined' && + typeof document !== 'undefined' + ); +} + +/** + * Iterate over an Array or an Object invoking a function for each item. + * + * If `obj` is an Array callback will be called passing + * the value, index, and complete array for each item. + * + * If 'obj' is an Object callback will be called passing + * the value, key, and complete object for each property. + * + * @param {Object|Array} obj The object to iterate + * @param {Function} fn The callback to invoke for each item + */ +function forEach(obj, fn) { + // Don't bother if no value provided + if (obj === null || typeof obj === 'undefined') { + return; + } + + // Force an array if not already something iterable + if (typeof obj !== 'object') { + /*eslint no-param-reassign:0*/ + obj = [obj]; + } + + if (isArray(obj)) { + // Iterate over array values + for (var i = 0, l = obj.length; i < l; i++) { + fn.call(null, obj[i], i, obj); + } + } else { + // Iterate over object keys + for (var key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) { + fn.call(null, obj[key], key, obj); } } } - var validator = { - assertOptions: assertOptions, - validators: validators$1 - }; +} - var validators = validator.validators; - - /** - * Create a new instance of Axios - * - * @param {Object} instanceConfig The default config for the instance - * - * @return {Axios} A new instance of Axios - */ - var Axios = /*#__PURE__*/function () { - function Axios(instanceConfig) { - _classCallCheck(this, Axios); - this.defaults = instanceConfig; - this.interceptors = { - request: new InterceptorManager$1(), - response: new InterceptorManager$1() - }; +/** + * Accepts varargs expecting each argument to be an object, then + * immutably merges the properties of each object and returns result. + * + * When multiple objects contain the same key the later object in + * the arguments list will take precedence. + * + * Example: + * + * ```js + * var result = merge({foo: 123}, {foo: 456}); + * console.log(result.foo); // outputs 456 + * ``` + * + * @param {Object} obj1 Object to merge + * @returns {Object} Result of all merge properties + */ +function merge(/* obj1, obj2, obj3, ... */) { + var result = {}; + function assignValue(val, key) { + if (isPlainObject(result[key]) && isPlainObject(val)) { + result[key] = merge(result[key], val); + } else if (isPlainObject(val)) { + result[key] = merge({}, val); + } else if (isArray(val)) { + result[key] = val.slice(); + } else { + result[key] = val; } - - /** - * Dispatch a request - * - * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults) - * @param {?Object} config - * - * @returns {Promise} The Promise to be fulfilled - */ - _createClass(Axios, [{ - key: "request", - value: function () { - var _request2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(configOrUrl, config) { - var dummy, stack; - return _regeneratorRuntime().wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - _context.prev = 0; - _context.next = 3; - return this._request(configOrUrl, config); - case 3: - return _context.abrupt("return", _context.sent); - case 6: - _context.prev = 6; - _context.t0 = _context["catch"](0); - if (_context.t0 instanceof Error) { - Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : dummy = new Error(); - - // slice off the Error: ... line - stack = dummy.stack ? dummy.stack.replace(/^.+\n/, '') : ''; - if (!_context.t0.stack) { - _context.t0.stack = stack; - // match without the 2 top stack lines - } else if (stack && !String(_context.t0.stack).endsWith(stack.replace(/^.+\n.+\n/, ''))) { - _context.t0.stack += '\n' + stack; - } - } - throw _context.t0; - case 10: - case "end": - return _context.stop(); - } - } - }, _callee, this, [[0, 6]]); - })); - function request(_x, _x2) { - return _request2.apply(this, arguments); - } - return request; - }() - }, { - key: "_request", - value: function _request(configOrUrl, config) { - /*eslint no-param-reassign:0*/ - // Allow for axios('example/url'[, config]) a la fetch API - if (typeof configOrUrl === 'string') { - config = config || {}; - config.url = configOrUrl; - } else { - config = configOrUrl || {}; - } - config = mergeConfig(this.defaults, config); - var _config = config, - transitional = _config.transitional, - paramsSerializer = _config.paramsSerializer, - headers = _config.headers; - if (transitional !== undefined) { - validator.assertOptions(transitional, { - silentJSONParsing: validators.transitional(validators["boolean"]), - forcedJSONParsing: validators.transitional(validators["boolean"]), - clarifyTimeoutError: validators.transitional(validators["boolean"]) - }, false); - } - if (paramsSerializer != null) { - if (utils$1.isFunction(paramsSerializer)) { - config.paramsSerializer = { - serialize: paramsSerializer - }; - } else { - validator.assertOptions(paramsSerializer, { - encode: validators["function"], - serialize: validators["function"] - }, true); - } - } - - // Set config.method - config.method = (config.method || this.defaults.method || 'get').toLowerCase(); - - // Flatten headers - var contextHeaders = headers && utils$1.merge(headers.common, headers[config.method]); - headers && utils$1.forEach(['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], function (method) { - delete headers[method]; - }); - config.headers = AxiosHeaders$1.concat(contextHeaders, headers); - - // filter out skipped interceptors - var requestInterceptorChain = []; - var synchronousRequestInterceptors = true; - this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) { - if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) { - return; - } - synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous; - requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected); - }); - var responseInterceptorChain = []; - this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) { - responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected); - }); - var promise; - var i = 0; - var len; - if (!synchronousRequestInterceptors) { - var chain = [dispatchRequest.bind(this), undefined]; - chain.unshift.apply(chain, requestInterceptorChain); - chain.push.apply(chain, responseInterceptorChain); - len = chain.length; - promise = Promise.resolve(config); - while (i < len) { - promise = promise.then(chain[i++], chain[i++]); - } - return promise; - } - len = requestInterceptorChain.length; - var newConfig = config; - i = 0; - while (i < len) { - var onFulfilled = requestInterceptorChain[i++]; - var onRejected = requestInterceptorChain[i++]; - try { - newConfig = onFulfilled(newConfig); - } catch (error) { - onRejected.call(this, error); - break; - } - } - try { - promise = dispatchRequest.call(this, newConfig); - } catch (error) { - return Promise.reject(error); - } - i = 0; - len = responseInterceptorChain.length; - while (i < len) { - promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]); - } - return promise; - } - }, { - key: "getUri", - value: function getUri(config) { - config = mergeConfig(this.defaults, config); - var fullPath = buildFullPath(config.baseURL, config.url); - return buildURL(fullPath, config.params, config.paramsSerializer); - } - }]); - return Axios; - }(); // Provide aliases for supported request methods - utils$1.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) { - /*eslint func-names:0*/ - Axios.prototype[method] = function (url, config) { - return this.request(mergeConfig(config || {}, { - method: method, - url: url, - data: (config || {}).data - })); - }; - }); - utils$1.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { - /*eslint func-names:0*/ - - function generateHTTPMethod(isForm) { - return function httpMethod(url, data, config) { - return this.request(mergeConfig(config || {}, { - method: method, - headers: isForm ? { - 'Content-Type': 'multipart/form-data' - } : {}, - url: url, - data: data - })); - }; - } - Axios.prototype[method] = generateHTTPMethod(); - Axios.prototype[method + 'Form'] = generateHTTPMethod(true); - }); - var Axios$1 = Axios; - - /** - * A `CancelToken` is an object that can be used to request cancellation of an operation. - * - * @param {Function} executor The executor function. - * - * @returns {CancelToken} - */ - var CancelToken = /*#__PURE__*/function () { - function CancelToken(executor) { - _classCallCheck(this, CancelToken); - if (typeof executor !== 'function') { - throw new TypeError('executor must be a function.'); - } - var resolvePromise; - this.promise = new Promise(function promiseExecutor(resolve) { - resolvePromise = resolve; - }); - var token = this; - - // eslint-disable-next-line func-names - this.promise.then(function (cancel) { - if (!token._listeners) return; - var i = token._listeners.length; - while (i-- > 0) { - token._listeners[i](cancel); - } - token._listeners = null; - }); - - // eslint-disable-next-line func-names - this.promise.then = function (onfulfilled) { - var _resolve; - // eslint-disable-next-line func-names - var promise = new Promise(function (resolve) { - token.subscribe(resolve); - _resolve = resolve; - }).then(onfulfilled); - promise.cancel = function reject() { - token.unsubscribe(_resolve); - }; - return promise; - }; - executor(function cancel(message, config, request) { - if (token.reason) { - // Cancellation has already been requested - return; - } - token.reason = new CanceledError(message, config, request); - resolvePromise(token.reason); - }); - } - - /** - * Throws a `CanceledError` if cancellation has been requested. - */ - _createClass(CancelToken, [{ - key: "throwIfRequested", - value: function throwIfRequested() { - if (this.reason) { - throw this.reason; - } - } - - /** - * Subscribe to the cancel signal - */ - }, { - key: "subscribe", - value: function subscribe(listener) { - if (this.reason) { - listener(this.reason); - return; - } - if (this._listeners) { - this._listeners.push(listener); - } else { - this._listeners = [listener]; - } - } - - /** - * Unsubscribe from the cancel signal - */ - }, { - key: "unsubscribe", - value: function unsubscribe(listener) { - if (!this._listeners) { - return; - } - var index = this._listeners.indexOf(listener); - if (index !== -1) { - this._listeners.splice(index, 1); - } - } - - /** - * Returns an object that contains a new `CancelToken` and a function that, when called, - * cancels the `CancelToken`. - */ - }], [{ - key: "source", - value: function source() { - var cancel; - var token = new CancelToken(function executor(c) { - cancel = c; - }); - return { - token: token, - cancel: cancel - }; - } - }]); - return CancelToken; - }(); - var CancelToken$1 = CancelToken; - - /** - * Syntactic sugar for invoking a function and expanding an array for arguments. - * - * Common use case would be to use `Function.prototype.apply`. - * - * ```js - * function f(x, y, z) {} - * var args = [1, 2, 3]; - * f.apply(null, args); - * ``` - * - * With `spread` this example can be re-written. - * - * ```js - * spread(function(x, y, z) {})([1, 2, 3]); - * ``` - * - * @param {Function} callback - * - * @returns {Function} - */ - function spread(callback) { - return function wrap(arr) { - return callback.apply(null, arr); - }; } - /** - * Determines whether the payload is an error thrown by Axios - * - * @param {*} payload The value to test - * - * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false - */ - function isAxiosError(payload) { - return utils$1.isObject(payload) && payload.isAxiosError === true; + for (var i = 0, l = arguments.length; i < l; i++) { + forEach(arguments[i], assignValue); } + return result; +} - var HttpStatusCode = { - Continue: 100, - SwitchingProtocols: 101, - Processing: 102, - EarlyHints: 103, - Ok: 200, - Created: 201, - Accepted: 202, - NonAuthoritativeInformation: 203, - NoContent: 204, - ResetContent: 205, - PartialContent: 206, - MultiStatus: 207, - AlreadyReported: 208, - ImUsed: 226, - MultipleChoices: 300, - MovedPermanently: 301, - Found: 302, - SeeOther: 303, - NotModified: 304, - UseProxy: 305, - Unused: 306, - TemporaryRedirect: 307, - PermanentRedirect: 308, - BadRequest: 400, - Unauthorized: 401, - PaymentRequired: 402, - Forbidden: 403, - NotFound: 404, - MethodNotAllowed: 405, - NotAcceptable: 406, - ProxyAuthenticationRequired: 407, - RequestTimeout: 408, - Conflict: 409, - Gone: 410, - LengthRequired: 411, - PreconditionFailed: 412, - PayloadTooLarge: 413, - UriTooLong: 414, - UnsupportedMediaType: 415, - RangeNotSatisfiable: 416, - ExpectationFailed: 417, - ImATeapot: 418, - MisdirectedRequest: 421, - UnprocessableEntity: 422, - Locked: 423, - FailedDependency: 424, - TooEarly: 425, - UpgradeRequired: 426, - PreconditionRequired: 428, - TooManyRequests: 429, - RequestHeaderFieldsTooLarge: 431, - UnavailableForLegalReasons: 451, - InternalServerError: 500, - NotImplemented: 501, - BadGateway: 502, - ServiceUnavailable: 503, - GatewayTimeout: 504, - HttpVersionNotSupported: 505, - VariantAlsoNegotiates: 506, - InsufficientStorage: 507, - LoopDetected: 508, - NotExtended: 510, - NetworkAuthenticationRequired: 511 - }; - Object.entries(HttpStatusCode).forEach(function (_ref) { - var _ref2 = _slicedToArray(_ref, 2), - key = _ref2[0], - value = _ref2[1]; - HttpStatusCode[value] = key; +/** + * Extends object a by mutably adding to it the properties of object b. + * + * @param {Object} a The object to be extended + * @param {Object} b The object to copy properties from + * @param {Object} thisArg The object to bind function to + * @return {Object} The resulting value of object a + */ +function extend(a, b, thisArg) { + forEach(b, function assignValue(val, key) { + if (thisArg && typeof val === 'function') { + a[key] = bind(val, thisArg); + } else { + a[key] = val; + } }); - var HttpStatusCode$1 = HttpStatusCode; + return a; +} - /** - * Create an instance of Axios - * - * @param {Object} defaultConfig The default config for the instance - * - * @returns {Axios} A new instance of Axios - */ - function createInstance(defaultConfig) { - var context = new Axios$1(defaultConfig); - var instance = bind(Axios$1.prototype.request, context); - - // Copy axios.prototype to instance - utils$1.extend(instance, Axios$1.prototype, context, { - allOwnKeys: true - }); - - // Copy context to instance - utils$1.extend(instance, context, null, { - allOwnKeys: true - }); - - // Factory for creating new instances - instance.create = function create(instanceConfig) { - return createInstance(mergeConfig(defaultConfig, instanceConfig)); - }; - return instance; +/** + * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM) + * + * @param {string} content with BOM + * @return {string} content value without BOM + */ +function stripBOM(content) { + if (content.charCodeAt(0) === 0xFEFF) { + content = content.slice(1); } + return content; +} - // Create the default instance to be exported - var axios = createInstance(defaults$1); +module.exports = { + isArray: isArray, + isArrayBuffer: isArrayBuffer, + isBuffer: isBuffer, + isFormData: isFormData, + isArrayBufferView: isArrayBufferView, + isString: isString, + isNumber: isNumber, + isObject: isObject, + isPlainObject: isPlainObject, + isUndefined: isUndefined, + isDate: isDate, + isFile: isFile, + isBlob: isBlob, + isFunction: isFunction, + isStream: isStream, + isURLSearchParams: isURLSearchParams, + isStandardBrowserEnv: isStandardBrowserEnv, + forEach: forEach, + merge: merge, + extend: extend, + trim: trim, + stripBOM: stripBOM +}; - // Expose Axios class to allow class inheritance - axios.Axios = Axios$1; - // Expose Cancel & CancelToken - axios.CanceledError = CanceledError; - axios.CancelToken = CancelToken$1; - axios.isCancel = isCancel; - axios.VERSION = VERSION; - axios.toFormData = toFormData; +/***/ }), - // Expose AxiosError class - axios.AxiosError = AxiosError; +/***/ "./package.json": +/*!**********************!*\ + !*** ./package.json ***! + \**********************/ +/*! exports provided: name, version, description, main, scripts, repository, keywords, author, license, bugs, homepage, devDependencies, browser, jsdelivr, unpkg, typings, dependencies, bundlesize, default */ +/***/ (function(module) { - // alias for CanceledError for backward compatibility - axios.Cancel = axios.CanceledError; +module.exports = JSON.parse("{\"name\":\"axios\",\"version\":\"0.21.4\",\"description\":\"Promise based HTTP client for the browser and node.js\",\"main\":\"index.js\",\"scripts\":{\"test\":\"grunt test\",\"start\":\"node ./sandbox/server.js\",\"build\":\"NODE_ENV=production grunt build\",\"preversion\":\"npm test\",\"version\":\"npm run build && grunt version && git add -A dist && git add CHANGELOG.md bower.json package.json\",\"postversion\":\"git push && git push --tags\",\"examples\":\"node ./examples/server.js\",\"coveralls\":\"cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js\",\"fix\":\"eslint --fix lib/**/*.js\"},\"repository\":{\"type\":\"git\",\"url\":\"https://github.com/axios/axios.git\"},\"keywords\":[\"xhr\",\"http\",\"ajax\",\"promise\",\"node\"],\"author\":\"Matt Zabriskie\",\"license\":\"MIT\",\"bugs\":{\"url\":\"https://github.com/axios/axios/issues\"},\"homepage\":\"https://axios-http.com\",\"devDependencies\":{\"coveralls\":\"^3.0.0\",\"es6-promise\":\"^4.2.4\",\"grunt\":\"^1.3.0\",\"grunt-banner\":\"^0.6.0\",\"grunt-cli\":\"^1.2.0\",\"grunt-contrib-clean\":\"^1.1.0\",\"grunt-contrib-watch\":\"^1.0.0\",\"grunt-eslint\":\"^23.0.0\",\"grunt-karma\":\"^4.0.0\",\"grunt-mocha-test\":\"^0.13.3\",\"grunt-ts\":\"^6.0.0-beta.19\",\"grunt-webpack\":\"^4.0.2\",\"istanbul-instrumenter-loader\":\"^1.0.0\",\"jasmine-core\":\"^2.4.1\",\"karma\":\"^6.3.2\",\"karma-chrome-launcher\":\"^3.1.0\",\"karma-firefox-launcher\":\"^2.1.0\",\"karma-jasmine\":\"^1.1.1\",\"karma-jasmine-ajax\":\"^0.1.13\",\"karma-safari-launcher\":\"^1.0.0\",\"karma-sauce-launcher\":\"^4.3.6\",\"karma-sinon\":\"^1.0.5\",\"karma-sourcemap-loader\":\"^0.3.8\",\"karma-webpack\":\"^4.0.2\",\"load-grunt-tasks\":\"^3.5.2\",\"minimist\":\"^1.2.0\",\"mocha\":\"^8.2.1\",\"sinon\":\"^4.5.0\",\"terser-webpack-plugin\":\"^4.2.3\",\"typescript\":\"^4.0.5\",\"url-search-params\":\"^0.10.0\",\"webpack\":\"^4.44.2\",\"webpack-dev-server\":\"^3.11.0\"},\"browser\":{\"./lib/adapters/http.js\":\"./lib/adapters/xhr.js\"},\"jsdelivr\":\"dist/axios.min.js\",\"unpkg\":\"dist/axios.min.js\",\"typings\":\"./index.d.ts\",\"dependencies\":{\"follow-redirects\":\"^1.14.0\"},\"bundlesize\":[{\"path\":\"./dist/axios.min.js\",\"threshold\":\"5kB\"}]}"); - // Expose all/spread - axios.all = function all(promises) { - return Promise.all(promises); - }; - axios.spread = spread; +/***/ }) - // Expose isAxiosError - axios.isAxiosError = isAxiosError; - - // Expose mergeConfig - axios.mergeConfig = mergeConfig; - axios.AxiosHeaders = AxiosHeaders$1; - axios.formToJSON = function (thing) { - return formDataToJSON(utils$1.isHTMLForm(thing) ? new FormData(thing) : thing); - }; - axios.getAdapter = adapters.getAdapter; - axios.HttpStatusCode = HttpStatusCode$1; - axios["default"] = axios; - - return axios; - -})); -//# sourceMappingURL=axios.js.map +/******/ }); +}); +//# sourceMappingURL=axios.map \ No newline at end of file diff --git a/node_modules/axios/dist/axios.js.map b/node_modules/axios/dist/axios.js.map deleted file mode 100644 index daef645..0000000 --- a/node_modules/axios/dist/axios.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"axios.js","sources":["../lib/helpers/bind.js","../lib/utils.js","../lib/core/AxiosError.js","../lib/helpers/null.js","../lib/helpers/toFormData.js","../lib/helpers/AxiosURLSearchParams.js","../lib/helpers/buildURL.js","../lib/core/InterceptorManager.js","../lib/defaults/transitional.js","../lib/platform/browser/classes/URLSearchParams.js","../lib/platform/browser/classes/FormData.js","../lib/platform/browser/classes/Blob.js","../lib/platform/browser/index.js","../lib/platform/common/utils.js","../lib/platform/index.js","../lib/helpers/toURLEncodedForm.js","../lib/helpers/formDataToJSON.js","../lib/defaults/index.js","../lib/helpers/parseHeaders.js","../lib/core/AxiosHeaders.js","../lib/core/transformData.js","../lib/cancel/isCancel.js","../lib/cancel/CanceledError.js","../lib/core/settle.js","../lib/helpers/cookies.js","../lib/helpers/isAbsoluteURL.js","../lib/helpers/combineURLs.js","../lib/core/buildFullPath.js","../lib/helpers/isURLSameOrigin.js","../lib/helpers/parseProtocol.js","../lib/helpers/speedometer.js","../lib/adapters/xhr.js","../lib/adapters/adapters.js","../lib/core/dispatchRequest.js","../lib/core/mergeConfig.js","../lib/env/data.js","../lib/helpers/validator.js","../lib/core/Axios.js","../lib/cancel/CancelToken.js","../lib/helpers/spread.js","../lib/helpers/isAxiosError.js","../lib/helpers/HttpStatusCode.js","../lib/axios.js"],"sourcesContent":["'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n value = +value;\n return Number.isFinite(value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0]\n }\n\n return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\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/**\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/**\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/**\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) 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/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\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/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} 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\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\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\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\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} 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\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 } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\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 + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = (\n (product) => {\n return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0\n })(typeof navigator !== 'undefined' && navigator.product);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n const msie = /(msie|trident)/i.test(navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let originURL;\n\n /**\n * Parse a URL to discover its components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n let href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })();\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","'use strict';\n\nimport utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport cookies from './../helpers/cookies.js';\nimport buildURL from './../helpers/buildURL.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport isURLSameOrigin from './../helpers/isURLSameOrigin.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport speedometer from '../helpers/speedometer.js';\n\nfunction progressEventReducer(listener, isDownloadStream) {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e\n };\n\n data[isDownloadStream ? 'download' : 'upload'] = true;\n\n listener(data);\n };\n}\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n let requestData = config.data;\n const requestHeaders = AxiosHeaders.from(config.headers).normalize();\n let {responseType, withXSRFToken} = config;\n let onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n let contentType;\n\n if (utils.isFormData(requestData)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n requestHeaders.setContentType(false); // Let the browser set it\n } else if ((contentType = requestHeaders.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n requestHeaders.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n let request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n const username = config.auth.username || '';\n const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password));\n }\n\n const fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if(platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(config));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(fullPath))) {\n // Add xsrf header\n const xsrfValue = config.xsrfHeaderName && config.xsrfCookieName && cookies.read(config.xsrfCookieName);\n\n if (xsrfValue) {\n requestHeaders.set(config.xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', progressEventReducer(config.onDownloadProgress, true));\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress));\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(fullPath);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? thing.toJSON() : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","export const VERSION = \"1.6.7\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy;\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n"],"names":["bind","fn","thisArg","wrap","apply","arguments","toString","Object","prototype","getPrototypeOf","kindOf","cache","thing","str","call","slice","toLowerCase","create","kindOfTest","type","typeOfTest","isArray","Array","isUndefined","isBuffer","val","constructor","isFunction","isArrayBuffer","isArrayBufferView","result","ArrayBuffer","isView","buffer","isString","isNumber","isObject","isBoolean","isPlainObject","Symbol","toStringTag","iterator","isDate","isFile","isBlob","isFileList","isStream","pipe","isFormData","kind","FormData","append","isURLSearchParams","trim","replace","forEach","obj","allOwnKeys","i","l","length","keys","getOwnPropertyNames","len","key","findKey","_key","_global","globalThis","self","window","global","isContextDefined","context","merge","caseless","assignValue","targetKey","extend","a","b","stripBOM","content","charCodeAt","inherits","superConstructor","props","descriptors","defineProperty","value","assign","toFlatObject","sourceObj","destObj","filter","propFilter","prop","merged","endsWith","searchString","position","String","undefined","lastIndex","indexOf","toArray","arr","isTypedArray","TypedArray","Uint8Array","forEachEntry","generator","next","done","pair","matchAll","regExp","matches","exec","push","isHTMLForm","toCamelCase","replacer","m","p1","p2","toUpperCase","hasOwnProperty","isRegExp","reduceDescriptors","reducer","getOwnPropertyDescriptors","reducedDescriptors","descriptor","name","ret","defineProperties","freezeMethods","enumerable","writable","set","Error","toObjectSet","arrayOrString","delimiter","define","split","noop","toFiniteNumber","defaultValue","Number","isFinite","ALPHA","DIGIT","ALPHABET","ALPHA_DIGIT","generateString","size","alphabet","Math","random","isSpecCompliantForm","toJSONObject","stack","visit","source","target","reducedValue","isAsyncFn","isThenable","then","hasOwnProp","AxiosError","message","code","config","request","response","captureStackTrace","utils","toJSON","description","number","fileName","lineNumber","columnNumber","status","from","error","customProps","axiosError","cause","isVisitable","removeBrackets","renderKey","path","dots","concat","map","each","token","join","isFlatArray","some","predicates","test","toFormData","formData","options","TypeError","metaTokens","indexes","defined","option","visitor","defaultVisitor","_Blob","Blob","useBlob","convertValue","toISOString","Buffer","JSON","stringify","el","index","exposedHelpers","build","pop","encode","charMap","encodeURIComponent","match","AxiosURLSearchParams","params","_pairs","encoder","_encode","buildURL","url","serializeFn","serialize","serializedParams","hashmarkIndex","InterceptorManager","handlers","fulfilled","rejected","synchronous","runWhen","id","forEachHandler","h","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","URLSearchParams","isBrowser","classes","protocols","hasBrowserEnv","document","hasStandardBrowserEnv","product","navigator","hasStandardBrowserWebWorkerEnv","WorkerGlobalScope","importScripts","platform","toURLEncodedForm","data","helpers","isNode","parsePropPath","arrayToObject","formDataToJSON","buildPath","isNumericKey","isLast","entries","stringifySafely","rawValue","parser","parse","e","defaults","transitional","transitionalDefaults","adapter","transformRequest","headers","contentType","getContentType","hasJSONContentType","isObjectPayload","setContentType","formSerializer","_FormData","env","transformResponse","JSONRequested","responseType","strictJSONParsing","ERR_BAD_RESPONSE","timeout","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","common","method","ignoreDuplicateOf","rawHeaders","parsed","line","substring","$internals","normalizeHeader","header","normalizeValue","parseTokens","tokens","tokensRE","isValidHeaderName","matchHeaderValue","isHeaderNameFilter","formatHeader","w","char","buildAccessors","accessorName","methodName","arg1","arg2","arg3","configurable","AxiosHeaders","valueOrRewrite","rewrite","setHeader","_value","_header","_rewrite","lHeader","setHeaders","parseHeaders","matcher","deleted","deleteHeader","format","normalized","targets","asStrings","first","computed","internals","accessors","defineAccessor","accessor","mapped","get","headerValue","transformData","fns","transform","normalize","isCancel","__CANCEL__","CanceledError","ERR_CANCELED","settle","resolve","reject","ERR_BAD_REQUEST","floor","write","expires","domain","secure","cookie","Date","toGMTString","read","RegExp","decodeURIComponent","remove","now","isAbsoluteURL","combineURLs","baseURL","relativeURL","buildFullPath","requestedURL","standardBrowserEnv","msie","userAgent","urlParsingNode","createElement","originURL","resolveURL","href","setAttribute","protocol","host","search","hash","hostname","port","pathname","charAt","location","isURLSameOrigin","requestURL","nonStandardBrowserEnv","parseProtocol","speedometer","samplesCount","min","bytes","timestamps","head","tail","firstSampleTS","chunkLength","startedAt","bytesCount","passed","round","progressEventReducer","listener","isDownloadStream","bytesNotified","_speedometer","loaded","total","lengthComputable","progressBytes","rate","inRange","progress","estimated","event","isXHRAdapterSupported","XMLHttpRequest","Promise","dispatchXhrRequest","requestData","requestHeaders","withXSRFToken","onCanceled","cancelToken","unsubscribe","signal","removeEventListener","Boolean","auth","username","password","unescape","btoa","fullPath","open","paramsSerializer","onloadend","responseHeaders","getAllResponseHeaders","responseData","responseText","statusText","_resolve","_reject","err","onreadystatechange","handleLoad","readyState","responseURL","setTimeout","onabort","handleAbort","ECONNABORTED","onerror","handleError","ERR_NETWORK","ontimeout","handleTimeout","timeoutErrorMessage","ETIMEDOUT","xsrfValue","cookies","setRequestHeader","withCredentials","onDownloadProgress","addEventListener","onUploadProgress","upload","cancel","abort","subscribe","aborted","send","knownAdapters","http","httpAdapter","xhr","xhrAdapter","renderReason","reason","isResolvedHandle","getAdapter","adapters","nameOrAdapter","rejectedReasons","reasons","state","s","throwIfCancellationRequested","throwIfRequested","dispatchRequest","onAdapterResolution","onAdapterRejection","headersToObject","mergeConfig","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","timeoutMessage","decompress","beforeRedirect","transport","httpAgent","httpsAgent","socketPath","responseEncoding","computeConfigValue","configValue","VERSION","validators","validator","deprecatedWarnings","version","formatMessage","opt","desc","opts","ERR_DEPRECATED","console","warn","assertOptions","schema","allowUnknown","ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","Axios","instanceConfig","interceptors","configOrUrl","_request","dummy","contextHeaders","requestInterceptorChain","synchronousRequestInterceptors","unshiftRequestInterceptors","interceptor","unshift","responseInterceptorChain","pushResponseInterceptors","promise","chain","newConfig","onFulfilled","onRejected","forEachMethodNoData","forEachMethodWithData","generateHTTPMethod","isForm","httpMethod","CancelToken","executor","resolvePromise","promiseExecutor","_listeners","onfulfilled","splice","c","spread","callback","isAxiosError","payload","HttpStatusCode","Continue","SwitchingProtocols","Processing","EarlyHints","Ok","Created","Accepted","NonAuthoritativeInformation","NoContent","ResetContent","PartialContent","MultiStatus","AlreadyReported","ImUsed","MultipleChoices","MovedPermanently","Found","SeeOther","NotModified","UseProxy","Unused","TemporaryRedirect","PermanentRedirect","BadRequest","Unauthorized","PaymentRequired","Forbidden","NotFound","MethodNotAllowed","NotAcceptable","ProxyAuthenticationRequired","RequestTimeout","Conflict","Gone","LengthRequired","PreconditionFailed","PayloadTooLarge","UriTooLong","UnsupportedMediaType","RangeNotSatisfiable","ExpectationFailed","ImATeapot","MisdirectedRequest","UnprocessableEntity","Locked","FailedDependency","TooEarly","UpgradeRequired","PreconditionRequired","TooManyRequests","RequestHeaderFieldsTooLarge","UnavailableForLegalReasons","InternalServerError","NotImplemented","BadGateway","ServiceUnavailable","GatewayTimeout","HttpVersionNotSupported","VariantAlsoNegotiates","InsufficientStorage","LoopDetected","NotExtended","NetworkAuthenticationRequired","createInstance","defaultConfig","instance","axios","Cancel","all","promises","formToJSON"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/axios/dist/axios.min.js b/node_modules/axios/dist/axios.min.js index b58abf2..d5b138a 100644 --- a/node_modules/axios/dist/axios.min.js +++ b/node_modules/axios/dist/axios.min.js @@ -1,2 +1,3 @@ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).axios=t()}(this,(function(){"use strict";function e(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function t(t){for(var r=1;r=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var s=n.call(i,"catchLoc"),u=n.call(i,"finallyLoc");if(s&&u){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),S(r),l}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;S(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:A(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=void 0),l}},e}function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}function o(e,t,r,n,o,i,a){try{var s=e[i](a),u=s.value}catch(e){return void r(e)}s.done?t(u):Promise.resolve(u).then(n,o)}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){for(var r=0;re.length)&&(t=e.length);for(var r=0,n=new Array(t);r2&&void 0!==arguments[2]?arguments[2]:{},a=i.allOwnKeys,s=void 0!==a&&a;if(null!=e)if("object"!==n(e)&&(e=[e]),S(e))for(r=0,o=e.length;r0;)if(t===(r=n[o]).toLowerCase())return r;return null}var B="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,I=function(e){return!R(e)&&e!==B};var q,z=(q="undefined"!=typeof Uint8Array&&b(Uint8Array),function(e){return q&&e instanceof q}),M=E("HTMLFormElement"),H=function(e){var t=Object.prototype.hasOwnProperty;return function(e,r){return t.call(e,r)}}(),J=E("RegExp"),G=function(e,t){var r=Object.getOwnPropertyDescriptors(e),n={};U(r,(function(r,o){var i;!1!==(i=t(r,o,e))&&(n[o]=i||r)})),Object.defineProperties(e,n)},W="abcdefghijklmnopqrstuvwxyz",K="0123456789",V={DIGIT:K,ALPHA:W,ALPHA_DIGIT:W+W.toUpperCase()+K};var X=E("AsyncFunction"),$={isArray:S,isArrayBuffer:A,isBuffer:function(e){return null!==e&&!R(e)&&null!==e.constructor&&!R(e.constructor)&&x(e.constructor.isBuffer)&&e.constructor.isBuffer(e)},isFormData:function(e){var t;return e&&("function"==typeof FormData&&e instanceof FormData||x(e.append)&&("formdata"===(t=w(e))||"object"===t&&x(e.toString)&&"[object FormData]"===e.toString()))},isArrayBufferView:function(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&A(e.buffer)},isString:j,isNumber:T,isBoolean:function(e){return!0===e||!1===e},isObject:P,isPlainObject:N,isUndefined:R,isDate:k,isFile:_,isBlob:L,isRegExp:J,isFunction:x,isStream:function(e){return P(e)&&x(e.pipe)},isURLSearchParams:F,isTypedArray:z,isFileList:C,forEach:U,merge:function e(){for(var t=I(this)&&this||{},r=t.caseless,n={},o=function(t,o){var i=r&&D(n,o)||o;N(n[i])&&N(t)?n[i]=e(n[i],t):N(t)?n[i]=e({},t):S(t)?n[i]=t.slice():n[i]=t},i=0,a=arguments.length;i3&&void 0!==arguments[3]?arguments[3]:{},o=n.allOwnKeys;return U(t,(function(t,n){r&&x(t)?e[n]=y(t,r):e[n]=t}),{allOwnKeys:o}),e},trim:function(e){return e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")},stripBOM:function(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e},inherits:function(e,t,r,n){e.prototype=Object.create(t.prototype,n),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),r&&Object.assign(e.prototype,r)},toFlatObject:function(e,t,r,n){var o,i,a,s={};if(t=t||{},null==e)return t;do{for(i=(o=Object.getOwnPropertyNames(e)).length;i-- >0;)a=o[i],n&&!n(a,e,t)||s[a]||(t[a]=e[a],s[a]=!0);e=!1!==r&&b(e)}while(e&&(!r||r(e,t))&&e!==Object.prototype);return t},kindOf:w,kindOfTest:E,endsWith:function(e,t,r){e=String(e),(void 0===r||r>e.length)&&(r=e.length),r-=t.length;var n=e.indexOf(t,r);return-1!==n&&n===r},toArray:function(e){if(!e)return null;if(S(e))return e;var t=e.length;if(!T(t))return null;for(var r=new Array(t);t-- >0;)r[t]=e[t];return r},forEachEntry:function(e,t){for(var r,n=(e&&e[Symbol.iterator]).call(e);(r=n.next())&&!r.done;){var o=r.value;t.call(e,o[0],o[1])}},matchAll:function(e,t){for(var r,n=[];null!==(r=e.exec(t));)n.push(r);return n},isHTMLForm:M,hasOwnProperty:H,hasOwnProp:H,reduceDescriptors:G,freezeMethods:function(e){G(e,(function(t,r){if(x(e)&&-1!==["arguments","caller","callee"].indexOf(r))return!1;var n=e[r];x(n)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=function(){throw Error("Can not rewrite read-only method '"+r+"'")}))}))},toObjectSet:function(e,t){var r={},n=function(e){e.forEach((function(e){r[e]=!0}))};return S(e)?n(e):n(String(e).split(t)),r},toCamelCase:function(e){return e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,(function(e,t,r){return t.toUpperCase()+r}))},noop:function(){},toFiniteNumber:function(e,t){return e=+e,Number.isFinite(e)?e:t},findKey:D,global:B,isContextDefined:I,ALPHABET:V,generateString:function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:16,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:V.ALPHA_DIGIT,r="",n=t.length;e--;)r+=t[Math.random()*n|0];return r},isSpecCompliantForm:function(e){return!!(e&&x(e.append)&&"FormData"===e[Symbol.toStringTag]&&e[Symbol.iterator])},toJSONObject:function(e){var t=new Array(10);return function e(r,n){if(P(r)){if(t.indexOf(r)>=0)return;if(!("toJSON"in r)){t[n]=r;var o=S(r)?[]:{};return U(r,(function(t,r){var i=e(t,n+1);!R(i)&&(o[r]=i)})),t[n]=void 0,o}}return r}(e,0)},isAsyncFn:X,isThenable:function(e){return e&&(P(e)||x(e))&&x(e.then)&&x(e.catch)}};function Q(e,t,r,n,o){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=e,this.name="AxiosError",t&&(this.code=t),r&&(this.config=r),n&&(this.request=n),o&&(this.response=o)}$.inherits(Q,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:$.toJSONObject(this.config),code:this.code,status:this.response&&this.response.status?this.response.status:null}}});var Y=Q.prototype,Z={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach((function(e){Z[e]={value:e}})),Object.defineProperties(Q,Z),Object.defineProperty(Y,"isAxiosError",{value:!0}),Q.from=function(e,t,r,n,o,i){var a=Object.create(Y);return $.toFlatObject(e,a,(function(e){return e!==Error.prototype}),(function(e){return"isAxiosError"!==e})),Q.call(a,e.message,t,r,n,o),a.cause=e,a.name=e.name,i&&Object.assign(a,i),a};function ee(e){return $.isPlainObject(e)||$.isArray(e)}function te(e){return $.endsWith(e,"[]")?e.slice(0,-2):e}function re(e,t,r){return e?e.concat(t).map((function(e,t){return e=te(e),!r&&t?"["+e+"]":e})).join(r?".":""):t}var ne=$.toFlatObject($,{},null,(function(e){return/^is[A-Z]/.test(e)}));function oe(e,t,r){if(!$.isObject(e))throw new TypeError("target must be an object");t=t||new FormData;var o=(r=$.toFlatObject(r,{metaTokens:!0,dots:!1,indexes:!1},!1,(function(e,t){return!$.isUndefined(t[e])}))).metaTokens,i=r.visitor||f,a=r.dots,s=r.indexes,u=(r.Blob||"undefined"!=typeof Blob&&Blob)&&$.isSpecCompliantForm(t);if(!$.isFunction(i))throw new TypeError("visitor must be a function");function c(e){if(null===e)return"";if($.isDate(e))return e.toISOString();if(!u&&$.isBlob(e))throw new Q("Blob is not supported. Use a Buffer instead.");return $.isArrayBuffer(e)||$.isTypedArray(e)?u&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function f(e,r,i){var u=e;if(e&&!i&&"object"===n(e))if($.endsWith(r,"{}"))r=o?r:r.slice(0,-2),e=JSON.stringify(e);else if($.isArray(e)&&function(e){return $.isArray(e)&&!e.some(ee)}(e)||($.isFileList(e)||$.endsWith(r,"[]"))&&(u=$.toArray(e)))return r=te(r),u.forEach((function(e,n){!$.isUndefined(e)&&null!==e&&t.append(!0===s?re([r],n,a):null===s?r:r+"[]",c(e))})),!1;return!!ee(e)||(t.append(re(i,r,a),c(e)),!1)}var l=[],h=Object.assign(ne,{defaultVisitor:f,convertValue:c,isVisitable:ee});if(!$.isObject(e))throw new TypeError("data must be an object");return function e(r,n){if(!$.isUndefined(r)){if(-1!==l.indexOf(r))throw Error("Circular reference detected in "+n.join("."));l.push(r),$.forEach(r,(function(r,o){!0===(!($.isUndefined(r)||null===r)&&i.call(t,r,$.isString(o)?o.trim():o,n,h))&&e(r,n?n.concat(o):[o])})),l.pop()}}(e),t}function ie(e){var t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,(function(e){return t[e]}))}function ae(e,t){this._pairs=[],e&&oe(e,this,t)}var se=ae.prototype;function ue(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function ce(e,t,r){if(!t)return e;var n,o=r&&r.encode||ue,i=r&&r.serialize;if(n=i?i(t,r):$.isURLSearchParams(t)?t.toString():new ae(t,r).toString(o)){var a=e.indexOf("#");-1!==a&&(e=e.slice(0,a)),e+=(-1===e.indexOf("?")?"?":"&")+n}return e}se.append=function(e,t){this._pairs.push([e,t])},se.toString=function(e){var t=e?function(t){return e.call(this,t,ie)}:ie;return this._pairs.map((function(e){return t(e[0])+"="+t(e[1])}),"").join("&")};var fe,le=function(){function e(){i(this,e),this.handlers=[]}return s(e,[{key:"use",value:function(e,t,r){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!r&&r.synchronous,runWhen:r?r.runWhen:null}),this.handlers.length-1}},{key:"eject",value:function(e){this.handlers[e]&&(this.handlers[e]=null)}},{key:"clear",value:function(){this.handlers&&(this.handlers=[])}},{key:"forEach",value:function(e){$.forEach(this.handlers,(function(t){null!==t&&e(t)}))}}]),e}(),he={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},de={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:ae,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},protocols:["http","https","file","blob","url","data"]},pe="undefined"!=typeof window&&"undefined"!=typeof document,ve=(fe="undefined"!=typeof navigator&&navigator.product,pe&&["ReactNative","NativeScript","NS"].indexOf(fe)<0),ye="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,me=t(t({},Object.freeze({__proto__:null,hasBrowserEnv:pe,hasStandardBrowserWebWorkerEnv:ye,hasStandardBrowserEnv:ve})),de);function ge(e){function t(e,r,n,o){var i=e[o++];if("__proto__"===i)return!0;var a=Number.isFinite(+i),s=o>=e.length;return i=!i&&$.isArray(n)?n.length:i,s?($.hasOwnProp(n,i)?n[i]=[n[i],r]:n[i]=r,!a):(n[i]&&$.isObject(n[i])||(n[i]=[]),t(e,r,n[i],o)&&$.isArray(n[i])&&(n[i]=function(e){var t,r,n={},o=Object.keys(e),i=o.length;for(t=0;t-1,i=$.isObject(e);if(i&&$.isHTMLForm(e)&&(e=new FormData(e)),$.isFormData(e))return o?JSON.stringify(ge(e)):e;if($.isArrayBuffer(e)||$.isBuffer(e)||$.isStream(e)||$.isFile(e)||$.isBlob(e))return e;if($.isArrayBufferView(e))return e.buffer;if($.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();if(i){if(n.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return oe(e,new me.classes.URLSearchParams,Object.assign({visitor:function(e,t,r,n){return me.isNode&&$.isBuffer(e)?(this.append(t,e.toString("base64")),!1):n.defaultVisitor.apply(this,arguments)}},t))}(e,this.formSerializer).toString();if((r=$.isFileList(e))||n.indexOf("multipart/form-data")>-1){var a=this.env&&this.env.FormData;return oe(r?{"files[]":e}:e,a&&new a,this.formSerializer)}}return i||o?(t.setContentType("application/json",!1),function(e,t,r){if($.isString(e))try{return(t||JSON.parse)(e),$.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(r||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){var t=this.transitional||be.transitional,r=t&&t.forcedJSONParsing,n="json"===this.responseType;if(e&&$.isString(e)&&(r&&!this.responseType||n)){var o=!(t&&t.silentJSONParsing)&&n;try{return JSON.parse(e)}catch(e){if(o){if("SyntaxError"===e.name)throw Q.from(e,Q.ERR_BAD_RESPONSE,this,null,this.response);throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:me.classes.FormData,Blob:me.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};$.forEach(["delete","get","head","post","put","patch"],(function(e){be.headers[e]={}}));var we=be,Ee=$.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),Oe=Symbol("internals");function Se(e){return e&&String(e).trim().toLowerCase()}function Re(e){return!1===e||null==e?e:$.isArray(e)?e.map(Re):String(e)}function Ae(e,t,r,n,o){return $.isFunction(n)?n.call(this,t,r):(o&&(t=r),$.isString(t)?$.isString(n)?-1!==t.indexOf(n):$.isRegExp(n)?n.test(t):void 0:void 0)}var je=function(e,t){function r(e){i(this,r),e&&this.set(e)}return s(r,[{key:"set",value:function(e,t,r){var n=this;function o(e,t,r){var o=Se(t);if(!o)throw new Error("header name must be a non-empty string");var i=$.findKey(n,o);(!i||void 0===n[i]||!0===r||void 0===r&&!1!==n[i])&&(n[i||t]=Re(e))}var i,a,s,u,c,f=function(e,t){return $.forEach(e,(function(e,r){return o(e,r,t)}))};return $.isPlainObject(e)||e instanceof this.constructor?f(e,t):$.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim())?f((c={},(i=e)&&i.split("\n").forEach((function(e){u=e.indexOf(":"),a=e.substring(0,u).trim().toLowerCase(),s=e.substring(u+1).trim(),!a||c[a]&&Ee[a]||("set-cookie"===a?c[a]?c[a].push(s):c[a]=[s]:c[a]=c[a]?c[a]+", "+s:s)})),c),t):null!=e&&o(t,e,r),this}},{key:"get",value:function(e,t){if(e=Se(e)){var r=$.findKey(this,e);if(r){var n=this[r];if(!t)return n;if(!0===t)return function(e){for(var t,r=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;t=n.exec(e);)r[t[1]]=t[2];return r}(n);if($.isFunction(t))return t.call(this,n,r);if($.isRegExp(t))return t.exec(n);throw new TypeError("parser must be boolean|regexp|function")}}}},{key:"has",value:function(e,t){if(e=Se(e)){var r=$.findKey(this,e);return!(!r||void 0===this[r]||t&&!Ae(0,this[r],r,t))}return!1}},{key:"delete",value:function(e,t){var r=this,n=!1;function o(e){if(e=Se(e)){var o=$.findKey(r,e);!o||t&&!Ae(0,r[o],o,t)||(delete r[o],n=!0)}}return $.isArray(e)?e.forEach(o):o(e),n}},{key:"clear",value:function(e){for(var t=Object.keys(this),r=t.length,n=!1;r--;){var o=t[r];e&&!Ae(0,this[o],o,e,!0)||(delete this[o],n=!0)}return n}},{key:"normalize",value:function(e){var t=this,r={};return $.forEach(this,(function(n,o){var i=$.findKey(r,o);if(i)return t[i]=Re(n),void delete t[o];var a=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(function(e,t,r){return t.toUpperCase()+r}))}(o):String(o).trim();a!==o&&delete t[o],t[a]=Re(n),r[a]=!0})),this}},{key:"concat",value:function(){for(var e,t=arguments.length,r=new Array(t),n=0;n1?r-1:0),o=1;o1?"since :\n"+s.map(Ue).join("\n"):" "+Ue(s[0]):"as no adapter specified"),"ERR_NOT_SUPPORT")}return r};function Ie(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Ne(null,e)}function qe(e){return Ie(e),e.headers=xe.from(e.headers),e.data=Te.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1),Be(e.adapter||we.adapter)(e).then((function(t){return Ie(e),t.data=Te.call(e,e.transformResponse,t),t.headers=xe.from(t.headers),t}),(function(t){return Pe(t)||(Ie(e),t&&t.response&&(t.response.data=Te.call(e,e.transformResponse,t.response),t.response.headers=xe.from(t.response.headers))),Promise.reject(t)}))}var ze=function(e){return e instanceof xe?e.toJSON():e};function Me(e,t){t=t||{};var r={};function n(e,t,r){return $.isPlainObject(e)&&$.isPlainObject(t)?$.merge.call({caseless:r},e,t):$.isPlainObject(t)?$.merge({},t):$.isArray(t)?t.slice():t}function o(e,t,r){return $.isUndefined(t)?$.isUndefined(e)?void 0:n(void 0,e,r):n(e,t,r)}function i(e,t){if(!$.isUndefined(t))return n(void 0,t)}function a(e,t){return $.isUndefined(t)?$.isUndefined(e)?void 0:n(void 0,e):n(void 0,t)}function s(r,o,i){return i in t?n(r,o):i in e?n(void 0,r):void 0}var u={url:i,method:i,data:i,baseURL:a,transformRequest:a,transformResponse:a,paramsSerializer:a,timeout:a,timeoutMessage:a,withCredentials:a,withXSRFToken:a,adapter:a,responseType:a,xsrfCookieName:a,xsrfHeaderName:a,onUploadProgress:a,onDownloadProgress:a,decompress:a,maxContentLength:a,maxBodyLength:a,beforeRedirect:a,transport:a,httpAgent:a,httpsAgent:a,cancelToken:a,socketPath:a,responseEncoding:a,validateStatus:s,headers:function(e,t){return o(ze(e),ze(t),!0)}};return $.forEach(Object.keys(Object.assign({},e,t)),(function(n){var i=u[n]||o,a=i(e[n],t[n],n);$.isUndefined(a)&&i!==s||(r[n]=a)})),r}var He="1.6.7",Je={};["object","boolean","number","function","string","symbol"].forEach((function(e,t){Je[e]=function(r){return n(r)===e||"a"+(t<1?"n ":" ")+e}}));var Ge={};Je.transitional=function(e,t,r){function n(e,t){return"[Axios v1.6.7] Transitional option '"+e+"'"+t+(r?". "+r:"")}return function(r,o,i){if(!1===e)throw new Q(n(o," has been removed"+(t?" in "+t:"")),Q.ERR_DEPRECATED);return t&&!Ge[o]&&(Ge[o]=!0,console.warn(n(o," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(r,o,i)}};var We={assertOptions:function(e,t,r){if("object"!==n(e))throw new Q("options must be an object",Q.ERR_BAD_OPTION_VALUE);for(var o=Object.keys(e),i=o.length;i-- >0;){var a=o[i],s=t[a];if(s){var u=e[a],c=void 0===u||s(u,a,e);if(!0!==c)throw new Q("option "+a+" must be "+c,Q.ERR_BAD_OPTION_VALUE)}else if(!0!==r)throw new Q("Unknown option "+a,Q.ERR_BAD_OPTION)}},validators:Je},Ke=We.validators,Ve=function(){function e(t){i(this,e),this.defaults=t,this.interceptors={request:new le,response:new le}}var t,n;return s(e,[{key:"request",value:(t=r().mark((function e(t,n){var o,i;return r().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this._request(t,n);case 3:return e.abrupt("return",e.sent);case 6:throw e.prev=6,e.t0=e.catch(0),e.t0 instanceof Error&&(Error.captureStackTrace?Error.captureStackTrace(o={}):o=new Error,i=o.stack?o.stack.replace(/^.+\n/,""):"",e.t0.stack?i&&!String(e.t0.stack).endsWith(i.replace(/^.+\n.+\n/,""))&&(e.t0.stack+="\n"+i):e.t0.stack=i),e.t0;case 10:case"end":return e.stop()}}),e,this,[[0,6]])})),n=function(){var e=this,r=arguments;return new Promise((function(n,i){var a=t.apply(e,r);function s(e){o(a,n,i,s,u,"next",e)}function u(e){o(a,n,i,s,u,"throw",e)}s(void 0)}))},function(e,t){return n.apply(this,arguments)})},{key:"_request",value:function(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{};var r=t=Me(this.defaults,t),n=r.transitional,o=r.paramsSerializer,i=r.headers;void 0!==n&&We.assertOptions(n,{silentJSONParsing:Ke.transitional(Ke.boolean),forcedJSONParsing:Ke.transitional(Ke.boolean),clarifyTimeoutError:Ke.transitional(Ke.boolean)},!1),null!=o&&($.isFunction(o)?t.paramsSerializer={serialize:o}:We.assertOptions(o,{encode:Ke.function,serialize:Ke.function},!0)),t.method=(t.method||this.defaults.method||"get").toLowerCase();var a=i&&$.merge(i.common,i[t.method]);i&&$.forEach(["delete","get","head","post","put","patch","common"],(function(e){delete i[e]})),t.headers=xe.concat(a,i);var s=[],u=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(u=u&&e.synchronous,s.unshift(e.fulfilled,e.rejected))}));var c,f=[];this.interceptors.response.forEach((function(e){f.push(e.fulfilled,e.rejected)}));var l,h=0;if(!u){var d=[qe.bind(this),void 0];for(d.unshift.apply(d,s),d.push.apply(d,f),l=d.length,c=Promise.resolve(t);h0;)n._listeners[t](e);n._listeners=null}})),this.promise.then=function(e){var t,r=new Promise((function(e){n.subscribe(e),t=e})).then(e);return r.cancel=function(){n.unsubscribe(t)},r},t((function(e,t,o){n.reason||(n.reason=new Ne(e,t,o),r(n.reason))}))}return s(e,[{key:"throwIfRequested",value:function(){if(this.reason)throw this.reason}},{key:"subscribe",value:function(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}},{key:"unsubscribe",value:function(e){if(this._listeners){var t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}}}],[{key:"source",value:function(){var t;return{token:new e((function(e){t=e})),cancel:t}}}]),e}();var Qe={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(Qe).forEach((function(e){var t=c(e,2),r=t[0],n=t[1];Qe[n]=r}));var Ye=Qe;var Ze=function e(t){var r=new Xe(t),n=y(Xe.prototype.request,r);return $.extend(n,Xe.prototype,r,{allOwnKeys:!0}),$.extend(n,r,null,{allOwnKeys:!0}),n.create=function(r){return e(Me(t,r))},n}(we);return Ze.Axios=Xe,Ze.CanceledError=Ne,Ze.CancelToken=$e,Ze.isCancel=Pe,Ze.VERSION=He,Ze.toFormData=oe,Ze.AxiosError=Q,Ze.Cancel=Ze.CanceledError,Ze.all=function(e){return Promise.all(e)},Ze.spread=function(e){return function(t){return e.apply(null,t)}},Ze.isAxiosError=function(e){return $.isObject(e)&&!0===e.isAxiosError},Ze.mergeConfig=Me,Ze.AxiosHeaders=xe,Ze.formToJSON=function(e){return ge($.isHTMLForm(e)?new FormData(e):e)},Ze.getAdapter=Be,Ze.HttpStatusCode=Ye,Ze.default=Ze,Ze})); -//# sourceMappingURL=axios.min.js.map +/* axios v0.21.4 | (c) 2021 by Matt Zabriskie */ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.axios=t():e.axios=t()}(window,(function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=10)}([function(e,t,r){"use strict";var n=r(2),o=Object.prototype.toString;function i(e){return"[object Array]"===o.call(e)}function s(e){return void 0===e}function a(e){return null!==e&&"object"==typeof e}function u(e){if("[object Object]"!==o.call(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function c(e){return"[object Function]"===o.call(e)}function f(e,t){if(null!=e)if("object"!=typeof e&&(e=[e]),i(e))for(var r=0,n=e.length;r=200&&e<300}};c.headers={common:{Accept:"application/json, text/plain, */*"}},n.forEach(["delete","get","head"],(function(e){c.headers[e]={}})),n.forEach(["post","put","patch"],(function(e){c.headers[e]=n.merge(s)})),e.exports=c},function(e,t,r){"use strict";e.exports=function(e,t){return function(){for(var r=new Array(arguments.length),n=0;n=0)return;s[t]="set-cookie"===t?(s[t]?s[t]:[]).concat([r]):s[t]?s[t]+", "+r:r}})),s):s}},function(e,t,r){"use strict";var n=r(0);e.exports=n.isStandardBrowserEnv()?function(){var e,t=/(msie|trident)/i.test(navigator.userAgent),r=document.createElement("a");function o(e){var n=e;return t&&(r.setAttribute("href",n),n=r.href),r.setAttribute("href",n),{href:r.href,protocol:r.protocol?r.protocol.replace(/:$/,""):"",host:r.host,search:r.search?r.search.replace(/^\?/,""):"",hash:r.hash?r.hash.replace(/^#/,""):"",hostname:r.hostname,port:r.port,pathname:"/"===r.pathname.charAt(0)?r.pathname:"/"+r.pathname}}return e=o(window.location.href),function(t){var r=n.isString(t)?o(t):t;return r.protocol===e.protocol&&r.host===e.host}}():function(){return!0}},function(e,t,r){"use strict";var n=r(25),o={};["object","boolean","number","function","string","symbol"].forEach((function(e,t){o[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}}));var i={},s=n.version.split(".");function a(e,t){for(var r=t?t.split("."):s,n=e.split("."),o=0;o<3;o++){if(r[o]>n[o])return!0;if(r[o]0;){var i=n[o],s=t[i];if(s){var a=e[i],u=void 0===a||s(a,i,e);if(!0!==u)throw new TypeError("option "+i+" must be "+u)}else if(!0!==r)throw Error("Unknown option "+i)}},validators:o}},function(e){e.exports=JSON.parse('{"name":"axios","version":"0.21.4","description":"Promise based HTTP client for the browser and node.js","main":"index.js","scripts":{"test":"grunt test","start":"node ./sandbox/server.js","build":"NODE_ENV=production grunt build","preversion":"npm test","version":"npm run build && grunt version && git add -A dist && git add CHANGELOG.md bower.json package.json","postversion":"git push && git push --tags","examples":"node ./examples/server.js","coveralls":"cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","fix":"eslint --fix lib/**/*.js"},"repository":{"type":"git","url":"https://github.com/axios/axios.git"},"keywords":["xhr","http","ajax","promise","node"],"author":"Matt Zabriskie","license":"MIT","bugs":{"url":"https://github.com/axios/axios/issues"},"homepage":"https://axios-http.com","devDependencies":{"coveralls":"^3.0.0","es6-promise":"^4.2.4","grunt":"^1.3.0","grunt-banner":"^0.6.0","grunt-cli":"^1.2.0","grunt-contrib-clean":"^1.1.0","grunt-contrib-watch":"^1.0.0","grunt-eslint":"^23.0.0","grunt-karma":"^4.0.0","grunt-mocha-test":"^0.13.3","grunt-ts":"^6.0.0-beta.19","grunt-webpack":"^4.0.2","istanbul-instrumenter-loader":"^1.0.0","jasmine-core":"^2.4.1","karma":"^6.3.2","karma-chrome-launcher":"^3.1.0","karma-firefox-launcher":"^2.1.0","karma-jasmine":"^1.1.1","karma-jasmine-ajax":"^0.1.13","karma-safari-launcher":"^1.0.0","karma-sauce-launcher":"^4.3.6","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.8","karma-webpack":"^4.0.2","load-grunt-tasks":"^3.5.2","minimist":"^1.2.0","mocha":"^8.2.1","sinon":"^4.5.0","terser-webpack-plugin":"^4.2.3","typescript":"^4.0.5","url-search-params":"^0.10.0","webpack":"^4.44.2","webpack-dev-server":"^3.11.0"},"browser":{"./lib/adapters/http.js":"./lib/adapters/xhr.js"},"jsdelivr":"dist/axios.min.js","unpkg":"dist/axios.min.js","typings":"./index.d.ts","dependencies":{"follow-redirects":"^1.14.0"},"bundlesize":[{"path":"./dist/axios.min.js","threshold":"5kB"}]}')},function(e,t,r){"use strict";var n=r(9);function o(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise((function(e){t=e}));var r=this;e((function(e){r.reason||(r.reason=new n(e),t(r.reason))}))}o.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},o.source=function(){var e;return{token:new o((function(t){e=t})),cancel:e}},e.exports=o},function(e,t,r){"use strict";e.exports=function(e){return function(t){return e.apply(null,t)}}},function(e,t,r){"use strict";e.exports=function(e){return"object"==typeof e&&!0===e.isAxiosError}}])})); +//# sourceMappingURL=axios.min.map \ No newline at end of file diff --git a/node_modules/axios/dist/axios.min.js.map b/node_modules/axios/dist/axios.min.js.map deleted file mode 100644 index 26ffe03..0000000 --- a/node_modules/axios/dist/axios.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"axios.min.js","sources":["../lib/helpers/bind.js","../lib/utils.js","../lib/core/AxiosError.js","../lib/helpers/toFormData.js","../lib/helpers/AxiosURLSearchParams.js","../lib/helpers/buildURL.js","../lib/core/InterceptorManager.js","../lib/platform/common/utils.js","../lib/defaults/transitional.js","../lib/platform/browser/index.js","../lib/platform/browser/classes/URLSearchParams.js","../lib/platform/browser/classes/FormData.js","../lib/platform/browser/classes/Blob.js","../lib/platform/index.js","../lib/helpers/formDataToJSON.js","../lib/defaults/index.js","../lib/helpers/toURLEncodedForm.js","../lib/helpers/parseHeaders.js","../lib/core/AxiosHeaders.js","../lib/core/transformData.js","../lib/cancel/isCancel.js","../lib/cancel/CanceledError.js","../lib/helpers/cookies.js","../lib/core/buildFullPath.js","../lib/helpers/isAbsoluteURL.js","../lib/helpers/combineURLs.js","../lib/helpers/isURLSameOrigin.js","../lib/adapters/xhr.js","../lib/helpers/speedometer.js","../lib/adapters/adapters.js","../lib/helpers/null.js","../lib/core/settle.js","../lib/helpers/parseProtocol.js","../lib/core/dispatchRequest.js","../lib/core/mergeConfig.js","../lib/env/data.js","../lib/helpers/validator.js","../lib/core/Axios.js","../lib/cancel/CancelToken.js","../lib/helpers/HttpStatusCode.js","../lib/axios.js","../lib/helpers/spread.js","../lib/helpers/isAxiosError.js"],"sourcesContent":["'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n value = +value;\n return Number.isFinite(value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0]\n }\n\n return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","'use strict';\n\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/**\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/**\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/**\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) 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/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\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/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} 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\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\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\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\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} 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\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 } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\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 + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = (\n (product) => {\n return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0\n })(typeof navigator !== 'undefined' && navigator.product);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv\n}\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n const msie = /(msie|trident)/i.test(navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let originURL;\n\n /**\n * Parse a URL to discover its components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n let href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })();\n","'use strict';\n\nimport utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport cookies from './../helpers/cookies.js';\nimport buildURL from './../helpers/buildURL.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport isURLSameOrigin from './../helpers/isURLSameOrigin.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport speedometer from '../helpers/speedometer.js';\n\nfunction progressEventReducer(listener, isDownloadStream) {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e\n };\n\n data[isDownloadStream ? 'download' : 'upload'] = true;\n\n listener(data);\n };\n}\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n let requestData = config.data;\n const requestHeaders = AxiosHeaders.from(config.headers).normalize();\n let {responseType, withXSRFToken} = config;\n let onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n let contentType;\n\n if (utils.isFormData(requestData)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n requestHeaders.setContentType(false); // Let the browser set it\n } else if ((contentType = requestHeaders.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n requestHeaders.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n let request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n const username = config.auth.username || '';\n const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password));\n }\n\n const fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if(platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(config));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(fullPath))) {\n // Add xsrf header\n const xsrfValue = config.xsrfHeaderName && config.xsrfCookieName && cookies.read(config.xsrfCookieName);\n\n if (xsrfValue) {\n requestHeaders.set(config.xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', progressEventReducer(config.onDownloadProgress, true));\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress));\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(fullPath);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? thing.toJSON() : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","export const VERSION = \"1.6.7\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy;\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n"],"names":["bind","fn","thisArg","apply","arguments","cache","toString","Object","prototype","getPrototypeOf","kindOf","create","thing","str","call","slice","toLowerCase","kindOfTest","type","typeOfTest","_typeof","isArray","Array","isUndefined","isArrayBuffer","isString","isFunction","isNumber","isObject","isPlainObject","val","Symbol","toStringTag","iterator","isDate","isFile","isBlob","isFileList","isURLSearchParams","forEach","obj","i","l","_ref","length","undefined","_ref$allOwnKeys","allOwnKeys","key","keys","getOwnPropertyNames","len","findKey","_key","_global","globalThis","self","window","global","isContextDefined","context","TypedArray","isTypedArray","Uint8Array","isHTMLForm","hasOwnProperty","_ref4","prop","isRegExp","reduceDescriptors","reducer","descriptors","getOwnPropertyDescriptors","reducedDescriptors","descriptor","name","ret","defineProperties","ALPHA","DIGIT","ALPHABET","ALPHA_DIGIT","toUpperCase","isAsyncFn","utils$1","isBuffer","constructor","isFormData","kind","FormData","append","isArrayBufferView","ArrayBuffer","isView","buffer","isBoolean","isStream","pipe","merge","this","caseless","result","assignValue","targetKey","extend","a","b","_ref3","trim","replace","stripBOM","content","charCodeAt","inherits","superConstructor","props","defineProperty","value","assign","toFlatObject","sourceObj","destObj","filter","propFilter","merged","endsWith","searchString","position","String","lastIndex","indexOf","toArray","arr","forEachEntry","next","done","pair","matchAll","regExp","matches","exec","push","hasOwnProp","freezeMethods","enumerable","writable","set","Error","toObjectSet","arrayOrString","delimiter","define","split","toCamelCase","m","p1","p2","noop","toFiniteNumber","defaultValue","Number","isFinite","generateString","size","alphabet","Math","random","isSpecCompliantForm","toJSONObject","stack","visit","source","target","reducedValue","isThenable","then","AxiosError","message","code","config","request","response","captureStackTrace","utils","toJSON","description","number","fileName","lineNumber","columnNumber","status","from","error","customProps","axiosError","cause","isVisitable","removeBrackets","renderKey","path","dots","concat","map","token","join","predicates","test","toFormData","formData","options","TypeError","metaTokens","indexes","option","visitor","defaultVisitor","useBlob","Blob","convertValue","toISOString","Buffer","JSON","stringify","some","isFlatArray","el","index","exposedHelpers","build","pop","encode","charMap","encodeURIComponent","match","AxiosURLSearchParams","params","_pairs","buildURL","url","serializedParams","_encode","serializeFn","serialize","hashmarkIndex","encoder","product","InterceptorManager$1","InterceptorManager","_classCallCheck","handlers","_createClass","fulfilled","rejected","synchronous","runWhen","id","h","transitionalDefaults","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","platform$1","isBrowser","classes","URLSearchParams","protocols","hasBrowserEnv","document","hasStandardBrowserEnv","navigator","hasStandardBrowserWebWorkerEnv","WorkerGlobalScope","importScripts","platform","formDataToJSON","buildPath","isNumericKey","isLast","arrayToObject","entries","parsePropPath","defaults","transitional","adapter","transformRequest","data","headers","contentType","getContentType","hasJSONContentType","isObjectPayload","setContentType","helpers","isNode","toURLEncodedForm","formSerializer","_FormData","env","rawValue","parser","parse","e","stringifySafely","transformResponse","JSONRequested","responseType","strictJSONParsing","ERR_BAD_RESPONSE","timeout","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","common","Accept","method","defaults$1","ignoreDuplicateOf","$internals","normalizeHeader","header","normalizeValue","matchHeaderValue","isHeaderNameFilter","AxiosHeaders","_Symbol$iterator","_Symbol$toStringTag","valueOrRewrite","rewrite","setHeader","_value","_header","_rewrite","lHeader","rawHeaders","parsed","setHeaders","line","substring","tokens","tokensRE","parseTokens","matcher","deleted","deleteHeader","format","normalized","w","char","formatHeader","_this$constructor","_len","targets","asStrings","_ref2","_slicedToArray","get","first","computed","_len2","_key2","accessors","defineAccessor","accessorName","methodName","arg1","arg2","arg3","configurable","buildAccessors","accessor","mapped","headerValue","AxiosHeaders$1","transformData","fns","normalize","isCancel","__CANCEL__","CanceledError","ERR_CANCELED","write","expires","domain","secure","cookie","Date","toGMTString","read","RegExp","decodeURIComponent","remove","now","buildFullPath","baseURL","requestedURL","relativeURL","combineURLs","originURL","msie","userAgent","urlParsingNode","createElement","resolveURL","href","setAttribute","protocol","host","search","hash","hostname","port","pathname","charAt","location","requestURL","progressEventReducer","listener","isDownloadStream","bytesNotified","_speedometer","samplesCount","min","firstSampleTS","bytes","timestamps","head","tail","chunkLength","startedAt","bytesCount","passed","round","speedometer","loaded","total","lengthComputable","progressBytes","rate","progress","estimated","event","knownAdapters","http","xhr","XMLHttpRequest","Promise","resolve","reject","onCanceled","requestData","requestHeaders","withXSRFToken","cancelToken","unsubscribe","signal","removeEventListener","Boolean","auth","username","password","unescape","btoa","fullPath","onloadend","responseHeaders","getAllResponseHeaders","ERR_BAD_REQUEST","floor","settle","err","responseText","statusText","open","paramsSerializer","onreadystatechange","readyState","responseURL","setTimeout","onabort","ECONNABORTED","onerror","ERR_NETWORK","ontimeout","timeoutErrorMessage","ETIMEDOUT","isURLSameOrigin","xsrfValue","cookies","setRequestHeader","withCredentials","onDownloadProgress","addEventListener","onUploadProgress","upload","cancel","abort","subscribe","aborted","send","renderReason","reason","isResolvedHandle","adapters","nameOrAdapter","rejectedReasons","reasons","state","throwIfCancellationRequested","throwIfRequested","dispatchRequest","headersToObject","mergeConfig","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","timeoutMessage","decompress","beforeRedirect","transport","httpAgent","httpsAgent","socketPath","responseEncoding","configValue","VERSION","validators","deprecatedWarnings","validators$1","validator","version","formatMessage","opt","desc","opts","ERR_DEPRECATED","console","warn","assertOptions","schema","allowUnknown","ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","Axios","instanceConfig","interceptors","_request2","_regeneratorRuntime","mark","_callee","configOrUrl","dummy","wrap","_context","prev","_request","abrupt","sent","t0","stop","_x","_x2","_config","contextHeaders","requestInterceptorChain","synchronousRequestInterceptors","interceptor","unshift","promise","responseInterceptorChain","chain","newConfig","onFulfilled","onRejected","generateHTTPMethod","isForm","Axios$1","CancelToken$1","CancelToken","executor","resolvePromise","_listeners","onfulfilled","_resolve","splice","c","HttpStatusCode","Continue","SwitchingProtocols","Processing","EarlyHints","Ok","Created","Accepted","NonAuthoritativeInformation","NoContent","ResetContent","PartialContent","MultiStatus","AlreadyReported","ImUsed","MultipleChoices","MovedPermanently","Found","SeeOther","NotModified","UseProxy","Unused","TemporaryRedirect","PermanentRedirect","BadRequest","Unauthorized","PaymentRequired","Forbidden","NotFound","MethodNotAllowed","NotAcceptable","ProxyAuthenticationRequired","RequestTimeout","Conflict","Gone","LengthRequired","PreconditionFailed","PayloadTooLarge","UriTooLong","UnsupportedMediaType","RangeNotSatisfiable","ExpectationFailed","ImATeapot","MisdirectedRequest","UnprocessableEntity","Locked","FailedDependency","TooEarly","UpgradeRequired","PreconditionRequired","TooManyRequests","RequestHeaderFieldsTooLarge","UnavailableForLegalReasons","InternalServerError","NotImplemented","BadGateway","ServiceUnavailable","GatewayTimeout","HttpVersionNotSupported","VariantAlsoNegotiates","InsufficientStorage","LoopDetected","NotExtended","NetworkAuthenticationRequired","HttpStatusCode$1","axios","createInstance","defaultConfig","instance","Cancel","all","promises","spread","callback","isAxiosError","payload","formToJSON","getAdapter"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/axios/dist/browser/axios.cjs b/node_modules/axios/dist/browser/axios.cjs deleted file mode 100644 index 7043a0b..0000000 --- a/node_modules/axios/dist/browser/axios.cjs +++ /dev/null @@ -1,3258 +0,0 @@ -// Axios v1.6.7 Copyright (c) 2024 Matt Zabriskie and contributors -'use strict'; - -function bind(fn, thisArg) { - return function wrap() { - return fn.apply(thisArg, arguments); - }; -} - -// utils is a library of generic helper functions non-specific to axios - -const {toString} = Object.prototype; -const {getPrototypeOf} = Object; - -const kindOf = (cache => thing => { - const str = toString.call(thing); - return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase()); -})(Object.create(null)); - -const kindOfTest = (type) => { - type = type.toLowerCase(); - return (thing) => kindOf(thing) === type -}; - -const typeOfTest = type => thing => typeof thing === type; - -/** - * Determine if a value is an Array - * - * @param {Object} val The value to test - * - * @returns {boolean} True if value is an Array, otherwise false - */ -const {isArray} = Array; - -/** - * Determine if a value is undefined - * - * @param {*} val The value to test - * - * @returns {boolean} True if the value is undefined, otherwise false - */ -const isUndefined = typeOfTest('undefined'); - -/** - * Determine if a value is a Buffer - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a Buffer, otherwise false - */ -function isBuffer(val) { - return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor) - && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val); -} - -/** - * Determine if a value is an ArrayBuffer - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is an ArrayBuffer, otherwise false - */ -const isArrayBuffer = kindOfTest('ArrayBuffer'); - - -/** - * Determine if a value is a view on an ArrayBuffer - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false - */ -function isArrayBufferView(val) { - let result; - if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) { - result = ArrayBuffer.isView(val); - } else { - result = (val) && (val.buffer) && (isArrayBuffer(val.buffer)); - } - return result; -} - -/** - * Determine if a value is a String - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a String, otherwise false - */ -const isString = typeOfTest('string'); - -/** - * Determine if a value is a Function - * - * @param {*} val The value to test - * @returns {boolean} True if value is a Function, otherwise false - */ -const isFunction = typeOfTest('function'); - -/** - * Determine if a value is a Number - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a Number, otherwise false - */ -const isNumber = typeOfTest('number'); - -/** - * Determine if a value is an Object - * - * @param {*} thing The value to test - * - * @returns {boolean} True if value is an Object, otherwise false - */ -const isObject = (thing) => thing !== null && typeof thing === 'object'; - -/** - * Determine if a value is a Boolean - * - * @param {*} thing The value to test - * @returns {boolean} True if value is a Boolean, otherwise false - */ -const isBoolean = thing => thing === true || thing === false; - -/** - * Determine if a value is a plain Object - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a plain Object, otherwise false - */ -const isPlainObject = (val) => { - if (kindOf(val) !== 'object') { - return false; - } - - const prototype = getPrototypeOf(val); - return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val); -}; - -/** - * Determine if a value is a Date - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a Date, otherwise false - */ -const isDate = kindOfTest('Date'); - -/** - * Determine if a value is a File - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a File, otherwise false - */ -const isFile = kindOfTest('File'); - -/** - * Determine if a value is a Blob - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a Blob, otherwise false - */ -const isBlob = kindOfTest('Blob'); - -/** - * Determine if a value is a FileList - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a File, otherwise false - */ -const isFileList = kindOfTest('FileList'); - -/** - * Determine if a value is a Stream - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a Stream, otherwise false - */ -const isStream = (val) => isObject(val) && isFunction(val.pipe); - -/** - * Determine if a value is a FormData - * - * @param {*} thing The value to test - * - * @returns {boolean} True if value is an FormData, otherwise false - */ -const isFormData = (thing) => { - let kind; - return thing && ( - (typeof FormData === 'function' && thing instanceof FormData) || ( - isFunction(thing.append) && ( - (kind = kindOf(thing)) === 'formdata' || - // detect form-data instance - (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]') - ) - ) - ) -}; - -/** - * Determine if a value is a URLSearchParams object - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a URLSearchParams object, otherwise false - */ -const isURLSearchParams = kindOfTest('URLSearchParams'); - -/** - * Trim excess whitespace off the beginning and end of a string - * - * @param {String} str The String to trim - * - * @returns {String} The String freed of excess whitespace - */ -const trim = (str) => str.trim ? - str.trim() : str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''); - -/** - * Iterate over an Array or an Object invoking a function for each item. - * - * If `obj` is an Array callback will be called passing - * the value, index, and complete array for each item. - * - * If 'obj' is an Object callback will be called passing - * the value, key, and complete object for each property. - * - * @param {Object|Array} obj The object to iterate - * @param {Function} fn The callback to invoke for each item - * - * @param {Boolean} [allOwnKeys = false] - * @returns {any} - */ -function forEach(obj, fn, {allOwnKeys = false} = {}) { - // Don't bother if no value provided - if (obj === null || typeof obj === 'undefined') { - return; - } - - let i; - let l; - - // Force an array if not already something iterable - if (typeof obj !== 'object') { - /*eslint no-param-reassign:0*/ - obj = [obj]; - } - - if (isArray(obj)) { - // Iterate over array values - for (i = 0, l = obj.length; i < l; i++) { - fn.call(null, obj[i], i, obj); - } - } else { - // Iterate over object keys - const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj); - const len = keys.length; - let key; - - for (i = 0; i < len; i++) { - key = keys[i]; - fn.call(null, obj[key], key, obj); - } - } -} - -function findKey(obj, key) { - key = key.toLowerCase(); - const keys = Object.keys(obj); - let i = keys.length; - let _key; - while (i-- > 0) { - _key = keys[i]; - if (key === _key.toLowerCase()) { - return _key; - } - } - return null; -} - -const _global = (() => { - /*eslint no-undef:0*/ - if (typeof globalThis !== "undefined") return globalThis; - return typeof self !== "undefined" ? self : (typeof window !== 'undefined' ? window : global) -})(); - -const isContextDefined = (context) => !isUndefined(context) && context !== _global; - -/** - * Accepts varargs expecting each argument to be an object, then - * immutably merges the properties of each object and returns result. - * - * When multiple objects contain the same key the later object in - * the arguments list will take precedence. - * - * Example: - * - * ```js - * var result = merge({foo: 123}, {foo: 456}); - * console.log(result.foo); // outputs 456 - * ``` - * - * @param {Object} obj1 Object to merge - * - * @returns {Object} Result of all merge properties - */ -function merge(/* obj1, obj2, obj3, ... */) { - const {caseless} = isContextDefined(this) && this || {}; - const result = {}; - const assignValue = (val, key) => { - const targetKey = caseless && findKey(result, key) || key; - if (isPlainObject(result[targetKey]) && isPlainObject(val)) { - result[targetKey] = merge(result[targetKey], val); - } else if (isPlainObject(val)) { - result[targetKey] = merge({}, val); - } else if (isArray(val)) { - result[targetKey] = val.slice(); - } else { - result[targetKey] = val; - } - }; - - for (let i = 0, l = arguments.length; i < l; i++) { - arguments[i] && forEach(arguments[i], assignValue); - } - return result; -} - -/** - * Extends object a by mutably adding to it the properties of object b. - * - * @param {Object} a The object to be extended - * @param {Object} b The object to copy properties from - * @param {Object} thisArg The object to bind function to - * - * @param {Boolean} [allOwnKeys] - * @returns {Object} The resulting value of object a - */ -const extend = (a, b, thisArg, {allOwnKeys}= {}) => { - forEach(b, (val, key) => { - if (thisArg && isFunction(val)) { - a[key] = bind(val, thisArg); - } else { - a[key] = val; - } - }, {allOwnKeys}); - return a; -}; - -/** - * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM) - * - * @param {string} content with BOM - * - * @returns {string} content value without BOM - */ -const stripBOM = (content) => { - if (content.charCodeAt(0) === 0xFEFF) { - content = content.slice(1); - } - return content; -}; - -/** - * Inherit the prototype methods from one constructor into another - * @param {function} constructor - * @param {function} superConstructor - * @param {object} [props] - * @param {object} [descriptors] - * - * @returns {void} - */ -const inherits = (constructor, superConstructor, props, descriptors) => { - constructor.prototype = Object.create(superConstructor.prototype, descriptors); - constructor.prototype.constructor = constructor; - Object.defineProperty(constructor, 'super', { - value: superConstructor.prototype - }); - props && Object.assign(constructor.prototype, props); -}; - -/** - * Resolve object with deep prototype chain to a flat object - * @param {Object} sourceObj source object - * @param {Object} [destObj] - * @param {Function|Boolean} [filter] - * @param {Function} [propFilter] - * - * @returns {Object} - */ -const toFlatObject = (sourceObj, destObj, filter, propFilter) => { - let props; - let i; - let prop; - const merged = {}; - - destObj = destObj || {}; - // eslint-disable-next-line no-eq-null,eqeqeq - if (sourceObj == null) return destObj; - - do { - props = Object.getOwnPropertyNames(sourceObj); - i = props.length; - while (i-- > 0) { - prop = props[i]; - if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) { - destObj[prop] = sourceObj[prop]; - merged[prop] = true; - } - } - sourceObj = filter !== false && getPrototypeOf(sourceObj); - } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype); - - return destObj; -}; - -/** - * Determines whether a string ends with the characters of a specified string - * - * @param {String} str - * @param {String} searchString - * @param {Number} [position= 0] - * - * @returns {boolean} - */ -const endsWith = (str, searchString, position) => { - str = String(str); - if (position === undefined || position > str.length) { - position = str.length; - } - position -= searchString.length; - const lastIndex = str.indexOf(searchString, position); - return lastIndex !== -1 && lastIndex === position; -}; - - -/** - * Returns new array from array like object or null if failed - * - * @param {*} [thing] - * - * @returns {?Array} - */ -const toArray = (thing) => { - if (!thing) return null; - if (isArray(thing)) return thing; - let i = thing.length; - if (!isNumber(i)) return null; - const arr = new Array(i); - while (i-- > 0) { - arr[i] = thing[i]; - } - return arr; -}; - -/** - * Checking if the Uint8Array exists and if it does, it returns a function that checks if the - * thing passed in is an instance of Uint8Array - * - * @param {TypedArray} - * - * @returns {Array} - */ -// eslint-disable-next-line func-names -const isTypedArray = (TypedArray => { - // eslint-disable-next-line func-names - return thing => { - return TypedArray && thing instanceof TypedArray; - }; -})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array)); - -/** - * For each entry in the object, call the function with the key and value. - * - * @param {Object} obj - The object to iterate over. - * @param {Function} fn - The function to call for each entry. - * - * @returns {void} - */ -const forEachEntry = (obj, fn) => { - const generator = obj && obj[Symbol.iterator]; - - const iterator = generator.call(obj); - - let result; - - while ((result = iterator.next()) && !result.done) { - const pair = result.value; - fn.call(obj, pair[0], pair[1]); - } -}; - -/** - * It takes a regular expression and a string, and returns an array of all the matches - * - * @param {string} regExp - The regular expression to match against. - * @param {string} str - The string to search. - * - * @returns {Array} - */ -const matchAll = (regExp, str) => { - let matches; - const arr = []; - - while ((matches = regExp.exec(str)) !== null) { - arr.push(matches); - } - - return arr; -}; - -/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */ -const isHTMLForm = kindOfTest('HTMLFormElement'); - -const toCamelCase = str => { - return str.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g, - function replacer(m, p1, p2) { - return p1.toUpperCase() + p2; - } - ); -}; - -/* Creating a function that will check if an object has a property. */ -const hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype); - -/** - * Determine if a value is a RegExp object - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a RegExp object, otherwise false - */ -const isRegExp = kindOfTest('RegExp'); - -const reduceDescriptors = (obj, reducer) => { - const descriptors = Object.getOwnPropertyDescriptors(obj); - const reducedDescriptors = {}; - - forEach(descriptors, (descriptor, name) => { - let ret; - if ((ret = reducer(descriptor, name, obj)) !== false) { - reducedDescriptors[name] = ret || descriptor; - } - }); - - Object.defineProperties(obj, reducedDescriptors); -}; - -/** - * Makes all methods read-only - * @param {Object} obj - */ - -const freezeMethods = (obj) => { - reduceDescriptors(obj, (descriptor, name) => { - // skip restricted props in strict mode - if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) { - return false; - } - - const value = obj[name]; - - if (!isFunction(value)) return; - - descriptor.enumerable = false; - - if ('writable' in descriptor) { - descriptor.writable = false; - return; - } - - if (!descriptor.set) { - descriptor.set = () => { - throw Error('Can not rewrite read-only method \'' + name + '\''); - }; - } - }); -}; - -const toObjectSet = (arrayOrString, delimiter) => { - const obj = {}; - - const define = (arr) => { - arr.forEach(value => { - obj[value] = true; - }); - }; - - isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter)); - - return obj; -}; - -const noop = () => {}; - -const toFiniteNumber = (value, defaultValue) => { - value = +value; - return Number.isFinite(value) ? value : defaultValue; -}; - -const ALPHA = 'abcdefghijklmnopqrstuvwxyz'; - -const DIGIT = '0123456789'; - -const ALPHABET = { - DIGIT, - ALPHA, - ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT -}; - -const generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => { - let str = ''; - const {length} = alphabet; - while (size--) { - str += alphabet[Math.random() * length|0]; - } - - return str; -}; - -/** - * If the thing is a FormData object, return true, otherwise return false. - * - * @param {unknown} thing - The thing to check. - * - * @returns {boolean} - */ -function isSpecCompliantForm(thing) { - return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]); -} - -const toJSONObject = (obj) => { - const stack = new Array(10); - - const visit = (source, i) => { - - if (isObject(source)) { - if (stack.indexOf(source) >= 0) { - return; - } - - if(!('toJSON' in source)) { - stack[i] = source; - const target = isArray(source) ? [] : {}; - - forEach(source, (value, key) => { - const reducedValue = visit(value, i + 1); - !isUndefined(reducedValue) && (target[key] = reducedValue); - }); - - stack[i] = undefined; - - return target; - } - } - - return source; - }; - - return visit(obj, 0); -}; - -const isAsyncFn = kindOfTest('AsyncFunction'); - -const isThenable = (thing) => - thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch); - -var utils$1 = { - isArray, - isArrayBuffer, - isBuffer, - isFormData, - isArrayBufferView, - isString, - isNumber, - isBoolean, - isObject, - isPlainObject, - isUndefined, - isDate, - isFile, - isBlob, - isRegExp, - isFunction, - isStream, - isURLSearchParams, - isTypedArray, - isFileList, - forEach, - merge, - extend, - trim, - stripBOM, - inherits, - toFlatObject, - kindOf, - kindOfTest, - endsWith, - toArray, - forEachEntry, - matchAll, - isHTMLForm, - hasOwnProperty, - hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection - reduceDescriptors, - freezeMethods, - toObjectSet, - toCamelCase, - noop, - toFiniteNumber, - findKey, - global: _global, - isContextDefined, - ALPHABET, - generateString, - isSpecCompliantForm, - toJSONObject, - isAsyncFn, - isThenable -}; - -/** - * Create an Error with the specified message, config, error code, request and response. - * - * @param {string} message The error message. - * @param {string} [code] The error code (for example, 'ECONNABORTED'). - * @param {Object} [config] The config. - * @param {Object} [request] The request. - * @param {Object} [response] The response. - * - * @returns {Error} The created error. - */ -function AxiosError(message, code, config, request, response) { - Error.call(this); - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } else { - this.stack = (new Error()).stack; - } - - this.message = message; - this.name = 'AxiosError'; - code && (this.code = code); - config && (this.config = config); - request && (this.request = request); - response && (this.response = response); -} - -utils$1.inherits(AxiosError, Error, { - toJSON: function toJSON() { - return { - // Standard - message: this.message, - name: this.name, - // Microsoft - description: this.description, - number: this.number, - // Mozilla - fileName: this.fileName, - lineNumber: this.lineNumber, - columnNumber: this.columnNumber, - stack: this.stack, - // Axios - config: utils$1.toJSONObject(this.config), - code: this.code, - status: this.response && this.response.status ? this.response.status : null - }; - } -}); - -const prototype$1 = AxiosError.prototype; -const descriptors = {}; - -[ - 'ERR_BAD_OPTION_VALUE', - 'ERR_BAD_OPTION', - 'ECONNABORTED', - 'ETIMEDOUT', - 'ERR_NETWORK', - 'ERR_FR_TOO_MANY_REDIRECTS', - 'ERR_DEPRECATED', - 'ERR_BAD_RESPONSE', - 'ERR_BAD_REQUEST', - 'ERR_CANCELED', - 'ERR_NOT_SUPPORT', - 'ERR_INVALID_URL' -// eslint-disable-next-line func-names -].forEach(code => { - descriptors[code] = {value: code}; -}); - -Object.defineProperties(AxiosError, descriptors); -Object.defineProperty(prototype$1, 'isAxiosError', {value: true}); - -// eslint-disable-next-line func-names -AxiosError.from = (error, code, config, request, response, customProps) => { - const axiosError = Object.create(prototype$1); - - utils$1.toFlatObject(error, axiosError, function filter(obj) { - return obj !== Error.prototype; - }, prop => { - return prop !== 'isAxiosError'; - }); - - AxiosError.call(axiosError, error.message, code, config, request, response); - - axiosError.cause = error; - - axiosError.name = error.name; - - customProps && Object.assign(axiosError, customProps); - - return axiosError; -}; - -// eslint-disable-next-line strict -var httpAdapter = null; - -/** - * Determines if the given thing is a array or js object. - * - * @param {string} thing - The object or array to be visited. - * - * @returns {boolean} - */ -function isVisitable(thing) { - return utils$1.isPlainObject(thing) || utils$1.isArray(thing); -} - -/** - * It removes the brackets from the end of a string - * - * @param {string} key - The key of the parameter. - * - * @returns {string} the key without the brackets. - */ -function removeBrackets(key) { - return utils$1.endsWith(key, '[]') ? key.slice(0, -2) : key; -} - -/** - * It takes a path, a key, and a boolean, and returns a string - * - * @param {string} path - The path to the current key. - * @param {string} key - The key of the current object being iterated over. - * @param {string} dots - If true, the key will be rendered with dots instead of brackets. - * - * @returns {string} The path to the current key. - */ -function renderKey(path, key, dots) { - if (!path) return key; - return path.concat(key).map(function each(token, i) { - // eslint-disable-next-line no-param-reassign - token = removeBrackets(token); - return !dots && i ? '[' + token + ']' : token; - }).join(dots ? '.' : ''); -} - -/** - * If the array is an array and none of its elements are visitable, then it's a flat array. - * - * @param {Array} arr - The array to check - * - * @returns {boolean} - */ -function isFlatArray(arr) { - return utils$1.isArray(arr) && !arr.some(isVisitable); -} - -const predicates = utils$1.toFlatObject(utils$1, {}, null, function filter(prop) { - return /^is[A-Z]/.test(prop); -}); - -/** - * Convert a data object to FormData - * - * @param {Object} obj - * @param {?Object} [formData] - * @param {?Object} [options] - * @param {Function} [options.visitor] - * @param {Boolean} [options.metaTokens = true] - * @param {Boolean} [options.dots = false] - * @param {?Boolean} [options.indexes = false] - * - * @returns {Object} - **/ - -/** - * It converts an object into a FormData object - * - * @param {Object} obj - The object to convert to form data. - * @param {string} formData - The FormData object to append to. - * @param {Object} options - * - * @returns - */ -function toFormData(obj, formData, options) { - if (!utils$1.isObject(obj)) { - throw new TypeError('target must be an object'); - } - - // eslint-disable-next-line no-param-reassign - formData = formData || new (FormData)(); - - // eslint-disable-next-line no-param-reassign - options = utils$1.toFlatObject(options, { - metaTokens: true, - dots: false, - indexes: false - }, false, function defined(option, source) { - // eslint-disable-next-line no-eq-null,eqeqeq - return !utils$1.isUndefined(source[option]); - }); - - const metaTokens = options.metaTokens; - // eslint-disable-next-line no-use-before-define - const visitor = options.visitor || defaultVisitor; - const dots = options.dots; - const indexes = options.indexes; - const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob; - const useBlob = _Blob && utils$1.isSpecCompliantForm(formData); - - if (!utils$1.isFunction(visitor)) { - throw new TypeError('visitor must be a function'); - } - - function convertValue(value) { - if (value === null) return ''; - - if (utils$1.isDate(value)) { - return value.toISOString(); - } - - if (!useBlob && utils$1.isBlob(value)) { - throw new AxiosError('Blob is not supported. Use a Buffer instead.'); - } - - if (utils$1.isArrayBuffer(value) || utils$1.isTypedArray(value)) { - return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value); - } - - return value; - } - - /** - * Default visitor. - * - * @param {*} value - * @param {String|Number} key - * @param {Array} path - * @this {FormData} - * - * @returns {boolean} return true to visit the each prop of the value recursively - */ - function defaultVisitor(value, key, path) { - let arr = value; - - if (value && !path && typeof value === 'object') { - if (utils$1.endsWith(key, '{}')) { - // eslint-disable-next-line no-param-reassign - key = metaTokens ? key : key.slice(0, -2); - // eslint-disable-next-line no-param-reassign - value = JSON.stringify(value); - } else if ( - (utils$1.isArray(value) && isFlatArray(value)) || - ((utils$1.isFileList(value) || utils$1.endsWith(key, '[]')) && (arr = utils$1.toArray(value)) - )) { - // eslint-disable-next-line no-param-reassign - key = removeBrackets(key); - - arr.forEach(function each(el, index) { - !(utils$1.isUndefined(el) || el === null) && formData.append( - // eslint-disable-next-line no-nested-ternary - indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'), - convertValue(el) - ); - }); - return false; - } - } - - if (isVisitable(value)) { - return true; - } - - formData.append(renderKey(path, key, dots), convertValue(value)); - - return false; - } - - const stack = []; - - const exposedHelpers = Object.assign(predicates, { - defaultVisitor, - convertValue, - isVisitable - }); - - function build(value, path) { - if (utils$1.isUndefined(value)) return; - - if (stack.indexOf(value) !== -1) { - throw Error('Circular reference detected in ' + path.join('.')); - } - - stack.push(value); - - utils$1.forEach(value, function each(el, key) { - const result = !(utils$1.isUndefined(el) || el === null) && visitor.call( - formData, el, utils$1.isString(key) ? key.trim() : key, path, exposedHelpers - ); - - if (result === true) { - build(el, path ? path.concat(key) : [key]); - } - }); - - stack.pop(); - } - - if (!utils$1.isObject(obj)) { - throw new TypeError('data must be an object'); - } - - build(obj); - - return formData; -} - -/** - * It encodes a string by replacing all characters that are not in the unreserved set with - * their percent-encoded equivalents - * - * @param {string} str - The string to encode. - * - * @returns {string} The encoded string. - */ -function encode$1(str) { - const charMap = { - '!': '%21', - "'": '%27', - '(': '%28', - ')': '%29', - '~': '%7E', - '%20': '+', - '%00': '\x00' - }; - return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) { - return charMap[match]; - }); -} - -/** - * It takes a params object and converts it to a FormData object - * - * @param {Object} params - The parameters to be converted to a FormData object. - * @param {Object} options - The options object passed to the Axios constructor. - * - * @returns {void} - */ -function AxiosURLSearchParams(params, options) { - this._pairs = []; - - params && toFormData(params, this, options); -} - -const prototype = AxiosURLSearchParams.prototype; - -prototype.append = function append(name, value) { - this._pairs.push([name, value]); -}; - -prototype.toString = function toString(encoder) { - const _encode = encoder ? function(value) { - return encoder.call(this, value, encode$1); - } : encode$1; - - return this._pairs.map(function each(pair) { - return _encode(pair[0]) + '=' + _encode(pair[1]); - }, '').join('&'); -}; - -/** - * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their - * URI encoded counterparts - * - * @param {string} val The value to be encoded. - * - * @returns {string} The encoded value. - */ -function encode(val) { - return encodeURIComponent(val). - replace(/%3A/gi, ':'). - replace(/%24/g, '$'). - replace(/%2C/gi, ','). - replace(/%20/g, '+'). - replace(/%5B/gi, '['). - replace(/%5D/gi, ']'); -} - -/** - * Build a URL by appending params to the end - * - * @param {string} url The base of the url (e.g., http://www.google.com) - * @param {object} [params] The params to be appended - * @param {?object} options - * - * @returns {string} The formatted url - */ -function buildURL(url, params, options) { - /*eslint no-param-reassign:0*/ - if (!params) { - return url; - } - - const _encode = options && options.encode || encode; - - const serializeFn = options && options.serialize; - - let serializedParams; - - if (serializeFn) { - serializedParams = serializeFn(params, options); - } else { - serializedParams = utils$1.isURLSearchParams(params) ? - params.toString() : - new AxiosURLSearchParams(params, options).toString(_encode); - } - - if (serializedParams) { - const hashmarkIndex = url.indexOf("#"); - - if (hashmarkIndex !== -1) { - url = url.slice(0, hashmarkIndex); - } - url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams; - } - - return url; -} - -class InterceptorManager { - constructor() { - this.handlers = []; - } - - /** - * Add a new interceptor to the stack - * - * @param {Function} fulfilled The function to handle `then` for a `Promise` - * @param {Function} rejected The function to handle `reject` for a `Promise` - * - * @return {Number} An ID used to remove interceptor later - */ - use(fulfilled, rejected, options) { - this.handlers.push({ - fulfilled, - rejected, - synchronous: options ? options.synchronous : false, - runWhen: options ? options.runWhen : null - }); - return this.handlers.length - 1; - } - - /** - * Remove an interceptor from the stack - * - * @param {Number} id The ID that was returned by `use` - * - * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise - */ - eject(id) { - if (this.handlers[id]) { - this.handlers[id] = null; - } - } - - /** - * Clear all interceptors from the stack - * - * @returns {void} - */ - clear() { - if (this.handlers) { - this.handlers = []; - } - } - - /** - * Iterate over all the registered interceptors - * - * This method is particularly useful for skipping over any - * interceptors that may have become `null` calling `eject`. - * - * @param {Function} fn The function to call for each interceptor - * - * @returns {void} - */ - forEach(fn) { - utils$1.forEach(this.handlers, function forEachHandler(h) { - if (h !== null) { - fn(h); - } - }); - } -} - -var InterceptorManager$1 = InterceptorManager; - -var transitionalDefaults = { - silentJSONParsing: true, - forcedJSONParsing: true, - clarifyTimeoutError: false -}; - -var URLSearchParams$1 = typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams; - -var FormData$1 = typeof FormData !== 'undefined' ? FormData : null; - -var Blob$1 = typeof Blob !== 'undefined' ? Blob : null; - -var platform$1 = { - isBrowser: true, - classes: { - URLSearchParams: URLSearchParams$1, - FormData: FormData$1, - Blob: Blob$1 - }, - protocols: ['http', 'https', 'file', 'blob', 'url', 'data'] -}; - -const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined'; - -/** - * Determine if we're running in a standard browser environment - * - * This allows axios to run in a web worker, and react-native. - * Both environments support XMLHttpRequest, but not fully standard globals. - * - * web workers: - * typeof window -> undefined - * typeof document -> undefined - * - * react-native: - * navigator.product -> 'ReactNative' - * nativescript - * navigator.product -> 'NativeScript' or 'NS' - * - * @returns {boolean} - */ -const hasStandardBrowserEnv = ( - (product) => { - return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0 - })(typeof navigator !== 'undefined' && navigator.product); - -/** - * Determine if we're running in a standard browser webWorker environment - * - * Although the `isStandardBrowserEnv` method indicates that - * `allows axios to run in a web worker`, the WebWorker will still be - * filtered out due to its judgment standard - * `typeof window !== 'undefined' && typeof document !== 'undefined'`. - * This leads to a problem when axios post `FormData` in webWorker - */ -const hasStandardBrowserWebWorkerEnv = (() => { - return ( - typeof WorkerGlobalScope !== 'undefined' && - // eslint-disable-next-line no-undef - self instanceof WorkerGlobalScope && - typeof self.importScripts === 'function' - ); -})(); - -var utils = /*#__PURE__*/Object.freeze({ - __proto__: null, - hasBrowserEnv: hasBrowserEnv, - hasStandardBrowserWebWorkerEnv: hasStandardBrowserWebWorkerEnv, - hasStandardBrowserEnv: hasStandardBrowserEnv -}); - -var platform = { - ...utils, - ...platform$1 -}; - -function toURLEncodedForm(data, options) { - return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({ - visitor: function(value, key, path, helpers) { - if (platform.isNode && utils$1.isBuffer(value)) { - this.append(key, value.toString('base64')); - return false; - } - - return helpers.defaultVisitor.apply(this, arguments); - } - }, options)); -} - -/** - * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z'] - * - * @param {string} name - The name of the property to get. - * - * @returns An array of strings. - */ -function parsePropPath(name) { - // foo[x][y][z] - // foo.x.y.z - // foo-x-y-z - // foo x y z - return utils$1.matchAll(/\w+|\[(\w*)]/g, name).map(match => { - return match[0] === '[]' ? '' : match[1] || match[0]; - }); -} - -/** - * Convert an array to an object. - * - * @param {Array} arr - The array to convert to an object. - * - * @returns An object with the same keys and values as the array. - */ -function arrayToObject(arr) { - const obj = {}; - const keys = Object.keys(arr); - let i; - const len = keys.length; - let key; - for (i = 0; i < len; i++) { - key = keys[i]; - obj[key] = arr[key]; - } - return obj; -} - -/** - * It takes a FormData object and returns a JavaScript object - * - * @param {string} formData The FormData object to convert to JSON. - * - * @returns {Object | null} The converted object. - */ -function formDataToJSON(formData) { - function buildPath(path, value, target, index) { - let name = path[index++]; - - if (name === '__proto__') return true; - - const isNumericKey = Number.isFinite(+name); - const isLast = index >= path.length; - name = !name && utils$1.isArray(target) ? target.length : name; - - if (isLast) { - if (utils$1.hasOwnProp(target, name)) { - target[name] = [target[name], value]; - } else { - target[name] = value; - } - - return !isNumericKey; - } - - if (!target[name] || !utils$1.isObject(target[name])) { - target[name] = []; - } - - const result = buildPath(path, value, target[name], index); - - if (result && utils$1.isArray(target[name])) { - target[name] = arrayToObject(target[name]); - } - - return !isNumericKey; - } - - if (utils$1.isFormData(formData) && utils$1.isFunction(formData.entries)) { - const obj = {}; - - utils$1.forEachEntry(formData, (name, value) => { - buildPath(parsePropPath(name), value, obj, 0); - }); - - return obj; - } - - return null; -} - -/** - * It takes a string, tries to parse it, and if it fails, it returns the stringified version - * of the input - * - * @param {any} rawValue - The value to be stringified. - * @param {Function} parser - A function that parses a string into a JavaScript object. - * @param {Function} encoder - A function that takes a value and returns a string. - * - * @returns {string} A stringified version of the rawValue. - */ -function stringifySafely(rawValue, parser, encoder) { - if (utils$1.isString(rawValue)) { - try { - (parser || JSON.parse)(rawValue); - return utils$1.trim(rawValue); - } catch (e) { - if (e.name !== 'SyntaxError') { - throw e; - } - } - } - - return (encoder || JSON.stringify)(rawValue); -} - -const defaults = { - - transitional: transitionalDefaults, - - adapter: ['xhr', 'http'], - - transformRequest: [function transformRequest(data, headers) { - const contentType = headers.getContentType() || ''; - const hasJSONContentType = contentType.indexOf('application/json') > -1; - const isObjectPayload = utils$1.isObject(data); - - if (isObjectPayload && utils$1.isHTMLForm(data)) { - data = new FormData(data); - } - - const isFormData = utils$1.isFormData(data); - - if (isFormData) { - return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data; - } - - if (utils$1.isArrayBuffer(data) || - utils$1.isBuffer(data) || - utils$1.isStream(data) || - utils$1.isFile(data) || - utils$1.isBlob(data) - ) { - return data; - } - if (utils$1.isArrayBufferView(data)) { - return data.buffer; - } - if (utils$1.isURLSearchParams(data)) { - headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false); - return data.toString(); - } - - let isFileList; - - if (isObjectPayload) { - if (contentType.indexOf('application/x-www-form-urlencoded') > -1) { - return toURLEncodedForm(data, this.formSerializer).toString(); - } - - if ((isFileList = utils$1.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) { - const _FormData = this.env && this.env.FormData; - - return toFormData( - isFileList ? {'files[]': data} : data, - _FormData && new _FormData(), - this.formSerializer - ); - } - } - - if (isObjectPayload || hasJSONContentType ) { - headers.setContentType('application/json', false); - return stringifySafely(data); - } - - return data; - }], - - transformResponse: [function transformResponse(data) { - const transitional = this.transitional || defaults.transitional; - const forcedJSONParsing = transitional && transitional.forcedJSONParsing; - const JSONRequested = this.responseType === 'json'; - - if (data && utils$1.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) { - const silentJSONParsing = transitional && transitional.silentJSONParsing; - const strictJSONParsing = !silentJSONParsing && JSONRequested; - - try { - return JSON.parse(data); - } catch (e) { - if (strictJSONParsing) { - if (e.name === 'SyntaxError') { - throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response); - } - throw e; - } - } - } - - return data; - }], - - /** - * A timeout in milliseconds to abort a request. If set to 0 (default) a - * timeout is not created. - */ - timeout: 0, - - xsrfCookieName: 'XSRF-TOKEN', - xsrfHeaderName: 'X-XSRF-TOKEN', - - maxContentLength: -1, - maxBodyLength: -1, - - env: { - FormData: platform.classes.FormData, - Blob: platform.classes.Blob - }, - - validateStatus: function validateStatus(status) { - return status >= 200 && status < 300; - }, - - headers: { - common: { - 'Accept': 'application/json, text/plain, */*', - 'Content-Type': undefined - } - } -}; - -utils$1.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => { - defaults.headers[method] = {}; -}); - -var defaults$1 = defaults; - -// RawAxiosHeaders whose duplicates are ignored by node -// c.f. https://nodejs.org/api/http.html#http_message_headers -const ignoreDuplicateOf = utils$1.toObjectSet([ - 'age', 'authorization', 'content-length', 'content-type', 'etag', - 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since', - 'last-modified', 'location', 'max-forwards', 'proxy-authorization', - 'referer', 'retry-after', 'user-agent' -]); - -/** - * Parse headers into an object - * - * ``` - * Date: Wed, 27 Aug 2014 08:58:49 GMT - * Content-Type: application/json - * Connection: keep-alive - * Transfer-Encoding: chunked - * ``` - * - * @param {String} rawHeaders Headers needing to be parsed - * - * @returns {Object} Headers parsed into an object - */ -var parseHeaders = rawHeaders => { - const parsed = {}; - let key; - let val; - let i; - - rawHeaders && rawHeaders.split('\n').forEach(function parser(line) { - i = line.indexOf(':'); - key = line.substring(0, i).trim().toLowerCase(); - val = line.substring(i + 1).trim(); - - if (!key || (parsed[key] && ignoreDuplicateOf[key])) { - return; - } - - if (key === 'set-cookie') { - if (parsed[key]) { - parsed[key].push(val); - } else { - parsed[key] = [val]; - } - } else { - parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val; - } - }); - - return parsed; -}; - -const $internals = Symbol('internals'); - -function normalizeHeader(header) { - return header && String(header).trim().toLowerCase(); -} - -function normalizeValue(value) { - if (value === false || value == null) { - return value; - } - - return utils$1.isArray(value) ? value.map(normalizeValue) : String(value); -} - -function parseTokens(str) { - const tokens = Object.create(null); - const tokensRE = /([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g; - let match; - - while ((match = tokensRE.exec(str))) { - tokens[match[1]] = match[2]; - } - - return tokens; -} - -const isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim()); - -function matchHeaderValue(context, value, header, filter, isHeaderNameFilter) { - if (utils$1.isFunction(filter)) { - return filter.call(this, value, header); - } - - if (isHeaderNameFilter) { - value = header; - } - - if (!utils$1.isString(value)) return; - - if (utils$1.isString(filter)) { - return value.indexOf(filter) !== -1; - } - - if (utils$1.isRegExp(filter)) { - return filter.test(value); - } -} - -function formatHeader(header) { - return header.trim() - .toLowerCase().replace(/([a-z\d])(\w*)/g, (w, char, str) => { - return char.toUpperCase() + str; - }); -} - -function buildAccessors(obj, header) { - const accessorName = utils$1.toCamelCase(' ' + header); - - ['get', 'set', 'has'].forEach(methodName => { - Object.defineProperty(obj, methodName + accessorName, { - value: function(arg1, arg2, arg3) { - return this[methodName].call(this, header, arg1, arg2, arg3); - }, - configurable: true - }); - }); -} - -class AxiosHeaders { - constructor(headers) { - headers && this.set(headers); - } - - set(header, valueOrRewrite, rewrite) { - const self = this; - - function setHeader(_value, _header, _rewrite) { - const lHeader = normalizeHeader(_header); - - if (!lHeader) { - throw new Error('header name must be a non-empty string'); - } - - const key = utils$1.findKey(self, lHeader); - - if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) { - self[key || _header] = normalizeValue(_value); - } - } - - const setHeaders = (headers, _rewrite) => - utils$1.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite)); - - if (utils$1.isPlainObject(header) || header instanceof this.constructor) { - setHeaders(header, valueOrRewrite); - } else if(utils$1.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) { - setHeaders(parseHeaders(header), valueOrRewrite); - } else { - header != null && setHeader(valueOrRewrite, header, rewrite); - } - - return this; - } - - get(header, parser) { - header = normalizeHeader(header); - - if (header) { - const key = utils$1.findKey(this, header); - - if (key) { - const value = this[key]; - - if (!parser) { - return value; - } - - if (parser === true) { - return parseTokens(value); - } - - if (utils$1.isFunction(parser)) { - return parser.call(this, value, key); - } - - if (utils$1.isRegExp(parser)) { - return parser.exec(value); - } - - throw new TypeError('parser must be boolean|regexp|function'); - } - } - } - - has(header, matcher) { - header = normalizeHeader(header); - - if (header) { - const key = utils$1.findKey(this, header); - - return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher))); - } - - return false; - } - - delete(header, matcher) { - const self = this; - let deleted = false; - - function deleteHeader(_header) { - _header = normalizeHeader(_header); - - if (_header) { - const key = utils$1.findKey(self, _header); - - if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) { - delete self[key]; - - deleted = true; - } - } - } - - if (utils$1.isArray(header)) { - header.forEach(deleteHeader); - } else { - deleteHeader(header); - } - - return deleted; - } - - clear(matcher) { - const keys = Object.keys(this); - let i = keys.length; - let deleted = false; - - while (i--) { - const key = keys[i]; - if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) { - delete this[key]; - deleted = true; - } - } - - return deleted; - } - - normalize(format) { - const self = this; - const headers = {}; - - utils$1.forEach(this, (value, header) => { - const key = utils$1.findKey(headers, header); - - if (key) { - self[key] = normalizeValue(value); - delete self[header]; - return; - } - - const normalized = format ? formatHeader(header) : String(header).trim(); - - if (normalized !== header) { - delete self[header]; - } - - self[normalized] = normalizeValue(value); - - headers[normalized] = true; - }); - - return this; - } - - concat(...targets) { - return this.constructor.concat(this, ...targets); - } - - toJSON(asStrings) { - const obj = Object.create(null); - - utils$1.forEach(this, (value, header) => { - value != null && value !== false && (obj[header] = asStrings && utils$1.isArray(value) ? value.join(', ') : value); - }); - - return obj; - } - - [Symbol.iterator]() { - return Object.entries(this.toJSON())[Symbol.iterator](); - } - - toString() { - return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\n'); - } - - get [Symbol.toStringTag]() { - return 'AxiosHeaders'; - } - - static from(thing) { - return thing instanceof this ? thing : new this(thing); - } - - static concat(first, ...targets) { - const computed = new this(first); - - targets.forEach((target) => computed.set(target)); - - return computed; - } - - static accessor(header) { - const internals = this[$internals] = (this[$internals] = { - accessors: {} - }); - - const accessors = internals.accessors; - const prototype = this.prototype; - - function defineAccessor(_header) { - const lHeader = normalizeHeader(_header); - - if (!accessors[lHeader]) { - buildAccessors(prototype, _header); - accessors[lHeader] = true; - } - } - - utils$1.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header); - - return this; - } -} - -AxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']); - -// reserved names hotfix -utils$1.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => { - let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set` - return { - get: () => value, - set(headerValue) { - this[mapped] = headerValue; - } - } -}); - -utils$1.freezeMethods(AxiosHeaders); - -var AxiosHeaders$1 = AxiosHeaders; - -/** - * Transform the data for a request or a response - * - * @param {Array|Function} fns A single function or Array of functions - * @param {?Object} response The response object - * - * @returns {*} The resulting transformed data - */ -function transformData(fns, response) { - const config = this || defaults$1; - const context = response || config; - const headers = AxiosHeaders$1.from(context.headers); - let data = context.data; - - utils$1.forEach(fns, function transform(fn) { - data = fn.call(config, data, headers.normalize(), response ? response.status : undefined); - }); - - headers.normalize(); - - return data; -} - -function isCancel(value) { - return !!(value && value.__CANCEL__); -} - -/** - * A `CanceledError` is an object that is thrown when an operation is canceled. - * - * @param {string=} message The message. - * @param {Object=} config The config. - * @param {Object=} request The request. - * - * @returns {CanceledError} The created error. - */ -function CanceledError(message, config, request) { - // eslint-disable-next-line no-eq-null,eqeqeq - AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request); - this.name = 'CanceledError'; -} - -utils$1.inherits(CanceledError, AxiosError, { - __CANCEL__: true -}); - -/** - * Resolve or reject a Promise based on response status. - * - * @param {Function} resolve A function that resolves the promise. - * @param {Function} reject A function that rejects the promise. - * @param {object} response The response. - * - * @returns {object} The response. - */ -function settle(resolve, reject, response) { - const validateStatus = response.config.validateStatus; - if (!response.status || !validateStatus || validateStatus(response.status)) { - resolve(response); - } else { - reject(new AxiosError( - 'Request failed with status code ' + response.status, - [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4], - response.config, - response.request, - response - )); - } -} - -var cookies = platform.hasStandardBrowserEnv ? - - // Standard browser envs support document.cookie - { - write(name, value, expires, path, domain, secure) { - const cookie = [name + '=' + encodeURIComponent(value)]; - - utils$1.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString()); - - utils$1.isString(path) && cookie.push('path=' + path); - - utils$1.isString(domain) && cookie.push('domain=' + domain); - - secure === true && cookie.push('secure'); - - document.cookie = cookie.join('; '); - }, - - read(name) { - const match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)')); - return (match ? decodeURIComponent(match[3]) : null); - }, - - remove(name) { - this.write(name, '', Date.now() - 86400000); - } - } - - : - - // Non-standard browser env (web workers, react-native) lack needed support. - { - write() {}, - read() { - return null; - }, - remove() {} - }; - -/** - * Determines whether the specified URL is absolute - * - * @param {string} url The URL to test - * - * @returns {boolean} True if the specified URL is absolute, otherwise false - */ -function isAbsoluteURL(url) { - // A URL is considered absolute if it begins with "://" or "//" (protocol-relative URL). - // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed - // by any combination of letters, digits, plus, period, or hyphen. - return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url); -} - -/** - * Creates a new URL by combining the specified URLs - * - * @param {string} baseURL The base URL - * @param {string} relativeURL The relative URL - * - * @returns {string} The combined URL - */ -function combineURLs(baseURL, relativeURL) { - return relativeURL - ? baseURL.replace(/\/?\/$/, '') + '/' + relativeURL.replace(/^\/+/, '') - : baseURL; -} - -/** - * Creates a new URL by combining the baseURL with the requestedURL, - * only when the requestedURL is not already an absolute URL. - * If the requestURL is absolute, this function returns the requestedURL untouched. - * - * @param {string} baseURL The base URL - * @param {string} requestedURL Absolute or relative URL to combine - * - * @returns {string} The combined full path - */ -function buildFullPath(baseURL, requestedURL) { - if (baseURL && !isAbsoluteURL(requestedURL)) { - return combineURLs(baseURL, requestedURL); - } - return requestedURL; -} - -var isURLSameOrigin = platform.hasStandardBrowserEnv ? - -// Standard browser envs have full support of the APIs needed to test -// whether the request URL is of the same origin as current location. - (function standardBrowserEnv() { - const msie = /(msie|trident)/i.test(navigator.userAgent); - const urlParsingNode = document.createElement('a'); - let originURL; - - /** - * Parse a URL to discover its components - * - * @param {String} url The URL to be parsed - * @returns {Object} - */ - function resolveURL(url) { - let href = url; - - if (msie) { - // IE needs attribute set twice to normalize properties - urlParsingNode.setAttribute('href', href); - href = urlParsingNode.href; - } - - urlParsingNode.setAttribute('href', href); - - // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils - return { - href: urlParsingNode.href, - protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '', - host: urlParsingNode.host, - search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '', - hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '', - hostname: urlParsingNode.hostname, - port: urlParsingNode.port, - pathname: (urlParsingNode.pathname.charAt(0) === '/') ? - urlParsingNode.pathname : - '/' + urlParsingNode.pathname - }; - } - - originURL = resolveURL(window.location.href); - - /** - * Determine if a URL shares the same origin as the current location - * - * @param {String} requestURL The URL to test - * @returns {boolean} True if URL shares the same origin, otherwise false - */ - return function isURLSameOrigin(requestURL) { - const parsed = (utils$1.isString(requestURL)) ? resolveURL(requestURL) : requestURL; - return (parsed.protocol === originURL.protocol && - parsed.host === originURL.host); - }; - })() : - - // Non standard browser envs (web workers, react-native) lack needed support. - (function nonStandardBrowserEnv() { - return function isURLSameOrigin() { - return true; - }; - })(); - -function parseProtocol(url) { - const match = /^([-+\w]{1,25})(:?\/\/|:)/.exec(url); - return match && match[1] || ''; -} - -/** - * Calculate data maxRate - * @param {Number} [samplesCount= 10] - * @param {Number} [min= 1000] - * @returns {Function} - */ -function speedometer(samplesCount, min) { - samplesCount = samplesCount || 10; - const bytes = new Array(samplesCount); - const timestamps = new Array(samplesCount); - let head = 0; - let tail = 0; - let firstSampleTS; - - min = min !== undefined ? min : 1000; - - return function push(chunkLength) { - const now = Date.now(); - - const startedAt = timestamps[tail]; - - if (!firstSampleTS) { - firstSampleTS = now; - } - - bytes[head] = chunkLength; - timestamps[head] = now; - - let i = tail; - let bytesCount = 0; - - while (i !== head) { - bytesCount += bytes[i++]; - i = i % samplesCount; - } - - head = (head + 1) % samplesCount; - - if (head === tail) { - tail = (tail + 1) % samplesCount; - } - - if (now - firstSampleTS < min) { - return; - } - - const passed = startedAt && now - startedAt; - - return passed ? Math.round(bytesCount * 1000 / passed) : undefined; - }; -} - -function progressEventReducer(listener, isDownloadStream) { - let bytesNotified = 0; - const _speedometer = speedometer(50, 250); - - return e => { - const loaded = e.loaded; - const total = e.lengthComputable ? e.total : undefined; - const progressBytes = loaded - bytesNotified; - const rate = _speedometer(progressBytes); - const inRange = loaded <= total; - - bytesNotified = loaded; - - const data = { - loaded, - total, - progress: total ? (loaded / total) : undefined, - bytes: progressBytes, - rate: rate ? rate : undefined, - estimated: rate && total && inRange ? (total - loaded) / rate : undefined, - event: e - }; - - data[isDownloadStream ? 'download' : 'upload'] = true; - - listener(data); - }; -} - -const isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined'; - -var xhrAdapter = isXHRAdapterSupported && function (config) { - return new Promise(function dispatchXhrRequest(resolve, reject) { - let requestData = config.data; - const requestHeaders = AxiosHeaders$1.from(config.headers).normalize(); - let {responseType, withXSRFToken} = config; - let onCanceled; - function done() { - if (config.cancelToken) { - config.cancelToken.unsubscribe(onCanceled); - } - - if (config.signal) { - config.signal.removeEventListener('abort', onCanceled); - } - } - - let contentType; - - if (utils$1.isFormData(requestData)) { - if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) { - requestHeaders.setContentType(false); // Let the browser set it - } else if ((contentType = requestHeaders.getContentType()) !== false) { - // fix semicolon duplication issue for ReactNative FormData implementation - const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : []; - requestHeaders.setContentType([type || 'multipart/form-data', ...tokens].join('; ')); - } - } - - let request = new XMLHttpRequest(); - - // HTTP basic authentication - if (config.auth) { - const username = config.auth.username || ''; - const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : ''; - requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password)); - } - - const fullPath = buildFullPath(config.baseURL, config.url); - - request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true); - - // Set the request timeout in MS - request.timeout = config.timeout; - - function onloadend() { - if (!request) { - return; - } - // Prepare the response - const responseHeaders = AxiosHeaders$1.from( - 'getAllResponseHeaders' in request && request.getAllResponseHeaders() - ); - const responseData = !responseType || responseType === 'text' || responseType === 'json' ? - request.responseText : request.response; - const response = { - data: responseData, - status: request.status, - statusText: request.statusText, - headers: responseHeaders, - config, - request - }; - - settle(function _resolve(value) { - resolve(value); - done(); - }, function _reject(err) { - reject(err); - done(); - }, response); - - // Clean up request - request = null; - } - - if ('onloadend' in request) { - // Use onloadend if available - request.onloadend = onloadend; - } else { - // Listen for ready state to emulate onloadend - request.onreadystatechange = function handleLoad() { - if (!request || request.readyState !== 4) { - return; - } - - // The request errored out and we didn't get a response, this will be - // handled by onerror instead - // With one exception: request that using file: protocol, most browsers - // will return status as 0 even though it's a successful request - if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) { - return; - } - // readystate handler is calling before onerror or ontimeout handlers, - // so we should call onloadend on the next 'tick' - setTimeout(onloadend); - }; - } - - // Handle browser request cancellation (as opposed to a manual cancellation) - request.onabort = function handleAbort() { - if (!request) { - return; - } - - reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request)); - - // Clean up request - request = null; - }; - - // Handle low level network errors - request.onerror = function handleError() { - // Real errors are hidden from us by the browser - // onerror should only fire if it's a network error - reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request)); - - // Clean up request - request = null; - }; - - // Handle timeout - request.ontimeout = function handleTimeout() { - let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded'; - const transitional = config.transitional || transitionalDefaults; - if (config.timeoutErrorMessage) { - timeoutErrorMessage = config.timeoutErrorMessage; - } - reject(new AxiosError( - timeoutErrorMessage, - transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED, - config, - request)); - - // Clean up request - request = null; - }; - - // Add xsrf header - // This is only done if running in a standard browser environment. - // Specifically not if we're in a web worker, or react-native. - if(platform.hasStandardBrowserEnv) { - withXSRFToken && utils$1.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(config)); - - if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(fullPath))) { - // Add xsrf header - const xsrfValue = config.xsrfHeaderName && config.xsrfCookieName && cookies.read(config.xsrfCookieName); - - if (xsrfValue) { - requestHeaders.set(config.xsrfHeaderName, xsrfValue); - } - } - } - - // Remove Content-Type if data is undefined - requestData === undefined && requestHeaders.setContentType(null); - - // Add headers to the request - if ('setRequestHeader' in request) { - utils$1.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) { - request.setRequestHeader(key, val); - }); - } - - // Add withCredentials to request if needed - if (!utils$1.isUndefined(config.withCredentials)) { - request.withCredentials = !!config.withCredentials; - } - - // Add responseType to request if needed - if (responseType && responseType !== 'json') { - request.responseType = config.responseType; - } - - // Handle progress if needed - if (typeof config.onDownloadProgress === 'function') { - request.addEventListener('progress', progressEventReducer(config.onDownloadProgress, true)); - } - - // Not all browsers support upload events - if (typeof config.onUploadProgress === 'function' && request.upload) { - request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress)); - } - - if (config.cancelToken || config.signal) { - // Handle cancellation - // eslint-disable-next-line func-names - onCanceled = cancel => { - if (!request) { - return; - } - reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel); - request.abort(); - request = null; - }; - - config.cancelToken && config.cancelToken.subscribe(onCanceled); - if (config.signal) { - config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled); - } - } - - const protocol = parseProtocol(fullPath); - - if (protocol && platform.protocols.indexOf(protocol) === -1) { - reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config)); - return; - } - - - // Send the request - request.send(requestData || null); - }); -}; - -const knownAdapters = { - http: httpAdapter, - xhr: xhrAdapter -}; - -utils$1.forEach(knownAdapters, (fn, value) => { - if (fn) { - try { - Object.defineProperty(fn, 'name', {value}); - } catch (e) { - // eslint-disable-next-line no-empty - } - Object.defineProperty(fn, 'adapterName', {value}); - } -}); - -const renderReason = (reason) => `- ${reason}`; - -const isResolvedHandle = (adapter) => utils$1.isFunction(adapter) || adapter === null || adapter === false; - -var adapters = { - getAdapter: (adapters) => { - adapters = utils$1.isArray(adapters) ? adapters : [adapters]; - - const {length} = adapters; - let nameOrAdapter; - let adapter; - - const rejectedReasons = {}; - - for (let i = 0; i < length; i++) { - nameOrAdapter = adapters[i]; - let id; - - adapter = nameOrAdapter; - - if (!isResolvedHandle(nameOrAdapter)) { - adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()]; - - if (adapter === undefined) { - throw new AxiosError(`Unknown adapter '${id}'`); - } - } - - if (adapter) { - break; - } - - rejectedReasons[id || '#' + i] = adapter; - } - - if (!adapter) { - - const reasons = Object.entries(rejectedReasons) - .map(([id, state]) => `adapter ${id} ` + - (state === false ? 'is not supported by the environment' : 'is not available in the build') - ); - - let s = length ? - (reasons.length > 1 ? 'since :\n' + reasons.map(renderReason).join('\n') : ' ' + renderReason(reasons[0])) : - 'as no adapter specified'; - - throw new AxiosError( - `There is no suitable adapter to dispatch the request ` + s, - 'ERR_NOT_SUPPORT' - ); - } - - return adapter; - }, - adapters: knownAdapters -}; - -/** - * Throws a `CanceledError` if cancellation has been requested. - * - * @param {Object} config The config that is to be used for the request - * - * @returns {void} - */ -function throwIfCancellationRequested(config) { - if (config.cancelToken) { - config.cancelToken.throwIfRequested(); - } - - if (config.signal && config.signal.aborted) { - throw new CanceledError(null, config); - } -} - -/** - * Dispatch a request to the server using the configured adapter. - * - * @param {object} config The config that is to be used for the request - * - * @returns {Promise} The Promise to be fulfilled - */ -function dispatchRequest(config) { - throwIfCancellationRequested(config); - - config.headers = AxiosHeaders$1.from(config.headers); - - // Transform request data - config.data = transformData.call( - config, - config.transformRequest - ); - - if (['post', 'put', 'patch'].indexOf(config.method) !== -1) { - config.headers.setContentType('application/x-www-form-urlencoded', false); - } - - const adapter = adapters.getAdapter(config.adapter || defaults$1.adapter); - - return adapter(config).then(function onAdapterResolution(response) { - throwIfCancellationRequested(config); - - // Transform response data - response.data = transformData.call( - config, - config.transformResponse, - response - ); - - response.headers = AxiosHeaders$1.from(response.headers); - - return response; - }, function onAdapterRejection(reason) { - if (!isCancel(reason)) { - throwIfCancellationRequested(config); - - // Transform response data - if (reason && reason.response) { - reason.response.data = transformData.call( - config, - config.transformResponse, - reason.response - ); - reason.response.headers = AxiosHeaders$1.from(reason.response.headers); - } - } - - return Promise.reject(reason); - }); -} - -const headersToObject = (thing) => thing instanceof AxiosHeaders$1 ? thing.toJSON() : thing; - -/** - * Config-specific merge-function which creates a new config-object - * by merging two configuration objects together. - * - * @param {Object} config1 - * @param {Object} config2 - * - * @returns {Object} New object resulting from merging config2 to config1 - */ -function mergeConfig(config1, config2) { - // eslint-disable-next-line no-param-reassign - config2 = config2 || {}; - const config = {}; - - function getMergedValue(target, source, caseless) { - if (utils$1.isPlainObject(target) && utils$1.isPlainObject(source)) { - return utils$1.merge.call({caseless}, target, source); - } else if (utils$1.isPlainObject(source)) { - return utils$1.merge({}, source); - } else if (utils$1.isArray(source)) { - return source.slice(); - } - return source; - } - - // eslint-disable-next-line consistent-return - function mergeDeepProperties(a, b, caseless) { - if (!utils$1.isUndefined(b)) { - return getMergedValue(a, b, caseless); - } else if (!utils$1.isUndefined(a)) { - return getMergedValue(undefined, a, caseless); - } - } - - // eslint-disable-next-line consistent-return - function valueFromConfig2(a, b) { - if (!utils$1.isUndefined(b)) { - return getMergedValue(undefined, b); - } - } - - // eslint-disable-next-line consistent-return - function defaultToConfig2(a, b) { - if (!utils$1.isUndefined(b)) { - return getMergedValue(undefined, b); - } else if (!utils$1.isUndefined(a)) { - return getMergedValue(undefined, a); - } - } - - // eslint-disable-next-line consistent-return - function mergeDirectKeys(a, b, prop) { - if (prop in config2) { - return getMergedValue(a, b); - } else if (prop in config1) { - return getMergedValue(undefined, a); - } - } - - const mergeMap = { - url: valueFromConfig2, - method: valueFromConfig2, - data: valueFromConfig2, - baseURL: defaultToConfig2, - transformRequest: defaultToConfig2, - transformResponse: defaultToConfig2, - paramsSerializer: defaultToConfig2, - timeout: defaultToConfig2, - timeoutMessage: defaultToConfig2, - withCredentials: defaultToConfig2, - withXSRFToken: defaultToConfig2, - adapter: defaultToConfig2, - responseType: defaultToConfig2, - xsrfCookieName: defaultToConfig2, - xsrfHeaderName: defaultToConfig2, - onUploadProgress: defaultToConfig2, - onDownloadProgress: defaultToConfig2, - decompress: defaultToConfig2, - maxContentLength: defaultToConfig2, - maxBodyLength: defaultToConfig2, - beforeRedirect: defaultToConfig2, - transport: defaultToConfig2, - httpAgent: defaultToConfig2, - httpsAgent: defaultToConfig2, - cancelToken: defaultToConfig2, - socketPath: defaultToConfig2, - responseEncoding: defaultToConfig2, - validateStatus: mergeDirectKeys, - headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true) - }; - - utils$1.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) { - const merge = mergeMap[prop] || mergeDeepProperties; - const configValue = merge(config1[prop], config2[prop], prop); - (utils$1.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue); - }); - - return config; -} - -const VERSION = "1.6.7"; - -const validators$1 = {}; - -// eslint-disable-next-line func-names -['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => { - validators$1[type] = function validator(thing) { - return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type; - }; -}); - -const deprecatedWarnings = {}; - -/** - * Transitional option validator - * - * @param {function|boolean?} validator - set to false if the transitional option has been removed - * @param {string?} version - deprecated version / removed since version - * @param {string?} message - some message with additional info - * - * @returns {function} - */ -validators$1.transitional = function transitional(validator, version, message) { - function formatMessage(opt, desc) { - return '[Axios v' + VERSION + '] Transitional option \'' + opt + '\'' + desc + (message ? '. ' + message : ''); - } - - // eslint-disable-next-line func-names - return (value, opt, opts) => { - if (validator === false) { - throw new AxiosError( - formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')), - AxiosError.ERR_DEPRECATED - ); - } - - if (version && !deprecatedWarnings[opt]) { - deprecatedWarnings[opt] = true; - // eslint-disable-next-line no-console - console.warn( - formatMessage( - opt, - ' has been deprecated since v' + version + ' and will be removed in the near future' - ) - ); - } - - return validator ? validator(value, opt, opts) : true; - }; -}; - -/** - * Assert object's properties type - * - * @param {object} options - * @param {object} schema - * @param {boolean?} allowUnknown - * - * @returns {object} - */ - -function assertOptions(options, schema, allowUnknown) { - if (typeof options !== 'object') { - throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE); - } - const keys = Object.keys(options); - let i = keys.length; - while (i-- > 0) { - const opt = keys[i]; - const validator = schema[opt]; - if (validator) { - const value = options[opt]; - const result = value === undefined || validator(value, opt, options); - if (result !== true) { - throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE); - } - continue; - } - if (allowUnknown !== true) { - throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION); - } - } -} - -var validator = { - assertOptions, - validators: validators$1 -}; - -const validators = validator.validators; - -/** - * Create a new instance of Axios - * - * @param {Object} instanceConfig The default config for the instance - * - * @return {Axios} A new instance of Axios - */ -class Axios { - constructor(instanceConfig) { - this.defaults = instanceConfig; - this.interceptors = { - request: new InterceptorManager$1(), - response: new InterceptorManager$1() - }; - } - - /** - * Dispatch a request - * - * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults) - * @param {?Object} config - * - * @returns {Promise} The Promise to be fulfilled - */ - async request(configOrUrl, config) { - try { - return await this._request(configOrUrl, config); - } catch (err) { - if (err instanceof Error) { - let dummy; - - Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error()); - - // slice off the Error: ... line - const stack = dummy.stack ? dummy.stack.replace(/^.+\n/, '') : ''; - - if (!err.stack) { - err.stack = stack; - // match without the 2 top stack lines - } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\n.+\n/, ''))) { - err.stack += '\n' + stack; - } - } - - throw err; - } - } - - _request(configOrUrl, config) { - /*eslint no-param-reassign:0*/ - // Allow for axios('example/url'[, config]) a la fetch API - if (typeof configOrUrl === 'string') { - config = config || {}; - config.url = configOrUrl; - } else { - config = configOrUrl || {}; - } - - config = mergeConfig(this.defaults, config); - - const {transitional, paramsSerializer, headers} = config; - - if (transitional !== undefined) { - validator.assertOptions(transitional, { - silentJSONParsing: validators.transitional(validators.boolean), - forcedJSONParsing: validators.transitional(validators.boolean), - clarifyTimeoutError: validators.transitional(validators.boolean) - }, false); - } - - if (paramsSerializer != null) { - if (utils$1.isFunction(paramsSerializer)) { - config.paramsSerializer = { - serialize: paramsSerializer - }; - } else { - validator.assertOptions(paramsSerializer, { - encode: validators.function, - serialize: validators.function - }, true); - } - } - - // Set config.method - config.method = (config.method || this.defaults.method || 'get').toLowerCase(); - - // Flatten headers - let contextHeaders = headers && utils$1.merge( - headers.common, - headers[config.method] - ); - - headers && utils$1.forEach( - ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], - (method) => { - delete headers[method]; - } - ); - - config.headers = AxiosHeaders$1.concat(contextHeaders, headers); - - // filter out skipped interceptors - const requestInterceptorChain = []; - let synchronousRequestInterceptors = true; - this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) { - if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) { - return; - } - - synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous; - - requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected); - }); - - const responseInterceptorChain = []; - this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) { - responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected); - }); - - let promise; - let i = 0; - let len; - - if (!synchronousRequestInterceptors) { - const chain = [dispatchRequest.bind(this), undefined]; - chain.unshift.apply(chain, requestInterceptorChain); - chain.push.apply(chain, responseInterceptorChain); - len = chain.length; - - promise = Promise.resolve(config); - - while (i < len) { - promise = promise.then(chain[i++], chain[i++]); - } - - return promise; - } - - len = requestInterceptorChain.length; - - let newConfig = config; - - i = 0; - - while (i < len) { - const onFulfilled = requestInterceptorChain[i++]; - const onRejected = requestInterceptorChain[i++]; - try { - newConfig = onFulfilled(newConfig); - } catch (error) { - onRejected.call(this, error); - break; - } - } - - try { - promise = dispatchRequest.call(this, newConfig); - } catch (error) { - return Promise.reject(error); - } - - i = 0; - len = responseInterceptorChain.length; - - while (i < len) { - promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]); - } - - return promise; - } - - getUri(config) { - config = mergeConfig(this.defaults, config); - const fullPath = buildFullPath(config.baseURL, config.url); - return buildURL(fullPath, config.params, config.paramsSerializer); - } -} - -// Provide aliases for supported request methods -utils$1.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) { - /*eslint func-names:0*/ - Axios.prototype[method] = function(url, config) { - return this.request(mergeConfig(config || {}, { - method, - url, - data: (config || {}).data - })); - }; -}); - -utils$1.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { - /*eslint func-names:0*/ - - function generateHTTPMethod(isForm) { - return function httpMethod(url, data, config) { - return this.request(mergeConfig(config || {}, { - method, - headers: isForm ? { - 'Content-Type': 'multipart/form-data' - } : {}, - url, - data - })); - }; - } - - Axios.prototype[method] = generateHTTPMethod(); - - Axios.prototype[method + 'Form'] = generateHTTPMethod(true); -}); - -var Axios$1 = Axios; - -/** - * A `CancelToken` is an object that can be used to request cancellation of an operation. - * - * @param {Function} executor The executor function. - * - * @returns {CancelToken} - */ -class CancelToken { - constructor(executor) { - if (typeof executor !== 'function') { - throw new TypeError('executor must be a function.'); - } - - let resolvePromise; - - this.promise = new Promise(function promiseExecutor(resolve) { - resolvePromise = resolve; - }); - - const token = this; - - // eslint-disable-next-line func-names - this.promise.then(cancel => { - if (!token._listeners) return; - - let i = token._listeners.length; - - while (i-- > 0) { - token._listeners[i](cancel); - } - token._listeners = null; - }); - - // eslint-disable-next-line func-names - this.promise.then = onfulfilled => { - let _resolve; - // eslint-disable-next-line func-names - const promise = new Promise(resolve => { - token.subscribe(resolve); - _resolve = resolve; - }).then(onfulfilled); - - promise.cancel = function reject() { - token.unsubscribe(_resolve); - }; - - return promise; - }; - - executor(function cancel(message, config, request) { - if (token.reason) { - // Cancellation has already been requested - return; - } - - token.reason = new CanceledError(message, config, request); - resolvePromise(token.reason); - }); - } - - /** - * Throws a `CanceledError` if cancellation has been requested. - */ - throwIfRequested() { - if (this.reason) { - throw this.reason; - } - } - - /** - * Subscribe to the cancel signal - */ - - subscribe(listener) { - if (this.reason) { - listener(this.reason); - return; - } - - if (this._listeners) { - this._listeners.push(listener); - } else { - this._listeners = [listener]; - } - } - - /** - * Unsubscribe from the cancel signal - */ - - unsubscribe(listener) { - if (!this._listeners) { - return; - } - const index = this._listeners.indexOf(listener); - if (index !== -1) { - this._listeners.splice(index, 1); - } - } - - /** - * Returns an object that contains a new `CancelToken` and a function that, when called, - * cancels the `CancelToken`. - */ - static source() { - let cancel; - const token = new CancelToken(function executor(c) { - cancel = c; - }); - return { - token, - cancel - }; - } -} - -var CancelToken$1 = CancelToken; - -/** - * Syntactic sugar for invoking a function and expanding an array for arguments. - * - * Common use case would be to use `Function.prototype.apply`. - * - * ```js - * function f(x, y, z) {} - * var args = [1, 2, 3]; - * f.apply(null, args); - * ``` - * - * With `spread` this example can be re-written. - * - * ```js - * spread(function(x, y, z) {})([1, 2, 3]); - * ``` - * - * @param {Function} callback - * - * @returns {Function} - */ -function spread(callback) { - return function wrap(arr) { - return callback.apply(null, arr); - }; -} - -/** - * Determines whether the payload is an error thrown by Axios - * - * @param {*} payload The value to test - * - * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false - */ -function isAxiosError(payload) { - return utils$1.isObject(payload) && (payload.isAxiosError === true); -} - -const HttpStatusCode = { - Continue: 100, - SwitchingProtocols: 101, - Processing: 102, - EarlyHints: 103, - Ok: 200, - Created: 201, - Accepted: 202, - NonAuthoritativeInformation: 203, - NoContent: 204, - ResetContent: 205, - PartialContent: 206, - MultiStatus: 207, - AlreadyReported: 208, - ImUsed: 226, - MultipleChoices: 300, - MovedPermanently: 301, - Found: 302, - SeeOther: 303, - NotModified: 304, - UseProxy: 305, - Unused: 306, - TemporaryRedirect: 307, - PermanentRedirect: 308, - BadRequest: 400, - Unauthorized: 401, - PaymentRequired: 402, - Forbidden: 403, - NotFound: 404, - MethodNotAllowed: 405, - NotAcceptable: 406, - ProxyAuthenticationRequired: 407, - RequestTimeout: 408, - Conflict: 409, - Gone: 410, - LengthRequired: 411, - PreconditionFailed: 412, - PayloadTooLarge: 413, - UriTooLong: 414, - UnsupportedMediaType: 415, - RangeNotSatisfiable: 416, - ExpectationFailed: 417, - ImATeapot: 418, - MisdirectedRequest: 421, - UnprocessableEntity: 422, - Locked: 423, - FailedDependency: 424, - TooEarly: 425, - UpgradeRequired: 426, - PreconditionRequired: 428, - TooManyRequests: 429, - RequestHeaderFieldsTooLarge: 431, - UnavailableForLegalReasons: 451, - InternalServerError: 500, - NotImplemented: 501, - BadGateway: 502, - ServiceUnavailable: 503, - GatewayTimeout: 504, - HttpVersionNotSupported: 505, - VariantAlsoNegotiates: 506, - InsufficientStorage: 507, - LoopDetected: 508, - NotExtended: 510, - NetworkAuthenticationRequired: 511, -}; - -Object.entries(HttpStatusCode).forEach(([key, value]) => { - HttpStatusCode[value] = key; -}); - -var HttpStatusCode$1 = HttpStatusCode; - -/** - * Create an instance of Axios - * - * @param {Object} defaultConfig The default config for the instance - * - * @returns {Axios} A new instance of Axios - */ -function createInstance(defaultConfig) { - const context = new Axios$1(defaultConfig); - const instance = bind(Axios$1.prototype.request, context); - - // Copy axios.prototype to instance - utils$1.extend(instance, Axios$1.prototype, context, {allOwnKeys: true}); - - // Copy context to instance - utils$1.extend(instance, context, null, {allOwnKeys: true}); - - // Factory for creating new instances - instance.create = function create(instanceConfig) { - return createInstance(mergeConfig(defaultConfig, instanceConfig)); - }; - - return instance; -} - -// Create the default instance to be exported -const axios = createInstance(defaults$1); - -// Expose Axios class to allow class inheritance -axios.Axios = Axios$1; - -// Expose Cancel & CancelToken -axios.CanceledError = CanceledError; -axios.CancelToken = CancelToken$1; -axios.isCancel = isCancel; -axios.VERSION = VERSION; -axios.toFormData = toFormData; - -// Expose AxiosError class -axios.AxiosError = AxiosError; - -// alias for CanceledError for backward compatibility -axios.Cancel = axios.CanceledError; - -// Expose all/spread -axios.all = function all(promises) { - return Promise.all(promises); -}; - -axios.spread = spread; - -// Expose isAxiosError -axios.isAxiosError = isAxiosError; - -// Expose mergeConfig -axios.mergeConfig = mergeConfig; - -axios.AxiosHeaders = AxiosHeaders$1; - -axios.formToJSON = thing => formDataToJSON(utils$1.isHTMLForm(thing) ? new FormData(thing) : thing); - -axios.getAdapter = adapters.getAdapter; - -axios.HttpStatusCode = HttpStatusCode$1; - -axios.default = axios; - -module.exports = axios; -//# sourceMappingURL=axios.cjs.map diff --git a/node_modules/axios/dist/browser/axios.cjs.map b/node_modules/axios/dist/browser/axios.cjs.map deleted file mode 100644 index b4b8baa..0000000 --- a/node_modules/axios/dist/browser/axios.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"axios.cjs","sources":["../../lib/helpers/bind.js","../../lib/utils.js","../../lib/core/AxiosError.js","../../lib/helpers/null.js","../../lib/helpers/toFormData.js","../../lib/helpers/AxiosURLSearchParams.js","../../lib/helpers/buildURL.js","../../lib/core/InterceptorManager.js","../../lib/defaults/transitional.js","../../lib/platform/browser/classes/URLSearchParams.js","../../lib/platform/browser/classes/FormData.js","../../lib/platform/browser/classes/Blob.js","../../lib/platform/browser/index.js","../../lib/platform/common/utils.js","../../lib/platform/index.js","../../lib/helpers/toURLEncodedForm.js","../../lib/helpers/formDataToJSON.js","../../lib/defaults/index.js","../../lib/helpers/parseHeaders.js","../../lib/core/AxiosHeaders.js","../../lib/core/transformData.js","../../lib/cancel/isCancel.js","../../lib/cancel/CanceledError.js","../../lib/core/settle.js","../../lib/helpers/cookies.js","../../lib/helpers/isAbsoluteURL.js","../../lib/helpers/combineURLs.js","../../lib/core/buildFullPath.js","../../lib/helpers/isURLSameOrigin.js","../../lib/helpers/parseProtocol.js","../../lib/helpers/speedometer.js","../../lib/adapters/xhr.js","../../lib/adapters/adapters.js","../../lib/core/dispatchRequest.js","../../lib/core/mergeConfig.js","../../lib/env/data.js","../../lib/helpers/validator.js","../../lib/core/Axios.js","../../lib/cancel/CancelToken.js","../../lib/helpers/spread.js","../../lib/helpers/isAxiosError.js","../../lib/helpers/HttpStatusCode.js","../../lib/axios.js"],"sourcesContent":["'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n value = +value;\n return Number.isFinite(value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0]\n }\n\n return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\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/**\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/**\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/**\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) 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/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\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/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} 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\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\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\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\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} 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\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 } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\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 + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = (\n (product) => {\n return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0\n })(typeof navigator !== 'undefined' && navigator.product);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n const msie = /(msie|trident)/i.test(navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let originURL;\n\n /**\n * Parse a URL to discover its components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n let href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })();\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","'use strict';\n\nimport utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport cookies from './../helpers/cookies.js';\nimport buildURL from './../helpers/buildURL.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport isURLSameOrigin from './../helpers/isURLSameOrigin.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport speedometer from '../helpers/speedometer.js';\n\nfunction progressEventReducer(listener, isDownloadStream) {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e\n };\n\n data[isDownloadStream ? 'download' : 'upload'] = true;\n\n listener(data);\n };\n}\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n let requestData = config.data;\n const requestHeaders = AxiosHeaders.from(config.headers).normalize();\n let {responseType, withXSRFToken} = config;\n let onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n let contentType;\n\n if (utils.isFormData(requestData)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n requestHeaders.setContentType(false); // Let the browser set it\n } else if ((contentType = requestHeaders.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n requestHeaders.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n let request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n const username = config.auth.username || '';\n const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password));\n }\n\n const fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if(platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(config));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(fullPath))) {\n // Add xsrf header\n const xsrfValue = config.xsrfHeaderName && config.xsrfCookieName && cookies.read(config.xsrfCookieName);\n\n if (xsrfValue) {\n requestHeaders.set(config.xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', progressEventReducer(config.onDownloadProgress, true));\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress));\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(fullPath);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? thing.toJSON() : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","export const VERSION = \"1.6.7\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy;\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n"],"names":["utils","prototype","encode","URLSearchParams","FormData","Blob","platform","defaults","AxiosHeaders","validators","InterceptorManager","Axios","CancelToken","HttpStatusCode"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/axios/dist/esm/axios.js b/node_modules/axios/dist/esm/axios.js deleted file mode 100644 index 18f9a30..0000000 --- a/node_modules/axios/dist/esm/axios.js +++ /dev/null @@ -1,3281 +0,0 @@ -// Axios v1.6.7 Copyright (c) 2024 Matt Zabriskie and contributors -function bind(fn, thisArg) { - return function wrap() { - return fn.apply(thisArg, arguments); - }; -} - -// utils is a library of generic helper functions non-specific to axios - -const {toString} = Object.prototype; -const {getPrototypeOf} = Object; - -const kindOf = (cache => thing => { - const str = toString.call(thing); - return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase()); -})(Object.create(null)); - -const kindOfTest = (type) => { - type = type.toLowerCase(); - return (thing) => kindOf(thing) === type -}; - -const typeOfTest = type => thing => typeof thing === type; - -/** - * Determine if a value is an Array - * - * @param {Object} val The value to test - * - * @returns {boolean} True if value is an Array, otherwise false - */ -const {isArray} = Array; - -/** - * Determine if a value is undefined - * - * @param {*} val The value to test - * - * @returns {boolean} True if the value is undefined, otherwise false - */ -const isUndefined = typeOfTest('undefined'); - -/** - * Determine if a value is a Buffer - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a Buffer, otherwise false - */ -function isBuffer(val) { - return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor) - && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val); -} - -/** - * Determine if a value is an ArrayBuffer - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is an ArrayBuffer, otherwise false - */ -const isArrayBuffer = kindOfTest('ArrayBuffer'); - - -/** - * Determine if a value is a view on an ArrayBuffer - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false - */ -function isArrayBufferView(val) { - let result; - if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) { - result = ArrayBuffer.isView(val); - } else { - result = (val) && (val.buffer) && (isArrayBuffer(val.buffer)); - } - return result; -} - -/** - * Determine if a value is a String - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a String, otherwise false - */ -const isString = typeOfTest('string'); - -/** - * Determine if a value is a Function - * - * @param {*} val The value to test - * @returns {boolean} True if value is a Function, otherwise false - */ -const isFunction = typeOfTest('function'); - -/** - * Determine if a value is a Number - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a Number, otherwise false - */ -const isNumber = typeOfTest('number'); - -/** - * Determine if a value is an Object - * - * @param {*} thing The value to test - * - * @returns {boolean} True if value is an Object, otherwise false - */ -const isObject = (thing) => thing !== null && typeof thing === 'object'; - -/** - * Determine if a value is a Boolean - * - * @param {*} thing The value to test - * @returns {boolean} True if value is a Boolean, otherwise false - */ -const isBoolean = thing => thing === true || thing === false; - -/** - * Determine if a value is a plain Object - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a plain Object, otherwise false - */ -const isPlainObject = (val) => { - if (kindOf(val) !== 'object') { - return false; - } - - const prototype = getPrototypeOf(val); - return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val); -}; - -/** - * Determine if a value is a Date - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a Date, otherwise false - */ -const isDate = kindOfTest('Date'); - -/** - * Determine if a value is a File - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a File, otherwise false - */ -const isFile = kindOfTest('File'); - -/** - * Determine if a value is a Blob - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a Blob, otherwise false - */ -const isBlob = kindOfTest('Blob'); - -/** - * Determine if a value is a FileList - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a File, otherwise false - */ -const isFileList = kindOfTest('FileList'); - -/** - * Determine if a value is a Stream - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a Stream, otherwise false - */ -const isStream = (val) => isObject(val) && isFunction(val.pipe); - -/** - * Determine if a value is a FormData - * - * @param {*} thing The value to test - * - * @returns {boolean} True if value is an FormData, otherwise false - */ -const isFormData = (thing) => { - let kind; - return thing && ( - (typeof FormData === 'function' && thing instanceof FormData) || ( - isFunction(thing.append) && ( - (kind = kindOf(thing)) === 'formdata' || - // detect form-data instance - (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]') - ) - ) - ) -}; - -/** - * Determine if a value is a URLSearchParams object - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a URLSearchParams object, otherwise false - */ -const isURLSearchParams = kindOfTest('URLSearchParams'); - -/** - * Trim excess whitespace off the beginning and end of a string - * - * @param {String} str The String to trim - * - * @returns {String} The String freed of excess whitespace - */ -const trim = (str) => str.trim ? - str.trim() : str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''); - -/** - * Iterate over an Array or an Object invoking a function for each item. - * - * If `obj` is an Array callback will be called passing - * the value, index, and complete array for each item. - * - * If 'obj' is an Object callback will be called passing - * the value, key, and complete object for each property. - * - * @param {Object|Array} obj The object to iterate - * @param {Function} fn The callback to invoke for each item - * - * @param {Boolean} [allOwnKeys = false] - * @returns {any} - */ -function forEach(obj, fn, {allOwnKeys = false} = {}) { - // Don't bother if no value provided - if (obj === null || typeof obj === 'undefined') { - return; - } - - let i; - let l; - - // Force an array if not already something iterable - if (typeof obj !== 'object') { - /*eslint no-param-reassign:0*/ - obj = [obj]; - } - - if (isArray(obj)) { - // Iterate over array values - for (i = 0, l = obj.length; i < l; i++) { - fn.call(null, obj[i], i, obj); - } - } else { - // Iterate over object keys - const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj); - const len = keys.length; - let key; - - for (i = 0; i < len; i++) { - key = keys[i]; - fn.call(null, obj[key], key, obj); - } - } -} - -function findKey(obj, key) { - key = key.toLowerCase(); - const keys = Object.keys(obj); - let i = keys.length; - let _key; - while (i-- > 0) { - _key = keys[i]; - if (key === _key.toLowerCase()) { - return _key; - } - } - return null; -} - -const _global = (() => { - /*eslint no-undef:0*/ - if (typeof globalThis !== "undefined") return globalThis; - return typeof self !== "undefined" ? self : (typeof window !== 'undefined' ? window : global) -})(); - -const isContextDefined = (context) => !isUndefined(context) && context !== _global; - -/** - * Accepts varargs expecting each argument to be an object, then - * immutably merges the properties of each object and returns result. - * - * When multiple objects contain the same key the later object in - * the arguments list will take precedence. - * - * Example: - * - * ```js - * var result = merge({foo: 123}, {foo: 456}); - * console.log(result.foo); // outputs 456 - * ``` - * - * @param {Object} obj1 Object to merge - * - * @returns {Object} Result of all merge properties - */ -function merge(/* obj1, obj2, obj3, ... */) { - const {caseless} = isContextDefined(this) && this || {}; - const result = {}; - const assignValue = (val, key) => { - const targetKey = caseless && findKey(result, key) || key; - if (isPlainObject(result[targetKey]) && isPlainObject(val)) { - result[targetKey] = merge(result[targetKey], val); - } else if (isPlainObject(val)) { - result[targetKey] = merge({}, val); - } else if (isArray(val)) { - result[targetKey] = val.slice(); - } else { - result[targetKey] = val; - } - }; - - for (let i = 0, l = arguments.length; i < l; i++) { - arguments[i] && forEach(arguments[i], assignValue); - } - return result; -} - -/** - * Extends object a by mutably adding to it the properties of object b. - * - * @param {Object} a The object to be extended - * @param {Object} b The object to copy properties from - * @param {Object} thisArg The object to bind function to - * - * @param {Boolean} [allOwnKeys] - * @returns {Object} The resulting value of object a - */ -const extend = (a, b, thisArg, {allOwnKeys}= {}) => { - forEach(b, (val, key) => { - if (thisArg && isFunction(val)) { - a[key] = bind(val, thisArg); - } else { - a[key] = val; - } - }, {allOwnKeys}); - return a; -}; - -/** - * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM) - * - * @param {string} content with BOM - * - * @returns {string} content value without BOM - */ -const stripBOM = (content) => { - if (content.charCodeAt(0) === 0xFEFF) { - content = content.slice(1); - } - return content; -}; - -/** - * Inherit the prototype methods from one constructor into another - * @param {function} constructor - * @param {function} superConstructor - * @param {object} [props] - * @param {object} [descriptors] - * - * @returns {void} - */ -const inherits = (constructor, superConstructor, props, descriptors) => { - constructor.prototype = Object.create(superConstructor.prototype, descriptors); - constructor.prototype.constructor = constructor; - Object.defineProperty(constructor, 'super', { - value: superConstructor.prototype - }); - props && Object.assign(constructor.prototype, props); -}; - -/** - * Resolve object with deep prototype chain to a flat object - * @param {Object} sourceObj source object - * @param {Object} [destObj] - * @param {Function|Boolean} [filter] - * @param {Function} [propFilter] - * - * @returns {Object} - */ -const toFlatObject = (sourceObj, destObj, filter, propFilter) => { - let props; - let i; - let prop; - const merged = {}; - - destObj = destObj || {}; - // eslint-disable-next-line no-eq-null,eqeqeq - if (sourceObj == null) return destObj; - - do { - props = Object.getOwnPropertyNames(sourceObj); - i = props.length; - while (i-- > 0) { - prop = props[i]; - if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) { - destObj[prop] = sourceObj[prop]; - merged[prop] = true; - } - } - sourceObj = filter !== false && getPrototypeOf(sourceObj); - } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype); - - return destObj; -}; - -/** - * Determines whether a string ends with the characters of a specified string - * - * @param {String} str - * @param {String} searchString - * @param {Number} [position= 0] - * - * @returns {boolean} - */ -const endsWith = (str, searchString, position) => { - str = String(str); - if (position === undefined || position > str.length) { - position = str.length; - } - position -= searchString.length; - const lastIndex = str.indexOf(searchString, position); - return lastIndex !== -1 && lastIndex === position; -}; - - -/** - * Returns new array from array like object or null if failed - * - * @param {*} [thing] - * - * @returns {?Array} - */ -const toArray = (thing) => { - if (!thing) return null; - if (isArray(thing)) return thing; - let i = thing.length; - if (!isNumber(i)) return null; - const arr = new Array(i); - while (i-- > 0) { - arr[i] = thing[i]; - } - return arr; -}; - -/** - * Checking if the Uint8Array exists and if it does, it returns a function that checks if the - * thing passed in is an instance of Uint8Array - * - * @param {TypedArray} - * - * @returns {Array} - */ -// eslint-disable-next-line func-names -const isTypedArray = (TypedArray => { - // eslint-disable-next-line func-names - return thing => { - return TypedArray && thing instanceof TypedArray; - }; -})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array)); - -/** - * For each entry in the object, call the function with the key and value. - * - * @param {Object} obj - The object to iterate over. - * @param {Function} fn - The function to call for each entry. - * - * @returns {void} - */ -const forEachEntry = (obj, fn) => { - const generator = obj && obj[Symbol.iterator]; - - const iterator = generator.call(obj); - - let result; - - while ((result = iterator.next()) && !result.done) { - const pair = result.value; - fn.call(obj, pair[0], pair[1]); - } -}; - -/** - * It takes a regular expression and a string, and returns an array of all the matches - * - * @param {string} regExp - The regular expression to match against. - * @param {string} str - The string to search. - * - * @returns {Array} - */ -const matchAll = (regExp, str) => { - let matches; - const arr = []; - - while ((matches = regExp.exec(str)) !== null) { - arr.push(matches); - } - - return arr; -}; - -/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */ -const isHTMLForm = kindOfTest('HTMLFormElement'); - -const toCamelCase = str => { - return str.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g, - function replacer(m, p1, p2) { - return p1.toUpperCase() + p2; - } - ); -}; - -/* Creating a function that will check if an object has a property. */ -const hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype); - -/** - * Determine if a value is a RegExp object - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a RegExp object, otherwise false - */ -const isRegExp = kindOfTest('RegExp'); - -const reduceDescriptors = (obj, reducer) => { - const descriptors = Object.getOwnPropertyDescriptors(obj); - const reducedDescriptors = {}; - - forEach(descriptors, (descriptor, name) => { - let ret; - if ((ret = reducer(descriptor, name, obj)) !== false) { - reducedDescriptors[name] = ret || descriptor; - } - }); - - Object.defineProperties(obj, reducedDescriptors); -}; - -/** - * Makes all methods read-only - * @param {Object} obj - */ - -const freezeMethods = (obj) => { - reduceDescriptors(obj, (descriptor, name) => { - // skip restricted props in strict mode - if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) { - return false; - } - - const value = obj[name]; - - if (!isFunction(value)) return; - - descriptor.enumerable = false; - - if ('writable' in descriptor) { - descriptor.writable = false; - return; - } - - if (!descriptor.set) { - descriptor.set = () => { - throw Error('Can not rewrite read-only method \'' + name + '\''); - }; - } - }); -}; - -const toObjectSet = (arrayOrString, delimiter) => { - const obj = {}; - - const define = (arr) => { - arr.forEach(value => { - obj[value] = true; - }); - }; - - isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter)); - - return obj; -}; - -const noop = () => {}; - -const toFiniteNumber = (value, defaultValue) => { - value = +value; - return Number.isFinite(value) ? value : defaultValue; -}; - -const ALPHA = 'abcdefghijklmnopqrstuvwxyz'; - -const DIGIT = '0123456789'; - -const ALPHABET = { - DIGIT, - ALPHA, - ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT -}; - -const generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => { - let str = ''; - const {length} = alphabet; - while (size--) { - str += alphabet[Math.random() * length|0]; - } - - return str; -}; - -/** - * If the thing is a FormData object, return true, otherwise return false. - * - * @param {unknown} thing - The thing to check. - * - * @returns {boolean} - */ -function isSpecCompliantForm(thing) { - return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]); -} - -const toJSONObject = (obj) => { - const stack = new Array(10); - - const visit = (source, i) => { - - if (isObject(source)) { - if (stack.indexOf(source) >= 0) { - return; - } - - if(!('toJSON' in source)) { - stack[i] = source; - const target = isArray(source) ? [] : {}; - - forEach(source, (value, key) => { - const reducedValue = visit(value, i + 1); - !isUndefined(reducedValue) && (target[key] = reducedValue); - }); - - stack[i] = undefined; - - return target; - } - } - - return source; - }; - - return visit(obj, 0); -}; - -const isAsyncFn = kindOfTest('AsyncFunction'); - -const isThenable = (thing) => - thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch); - -const utils$1 = { - isArray, - isArrayBuffer, - isBuffer, - isFormData, - isArrayBufferView, - isString, - isNumber, - isBoolean, - isObject, - isPlainObject, - isUndefined, - isDate, - isFile, - isBlob, - isRegExp, - isFunction, - isStream, - isURLSearchParams, - isTypedArray, - isFileList, - forEach, - merge, - extend, - trim, - stripBOM, - inherits, - toFlatObject, - kindOf, - kindOfTest, - endsWith, - toArray, - forEachEntry, - matchAll, - isHTMLForm, - hasOwnProperty, - hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection - reduceDescriptors, - freezeMethods, - toObjectSet, - toCamelCase, - noop, - toFiniteNumber, - findKey, - global: _global, - isContextDefined, - ALPHABET, - generateString, - isSpecCompliantForm, - toJSONObject, - isAsyncFn, - isThenable -}; - -/** - * Create an Error with the specified message, config, error code, request and response. - * - * @param {string} message The error message. - * @param {string} [code] The error code (for example, 'ECONNABORTED'). - * @param {Object} [config] The config. - * @param {Object} [request] The request. - * @param {Object} [response] The response. - * - * @returns {Error} The created error. - */ -function AxiosError$1(message, code, config, request, response) { - Error.call(this); - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } else { - this.stack = (new Error()).stack; - } - - this.message = message; - this.name = 'AxiosError'; - code && (this.code = code); - config && (this.config = config); - request && (this.request = request); - response && (this.response = response); -} - -utils$1.inherits(AxiosError$1, Error, { - toJSON: function toJSON() { - return { - // Standard - message: this.message, - name: this.name, - // Microsoft - description: this.description, - number: this.number, - // Mozilla - fileName: this.fileName, - lineNumber: this.lineNumber, - columnNumber: this.columnNumber, - stack: this.stack, - // Axios - config: utils$1.toJSONObject(this.config), - code: this.code, - status: this.response && this.response.status ? this.response.status : null - }; - } -}); - -const prototype$1 = AxiosError$1.prototype; -const descriptors = {}; - -[ - 'ERR_BAD_OPTION_VALUE', - 'ERR_BAD_OPTION', - 'ECONNABORTED', - 'ETIMEDOUT', - 'ERR_NETWORK', - 'ERR_FR_TOO_MANY_REDIRECTS', - 'ERR_DEPRECATED', - 'ERR_BAD_RESPONSE', - 'ERR_BAD_REQUEST', - 'ERR_CANCELED', - 'ERR_NOT_SUPPORT', - 'ERR_INVALID_URL' -// eslint-disable-next-line func-names -].forEach(code => { - descriptors[code] = {value: code}; -}); - -Object.defineProperties(AxiosError$1, descriptors); -Object.defineProperty(prototype$1, 'isAxiosError', {value: true}); - -// eslint-disable-next-line func-names -AxiosError$1.from = (error, code, config, request, response, customProps) => { - const axiosError = Object.create(prototype$1); - - utils$1.toFlatObject(error, axiosError, function filter(obj) { - return obj !== Error.prototype; - }, prop => { - return prop !== 'isAxiosError'; - }); - - AxiosError$1.call(axiosError, error.message, code, config, request, response); - - axiosError.cause = error; - - axiosError.name = error.name; - - customProps && Object.assign(axiosError, customProps); - - return axiosError; -}; - -// eslint-disable-next-line strict -const httpAdapter = null; - -/** - * Determines if the given thing is a array or js object. - * - * @param {string} thing - The object or array to be visited. - * - * @returns {boolean} - */ -function isVisitable(thing) { - return utils$1.isPlainObject(thing) || utils$1.isArray(thing); -} - -/** - * It removes the brackets from the end of a string - * - * @param {string} key - The key of the parameter. - * - * @returns {string} the key without the brackets. - */ -function removeBrackets(key) { - return utils$1.endsWith(key, '[]') ? key.slice(0, -2) : key; -} - -/** - * It takes a path, a key, and a boolean, and returns a string - * - * @param {string} path - The path to the current key. - * @param {string} key - The key of the current object being iterated over. - * @param {string} dots - If true, the key will be rendered with dots instead of brackets. - * - * @returns {string} The path to the current key. - */ -function renderKey(path, key, dots) { - if (!path) return key; - return path.concat(key).map(function each(token, i) { - // eslint-disable-next-line no-param-reassign - token = removeBrackets(token); - return !dots && i ? '[' + token + ']' : token; - }).join(dots ? '.' : ''); -} - -/** - * If the array is an array and none of its elements are visitable, then it's a flat array. - * - * @param {Array} arr - The array to check - * - * @returns {boolean} - */ -function isFlatArray(arr) { - return utils$1.isArray(arr) && !arr.some(isVisitable); -} - -const predicates = utils$1.toFlatObject(utils$1, {}, null, function filter(prop) { - return /^is[A-Z]/.test(prop); -}); - -/** - * Convert a data object to FormData - * - * @param {Object} obj - * @param {?Object} [formData] - * @param {?Object} [options] - * @param {Function} [options.visitor] - * @param {Boolean} [options.metaTokens = true] - * @param {Boolean} [options.dots = false] - * @param {?Boolean} [options.indexes = false] - * - * @returns {Object} - **/ - -/** - * It converts an object into a FormData object - * - * @param {Object} obj - The object to convert to form data. - * @param {string} formData - The FormData object to append to. - * @param {Object} options - * - * @returns - */ -function toFormData$1(obj, formData, options) { - if (!utils$1.isObject(obj)) { - throw new TypeError('target must be an object'); - } - - // eslint-disable-next-line no-param-reassign - formData = formData || new (FormData)(); - - // eslint-disable-next-line no-param-reassign - options = utils$1.toFlatObject(options, { - metaTokens: true, - dots: false, - indexes: false - }, false, function defined(option, source) { - // eslint-disable-next-line no-eq-null,eqeqeq - return !utils$1.isUndefined(source[option]); - }); - - const metaTokens = options.metaTokens; - // eslint-disable-next-line no-use-before-define - const visitor = options.visitor || defaultVisitor; - const dots = options.dots; - const indexes = options.indexes; - const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob; - const useBlob = _Blob && utils$1.isSpecCompliantForm(formData); - - if (!utils$1.isFunction(visitor)) { - throw new TypeError('visitor must be a function'); - } - - function convertValue(value) { - if (value === null) return ''; - - if (utils$1.isDate(value)) { - return value.toISOString(); - } - - if (!useBlob && utils$1.isBlob(value)) { - throw new AxiosError$1('Blob is not supported. Use a Buffer instead.'); - } - - if (utils$1.isArrayBuffer(value) || utils$1.isTypedArray(value)) { - return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value); - } - - return value; - } - - /** - * Default visitor. - * - * @param {*} value - * @param {String|Number} key - * @param {Array} path - * @this {FormData} - * - * @returns {boolean} return true to visit the each prop of the value recursively - */ - function defaultVisitor(value, key, path) { - let arr = value; - - if (value && !path && typeof value === 'object') { - if (utils$1.endsWith(key, '{}')) { - // eslint-disable-next-line no-param-reassign - key = metaTokens ? key : key.slice(0, -2); - // eslint-disable-next-line no-param-reassign - value = JSON.stringify(value); - } else if ( - (utils$1.isArray(value) && isFlatArray(value)) || - ((utils$1.isFileList(value) || utils$1.endsWith(key, '[]')) && (arr = utils$1.toArray(value)) - )) { - // eslint-disable-next-line no-param-reassign - key = removeBrackets(key); - - arr.forEach(function each(el, index) { - !(utils$1.isUndefined(el) || el === null) && formData.append( - // eslint-disable-next-line no-nested-ternary - indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'), - convertValue(el) - ); - }); - return false; - } - } - - if (isVisitable(value)) { - return true; - } - - formData.append(renderKey(path, key, dots), convertValue(value)); - - return false; - } - - const stack = []; - - const exposedHelpers = Object.assign(predicates, { - defaultVisitor, - convertValue, - isVisitable - }); - - function build(value, path) { - if (utils$1.isUndefined(value)) return; - - if (stack.indexOf(value) !== -1) { - throw Error('Circular reference detected in ' + path.join('.')); - } - - stack.push(value); - - utils$1.forEach(value, function each(el, key) { - const result = !(utils$1.isUndefined(el) || el === null) && visitor.call( - formData, el, utils$1.isString(key) ? key.trim() : key, path, exposedHelpers - ); - - if (result === true) { - build(el, path ? path.concat(key) : [key]); - } - }); - - stack.pop(); - } - - if (!utils$1.isObject(obj)) { - throw new TypeError('data must be an object'); - } - - build(obj); - - return formData; -} - -/** - * It encodes a string by replacing all characters that are not in the unreserved set with - * their percent-encoded equivalents - * - * @param {string} str - The string to encode. - * - * @returns {string} The encoded string. - */ -function encode$1(str) { - const charMap = { - '!': '%21', - "'": '%27', - '(': '%28', - ')': '%29', - '~': '%7E', - '%20': '+', - '%00': '\x00' - }; - return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) { - return charMap[match]; - }); -} - -/** - * It takes a params object and converts it to a FormData object - * - * @param {Object} params - The parameters to be converted to a FormData object. - * @param {Object} options - The options object passed to the Axios constructor. - * - * @returns {void} - */ -function AxiosURLSearchParams(params, options) { - this._pairs = []; - - params && toFormData$1(params, this, options); -} - -const prototype = AxiosURLSearchParams.prototype; - -prototype.append = function append(name, value) { - this._pairs.push([name, value]); -}; - -prototype.toString = function toString(encoder) { - const _encode = encoder ? function(value) { - return encoder.call(this, value, encode$1); - } : encode$1; - - return this._pairs.map(function each(pair) { - return _encode(pair[0]) + '=' + _encode(pair[1]); - }, '').join('&'); -}; - -/** - * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their - * URI encoded counterparts - * - * @param {string} val The value to be encoded. - * - * @returns {string} The encoded value. - */ -function encode(val) { - return encodeURIComponent(val). - replace(/%3A/gi, ':'). - replace(/%24/g, '$'). - replace(/%2C/gi, ','). - replace(/%20/g, '+'). - replace(/%5B/gi, '['). - replace(/%5D/gi, ']'); -} - -/** - * Build a URL by appending params to the end - * - * @param {string} url The base of the url (e.g., http://www.google.com) - * @param {object} [params] The params to be appended - * @param {?object} options - * - * @returns {string} The formatted url - */ -function buildURL(url, params, options) { - /*eslint no-param-reassign:0*/ - if (!params) { - return url; - } - - const _encode = options && options.encode || encode; - - const serializeFn = options && options.serialize; - - let serializedParams; - - if (serializeFn) { - serializedParams = serializeFn(params, options); - } else { - serializedParams = utils$1.isURLSearchParams(params) ? - params.toString() : - new AxiosURLSearchParams(params, options).toString(_encode); - } - - if (serializedParams) { - const hashmarkIndex = url.indexOf("#"); - - if (hashmarkIndex !== -1) { - url = url.slice(0, hashmarkIndex); - } - url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams; - } - - return url; -} - -class InterceptorManager { - constructor() { - this.handlers = []; - } - - /** - * Add a new interceptor to the stack - * - * @param {Function} fulfilled The function to handle `then` for a `Promise` - * @param {Function} rejected The function to handle `reject` for a `Promise` - * - * @return {Number} An ID used to remove interceptor later - */ - use(fulfilled, rejected, options) { - this.handlers.push({ - fulfilled, - rejected, - synchronous: options ? options.synchronous : false, - runWhen: options ? options.runWhen : null - }); - return this.handlers.length - 1; - } - - /** - * Remove an interceptor from the stack - * - * @param {Number} id The ID that was returned by `use` - * - * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise - */ - eject(id) { - if (this.handlers[id]) { - this.handlers[id] = null; - } - } - - /** - * Clear all interceptors from the stack - * - * @returns {void} - */ - clear() { - if (this.handlers) { - this.handlers = []; - } - } - - /** - * Iterate over all the registered interceptors - * - * This method is particularly useful for skipping over any - * interceptors that may have become `null` calling `eject`. - * - * @param {Function} fn The function to call for each interceptor - * - * @returns {void} - */ - forEach(fn) { - utils$1.forEach(this.handlers, function forEachHandler(h) { - if (h !== null) { - fn(h); - } - }); - } -} - -const InterceptorManager$1 = InterceptorManager; - -const transitionalDefaults = { - silentJSONParsing: true, - forcedJSONParsing: true, - clarifyTimeoutError: false -}; - -const URLSearchParams$1 = typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams; - -const FormData$1 = typeof FormData !== 'undefined' ? FormData : null; - -const Blob$1 = typeof Blob !== 'undefined' ? Blob : null; - -const platform$1 = { - isBrowser: true, - classes: { - URLSearchParams: URLSearchParams$1, - FormData: FormData$1, - Blob: Blob$1 - }, - protocols: ['http', 'https', 'file', 'blob', 'url', 'data'] -}; - -const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined'; - -/** - * Determine if we're running in a standard browser environment - * - * This allows axios to run in a web worker, and react-native. - * Both environments support XMLHttpRequest, but not fully standard globals. - * - * web workers: - * typeof window -> undefined - * typeof document -> undefined - * - * react-native: - * navigator.product -> 'ReactNative' - * nativescript - * navigator.product -> 'NativeScript' or 'NS' - * - * @returns {boolean} - */ -const hasStandardBrowserEnv = ( - (product) => { - return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0 - })(typeof navigator !== 'undefined' && navigator.product); - -/** - * Determine if we're running in a standard browser webWorker environment - * - * Although the `isStandardBrowserEnv` method indicates that - * `allows axios to run in a web worker`, the WebWorker will still be - * filtered out due to its judgment standard - * `typeof window !== 'undefined' && typeof document !== 'undefined'`. - * This leads to a problem when axios post `FormData` in webWorker - */ -const hasStandardBrowserWebWorkerEnv = (() => { - return ( - typeof WorkerGlobalScope !== 'undefined' && - // eslint-disable-next-line no-undef - self instanceof WorkerGlobalScope && - typeof self.importScripts === 'function' - ); -})(); - -const utils = /*#__PURE__*/Object.freeze({ - __proto__: null, - hasBrowserEnv: hasBrowserEnv, - hasStandardBrowserWebWorkerEnv: hasStandardBrowserWebWorkerEnv, - hasStandardBrowserEnv: hasStandardBrowserEnv -}); - -const platform = { - ...utils, - ...platform$1 -}; - -function toURLEncodedForm(data, options) { - return toFormData$1(data, new platform.classes.URLSearchParams(), Object.assign({ - visitor: function(value, key, path, helpers) { - if (platform.isNode && utils$1.isBuffer(value)) { - this.append(key, value.toString('base64')); - return false; - } - - return helpers.defaultVisitor.apply(this, arguments); - } - }, options)); -} - -/** - * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z'] - * - * @param {string} name - The name of the property to get. - * - * @returns An array of strings. - */ -function parsePropPath(name) { - // foo[x][y][z] - // foo.x.y.z - // foo-x-y-z - // foo x y z - return utils$1.matchAll(/\w+|\[(\w*)]/g, name).map(match => { - return match[0] === '[]' ? '' : match[1] || match[0]; - }); -} - -/** - * Convert an array to an object. - * - * @param {Array} arr - The array to convert to an object. - * - * @returns An object with the same keys and values as the array. - */ -function arrayToObject(arr) { - const obj = {}; - const keys = Object.keys(arr); - let i; - const len = keys.length; - let key; - for (i = 0; i < len; i++) { - key = keys[i]; - obj[key] = arr[key]; - } - return obj; -} - -/** - * It takes a FormData object and returns a JavaScript object - * - * @param {string} formData The FormData object to convert to JSON. - * - * @returns {Object | null} The converted object. - */ -function formDataToJSON(formData) { - function buildPath(path, value, target, index) { - let name = path[index++]; - - if (name === '__proto__') return true; - - const isNumericKey = Number.isFinite(+name); - const isLast = index >= path.length; - name = !name && utils$1.isArray(target) ? target.length : name; - - if (isLast) { - if (utils$1.hasOwnProp(target, name)) { - target[name] = [target[name], value]; - } else { - target[name] = value; - } - - return !isNumericKey; - } - - if (!target[name] || !utils$1.isObject(target[name])) { - target[name] = []; - } - - const result = buildPath(path, value, target[name], index); - - if (result && utils$1.isArray(target[name])) { - target[name] = arrayToObject(target[name]); - } - - return !isNumericKey; - } - - if (utils$1.isFormData(formData) && utils$1.isFunction(formData.entries)) { - const obj = {}; - - utils$1.forEachEntry(formData, (name, value) => { - buildPath(parsePropPath(name), value, obj, 0); - }); - - return obj; - } - - return null; -} - -/** - * It takes a string, tries to parse it, and if it fails, it returns the stringified version - * of the input - * - * @param {any} rawValue - The value to be stringified. - * @param {Function} parser - A function that parses a string into a JavaScript object. - * @param {Function} encoder - A function that takes a value and returns a string. - * - * @returns {string} A stringified version of the rawValue. - */ -function stringifySafely(rawValue, parser, encoder) { - if (utils$1.isString(rawValue)) { - try { - (parser || JSON.parse)(rawValue); - return utils$1.trim(rawValue); - } catch (e) { - if (e.name !== 'SyntaxError') { - throw e; - } - } - } - - return (encoder || JSON.stringify)(rawValue); -} - -const defaults = { - - transitional: transitionalDefaults, - - adapter: ['xhr', 'http'], - - transformRequest: [function transformRequest(data, headers) { - const contentType = headers.getContentType() || ''; - const hasJSONContentType = contentType.indexOf('application/json') > -1; - const isObjectPayload = utils$1.isObject(data); - - if (isObjectPayload && utils$1.isHTMLForm(data)) { - data = new FormData(data); - } - - const isFormData = utils$1.isFormData(data); - - if (isFormData) { - return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data; - } - - if (utils$1.isArrayBuffer(data) || - utils$1.isBuffer(data) || - utils$1.isStream(data) || - utils$1.isFile(data) || - utils$1.isBlob(data) - ) { - return data; - } - if (utils$1.isArrayBufferView(data)) { - return data.buffer; - } - if (utils$1.isURLSearchParams(data)) { - headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false); - return data.toString(); - } - - let isFileList; - - if (isObjectPayload) { - if (contentType.indexOf('application/x-www-form-urlencoded') > -1) { - return toURLEncodedForm(data, this.formSerializer).toString(); - } - - if ((isFileList = utils$1.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) { - const _FormData = this.env && this.env.FormData; - - return toFormData$1( - isFileList ? {'files[]': data} : data, - _FormData && new _FormData(), - this.formSerializer - ); - } - } - - if (isObjectPayload || hasJSONContentType ) { - headers.setContentType('application/json', false); - return stringifySafely(data); - } - - return data; - }], - - transformResponse: [function transformResponse(data) { - const transitional = this.transitional || defaults.transitional; - const forcedJSONParsing = transitional && transitional.forcedJSONParsing; - const JSONRequested = this.responseType === 'json'; - - if (data && utils$1.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) { - const silentJSONParsing = transitional && transitional.silentJSONParsing; - const strictJSONParsing = !silentJSONParsing && JSONRequested; - - try { - return JSON.parse(data); - } catch (e) { - if (strictJSONParsing) { - if (e.name === 'SyntaxError') { - throw AxiosError$1.from(e, AxiosError$1.ERR_BAD_RESPONSE, this, null, this.response); - } - throw e; - } - } - } - - return data; - }], - - /** - * A timeout in milliseconds to abort a request. If set to 0 (default) a - * timeout is not created. - */ - timeout: 0, - - xsrfCookieName: 'XSRF-TOKEN', - xsrfHeaderName: 'X-XSRF-TOKEN', - - maxContentLength: -1, - maxBodyLength: -1, - - env: { - FormData: platform.classes.FormData, - Blob: platform.classes.Blob - }, - - validateStatus: function validateStatus(status) { - return status >= 200 && status < 300; - }, - - headers: { - common: { - 'Accept': 'application/json, text/plain, */*', - 'Content-Type': undefined - } - } -}; - -utils$1.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => { - defaults.headers[method] = {}; -}); - -const defaults$1 = defaults; - -// RawAxiosHeaders whose duplicates are ignored by node -// c.f. https://nodejs.org/api/http.html#http_message_headers -const ignoreDuplicateOf = utils$1.toObjectSet([ - 'age', 'authorization', 'content-length', 'content-type', 'etag', - 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since', - 'last-modified', 'location', 'max-forwards', 'proxy-authorization', - 'referer', 'retry-after', 'user-agent' -]); - -/** - * Parse headers into an object - * - * ``` - * Date: Wed, 27 Aug 2014 08:58:49 GMT - * Content-Type: application/json - * Connection: keep-alive - * Transfer-Encoding: chunked - * ``` - * - * @param {String} rawHeaders Headers needing to be parsed - * - * @returns {Object} Headers parsed into an object - */ -const parseHeaders = rawHeaders => { - const parsed = {}; - let key; - let val; - let i; - - rawHeaders && rawHeaders.split('\n').forEach(function parser(line) { - i = line.indexOf(':'); - key = line.substring(0, i).trim().toLowerCase(); - val = line.substring(i + 1).trim(); - - if (!key || (parsed[key] && ignoreDuplicateOf[key])) { - return; - } - - if (key === 'set-cookie') { - if (parsed[key]) { - parsed[key].push(val); - } else { - parsed[key] = [val]; - } - } else { - parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val; - } - }); - - return parsed; -}; - -const $internals = Symbol('internals'); - -function normalizeHeader(header) { - return header && String(header).trim().toLowerCase(); -} - -function normalizeValue(value) { - if (value === false || value == null) { - return value; - } - - return utils$1.isArray(value) ? value.map(normalizeValue) : String(value); -} - -function parseTokens(str) { - const tokens = Object.create(null); - const tokensRE = /([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g; - let match; - - while ((match = tokensRE.exec(str))) { - tokens[match[1]] = match[2]; - } - - return tokens; -} - -const isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim()); - -function matchHeaderValue(context, value, header, filter, isHeaderNameFilter) { - if (utils$1.isFunction(filter)) { - return filter.call(this, value, header); - } - - if (isHeaderNameFilter) { - value = header; - } - - if (!utils$1.isString(value)) return; - - if (utils$1.isString(filter)) { - return value.indexOf(filter) !== -1; - } - - if (utils$1.isRegExp(filter)) { - return filter.test(value); - } -} - -function formatHeader(header) { - return header.trim() - .toLowerCase().replace(/([a-z\d])(\w*)/g, (w, char, str) => { - return char.toUpperCase() + str; - }); -} - -function buildAccessors(obj, header) { - const accessorName = utils$1.toCamelCase(' ' + header); - - ['get', 'set', 'has'].forEach(methodName => { - Object.defineProperty(obj, methodName + accessorName, { - value: function(arg1, arg2, arg3) { - return this[methodName].call(this, header, arg1, arg2, arg3); - }, - configurable: true - }); - }); -} - -class AxiosHeaders$1 { - constructor(headers) { - headers && this.set(headers); - } - - set(header, valueOrRewrite, rewrite) { - const self = this; - - function setHeader(_value, _header, _rewrite) { - const lHeader = normalizeHeader(_header); - - if (!lHeader) { - throw new Error('header name must be a non-empty string'); - } - - const key = utils$1.findKey(self, lHeader); - - if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) { - self[key || _header] = normalizeValue(_value); - } - } - - const setHeaders = (headers, _rewrite) => - utils$1.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite)); - - if (utils$1.isPlainObject(header) || header instanceof this.constructor) { - setHeaders(header, valueOrRewrite); - } else if(utils$1.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) { - setHeaders(parseHeaders(header), valueOrRewrite); - } else { - header != null && setHeader(valueOrRewrite, header, rewrite); - } - - return this; - } - - get(header, parser) { - header = normalizeHeader(header); - - if (header) { - const key = utils$1.findKey(this, header); - - if (key) { - const value = this[key]; - - if (!parser) { - return value; - } - - if (parser === true) { - return parseTokens(value); - } - - if (utils$1.isFunction(parser)) { - return parser.call(this, value, key); - } - - if (utils$1.isRegExp(parser)) { - return parser.exec(value); - } - - throw new TypeError('parser must be boolean|regexp|function'); - } - } - } - - has(header, matcher) { - header = normalizeHeader(header); - - if (header) { - const key = utils$1.findKey(this, header); - - return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher))); - } - - return false; - } - - delete(header, matcher) { - const self = this; - let deleted = false; - - function deleteHeader(_header) { - _header = normalizeHeader(_header); - - if (_header) { - const key = utils$1.findKey(self, _header); - - if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) { - delete self[key]; - - deleted = true; - } - } - } - - if (utils$1.isArray(header)) { - header.forEach(deleteHeader); - } else { - deleteHeader(header); - } - - return deleted; - } - - clear(matcher) { - const keys = Object.keys(this); - let i = keys.length; - let deleted = false; - - while (i--) { - const key = keys[i]; - if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) { - delete this[key]; - deleted = true; - } - } - - return deleted; - } - - normalize(format) { - const self = this; - const headers = {}; - - utils$1.forEach(this, (value, header) => { - const key = utils$1.findKey(headers, header); - - if (key) { - self[key] = normalizeValue(value); - delete self[header]; - return; - } - - const normalized = format ? formatHeader(header) : String(header).trim(); - - if (normalized !== header) { - delete self[header]; - } - - self[normalized] = normalizeValue(value); - - headers[normalized] = true; - }); - - return this; - } - - concat(...targets) { - return this.constructor.concat(this, ...targets); - } - - toJSON(asStrings) { - const obj = Object.create(null); - - utils$1.forEach(this, (value, header) => { - value != null && value !== false && (obj[header] = asStrings && utils$1.isArray(value) ? value.join(', ') : value); - }); - - return obj; - } - - [Symbol.iterator]() { - return Object.entries(this.toJSON())[Symbol.iterator](); - } - - toString() { - return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\n'); - } - - get [Symbol.toStringTag]() { - return 'AxiosHeaders'; - } - - static from(thing) { - return thing instanceof this ? thing : new this(thing); - } - - static concat(first, ...targets) { - const computed = new this(first); - - targets.forEach((target) => computed.set(target)); - - return computed; - } - - static accessor(header) { - const internals = this[$internals] = (this[$internals] = { - accessors: {} - }); - - const accessors = internals.accessors; - const prototype = this.prototype; - - function defineAccessor(_header) { - const lHeader = normalizeHeader(_header); - - if (!accessors[lHeader]) { - buildAccessors(prototype, _header); - accessors[lHeader] = true; - } - } - - utils$1.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header); - - return this; - } -} - -AxiosHeaders$1.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']); - -// reserved names hotfix -utils$1.reduceDescriptors(AxiosHeaders$1.prototype, ({value}, key) => { - let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set` - return { - get: () => value, - set(headerValue) { - this[mapped] = headerValue; - } - } -}); - -utils$1.freezeMethods(AxiosHeaders$1); - -const AxiosHeaders$2 = AxiosHeaders$1; - -/** - * Transform the data for a request or a response - * - * @param {Array|Function} fns A single function or Array of functions - * @param {?Object} response The response object - * - * @returns {*} The resulting transformed data - */ -function transformData(fns, response) { - const config = this || defaults$1; - const context = response || config; - const headers = AxiosHeaders$2.from(context.headers); - let data = context.data; - - utils$1.forEach(fns, function transform(fn) { - data = fn.call(config, data, headers.normalize(), response ? response.status : undefined); - }); - - headers.normalize(); - - return data; -} - -function isCancel$1(value) { - return !!(value && value.__CANCEL__); -} - -/** - * A `CanceledError` is an object that is thrown when an operation is canceled. - * - * @param {string=} message The message. - * @param {Object=} config The config. - * @param {Object=} request The request. - * - * @returns {CanceledError} The created error. - */ -function CanceledError$1(message, config, request) { - // eslint-disable-next-line no-eq-null,eqeqeq - AxiosError$1.call(this, message == null ? 'canceled' : message, AxiosError$1.ERR_CANCELED, config, request); - this.name = 'CanceledError'; -} - -utils$1.inherits(CanceledError$1, AxiosError$1, { - __CANCEL__: true -}); - -/** - * Resolve or reject a Promise based on response status. - * - * @param {Function} resolve A function that resolves the promise. - * @param {Function} reject A function that rejects the promise. - * @param {object} response The response. - * - * @returns {object} The response. - */ -function settle(resolve, reject, response) { - const validateStatus = response.config.validateStatus; - if (!response.status || !validateStatus || validateStatus(response.status)) { - resolve(response); - } else { - reject(new AxiosError$1( - 'Request failed with status code ' + response.status, - [AxiosError$1.ERR_BAD_REQUEST, AxiosError$1.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4], - response.config, - response.request, - response - )); - } -} - -const cookies = platform.hasStandardBrowserEnv ? - - // Standard browser envs support document.cookie - { - write(name, value, expires, path, domain, secure) { - const cookie = [name + '=' + encodeURIComponent(value)]; - - utils$1.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString()); - - utils$1.isString(path) && cookie.push('path=' + path); - - utils$1.isString(domain) && cookie.push('domain=' + domain); - - secure === true && cookie.push('secure'); - - document.cookie = cookie.join('; '); - }, - - read(name) { - const match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)')); - return (match ? decodeURIComponent(match[3]) : null); - }, - - remove(name) { - this.write(name, '', Date.now() - 86400000); - } - } - - : - - // Non-standard browser env (web workers, react-native) lack needed support. - { - write() {}, - read() { - return null; - }, - remove() {} - }; - -/** - * Determines whether the specified URL is absolute - * - * @param {string} url The URL to test - * - * @returns {boolean} True if the specified URL is absolute, otherwise false - */ -function isAbsoluteURL(url) { - // A URL is considered absolute if it begins with "://" or "//" (protocol-relative URL). - // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed - // by any combination of letters, digits, plus, period, or hyphen. - return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url); -} - -/** - * Creates a new URL by combining the specified URLs - * - * @param {string} baseURL The base URL - * @param {string} relativeURL The relative URL - * - * @returns {string} The combined URL - */ -function combineURLs(baseURL, relativeURL) { - return relativeURL - ? baseURL.replace(/\/?\/$/, '') + '/' + relativeURL.replace(/^\/+/, '') - : baseURL; -} - -/** - * Creates a new URL by combining the baseURL with the requestedURL, - * only when the requestedURL is not already an absolute URL. - * If the requestURL is absolute, this function returns the requestedURL untouched. - * - * @param {string} baseURL The base URL - * @param {string} requestedURL Absolute or relative URL to combine - * - * @returns {string} The combined full path - */ -function buildFullPath(baseURL, requestedURL) { - if (baseURL && !isAbsoluteURL(requestedURL)) { - return combineURLs(baseURL, requestedURL); - } - return requestedURL; -} - -const isURLSameOrigin = platform.hasStandardBrowserEnv ? - -// Standard browser envs have full support of the APIs needed to test -// whether the request URL is of the same origin as current location. - (function standardBrowserEnv() { - const msie = /(msie|trident)/i.test(navigator.userAgent); - const urlParsingNode = document.createElement('a'); - let originURL; - - /** - * Parse a URL to discover its components - * - * @param {String} url The URL to be parsed - * @returns {Object} - */ - function resolveURL(url) { - let href = url; - - if (msie) { - // IE needs attribute set twice to normalize properties - urlParsingNode.setAttribute('href', href); - href = urlParsingNode.href; - } - - urlParsingNode.setAttribute('href', href); - - // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils - return { - href: urlParsingNode.href, - protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '', - host: urlParsingNode.host, - search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '', - hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '', - hostname: urlParsingNode.hostname, - port: urlParsingNode.port, - pathname: (urlParsingNode.pathname.charAt(0) === '/') ? - urlParsingNode.pathname : - '/' + urlParsingNode.pathname - }; - } - - originURL = resolveURL(window.location.href); - - /** - * Determine if a URL shares the same origin as the current location - * - * @param {String} requestURL The URL to test - * @returns {boolean} True if URL shares the same origin, otherwise false - */ - return function isURLSameOrigin(requestURL) { - const parsed = (utils$1.isString(requestURL)) ? resolveURL(requestURL) : requestURL; - return (parsed.protocol === originURL.protocol && - parsed.host === originURL.host); - }; - })() : - - // Non standard browser envs (web workers, react-native) lack needed support. - (function nonStandardBrowserEnv() { - return function isURLSameOrigin() { - return true; - }; - })(); - -function parseProtocol(url) { - const match = /^([-+\w]{1,25})(:?\/\/|:)/.exec(url); - return match && match[1] || ''; -} - -/** - * Calculate data maxRate - * @param {Number} [samplesCount= 10] - * @param {Number} [min= 1000] - * @returns {Function} - */ -function speedometer(samplesCount, min) { - samplesCount = samplesCount || 10; - const bytes = new Array(samplesCount); - const timestamps = new Array(samplesCount); - let head = 0; - let tail = 0; - let firstSampleTS; - - min = min !== undefined ? min : 1000; - - return function push(chunkLength) { - const now = Date.now(); - - const startedAt = timestamps[tail]; - - if (!firstSampleTS) { - firstSampleTS = now; - } - - bytes[head] = chunkLength; - timestamps[head] = now; - - let i = tail; - let bytesCount = 0; - - while (i !== head) { - bytesCount += bytes[i++]; - i = i % samplesCount; - } - - head = (head + 1) % samplesCount; - - if (head === tail) { - tail = (tail + 1) % samplesCount; - } - - if (now - firstSampleTS < min) { - return; - } - - const passed = startedAt && now - startedAt; - - return passed ? Math.round(bytesCount * 1000 / passed) : undefined; - }; -} - -function progressEventReducer(listener, isDownloadStream) { - let bytesNotified = 0; - const _speedometer = speedometer(50, 250); - - return e => { - const loaded = e.loaded; - const total = e.lengthComputable ? e.total : undefined; - const progressBytes = loaded - bytesNotified; - const rate = _speedometer(progressBytes); - const inRange = loaded <= total; - - bytesNotified = loaded; - - const data = { - loaded, - total, - progress: total ? (loaded / total) : undefined, - bytes: progressBytes, - rate: rate ? rate : undefined, - estimated: rate && total && inRange ? (total - loaded) / rate : undefined, - event: e - }; - - data[isDownloadStream ? 'download' : 'upload'] = true; - - listener(data); - }; -} - -const isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined'; - -const xhrAdapter = isXHRAdapterSupported && function (config) { - return new Promise(function dispatchXhrRequest(resolve, reject) { - let requestData = config.data; - const requestHeaders = AxiosHeaders$2.from(config.headers).normalize(); - let {responseType, withXSRFToken} = config; - let onCanceled; - function done() { - if (config.cancelToken) { - config.cancelToken.unsubscribe(onCanceled); - } - - if (config.signal) { - config.signal.removeEventListener('abort', onCanceled); - } - } - - let contentType; - - if (utils$1.isFormData(requestData)) { - if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) { - requestHeaders.setContentType(false); // Let the browser set it - } else if ((contentType = requestHeaders.getContentType()) !== false) { - // fix semicolon duplication issue for ReactNative FormData implementation - const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : []; - requestHeaders.setContentType([type || 'multipart/form-data', ...tokens].join('; ')); - } - } - - let request = new XMLHttpRequest(); - - // HTTP basic authentication - if (config.auth) { - const username = config.auth.username || ''; - const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : ''; - requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password)); - } - - const fullPath = buildFullPath(config.baseURL, config.url); - - request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true); - - // Set the request timeout in MS - request.timeout = config.timeout; - - function onloadend() { - if (!request) { - return; - } - // Prepare the response - const responseHeaders = AxiosHeaders$2.from( - 'getAllResponseHeaders' in request && request.getAllResponseHeaders() - ); - const responseData = !responseType || responseType === 'text' || responseType === 'json' ? - request.responseText : request.response; - const response = { - data: responseData, - status: request.status, - statusText: request.statusText, - headers: responseHeaders, - config, - request - }; - - settle(function _resolve(value) { - resolve(value); - done(); - }, function _reject(err) { - reject(err); - done(); - }, response); - - // Clean up request - request = null; - } - - if ('onloadend' in request) { - // Use onloadend if available - request.onloadend = onloadend; - } else { - // Listen for ready state to emulate onloadend - request.onreadystatechange = function handleLoad() { - if (!request || request.readyState !== 4) { - return; - } - - // The request errored out and we didn't get a response, this will be - // handled by onerror instead - // With one exception: request that using file: protocol, most browsers - // will return status as 0 even though it's a successful request - if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) { - return; - } - // readystate handler is calling before onerror or ontimeout handlers, - // so we should call onloadend on the next 'tick' - setTimeout(onloadend); - }; - } - - // Handle browser request cancellation (as opposed to a manual cancellation) - request.onabort = function handleAbort() { - if (!request) { - return; - } - - reject(new AxiosError$1('Request aborted', AxiosError$1.ECONNABORTED, config, request)); - - // Clean up request - request = null; - }; - - // Handle low level network errors - request.onerror = function handleError() { - // Real errors are hidden from us by the browser - // onerror should only fire if it's a network error - reject(new AxiosError$1('Network Error', AxiosError$1.ERR_NETWORK, config, request)); - - // Clean up request - request = null; - }; - - // Handle timeout - request.ontimeout = function handleTimeout() { - let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded'; - const transitional = config.transitional || transitionalDefaults; - if (config.timeoutErrorMessage) { - timeoutErrorMessage = config.timeoutErrorMessage; - } - reject(new AxiosError$1( - timeoutErrorMessage, - transitional.clarifyTimeoutError ? AxiosError$1.ETIMEDOUT : AxiosError$1.ECONNABORTED, - config, - request)); - - // Clean up request - request = null; - }; - - // Add xsrf header - // This is only done if running in a standard browser environment. - // Specifically not if we're in a web worker, or react-native. - if(platform.hasStandardBrowserEnv) { - withXSRFToken && utils$1.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(config)); - - if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(fullPath))) { - // Add xsrf header - const xsrfValue = config.xsrfHeaderName && config.xsrfCookieName && cookies.read(config.xsrfCookieName); - - if (xsrfValue) { - requestHeaders.set(config.xsrfHeaderName, xsrfValue); - } - } - } - - // Remove Content-Type if data is undefined - requestData === undefined && requestHeaders.setContentType(null); - - // Add headers to the request - if ('setRequestHeader' in request) { - utils$1.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) { - request.setRequestHeader(key, val); - }); - } - - // Add withCredentials to request if needed - if (!utils$1.isUndefined(config.withCredentials)) { - request.withCredentials = !!config.withCredentials; - } - - // Add responseType to request if needed - if (responseType && responseType !== 'json') { - request.responseType = config.responseType; - } - - // Handle progress if needed - if (typeof config.onDownloadProgress === 'function') { - request.addEventListener('progress', progressEventReducer(config.onDownloadProgress, true)); - } - - // Not all browsers support upload events - if (typeof config.onUploadProgress === 'function' && request.upload) { - request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress)); - } - - if (config.cancelToken || config.signal) { - // Handle cancellation - // eslint-disable-next-line func-names - onCanceled = cancel => { - if (!request) { - return; - } - reject(!cancel || cancel.type ? new CanceledError$1(null, config, request) : cancel); - request.abort(); - request = null; - }; - - config.cancelToken && config.cancelToken.subscribe(onCanceled); - if (config.signal) { - config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled); - } - } - - const protocol = parseProtocol(fullPath); - - if (protocol && platform.protocols.indexOf(protocol) === -1) { - reject(new AxiosError$1('Unsupported protocol ' + protocol + ':', AxiosError$1.ERR_BAD_REQUEST, config)); - return; - } - - - // Send the request - request.send(requestData || null); - }); -}; - -const knownAdapters = { - http: httpAdapter, - xhr: xhrAdapter -}; - -utils$1.forEach(knownAdapters, (fn, value) => { - if (fn) { - try { - Object.defineProperty(fn, 'name', {value}); - } catch (e) { - // eslint-disable-next-line no-empty - } - Object.defineProperty(fn, 'adapterName', {value}); - } -}); - -const renderReason = (reason) => `- ${reason}`; - -const isResolvedHandle = (adapter) => utils$1.isFunction(adapter) || adapter === null || adapter === false; - -const adapters = { - getAdapter: (adapters) => { - adapters = utils$1.isArray(adapters) ? adapters : [adapters]; - - const {length} = adapters; - let nameOrAdapter; - let adapter; - - const rejectedReasons = {}; - - for (let i = 0; i < length; i++) { - nameOrAdapter = adapters[i]; - let id; - - adapter = nameOrAdapter; - - if (!isResolvedHandle(nameOrAdapter)) { - adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()]; - - if (adapter === undefined) { - throw new AxiosError$1(`Unknown adapter '${id}'`); - } - } - - if (adapter) { - break; - } - - rejectedReasons[id || '#' + i] = adapter; - } - - if (!adapter) { - - const reasons = Object.entries(rejectedReasons) - .map(([id, state]) => `adapter ${id} ` + - (state === false ? 'is not supported by the environment' : 'is not available in the build') - ); - - let s = length ? - (reasons.length > 1 ? 'since :\n' + reasons.map(renderReason).join('\n') : ' ' + renderReason(reasons[0])) : - 'as no adapter specified'; - - throw new AxiosError$1( - `There is no suitable adapter to dispatch the request ` + s, - 'ERR_NOT_SUPPORT' - ); - } - - return adapter; - }, - adapters: knownAdapters -}; - -/** - * Throws a `CanceledError` if cancellation has been requested. - * - * @param {Object} config The config that is to be used for the request - * - * @returns {void} - */ -function throwIfCancellationRequested(config) { - if (config.cancelToken) { - config.cancelToken.throwIfRequested(); - } - - if (config.signal && config.signal.aborted) { - throw new CanceledError$1(null, config); - } -} - -/** - * Dispatch a request to the server using the configured adapter. - * - * @param {object} config The config that is to be used for the request - * - * @returns {Promise} The Promise to be fulfilled - */ -function dispatchRequest(config) { - throwIfCancellationRequested(config); - - config.headers = AxiosHeaders$2.from(config.headers); - - // Transform request data - config.data = transformData.call( - config, - config.transformRequest - ); - - if (['post', 'put', 'patch'].indexOf(config.method) !== -1) { - config.headers.setContentType('application/x-www-form-urlencoded', false); - } - - const adapter = adapters.getAdapter(config.adapter || defaults$1.adapter); - - return adapter(config).then(function onAdapterResolution(response) { - throwIfCancellationRequested(config); - - // Transform response data - response.data = transformData.call( - config, - config.transformResponse, - response - ); - - response.headers = AxiosHeaders$2.from(response.headers); - - return response; - }, function onAdapterRejection(reason) { - if (!isCancel$1(reason)) { - throwIfCancellationRequested(config); - - // Transform response data - if (reason && reason.response) { - reason.response.data = transformData.call( - config, - config.transformResponse, - reason.response - ); - reason.response.headers = AxiosHeaders$2.from(reason.response.headers); - } - } - - return Promise.reject(reason); - }); -} - -const headersToObject = (thing) => thing instanceof AxiosHeaders$2 ? thing.toJSON() : thing; - -/** - * Config-specific merge-function which creates a new config-object - * by merging two configuration objects together. - * - * @param {Object} config1 - * @param {Object} config2 - * - * @returns {Object} New object resulting from merging config2 to config1 - */ -function mergeConfig$1(config1, config2) { - // eslint-disable-next-line no-param-reassign - config2 = config2 || {}; - const config = {}; - - function getMergedValue(target, source, caseless) { - if (utils$1.isPlainObject(target) && utils$1.isPlainObject(source)) { - return utils$1.merge.call({caseless}, target, source); - } else if (utils$1.isPlainObject(source)) { - return utils$1.merge({}, source); - } else if (utils$1.isArray(source)) { - return source.slice(); - } - return source; - } - - // eslint-disable-next-line consistent-return - function mergeDeepProperties(a, b, caseless) { - if (!utils$1.isUndefined(b)) { - return getMergedValue(a, b, caseless); - } else if (!utils$1.isUndefined(a)) { - return getMergedValue(undefined, a, caseless); - } - } - - // eslint-disable-next-line consistent-return - function valueFromConfig2(a, b) { - if (!utils$1.isUndefined(b)) { - return getMergedValue(undefined, b); - } - } - - // eslint-disable-next-line consistent-return - function defaultToConfig2(a, b) { - if (!utils$1.isUndefined(b)) { - return getMergedValue(undefined, b); - } else if (!utils$1.isUndefined(a)) { - return getMergedValue(undefined, a); - } - } - - // eslint-disable-next-line consistent-return - function mergeDirectKeys(a, b, prop) { - if (prop in config2) { - return getMergedValue(a, b); - } else if (prop in config1) { - return getMergedValue(undefined, a); - } - } - - const mergeMap = { - url: valueFromConfig2, - method: valueFromConfig2, - data: valueFromConfig2, - baseURL: defaultToConfig2, - transformRequest: defaultToConfig2, - transformResponse: defaultToConfig2, - paramsSerializer: defaultToConfig2, - timeout: defaultToConfig2, - timeoutMessage: defaultToConfig2, - withCredentials: defaultToConfig2, - withXSRFToken: defaultToConfig2, - adapter: defaultToConfig2, - responseType: defaultToConfig2, - xsrfCookieName: defaultToConfig2, - xsrfHeaderName: defaultToConfig2, - onUploadProgress: defaultToConfig2, - onDownloadProgress: defaultToConfig2, - decompress: defaultToConfig2, - maxContentLength: defaultToConfig2, - maxBodyLength: defaultToConfig2, - beforeRedirect: defaultToConfig2, - transport: defaultToConfig2, - httpAgent: defaultToConfig2, - httpsAgent: defaultToConfig2, - cancelToken: defaultToConfig2, - socketPath: defaultToConfig2, - responseEncoding: defaultToConfig2, - validateStatus: mergeDirectKeys, - headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true) - }; - - utils$1.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) { - const merge = mergeMap[prop] || mergeDeepProperties; - const configValue = merge(config1[prop], config2[prop], prop); - (utils$1.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue); - }); - - return config; -} - -const VERSION$1 = "1.6.7"; - -const validators$1 = {}; - -// eslint-disable-next-line func-names -['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => { - validators$1[type] = function validator(thing) { - return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type; - }; -}); - -const deprecatedWarnings = {}; - -/** - * Transitional option validator - * - * @param {function|boolean?} validator - set to false if the transitional option has been removed - * @param {string?} version - deprecated version / removed since version - * @param {string?} message - some message with additional info - * - * @returns {function} - */ -validators$1.transitional = function transitional(validator, version, message) { - function formatMessage(opt, desc) { - return '[Axios v' + VERSION$1 + '] Transitional option \'' + opt + '\'' + desc + (message ? '. ' + message : ''); - } - - // eslint-disable-next-line func-names - return (value, opt, opts) => { - if (validator === false) { - throw new AxiosError$1( - formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')), - AxiosError$1.ERR_DEPRECATED - ); - } - - if (version && !deprecatedWarnings[opt]) { - deprecatedWarnings[opt] = true; - // eslint-disable-next-line no-console - console.warn( - formatMessage( - opt, - ' has been deprecated since v' + version + ' and will be removed in the near future' - ) - ); - } - - return validator ? validator(value, opt, opts) : true; - }; -}; - -/** - * Assert object's properties type - * - * @param {object} options - * @param {object} schema - * @param {boolean?} allowUnknown - * - * @returns {object} - */ - -function assertOptions(options, schema, allowUnknown) { - if (typeof options !== 'object') { - throw new AxiosError$1('options must be an object', AxiosError$1.ERR_BAD_OPTION_VALUE); - } - const keys = Object.keys(options); - let i = keys.length; - while (i-- > 0) { - const opt = keys[i]; - const validator = schema[opt]; - if (validator) { - const value = options[opt]; - const result = value === undefined || validator(value, opt, options); - if (result !== true) { - throw new AxiosError$1('option ' + opt + ' must be ' + result, AxiosError$1.ERR_BAD_OPTION_VALUE); - } - continue; - } - if (allowUnknown !== true) { - throw new AxiosError$1('Unknown option ' + opt, AxiosError$1.ERR_BAD_OPTION); - } - } -} - -const validator = { - assertOptions, - validators: validators$1 -}; - -const validators = validator.validators; - -/** - * Create a new instance of Axios - * - * @param {Object} instanceConfig The default config for the instance - * - * @return {Axios} A new instance of Axios - */ -class Axios$1 { - constructor(instanceConfig) { - this.defaults = instanceConfig; - this.interceptors = { - request: new InterceptorManager$1(), - response: new InterceptorManager$1() - }; - } - - /** - * Dispatch a request - * - * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults) - * @param {?Object} config - * - * @returns {Promise} The Promise to be fulfilled - */ - async request(configOrUrl, config) { - try { - return await this._request(configOrUrl, config); - } catch (err) { - if (err instanceof Error) { - let dummy; - - Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error()); - - // slice off the Error: ... line - const stack = dummy.stack ? dummy.stack.replace(/^.+\n/, '') : ''; - - if (!err.stack) { - err.stack = stack; - // match without the 2 top stack lines - } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\n.+\n/, ''))) { - err.stack += '\n' + stack; - } - } - - throw err; - } - } - - _request(configOrUrl, config) { - /*eslint no-param-reassign:0*/ - // Allow for axios('example/url'[, config]) a la fetch API - if (typeof configOrUrl === 'string') { - config = config || {}; - config.url = configOrUrl; - } else { - config = configOrUrl || {}; - } - - config = mergeConfig$1(this.defaults, config); - - const {transitional, paramsSerializer, headers} = config; - - if (transitional !== undefined) { - validator.assertOptions(transitional, { - silentJSONParsing: validators.transitional(validators.boolean), - forcedJSONParsing: validators.transitional(validators.boolean), - clarifyTimeoutError: validators.transitional(validators.boolean) - }, false); - } - - if (paramsSerializer != null) { - if (utils$1.isFunction(paramsSerializer)) { - config.paramsSerializer = { - serialize: paramsSerializer - }; - } else { - validator.assertOptions(paramsSerializer, { - encode: validators.function, - serialize: validators.function - }, true); - } - } - - // Set config.method - config.method = (config.method || this.defaults.method || 'get').toLowerCase(); - - // Flatten headers - let contextHeaders = headers && utils$1.merge( - headers.common, - headers[config.method] - ); - - headers && utils$1.forEach( - ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], - (method) => { - delete headers[method]; - } - ); - - config.headers = AxiosHeaders$2.concat(contextHeaders, headers); - - // filter out skipped interceptors - const requestInterceptorChain = []; - let synchronousRequestInterceptors = true; - this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) { - if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) { - return; - } - - synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous; - - requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected); - }); - - const responseInterceptorChain = []; - this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) { - responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected); - }); - - let promise; - let i = 0; - let len; - - if (!synchronousRequestInterceptors) { - const chain = [dispatchRequest.bind(this), undefined]; - chain.unshift.apply(chain, requestInterceptorChain); - chain.push.apply(chain, responseInterceptorChain); - len = chain.length; - - promise = Promise.resolve(config); - - while (i < len) { - promise = promise.then(chain[i++], chain[i++]); - } - - return promise; - } - - len = requestInterceptorChain.length; - - let newConfig = config; - - i = 0; - - while (i < len) { - const onFulfilled = requestInterceptorChain[i++]; - const onRejected = requestInterceptorChain[i++]; - try { - newConfig = onFulfilled(newConfig); - } catch (error) { - onRejected.call(this, error); - break; - } - } - - try { - promise = dispatchRequest.call(this, newConfig); - } catch (error) { - return Promise.reject(error); - } - - i = 0; - len = responseInterceptorChain.length; - - while (i < len) { - promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]); - } - - return promise; - } - - getUri(config) { - config = mergeConfig$1(this.defaults, config); - const fullPath = buildFullPath(config.baseURL, config.url); - return buildURL(fullPath, config.params, config.paramsSerializer); - } -} - -// Provide aliases for supported request methods -utils$1.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) { - /*eslint func-names:0*/ - Axios$1.prototype[method] = function(url, config) { - return this.request(mergeConfig$1(config || {}, { - method, - url, - data: (config || {}).data - })); - }; -}); - -utils$1.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { - /*eslint func-names:0*/ - - function generateHTTPMethod(isForm) { - return function httpMethod(url, data, config) { - return this.request(mergeConfig$1(config || {}, { - method, - headers: isForm ? { - 'Content-Type': 'multipart/form-data' - } : {}, - url, - data - })); - }; - } - - Axios$1.prototype[method] = generateHTTPMethod(); - - Axios$1.prototype[method + 'Form'] = generateHTTPMethod(true); -}); - -const Axios$2 = Axios$1; - -/** - * A `CancelToken` is an object that can be used to request cancellation of an operation. - * - * @param {Function} executor The executor function. - * - * @returns {CancelToken} - */ -class CancelToken$1 { - constructor(executor) { - if (typeof executor !== 'function') { - throw new TypeError('executor must be a function.'); - } - - let resolvePromise; - - this.promise = new Promise(function promiseExecutor(resolve) { - resolvePromise = resolve; - }); - - const token = this; - - // eslint-disable-next-line func-names - this.promise.then(cancel => { - if (!token._listeners) return; - - let i = token._listeners.length; - - while (i-- > 0) { - token._listeners[i](cancel); - } - token._listeners = null; - }); - - // eslint-disable-next-line func-names - this.promise.then = onfulfilled => { - let _resolve; - // eslint-disable-next-line func-names - const promise = new Promise(resolve => { - token.subscribe(resolve); - _resolve = resolve; - }).then(onfulfilled); - - promise.cancel = function reject() { - token.unsubscribe(_resolve); - }; - - return promise; - }; - - executor(function cancel(message, config, request) { - if (token.reason) { - // Cancellation has already been requested - return; - } - - token.reason = new CanceledError$1(message, config, request); - resolvePromise(token.reason); - }); - } - - /** - * Throws a `CanceledError` if cancellation has been requested. - */ - throwIfRequested() { - if (this.reason) { - throw this.reason; - } - } - - /** - * Subscribe to the cancel signal - */ - - subscribe(listener) { - if (this.reason) { - listener(this.reason); - return; - } - - if (this._listeners) { - this._listeners.push(listener); - } else { - this._listeners = [listener]; - } - } - - /** - * Unsubscribe from the cancel signal - */ - - unsubscribe(listener) { - if (!this._listeners) { - return; - } - const index = this._listeners.indexOf(listener); - if (index !== -1) { - this._listeners.splice(index, 1); - } - } - - /** - * Returns an object that contains a new `CancelToken` and a function that, when called, - * cancels the `CancelToken`. - */ - static source() { - let cancel; - const token = new CancelToken$1(function executor(c) { - cancel = c; - }); - return { - token, - cancel - }; - } -} - -const CancelToken$2 = CancelToken$1; - -/** - * Syntactic sugar for invoking a function and expanding an array for arguments. - * - * Common use case would be to use `Function.prototype.apply`. - * - * ```js - * function f(x, y, z) {} - * var args = [1, 2, 3]; - * f.apply(null, args); - * ``` - * - * With `spread` this example can be re-written. - * - * ```js - * spread(function(x, y, z) {})([1, 2, 3]); - * ``` - * - * @param {Function} callback - * - * @returns {Function} - */ -function spread$1(callback) { - return function wrap(arr) { - return callback.apply(null, arr); - }; -} - -/** - * Determines whether the payload is an error thrown by Axios - * - * @param {*} payload The value to test - * - * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false - */ -function isAxiosError$1(payload) { - return utils$1.isObject(payload) && (payload.isAxiosError === true); -} - -const HttpStatusCode$1 = { - Continue: 100, - SwitchingProtocols: 101, - Processing: 102, - EarlyHints: 103, - Ok: 200, - Created: 201, - Accepted: 202, - NonAuthoritativeInformation: 203, - NoContent: 204, - ResetContent: 205, - PartialContent: 206, - MultiStatus: 207, - AlreadyReported: 208, - ImUsed: 226, - MultipleChoices: 300, - MovedPermanently: 301, - Found: 302, - SeeOther: 303, - NotModified: 304, - UseProxy: 305, - Unused: 306, - TemporaryRedirect: 307, - PermanentRedirect: 308, - BadRequest: 400, - Unauthorized: 401, - PaymentRequired: 402, - Forbidden: 403, - NotFound: 404, - MethodNotAllowed: 405, - NotAcceptable: 406, - ProxyAuthenticationRequired: 407, - RequestTimeout: 408, - Conflict: 409, - Gone: 410, - LengthRequired: 411, - PreconditionFailed: 412, - PayloadTooLarge: 413, - UriTooLong: 414, - UnsupportedMediaType: 415, - RangeNotSatisfiable: 416, - ExpectationFailed: 417, - ImATeapot: 418, - MisdirectedRequest: 421, - UnprocessableEntity: 422, - Locked: 423, - FailedDependency: 424, - TooEarly: 425, - UpgradeRequired: 426, - PreconditionRequired: 428, - TooManyRequests: 429, - RequestHeaderFieldsTooLarge: 431, - UnavailableForLegalReasons: 451, - InternalServerError: 500, - NotImplemented: 501, - BadGateway: 502, - ServiceUnavailable: 503, - GatewayTimeout: 504, - HttpVersionNotSupported: 505, - VariantAlsoNegotiates: 506, - InsufficientStorage: 507, - LoopDetected: 508, - NotExtended: 510, - NetworkAuthenticationRequired: 511, -}; - -Object.entries(HttpStatusCode$1).forEach(([key, value]) => { - HttpStatusCode$1[value] = key; -}); - -const HttpStatusCode$2 = HttpStatusCode$1; - -/** - * Create an instance of Axios - * - * @param {Object} defaultConfig The default config for the instance - * - * @returns {Axios} A new instance of Axios - */ -function createInstance(defaultConfig) { - const context = new Axios$2(defaultConfig); - const instance = bind(Axios$2.prototype.request, context); - - // Copy axios.prototype to instance - utils$1.extend(instance, Axios$2.prototype, context, {allOwnKeys: true}); - - // Copy context to instance - utils$1.extend(instance, context, null, {allOwnKeys: true}); - - // Factory for creating new instances - instance.create = function create(instanceConfig) { - return createInstance(mergeConfig$1(defaultConfig, instanceConfig)); - }; - - return instance; -} - -// Create the default instance to be exported -const axios = createInstance(defaults$1); - -// Expose Axios class to allow class inheritance -axios.Axios = Axios$2; - -// Expose Cancel & CancelToken -axios.CanceledError = CanceledError$1; -axios.CancelToken = CancelToken$2; -axios.isCancel = isCancel$1; -axios.VERSION = VERSION$1; -axios.toFormData = toFormData$1; - -// Expose AxiosError class -axios.AxiosError = AxiosError$1; - -// alias for CanceledError for backward compatibility -axios.Cancel = axios.CanceledError; - -// Expose all/spread -axios.all = function all(promises) { - return Promise.all(promises); -}; - -axios.spread = spread$1; - -// Expose isAxiosError -axios.isAxiosError = isAxiosError$1; - -// Expose mergeConfig -axios.mergeConfig = mergeConfig$1; - -axios.AxiosHeaders = AxiosHeaders$2; - -axios.formToJSON = thing => formDataToJSON(utils$1.isHTMLForm(thing) ? new FormData(thing) : thing); - -axios.getAdapter = adapters.getAdapter; - -axios.HttpStatusCode = HttpStatusCode$2; - -axios.default = axios; - -// this module should only have a default export -const axios$1 = axios; - -// This module is intended to unwrap Axios default export as named. -// Keep top-level export same with static properties -// so that it can keep same with es module or cjs -const { - Axios, - AxiosError, - CanceledError, - isCancel, - CancelToken, - VERSION, - all, - Cancel, - isAxiosError, - spread, - toFormData, - AxiosHeaders, - HttpStatusCode, - formToJSON, - getAdapter, - mergeConfig -} = axios$1; - -export { Axios, AxiosError, AxiosHeaders, Cancel, CancelToken, CanceledError, HttpStatusCode, VERSION, all, axios$1 as default, formToJSON, getAdapter, isAxiosError, isCancel, mergeConfig, spread, toFormData }; -//# sourceMappingURL=axios.js.map diff --git a/node_modules/axios/dist/esm/axios.js.map b/node_modules/axios/dist/esm/axios.js.map deleted file mode 100644 index 7031b7d..0000000 --- a/node_modules/axios/dist/esm/axios.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"axios.js","sources":["../../lib/helpers/bind.js","../../lib/utils.js","../../lib/core/AxiosError.js","../../lib/helpers/null.js","../../lib/helpers/toFormData.js","../../lib/helpers/AxiosURLSearchParams.js","../../lib/helpers/buildURL.js","../../lib/core/InterceptorManager.js","../../lib/defaults/transitional.js","../../lib/platform/browser/classes/URLSearchParams.js","../../lib/platform/browser/classes/FormData.js","../../lib/platform/browser/classes/Blob.js","../../lib/platform/browser/index.js","../../lib/platform/common/utils.js","../../lib/platform/index.js","../../lib/helpers/toURLEncodedForm.js","../../lib/helpers/formDataToJSON.js","../../lib/defaults/index.js","../../lib/helpers/parseHeaders.js","../../lib/core/AxiosHeaders.js","../../lib/core/transformData.js","../../lib/cancel/isCancel.js","../../lib/cancel/CanceledError.js","../../lib/core/settle.js","../../lib/helpers/cookies.js","../../lib/helpers/isAbsoluteURL.js","../../lib/helpers/combineURLs.js","../../lib/core/buildFullPath.js","../../lib/helpers/isURLSameOrigin.js","../../lib/helpers/parseProtocol.js","../../lib/helpers/speedometer.js","../../lib/adapters/xhr.js","../../lib/adapters/adapters.js","../../lib/core/dispatchRequest.js","../../lib/core/mergeConfig.js","../../lib/env/data.js","../../lib/helpers/validator.js","../../lib/core/Axios.js","../../lib/cancel/CancelToken.js","../../lib/helpers/spread.js","../../lib/helpers/isAxiosError.js","../../lib/helpers/HttpStatusCode.js","../../lib/axios.js","../../index.js"],"sourcesContent":["'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n value = +value;\n return Number.isFinite(value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0]\n }\n\n return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\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/**\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/**\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/**\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) 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/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\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/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} 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\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\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\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\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} 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\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 } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\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 + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = (\n (product) => {\n return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0\n })(typeof navigator !== 'undefined' && navigator.product);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n const msie = /(msie|trident)/i.test(navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let originURL;\n\n /**\n * Parse a URL to discover its components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n let href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })();\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","'use strict';\n\nimport utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport cookies from './../helpers/cookies.js';\nimport buildURL from './../helpers/buildURL.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport isURLSameOrigin from './../helpers/isURLSameOrigin.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport speedometer from '../helpers/speedometer.js';\n\nfunction progressEventReducer(listener, isDownloadStream) {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e\n };\n\n data[isDownloadStream ? 'download' : 'upload'] = true;\n\n listener(data);\n };\n}\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n let requestData = config.data;\n const requestHeaders = AxiosHeaders.from(config.headers).normalize();\n let {responseType, withXSRFToken} = config;\n let onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n let contentType;\n\n if (utils.isFormData(requestData)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n requestHeaders.setContentType(false); // Let the browser set it\n } else if ((contentType = requestHeaders.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n requestHeaders.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n let request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n const username = config.auth.username || '';\n const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password));\n }\n\n const fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if(platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(config));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(fullPath))) {\n // Add xsrf header\n const xsrfValue = config.xsrfHeaderName && config.xsrfCookieName && cookies.read(config.xsrfCookieName);\n\n if (xsrfValue) {\n requestHeaders.set(config.xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', progressEventReducer(config.onDownloadProgress, true));\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress));\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(fullPath);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? thing.toJSON() : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","export const VERSION = \"1.6.7\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy;\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","import axios from './lib/axios.js';\n\n// This module is intended to unwrap Axios default export as named.\n// Keep top-level export same with static properties\n// so that it can keep same with es module or cjs\nconst {\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n} = axios;\n\nexport {\n axios as default,\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n}\n"],"names":["AxiosError","utils","prototype","toFormData","encode","URLSearchParams","FormData","Blob","platform","AxiosHeaders","defaults","isCancel","CanceledError","mergeConfig","VERSION","validators","Axios","InterceptorManager","CancelToken","spread","isAxiosError","HttpStatusCode","axios"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/axios/dist/esm/axios.min.js b/node_modules/axios/dist/esm/axios.min.js deleted file mode 100644 index a4caede..0000000 --- a/node_modules/axios/dist/esm/axios.min.js +++ /dev/null @@ -1,2 +0,0 @@ -function e(e,t){return function(){return e.apply(t,arguments)}}const{toString:t}=Object.prototype,{getPrototypeOf:n}=Object,r=(o=Object.create(null),e=>{const n=t.call(e);return o[n]||(o[n]=n.slice(8,-1).toLowerCase())});var o;const s=e=>(e=e.toLowerCase(),t=>r(t)===e),i=e=>t=>typeof t===e,{isArray:a}=Array,c=i("undefined");const u=s("ArrayBuffer");const l=i("string"),f=i("function"),d=i("number"),p=e=>null!==e&&"object"==typeof e,h=e=>{if("object"!==r(e))return!1;const t=n(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||Symbol.toStringTag in e||Symbol.iterator in e)},m=s("Date"),y=s("File"),g=s("Blob"),b=s("FileList"),E=s("URLSearchParams");function w(e,t,{allOwnKeys:n=!1}={}){if(null==e)return;let r,o;if("object"!=typeof e&&(e=[e]),a(e))for(r=0,o=e.length;r0;)if(r=n[o],t===r.toLowerCase())return r;return null}const S="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,R=e=>!c(e)&&e!==S;const A=(T="undefined"!=typeof Uint8Array&&n(Uint8Array),e=>T&&e instanceof T);var T;const j=s("HTMLFormElement"),C=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),N=s("RegExp"),v=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),r={};w(n,((n,o)=>{let s;!1!==(s=t(n,o,e))&&(r[o]=s||n)})),Object.defineProperties(e,r)},x="abcdefghijklmnopqrstuvwxyz",P={DIGIT:"0123456789",ALPHA:x,ALPHA_DIGIT:x+x.toUpperCase()+"0123456789"};const _=s("AsyncFunction"),F={isArray:a,isArrayBuffer:u,isBuffer:function(e){return null!==e&&!c(e)&&null!==e.constructor&&!c(e.constructor)&&f(e.constructor.isBuffer)&&e.constructor.isBuffer(e)},isFormData:e=>{let t;return e&&("function"==typeof FormData&&e instanceof FormData||f(e.append)&&("formdata"===(t=r(e))||"object"===t&&f(e.toString)&&"[object FormData]"===e.toString()))},isArrayBufferView:function(e){let t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&u(e.buffer),t},isString:l,isNumber:d,isBoolean:e=>!0===e||!1===e,isObject:p,isPlainObject:h,isUndefined:c,isDate:m,isFile:y,isBlob:g,isRegExp:N,isFunction:f,isStream:e=>p(e)&&f(e.pipe),isURLSearchParams:E,isTypedArray:A,isFileList:b,forEach:w,merge:function e(){const{caseless:t}=R(this)&&this||{},n={},r=(r,o)=>{const s=t&&O(n,o)||o;h(n[s])&&h(r)?n[s]=e(n[s],r):h(r)?n[s]=e({},r):a(r)?n[s]=r.slice():n[s]=r};for(let e=0,t=arguments.length;e(w(n,((n,o)=>{r&&f(n)?t[o]=e(n,r):t[o]=n}),{allOwnKeys:o}),t),trim:e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,""),stripBOM:e=>(65279===e.charCodeAt(0)&&(e=e.slice(1)),e),inherits:(e,t,n,r)=>{e.prototype=Object.create(t.prototype,r),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},toFlatObject:(e,t,r,o)=>{let s,i,a;const c={};if(t=t||{},null==e)return t;do{for(s=Object.getOwnPropertyNames(e),i=s.length;i-- >0;)a=s[i],o&&!o(a,e,t)||c[a]||(t[a]=e[a],c[a]=!0);e=!1!==r&&n(e)}while(e&&(!r||r(e,t))&&e!==Object.prototype);return t},kindOf:r,kindOfTest:s,endsWith:(e,t,n)=>{e=String(e),(void 0===n||n>e.length)&&(n=e.length),n-=t.length;const r=e.indexOf(t,n);return-1!==r&&r===n},toArray:e=>{if(!e)return null;if(a(e))return e;let t=e.length;if(!d(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},forEachEntry:(e,t)=>{const n=(e&&e[Symbol.iterator]).call(e);let r;for(;(r=n.next())&&!r.done;){const n=r.value;t.call(e,n[0],n[1])}},matchAll:(e,t)=>{let n;const r=[];for(;null!==(n=e.exec(t));)r.push(n);return r},isHTMLForm:j,hasOwnProperty:C,hasOwnProp:C,reduceDescriptors:v,freezeMethods:e=>{v(e,((t,n)=>{if(f(e)&&-1!==["arguments","caller","callee"].indexOf(n))return!1;const r=e[n];f(r)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")}))}))},toObjectSet:(e,t)=>{const n={},r=e=>{e.forEach((e=>{n[e]=!0}))};return a(e)?r(e):r(String(e).split(t)),n},toCamelCase:e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,(function(e,t,n){return t.toUpperCase()+n})),noop:()=>{},toFiniteNumber:(e,t)=>(e=+e,Number.isFinite(e)?e:t),findKey:O,global:S,isContextDefined:R,ALPHABET:P,generateString:(e=16,t=P.ALPHA_DIGIT)=>{let n="";const{length:r}=t;for(;e--;)n+=t[Math.random()*r|0];return n},isSpecCompliantForm:function(e){return!!(e&&f(e.append)&&"FormData"===e[Symbol.toStringTag]&&e[Symbol.iterator])},toJSONObject:e=>{const t=new Array(10),n=(e,r)=>{if(p(e)){if(t.indexOf(e)>=0)return;if(!("toJSON"in e)){t[r]=e;const o=a(e)?[]:{};return w(e,((e,t)=>{const s=n(e,r+1);!c(s)&&(o[t]=s)})),t[r]=void 0,o}}return e};return n(e,0)},isAsyncFn:_,isThenable:e=>e&&(p(e)||f(e))&&f(e.then)&&f(e.catch)};function U(e,t,n,r,o){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=e,this.name="AxiosError",t&&(this.code=t),n&&(this.config=n),r&&(this.request=r),o&&(this.response=o)}F.inherits(U,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:F.toJSONObject(this.config),code:this.code,status:this.response&&this.response.status?this.response.status:null}}});const B=U.prototype,D={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach((e=>{D[e]={value:e}})),Object.defineProperties(U,D),Object.defineProperty(B,"isAxiosError",{value:!0}),U.from=(e,t,n,r,o,s)=>{const i=Object.create(B);return F.toFlatObject(e,i,(function(e){return e!==Error.prototype}),(e=>"isAxiosError"!==e)),U.call(i,e.message,t,n,r,o),i.cause=e,i.name=e.name,s&&Object.assign(i,s),i};function L(e){return F.isPlainObject(e)||F.isArray(e)}function k(e){return F.endsWith(e,"[]")?e.slice(0,-2):e}function q(e,t,n){return e?e.concat(t).map((function(e,t){return e=k(e),!n&&t?"["+e+"]":e})).join(n?".":""):t}const I=F.toFlatObject(F,{},null,(function(e){return/^is[A-Z]/.test(e)}));function z(e,t,n){if(!F.isObject(e))throw new TypeError("target must be an object");t=t||new FormData;const r=(n=F.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,(function(e,t){return!F.isUndefined(t[e])}))).metaTokens,o=n.visitor||u,s=n.dots,i=n.indexes,a=(n.Blob||"undefined"!=typeof Blob&&Blob)&&F.isSpecCompliantForm(t);if(!F.isFunction(o))throw new TypeError("visitor must be a function");function c(e){if(null===e)return"";if(F.isDate(e))return e.toISOString();if(!a&&F.isBlob(e))throw new U("Blob is not supported. Use a Buffer instead.");return F.isArrayBuffer(e)||F.isTypedArray(e)?a&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function u(e,n,o){let a=e;if(e&&!o&&"object"==typeof e)if(F.endsWith(n,"{}"))n=r?n:n.slice(0,-2),e=JSON.stringify(e);else if(F.isArray(e)&&function(e){return F.isArray(e)&&!e.some(L)}(e)||(F.isFileList(e)||F.endsWith(n,"[]"))&&(a=F.toArray(e)))return n=k(n),a.forEach((function(e,r){!F.isUndefined(e)&&null!==e&&t.append(!0===i?q([n],r,s):null===i?n:n+"[]",c(e))})),!1;return!!L(e)||(t.append(q(o,n,s),c(e)),!1)}const l=[],f=Object.assign(I,{defaultVisitor:u,convertValue:c,isVisitable:L});if(!F.isObject(e))throw new TypeError("data must be an object");return function e(n,r){if(!F.isUndefined(n)){if(-1!==l.indexOf(n))throw Error("Circular reference detected in "+r.join("."));l.push(n),F.forEach(n,(function(n,s){!0===(!(F.isUndefined(n)||null===n)&&o.call(t,n,F.isString(s)?s.trim():s,r,f))&&e(n,r?r.concat(s):[s])})),l.pop()}}(e),t}function M(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,(function(e){return t[e]}))}function H(e,t){this._pairs=[],e&&z(e,this,t)}const J=H.prototype;function W(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function V(e,t,n){if(!t)return e;const r=n&&n.encode||W,o=n&&n.serialize;let s;if(s=o?o(t,n):F.isURLSearchParams(t)?t.toString():new H(t,n).toString(r),s){const t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+s}return e}J.append=function(e,t){this._pairs.push([e,t])},J.toString=function(e){const t=e?function(t){return e.call(this,t,M)}:M;return this._pairs.map((function(e){return t(e[0])+"="+t(e[1])}),"").join("&")};const K=class{constructor(){this.handlers=[]}use(e,t,n){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){F.forEach(this.handlers,(function(t){null!==t&&e(t)}))}},G={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},$={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:H,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},protocols:["http","https","file","blob","url","data"]},X="undefined"!=typeof window&&"undefined"!=typeof document,Q=(Z="undefined"!=typeof navigator&&navigator.product,X&&["ReactNative","NativeScript","NS"].indexOf(Z)<0);var Z;const Y="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,ee={...Object.freeze({__proto__:null,hasBrowserEnv:X,hasStandardBrowserWebWorkerEnv:Y,hasStandardBrowserEnv:Q}),...$};function te(e){function t(e,n,r,o){let s=e[o++];if("__proto__"===s)return!0;const i=Number.isFinite(+s),a=o>=e.length;if(s=!s&&F.isArray(r)?r.length:s,a)return F.hasOwnProp(r,s)?r[s]=[r[s],n]:r[s]=n,!i;r[s]&&F.isObject(r[s])||(r[s]=[]);return t(e,n,r[s],o)&&F.isArray(r[s])&&(r[s]=function(e){const t={},n=Object.keys(e);let r;const o=n.length;let s;for(r=0;r{t(function(e){return F.matchAll(/\w+|\[(\w*)]/g,e).map((e=>"[]"===e[0]?"":e[1]||e[0]))}(e),r,n,0)})),n}return null}const ne={transitional:G,adapter:["xhr","http"],transformRequest:[function(e,t){const n=t.getContentType()||"",r=n.indexOf("application/json")>-1,o=F.isObject(e);o&&F.isHTMLForm(e)&&(e=new FormData(e));if(F.isFormData(e))return r?JSON.stringify(te(e)):e;if(F.isArrayBuffer(e)||F.isBuffer(e)||F.isStream(e)||F.isFile(e)||F.isBlob(e))return e;if(F.isArrayBufferView(e))return e.buffer;if(F.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let s;if(o){if(n.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return z(e,new ee.classes.URLSearchParams,Object.assign({visitor:function(e,t,n,r){return ee.isNode&&F.isBuffer(e)?(this.append(t,e.toString("base64")),!1):r.defaultVisitor.apply(this,arguments)}},t))}(e,this.formSerializer).toString();if((s=F.isFileList(e))||n.indexOf("multipart/form-data")>-1){const t=this.env&&this.env.FormData;return z(s?{"files[]":e}:e,t&&new t,this.formSerializer)}}return o||r?(t.setContentType("application/json",!1),function(e,t,n){if(F.isString(e))try{return(t||JSON.parse)(e),F.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(n||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){const t=this.transitional||ne.transitional,n=t&&t.forcedJSONParsing,r="json"===this.responseType;if(e&&F.isString(e)&&(n&&!this.responseType||r)){const n=!(t&&t.silentJSONParsing)&&r;try{return JSON.parse(e)}catch(e){if(n){if("SyntaxError"===e.name)throw U.from(e,U.ERR_BAD_RESPONSE,this,null,this.response);throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:ee.classes.FormData,Blob:ee.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};F.forEach(["delete","get","head","post","put","patch"],(e=>{ne.headers[e]={}}));const re=ne,oe=F.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),se=Symbol("internals");function ie(e){return e&&String(e).trim().toLowerCase()}function ae(e){return!1===e||null==e?e:F.isArray(e)?e.map(ae):String(e)}function ce(e,t,n,r,o){return F.isFunction(r)?r.call(this,t,n):(o&&(t=n),F.isString(t)?F.isString(r)?-1!==t.indexOf(r):F.isRegExp(r)?r.test(t):void 0:void 0)}class ue{constructor(e){e&&this.set(e)}set(e,t,n){const r=this;function o(e,t,n){const o=ie(t);if(!o)throw new Error("header name must be a non-empty string");const s=F.findKey(r,o);(!s||void 0===r[s]||!0===n||void 0===n&&!1!==r[s])&&(r[s||t]=ae(e))}const s=(e,t)=>F.forEach(e,((e,n)=>o(e,n,t)));return F.isPlainObject(e)||e instanceof this.constructor?s(e,t):F.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim())?s((e=>{const t={};let n,r,o;return e&&e.split("\n").forEach((function(e){o=e.indexOf(":"),n=e.substring(0,o).trim().toLowerCase(),r=e.substring(o+1).trim(),!n||t[n]&&oe[n]||("set-cookie"===n?t[n]?t[n].push(r):t[n]=[r]:t[n]=t[n]?t[n]+", "+r:r)})),t})(e),t):null!=e&&o(t,e,n),this}get(e,t){if(e=ie(e)){const n=F.findKey(this,e);if(n){const e=this[n];if(!t)return e;if(!0===t)return function(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let r;for(;r=n.exec(e);)t[r[1]]=r[2];return t}(e);if(F.isFunction(t))return t.call(this,e,n);if(F.isRegExp(t))return t.exec(e);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,t){if(e=ie(e)){const n=F.findKey(this,e);return!(!n||void 0===this[n]||t&&!ce(0,this[n],n,t))}return!1}delete(e,t){const n=this;let r=!1;function o(e){if(e=ie(e)){const o=F.findKey(n,e);!o||t&&!ce(0,n[o],o,t)||(delete n[o],r=!0)}}return F.isArray(e)?e.forEach(o):o(e),r}clear(e){const t=Object.keys(this);let n=t.length,r=!1;for(;n--;){const o=t[n];e&&!ce(0,this[o],o,e,!0)||(delete this[o],r=!0)}return r}normalize(e){const t=this,n={};return F.forEach(this,((r,o)=>{const s=F.findKey(n,o);if(s)return t[s]=ae(r),void delete t[o];const i=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,((e,t,n)=>t.toUpperCase()+n))}(o):String(o).trim();i!==o&&delete t[o],t[i]=ae(r),n[i]=!0})),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const t=Object.create(null);return F.forEach(this,((n,r)=>{null!=n&&!1!==n&&(t[r]=e&&F.isArray(n)?n.join(", "):n)})),t}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map((([e,t])=>e+": "+t)).join("\n")}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...t){const n=new this(e);return t.forEach((e=>n.set(e))),n}static accessor(e){const t=(this[se]=this[se]={accessors:{}}).accessors,n=this.prototype;function r(e){const r=ie(e);t[r]||(!function(e,t){const n=F.toCamelCase(" "+t);["get","set","has"].forEach((r=>{Object.defineProperty(e,r+n,{value:function(e,n,o){return this[r].call(this,t,e,n,o)},configurable:!0})}))}(n,e),t[r]=!0)}return F.isArray(e)?e.forEach(r):r(e),this}}ue.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),F.reduceDescriptors(ue.prototype,(({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(e){this[n]=e}}})),F.freezeMethods(ue);const le=ue;function fe(e,t){const n=this||re,r=t||n,o=le.from(r.headers);let s=r.data;return F.forEach(e,(function(e){s=e.call(n,s,o.normalize(),t?t.status:void 0)})),o.normalize(),s}function de(e){return!(!e||!e.__CANCEL__)}function pe(e,t,n){U.call(this,null==e?"canceled":e,U.ERR_CANCELED,t,n),this.name="CanceledError"}F.inherits(pe,U,{__CANCEL__:!0});const he=ee.hasStandardBrowserEnv?{write(e,t,n,r,o,s){const i=[e+"="+encodeURIComponent(t)];F.isNumber(n)&&i.push("expires="+new Date(n).toGMTString()),F.isString(r)&&i.push("path="+r),F.isString(o)&&i.push("domain="+o),!0===s&&i.push("secure"),document.cookie=i.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read:()=>null,remove(){}};function me(e,t){return e&&!/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t)?function(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}(e,t):t}const ye=ee.hasStandardBrowserEnv?function(){const e=/(msie|trident)/i.test(navigator.userAgent),t=document.createElement("a");let n;function r(n){let r=n;return e&&(t.setAttribute("href",r),r=t.href),t.setAttribute("href",r),{href:t.href,protocol:t.protocol?t.protocol.replace(/:$/,""):"",host:t.host,search:t.search?t.search.replace(/^\?/,""):"",hash:t.hash?t.hash.replace(/^#/,""):"",hostname:t.hostname,port:t.port,pathname:"/"===t.pathname.charAt(0)?t.pathname:"/"+t.pathname}}return n=r(window.location.href),function(e){const t=F.isString(e)?r(e):e;return t.protocol===n.protocol&&t.host===n.host}}():function(){return!0};function ge(e,t){let n=0;const r=function(e,t){e=e||10;const n=new Array(e),r=new Array(e);let o,s=0,i=0;return t=void 0!==t?t:1e3,function(a){const c=Date.now(),u=r[i];o||(o=c),n[s]=a,r[s]=c;let l=i,f=0;for(;l!==s;)f+=n[l++],l%=e;if(s=(s+1)%e,s===i&&(i=(i+1)%e),c-o{const s=o.loaded,i=o.lengthComputable?o.total:void 0,a=s-n,c=r(a);n=s;const u={loaded:s,total:i,progress:i?s/i:void 0,bytes:a,rate:c||void 0,estimated:c&&i&&s<=i?(i-s)/c:void 0,event:o};u[t?"download":"upload"]=!0,e(u)}}const be={http:null,xhr:"undefined"!=typeof XMLHttpRequest&&function(e){return new Promise((function(t,n){let r=e.data;const o=le.from(e.headers).normalize();let s,i,{responseType:a,withXSRFToken:c}=e;function u(){e.cancelToken&&e.cancelToken.unsubscribe(s),e.signal&&e.signal.removeEventListener("abort",s)}if(F.isFormData(r))if(ee.hasStandardBrowserEnv||ee.hasStandardBrowserWebWorkerEnv)o.setContentType(!1);else if(!1!==(i=o.getContentType())){const[e,...t]=i?i.split(";").map((e=>e.trim())).filter(Boolean):[];o.setContentType([e||"multipart/form-data",...t].join("; "))}let l=new XMLHttpRequest;if(e.auth){const t=e.auth.username||"",n=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";o.set("Authorization","Basic "+btoa(t+":"+n))}const f=me(e.baseURL,e.url);function d(){if(!l)return;const r=le.from("getAllResponseHeaders"in l&&l.getAllResponseHeaders());!function(e,t,n){const r=n.config.validateStatus;n.status&&r&&!r(n.status)?t(new U("Request failed with status code "+n.status,[U.ERR_BAD_REQUEST,U.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n)):e(n)}((function(e){t(e),u()}),(function(e){n(e),u()}),{data:a&&"text"!==a&&"json"!==a?l.response:l.responseText,status:l.status,statusText:l.statusText,headers:r,config:e,request:l}),l=null}if(l.open(e.method.toUpperCase(),V(f,e.params,e.paramsSerializer),!0),l.timeout=e.timeout,"onloadend"in l?l.onloadend=d:l.onreadystatechange=function(){l&&4===l.readyState&&(0!==l.status||l.responseURL&&0===l.responseURL.indexOf("file:"))&&setTimeout(d)},l.onabort=function(){l&&(n(new U("Request aborted",U.ECONNABORTED,e,l)),l=null)},l.onerror=function(){n(new U("Network Error",U.ERR_NETWORK,e,l)),l=null},l.ontimeout=function(){let t=e.timeout?"timeout of "+e.timeout+"ms exceeded":"timeout exceeded";const r=e.transitional||G;e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),n(new U(t,r.clarifyTimeoutError?U.ETIMEDOUT:U.ECONNABORTED,e,l)),l=null},ee.hasStandardBrowserEnv&&(c&&F.isFunction(c)&&(c=c(e)),c||!1!==c&&ye(f))){const t=e.xsrfHeaderName&&e.xsrfCookieName&&he.read(e.xsrfCookieName);t&&o.set(e.xsrfHeaderName,t)}void 0===r&&o.setContentType(null),"setRequestHeader"in l&&F.forEach(o.toJSON(),(function(e,t){l.setRequestHeader(t,e)})),F.isUndefined(e.withCredentials)||(l.withCredentials=!!e.withCredentials),a&&"json"!==a&&(l.responseType=e.responseType),"function"==typeof e.onDownloadProgress&&l.addEventListener("progress",ge(e.onDownloadProgress,!0)),"function"==typeof e.onUploadProgress&&l.upload&&l.upload.addEventListener("progress",ge(e.onUploadProgress)),(e.cancelToken||e.signal)&&(s=t=>{l&&(n(!t||t.type?new pe(null,e,l):t),l.abort(),l=null)},e.cancelToken&&e.cancelToken.subscribe(s),e.signal&&(e.signal.aborted?s():e.signal.addEventListener("abort",s)));const p=function(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}(f);p&&-1===ee.protocols.indexOf(p)?n(new U("Unsupported protocol "+p+":",U.ERR_BAD_REQUEST,e)):l.send(r||null)}))}};F.forEach(be,((e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch(e){}Object.defineProperty(e,"adapterName",{value:t})}}));const Ee=e=>`- ${e}`,we=e=>F.isFunction(e)||null===e||!1===e,Oe=e=>{e=F.isArray(e)?e:[e];const{length:t}=e;let n,r;const o={};for(let s=0;s`adapter ${e} `+(!1===t?"is not supported by the environment":"is not available in the build")));throw new U("There is no suitable adapter to dispatch the request "+(t?e.length>1?"since :\n"+e.map(Ee).join("\n"):" "+Ee(e[0]):"as no adapter specified"),"ERR_NOT_SUPPORT")}return r};function Se(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new pe(null,e)}function Re(e){Se(e),e.headers=le.from(e.headers),e.data=fe.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1);return Oe(e.adapter||re.adapter)(e).then((function(t){return Se(e),t.data=fe.call(e,e.transformResponse,t),t.headers=le.from(t.headers),t}),(function(t){return de(t)||(Se(e),t&&t.response&&(t.response.data=fe.call(e,e.transformResponse,t.response),t.response.headers=le.from(t.response.headers))),Promise.reject(t)}))}const Ae=e=>e instanceof le?e.toJSON():e;function Te(e,t){t=t||{};const n={};function r(e,t,n){return F.isPlainObject(e)&&F.isPlainObject(t)?F.merge.call({caseless:n},e,t):F.isPlainObject(t)?F.merge({},t):F.isArray(t)?t.slice():t}function o(e,t,n){return F.isUndefined(t)?F.isUndefined(e)?void 0:r(void 0,e,n):r(e,t,n)}function s(e,t){if(!F.isUndefined(t))return r(void 0,t)}function i(e,t){return F.isUndefined(t)?F.isUndefined(e)?void 0:r(void 0,e):r(void 0,t)}function a(n,o,s){return s in t?r(n,o):s in e?r(void 0,n):void 0}const c={url:s,method:s,data:s,baseURL:i,transformRequest:i,transformResponse:i,paramsSerializer:i,timeout:i,timeoutMessage:i,withCredentials:i,withXSRFToken:i,adapter:i,responseType:i,xsrfCookieName:i,xsrfHeaderName:i,onUploadProgress:i,onDownloadProgress:i,decompress:i,maxContentLength:i,maxBodyLength:i,beforeRedirect:i,transport:i,httpAgent:i,httpsAgent:i,cancelToken:i,socketPath:i,responseEncoding:i,validateStatus:a,headers:(e,t)=>o(Ae(e),Ae(t),!0)};return F.forEach(Object.keys(Object.assign({},e,t)),(function(r){const s=c[r]||o,i=s(e[r],t[r],r);F.isUndefined(i)&&s!==a||(n[r]=i)})),n}const je={};["object","boolean","number","function","string","symbol"].forEach(((e,t)=>{je[e]=function(n){return typeof n===e||"a"+(t<1?"n ":" ")+e}}));const Ce={};je.transitional=function(e,t,n){function r(e,t){return"[Axios v1.6.7] Transitional option '"+e+"'"+t+(n?". "+n:"")}return(n,o,s)=>{if(!1===e)throw new U(r(o," has been removed"+(t?" in "+t:"")),U.ERR_DEPRECATED);return t&&!Ce[o]&&(Ce[o]=!0,console.warn(r(o," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(n,o,s)}};const Ne={assertOptions:function(e,t,n){if("object"!=typeof e)throw new U("options must be an object",U.ERR_BAD_OPTION_VALUE);const r=Object.keys(e);let o=r.length;for(;o-- >0;){const s=r[o],i=t[s];if(i){const t=e[s],n=void 0===t||i(t,s,e);if(!0!==n)throw new U("option "+s+" must be "+n,U.ERR_BAD_OPTION_VALUE)}else if(!0!==n)throw new U("Unknown option "+s,U.ERR_BAD_OPTION)}},validators:je},ve=Ne.validators;class xe{constructor(e){this.defaults=e,this.interceptors={request:new K,response:new K}}async request(e,t){try{return await this._request(e,t)}catch(e){if(e instanceof Error){let t;Error.captureStackTrace?Error.captureStackTrace(t={}):t=new Error;const n=t.stack?t.stack.replace(/^.+\n/,""):"";e.stack?n&&!String(e.stack).endsWith(n.replace(/^.+\n.+\n/,""))&&(e.stack+="\n"+n):e.stack=n}throw e}}_request(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{},t=Te(this.defaults,t);const{transitional:n,paramsSerializer:r,headers:o}=t;void 0!==n&&Ne.assertOptions(n,{silentJSONParsing:ve.transitional(ve.boolean),forcedJSONParsing:ve.transitional(ve.boolean),clarifyTimeoutError:ve.transitional(ve.boolean)},!1),null!=r&&(F.isFunction(r)?t.paramsSerializer={serialize:r}:Ne.assertOptions(r,{encode:ve.function,serialize:ve.function},!0)),t.method=(t.method||this.defaults.method||"get").toLowerCase();let s=o&&F.merge(o.common,o[t.method]);o&&F.forEach(["delete","get","head","post","put","patch","common"],(e=>{delete o[e]})),t.headers=le.concat(s,o);const i=[];let a=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(a=a&&e.synchronous,i.unshift(e.fulfilled,e.rejected))}));const c=[];let u;this.interceptors.response.forEach((function(e){c.push(e.fulfilled,e.rejected)}));let l,f=0;if(!a){const e=[Re.bind(this),void 0];for(e.unshift.apply(e,i),e.push.apply(e,c),l=e.length,u=Promise.resolve(t);f{if(!n._listeners)return;let t=n._listeners.length;for(;t-- >0;)n._listeners[t](e);n._listeners=null})),this.promise.then=e=>{let t;const r=new Promise((e=>{n.subscribe(e),t=e})).then(e);return r.cancel=function(){n.unsubscribe(t)},r},e((function(e,r,o){n.reason||(n.reason=new pe(e,r,o),t(n.reason))}))}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}static source(){let e;return{token:new _e((function(t){e=t})),cancel:e}}}const Fe=_e;const Ue={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(Ue).forEach((([e,t])=>{Ue[t]=e}));const Be=Ue;const De=function t(n){const r=new Pe(n),o=e(Pe.prototype.request,r);return F.extend(o,Pe.prototype,r,{allOwnKeys:!0}),F.extend(o,r,null,{allOwnKeys:!0}),o.create=function(e){return t(Te(n,e))},o}(re);De.Axios=Pe,De.CanceledError=pe,De.CancelToken=Fe,De.isCancel=de,De.VERSION="1.6.7",De.toFormData=z,De.AxiosError=U,De.Cancel=De.CanceledError,De.all=function(e){return Promise.all(e)},De.spread=function(e){return function(t){return e.apply(null,t)}},De.isAxiosError=function(e){return F.isObject(e)&&!0===e.isAxiosError},De.mergeConfig=Te,De.AxiosHeaders=le,De.formToJSON=e=>te(F.isHTMLForm(e)?new FormData(e):e),De.getAdapter=Oe,De.HttpStatusCode=Be,De.default=De;const Le=De,{Axios:ke,AxiosError:qe,CanceledError:Ie,isCancel:ze,CancelToken:Me,VERSION:He,all:Je,Cancel:We,isAxiosError:Ve,spread:Ke,toFormData:Ge,AxiosHeaders:$e,HttpStatusCode:Xe,formToJSON:Qe,getAdapter:Ze,mergeConfig:Ye}=Le;export{ke as Axios,qe as AxiosError,$e as AxiosHeaders,We as Cancel,Me as CancelToken,Ie as CanceledError,Xe as HttpStatusCode,He as VERSION,Je as all,Le as default,Qe as formToJSON,Ze as getAdapter,Ve as isAxiosError,ze as isCancel,Ye as mergeConfig,Ke as spread,Ge as toFormData}; -//# sourceMappingURL=axios.min.js.map diff --git a/node_modules/axios/dist/esm/axios.min.js.map b/node_modules/axios/dist/esm/axios.min.js.map deleted file mode 100644 index 6a87c76..0000000 --- a/node_modules/axios/dist/esm/axios.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"axios.min.js","sources":["../../lib/helpers/bind.js","../../lib/utils.js","../../lib/core/AxiosError.js","../../lib/helpers/toFormData.js","../../lib/helpers/AxiosURLSearchParams.js","../../lib/helpers/buildURL.js","../../lib/core/InterceptorManager.js","../../lib/defaults/transitional.js","../../lib/platform/browser/index.js","../../lib/platform/browser/classes/URLSearchParams.js","../../lib/platform/browser/classes/FormData.js","../../lib/platform/browser/classes/Blob.js","../../lib/platform/common/utils.js","../../lib/platform/index.js","../../lib/helpers/formDataToJSON.js","../../lib/defaults/index.js","../../lib/helpers/toURLEncodedForm.js","../../lib/helpers/parseHeaders.js","../../lib/core/AxiosHeaders.js","../../lib/core/transformData.js","../../lib/cancel/isCancel.js","../../lib/cancel/CanceledError.js","../../lib/helpers/cookies.js","../../lib/core/buildFullPath.js","../../lib/helpers/isAbsoluteURL.js","../../lib/helpers/combineURLs.js","../../lib/helpers/isURLSameOrigin.js","../../lib/adapters/xhr.js","../../lib/helpers/speedometer.js","../../lib/adapters/adapters.js","../../lib/helpers/null.js","../../lib/core/settle.js","../../lib/helpers/parseProtocol.js","../../lib/core/dispatchRequest.js","../../lib/core/mergeConfig.js","../../lib/env/data.js","../../lib/helpers/validator.js","../../lib/core/Axios.js","../../lib/cancel/CancelToken.js","../../lib/helpers/HttpStatusCode.js","../../lib/axios.js","../../lib/helpers/spread.js","../../lib/helpers/isAxiosError.js","../../index.js"],"sourcesContent":["'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n value = +value;\n return Number.isFinite(value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0]\n }\n\n return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","'use strict';\n\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/**\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/**\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/**\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) 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/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\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/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} 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\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\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\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\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} 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\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 } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\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 + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = (\n (product) => {\n return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0\n })(typeof navigator !== 'undefined' && navigator.product);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n const msie = /(msie|trident)/i.test(navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let originURL;\n\n /**\n * Parse a URL to discover its components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n let href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })();\n","'use strict';\n\nimport utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport cookies from './../helpers/cookies.js';\nimport buildURL from './../helpers/buildURL.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport isURLSameOrigin from './../helpers/isURLSameOrigin.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport speedometer from '../helpers/speedometer.js';\n\nfunction progressEventReducer(listener, isDownloadStream) {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e\n };\n\n data[isDownloadStream ? 'download' : 'upload'] = true;\n\n listener(data);\n };\n}\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n let requestData = config.data;\n const requestHeaders = AxiosHeaders.from(config.headers).normalize();\n let {responseType, withXSRFToken} = config;\n let onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n let contentType;\n\n if (utils.isFormData(requestData)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n requestHeaders.setContentType(false); // Let the browser set it\n } else if ((contentType = requestHeaders.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n requestHeaders.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n let request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n const username = config.auth.username || '';\n const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password));\n }\n\n const fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if(platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(config));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(fullPath))) {\n // Add xsrf header\n const xsrfValue = config.xsrfHeaderName && config.xsrfCookieName && cookies.read(config.xsrfCookieName);\n\n if (xsrfValue) {\n requestHeaders.set(config.xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', progressEventReducer(config.onDownloadProgress, true));\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress));\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(fullPath);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? thing.toJSON() : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","export const VERSION = \"1.6.7\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy;\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","import axios from './lib/axios.js';\n\n// This module is intended to unwrap Axios default export as named.\n// Keep top-level export same with static properties\n// so that it can keep same with es module or cjs\nconst {\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n} = axios;\n\nexport {\n axios as default,\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n}\n"],"names":["bind","fn","thisArg","apply","arguments","toString","Object","prototype","getPrototypeOf","kindOf","cache","create","thing","str","call","slice","toLowerCase","kindOfTest","type","typeOfTest","isArray","Array","isUndefined","isArrayBuffer","isString","isFunction","isNumber","isObject","isPlainObject","val","Symbol","toStringTag","iterator","isDate","isFile","isBlob","isFileList","isURLSearchParams","forEach","obj","allOwnKeys","i","l","length","keys","getOwnPropertyNames","len","key","findKey","_key","_global","globalThis","self","window","global","isContextDefined","context","isTypedArray","TypedArray","Uint8Array","isHTMLForm","hasOwnProperty","prop","isRegExp","reduceDescriptors","reducer","descriptors","getOwnPropertyDescriptors","reducedDescriptors","descriptor","name","ret","defineProperties","ALPHA","ALPHABET","DIGIT","ALPHA_DIGIT","toUpperCase","isAsyncFn","utils$1","isBuffer","constructor","isFormData","kind","FormData","append","isArrayBufferView","result","ArrayBuffer","isView","buffer","isBoolean","isStream","pipe","merge","caseless","this","assignValue","targetKey","extend","a","b","trim","replace","stripBOM","content","charCodeAt","inherits","superConstructor","props","defineProperty","value","assign","toFlatObject","sourceObj","destObj","filter","propFilter","merged","endsWith","searchString","position","String","undefined","lastIndex","indexOf","toArray","arr","forEachEntry","next","done","pair","matchAll","regExp","matches","exec","push","hasOwnProp","freezeMethods","enumerable","writable","set","Error","toObjectSet","arrayOrString","delimiter","define","split","toCamelCase","m","p1","p2","noop","toFiniteNumber","defaultValue","Number","isFinite","generateString","size","alphabet","Math","random","isSpecCompliantForm","toJSONObject","stack","visit","source","target","reducedValue","isThenable","then","catch","AxiosError","message","code","config","request","response","captureStackTrace","utils","toJSON","description","number","fileName","lineNumber","columnNumber","status","from","error","customProps","axiosError","cause","isVisitable","removeBrackets","renderKey","path","dots","concat","map","token","join","predicates","test","toFormData","formData","options","TypeError","metaTokens","indexes","option","visitor","defaultVisitor","useBlob","Blob","convertValue","toISOString","Buffer","JSON","stringify","some","isFlatArray","el","index","exposedHelpers","build","pop","encode","charMap","encodeURIComponent","match","AxiosURLSearchParams","params","_pairs","buildURL","url","_encode","serializeFn","serialize","serializedParams","hashmarkIndex","encoder","InterceptorManager$1","handlers","use","fulfilled","rejected","synchronous","runWhen","eject","id","clear","h","transitionalDefaults","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","platform$1","isBrowser","classes","URLSearchParams","protocols","hasBrowserEnv","document","hasStandardBrowserEnv","product","navigator","hasStandardBrowserWebWorkerEnv","WorkerGlobalScope","importScripts","platform","formDataToJSON","buildPath","isNumericKey","isLast","arrayToObject","entries","parsePropPath","defaults","transitional","adapter","transformRequest","data","headers","contentType","getContentType","hasJSONContentType","isObjectPayload","setContentType","helpers","isNode","toURLEncodedForm","formSerializer","_FormData","env","rawValue","parser","parse","e","stringifySafely","transformResponse","JSONRequested","responseType","strictJSONParsing","ERR_BAD_RESPONSE","timeout","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","common","Accept","method","defaults$1","ignoreDuplicateOf","$internals","normalizeHeader","header","normalizeValue","matchHeaderValue","isHeaderNameFilter","AxiosHeaders","valueOrRewrite","rewrite","setHeader","_value","_header","_rewrite","lHeader","setHeaders","rawHeaders","parsed","line","substring","parseHeaders","get","tokens","tokensRE","parseTokens","has","matcher","delete","deleted","deleteHeader","normalize","format","normalized","w","char","formatHeader","targets","asStrings","static","first","computed","accessors","defineAccessor","accessorName","methodName","arg1","arg2","arg3","configurable","buildAccessors","accessor","mapped","headerValue","AxiosHeaders$2","transformData","fns","isCancel","__CANCEL__","CanceledError","ERR_CANCELED","cookies","write","expires","domain","secure","cookie","Date","toGMTString","read","RegExp","decodeURIComponent","remove","now","buildFullPath","baseURL","requestedURL","relativeURL","combineURLs","isURLSameOrigin","msie","userAgent","urlParsingNode","createElement","originURL","resolveURL","href","setAttribute","protocol","host","search","hash","hostname","port","pathname","charAt","location","requestURL","progressEventReducer","listener","isDownloadStream","bytesNotified","_speedometer","samplesCount","min","bytes","timestamps","firstSampleTS","head","tail","chunkLength","startedAt","bytesCount","passed","round","speedometer","loaded","total","lengthComputable","progressBytes","rate","progress","estimated","event","knownAdapters","http","xhr","XMLHttpRequest","Promise","resolve","reject","requestData","requestHeaders","onCanceled","withXSRFToken","cancelToken","unsubscribe","signal","removeEventListener","Boolean","auth","username","password","unescape","btoa","fullPath","onloadend","responseHeaders","getAllResponseHeaders","ERR_BAD_REQUEST","floor","settle","err","responseText","statusText","open","paramsSerializer","onreadystatechange","readyState","responseURL","setTimeout","onabort","ECONNABORTED","onerror","ERR_NETWORK","ontimeout","timeoutErrorMessage","ETIMEDOUT","xsrfValue","setRequestHeader","withCredentials","onDownloadProgress","addEventListener","onUploadProgress","upload","cancel","abort","subscribe","aborted","parseProtocol","send","renderReason","reason","isResolvedHandle","adapters","nameOrAdapter","rejectedReasons","reasons","state","throwIfCancellationRequested","throwIfRequested","dispatchRequest","headersToObject","mergeConfig","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","timeoutMessage","decompress","beforeRedirect","transport","httpAgent","httpsAgent","socketPath","responseEncoding","configValue","validators","deprecatedWarnings","validator","version","formatMessage","opt","desc","opts","ERR_DEPRECATED","console","warn","assertOptions","schema","allowUnknown","ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","Axios","instanceConfig","interceptors","InterceptorManager","async","configOrUrl","_request","dummy","boolean","function","contextHeaders","requestInterceptorChain","synchronousRequestInterceptors","interceptor","unshift","responseInterceptorChain","promise","chain","newConfig","onFulfilled","onRejected","getUri","generateHTTPMethod","isForm","Axios$2","CancelToken","executor","resolvePromise","_listeners","onfulfilled","_resolve","splice","c","CancelToken$2","HttpStatusCode","Continue","SwitchingProtocols","Processing","EarlyHints","Ok","Created","Accepted","NonAuthoritativeInformation","NoContent","ResetContent","PartialContent","MultiStatus","AlreadyReported","ImUsed","MultipleChoices","MovedPermanently","Found","SeeOther","NotModified","UseProxy","Unused","TemporaryRedirect","PermanentRedirect","BadRequest","Unauthorized","PaymentRequired","Forbidden","NotFound","MethodNotAllowed","NotAcceptable","ProxyAuthenticationRequired","RequestTimeout","Conflict","Gone","LengthRequired","PreconditionFailed","PayloadTooLarge","UriTooLong","UnsupportedMediaType","RangeNotSatisfiable","ExpectationFailed","ImATeapot","MisdirectedRequest","UnprocessableEntity","Locked","FailedDependency","TooEarly","UpgradeRequired","PreconditionRequired","TooManyRequests","RequestHeaderFieldsTooLarge","UnavailableForLegalReasons","InternalServerError","NotImplemented","BadGateway","ServiceUnavailable","GatewayTimeout","HttpVersionNotSupported","VariantAlsoNegotiates","InsufficientStorage","LoopDetected","NotExtended","NetworkAuthenticationRequired","HttpStatusCode$2","axios","createInstance","defaultConfig","instance","VERSION","Cancel","all","promises","spread","callback","isAxiosError","payload","formToJSON","getAdapter","default","axios$1"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/axios/dist/node/axios.cjs b/node_modules/axios/dist/node/axios.cjs deleted file mode 100644 index 9099d87..0000000 --- a/node_modules/axios/dist/node/axios.cjs +++ /dev/null @@ -1,4355 +0,0 @@ -// Axios v1.6.7 Copyright (c) 2024 Matt Zabriskie and contributors -'use strict'; - -const FormData$1 = require('form-data'); -const url = require('url'); -const proxyFromEnv = require('proxy-from-env'); -const http = require('http'); -const https = require('https'); -const util = require('util'); -const followRedirects = require('follow-redirects'); -const zlib = require('zlib'); -const stream = require('stream'); -const EventEmitter = require('events'); - -function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } - -const FormData__default = /*#__PURE__*/_interopDefaultLegacy(FormData$1); -const url__default = /*#__PURE__*/_interopDefaultLegacy(url); -const http__default = /*#__PURE__*/_interopDefaultLegacy(http); -const https__default = /*#__PURE__*/_interopDefaultLegacy(https); -const util__default = /*#__PURE__*/_interopDefaultLegacy(util); -const followRedirects__default = /*#__PURE__*/_interopDefaultLegacy(followRedirects); -const zlib__default = /*#__PURE__*/_interopDefaultLegacy(zlib); -const stream__default = /*#__PURE__*/_interopDefaultLegacy(stream); -const EventEmitter__default = /*#__PURE__*/_interopDefaultLegacy(EventEmitter); - -function bind(fn, thisArg) { - return function wrap() { - return fn.apply(thisArg, arguments); - }; -} - -// utils is a library of generic helper functions non-specific to axios - -const {toString} = Object.prototype; -const {getPrototypeOf} = Object; - -const kindOf = (cache => thing => { - const str = toString.call(thing); - return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase()); -})(Object.create(null)); - -const kindOfTest = (type) => { - type = type.toLowerCase(); - return (thing) => kindOf(thing) === type -}; - -const typeOfTest = type => thing => typeof thing === type; - -/** - * Determine if a value is an Array - * - * @param {Object} val The value to test - * - * @returns {boolean} True if value is an Array, otherwise false - */ -const {isArray} = Array; - -/** - * Determine if a value is undefined - * - * @param {*} val The value to test - * - * @returns {boolean} True if the value is undefined, otherwise false - */ -const isUndefined = typeOfTest('undefined'); - -/** - * Determine if a value is a Buffer - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a Buffer, otherwise false - */ -function isBuffer(val) { - return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor) - && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val); -} - -/** - * Determine if a value is an ArrayBuffer - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is an ArrayBuffer, otherwise false - */ -const isArrayBuffer = kindOfTest('ArrayBuffer'); - - -/** - * Determine if a value is a view on an ArrayBuffer - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false - */ -function isArrayBufferView(val) { - let result; - if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) { - result = ArrayBuffer.isView(val); - } else { - result = (val) && (val.buffer) && (isArrayBuffer(val.buffer)); - } - return result; -} - -/** - * Determine if a value is a String - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a String, otherwise false - */ -const isString = typeOfTest('string'); - -/** - * Determine if a value is a Function - * - * @param {*} val The value to test - * @returns {boolean} True if value is a Function, otherwise false - */ -const isFunction = typeOfTest('function'); - -/** - * Determine if a value is a Number - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a Number, otherwise false - */ -const isNumber = typeOfTest('number'); - -/** - * Determine if a value is an Object - * - * @param {*} thing The value to test - * - * @returns {boolean} True if value is an Object, otherwise false - */ -const isObject = (thing) => thing !== null && typeof thing === 'object'; - -/** - * Determine if a value is a Boolean - * - * @param {*} thing The value to test - * @returns {boolean} True if value is a Boolean, otherwise false - */ -const isBoolean = thing => thing === true || thing === false; - -/** - * Determine if a value is a plain Object - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a plain Object, otherwise false - */ -const isPlainObject = (val) => { - if (kindOf(val) !== 'object') { - return false; - } - - const prototype = getPrototypeOf(val); - return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val); -}; - -/** - * Determine if a value is a Date - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a Date, otherwise false - */ -const isDate = kindOfTest('Date'); - -/** - * Determine if a value is a File - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a File, otherwise false - */ -const isFile = kindOfTest('File'); - -/** - * Determine if a value is a Blob - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a Blob, otherwise false - */ -const isBlob = kindOfTest('Blob'); - -/** - * Determine if a value is a FileList - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a File, otherwise false - */ -const isFileList = kindOfTest('FileList'); - -/** - * Determine if a value is a Stream - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a Stream, otherwise false - */ -const isStream = (val) => isObject(val) && isFunction(val.pipe); - -/** - * Determine if a value is a FormData - * - * @param {*} thing The value to test - * - * @returns {boolean} True if value is an FormData, otherwise false - */ -const isFormData = (thing) => { - let kind; - return thing && ( - (typeof FormData === 'function' && thing instanceof FormData) || ( - isFunction(thing.append) && ( - (kind = kindOf(thing)) === 'formdata' || - // detect form-data instance - (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]') - ) - ) - ) -}; - -/** - * Determine if a value is a URLSearchParams object - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a URLSearchParams object, otherwise false - */ -const isURLSearchParams = kindOfTest('URLSearchParams'); - -/** - * Trim excess whitespace off the beginning and end of a string - * - * @param {String} str The String to trim - * - * @returns {String} The String freed of excess whitespace - */ -const trim = (str) => str.trim ? - str.trim() : str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''); - -/** - * Iterate over an Array or an Object invoking a function for each item. - * - * If `obj` is an Array callback will be called passing - * the value, index, and complete array for each item. - * - * If 'obj' is an Object callback will be called passing - * the value, key, and complete object for each property. - * - * @param {Object|Array} obj The object to iterate - * @param {Function} fn The callback to invoke for each item - * - * @param {Boolean} [allOwnKeys = false] - * @returns {any} - */ -function forEach(obj, fn, {allOwnKeys = false} = {}) { - // Don't bother if no value provided - if (obj === null || typeof obj === 'undefined') { - return; - } - - let i; - let l; - - // Force an array if not already something iterable - if (typeof obj !== 'object') { - /*eslint no-param-reassign:0*/ - obj = [obj]; - } - - if (isArray(obj)) { - // Iterate over array values - for (i = 0, l = obj.length; i < l; i++) { - fn.call(null, obj[i], i, obj); - } - } else { - // Iterate over object keys - const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj); - const len = keys.length; - let key; - - for (i = 0; i < len; i++) { - key = keys[i]; - fn.call(null, obj[key], key, obj); - } - } -} - -function findKey(obj, key) { - key = key.toLowerCase(); - const keys = Object.keys(obj); - let i = keys.length; - let _key; - while (i-- > 0) { - _key = keys[i]; - if (key === _key.toLowerCase()) { - return _key; - } - } - return null; -} - -const _global = (() => { - /*eslint no-undef:0*/ - if (typeof globalThis !== "undefined") return globalThis; - return typeof self !== "undefined" ? self : (typeof window !== 'undefined' ? window : global) -})(); - -const isContextDefined = (context) => !isUndefined(context) && context !== _global; - -/** - * Accepts varargs expecting each argument to be an object, then - * immutably merges the properties of each object and returns result. - * - * When multiple objects contain the same key the later object in - * the arguments list will take precedence. - * - * Example: - * - * ```js - * var result = merge({foo: 123}, {foo: 456}); - * console.log(result.foo); // outputs 456 - * ``` - * - * @param {Object} obj1 Object to merge - * - * @returns {Object} Result of all merge properties - */ -function merge(/* obj1, obj2, obj3, ... */) { - const {caseless} = isContextDefined(this) && this || {}; - const result = {}; - const assignValue = (val, key) => { - const targetKey = caseless && findKey(result, key) || key; - if (isPlainObject(result[targetKey]) && isPlainObject(val)) { - result[targetKey] = merge(result[targetKey], val); - } else if (isPlainObject(val)) { - result[targetKey] = merge({}, val); - } else if (isArray(val)) { - result[targetKey] = val.slice(); - } else { - result[targetKey] = val; - } - }; - - for (let i = 0, l = arguments.length; i < l; i++) { - arguments[i] && forEach(arguments[i], assignValue); - } - return result; -} - -/** - * Extends object a by mutably adding to it the properties of object b. - * - * @param {Object} a The object to be extended - * @param {Object} b The object to copy properties from - * @param {Object} thisArg The object to bind function to - * - * @param {Boolean} [allOwnKeys] - * @returns {Object} The resulting value of object a - */ -const extend = (a, b, thisArg, {allOwnKeys}= {}) => { - forEach(b, (val, key) => { - if (thisArg && isFunction(val)) { - a[key] = bind(val, thisArg); - } else { - a[key] = val; - } - }, {allOwnKeys}); - return a; -}; - -/** - * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM) - * - * @param {string} content with BOM - * - * @returns {string} content value without BOM - */ -const stripBOM = (content) => { - if (content.charCodeAt(0) === 0xFEFF) { - content = content.slice(1); - } - return content; -}; - -/** - * Inherit the prototype methods from one constructor into another - * @param {function} constructor - * @param {function} superConstructor - * @param {object} [props] - * @param {object} [descriptors] - * - * @returns {void} - */ -const inherits = (constructor, superConstructor, props, descriptors) => { - constructor.prototype = Object.create(superConstructor.prototype, descriptors); - constructor.prototype.constructor = constructor; - Object.defineProperty(constructor, 'super', { - value: superConstructor.prototype - }); - props && Object.assign(constructor.prototype, props); -}; - -/** - * Resolve object with deep prototype chain to a flat object - * @param {Object} sourceObj source object - * @param {Object} [destObj] - * @param {Function|Boolean} [filter] - * @param {Function} [propFilter] - * - * @returns {Object} - */ -const toFlatObject = (sourceObj, destObj, filter, propFilter) => { - let props; - let i; - let prop; - const merged = {}; - - destObj = destObj || {}; - // eslint-disable-next-line no-eq-null,eqeqeq - if (sourceObj == null) return destObj; - - do { - props = Object.getOwnPropertyNames(sourceObj); - i = props.length; - while (i-- > 0) { - prop = props[i]; - if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) { - destObj[prop] = sourceObj[prop]; - merged[prop] = true; - } - } - sourceObj = filter !== false && getPrototypeOf(sourceObj); - } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype); - - return destObj; -}; - -/** - * Determines whether a string ends with the characters of a specified string - * - * @param {String} str - * @param {String} searchString - * @param {Number} [position= 0] - * - * @returns {boolean} - */ -const endsWith = (str, searchString, position) => { - str = String(str); - if (position === undefined || position > str.length) { - position = str.length; - } - position -= searchString.length; - const lastIndex = str.indexOf(searchString, position); - return lastIndex !== -1 && lastIndex === position; -}; - - -/** - * Returns new array from array like object or null if failed - * - * @param {*} [thing] - * - * @returns {?Array} - */ -const toArray = (thing) => { - if (!thing) return null; - if (isArray(thing)) return thing; - let i = thing.length; - if (!isNumber(i)) return null; - const arr = new Array(i); - while (i-- > 0) { - arr[i] = thing[i]; - } - return arr; -}; - -/** - * Checking if the Uint8Array exists and if it does, it returns a function that checks if the - * thing passed in is an instance of Uint8Array - * - * @param {TypedArray} - * - * @returns {Array} - */ -// eslint-disable-next-line func-names -const isTypedArray = (TypedArray => { - // eslint-disable-next-line func-names - return thing => { - return TypedArray && thing instanceof TypedArray; - }; -})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array)); - -/** - * For each entry in the object, call the function with the key and value. - * - * @param {Object} obj - The object to iterate over. - * @param {Function} fn - The function to call for each entry. - * - * @returns {void} - */ -const forEachEntry = (obj, fn) => { - const generator = obj && obj[Symbol.iterator]; - - const iterator = generator.call(obj); - - let result; - - while ((result = iterator.next()) && !result.done) { - const pair = result.value; - fn.call(obj, pair[0], pair[1]); - } -}; - -/** - * It takes a regular expression and a string, and returns an array of all the matches - * - * @param {string} regExp - The regular expression to match against. - * @param {string} str - The string to search. - * - * @returns {Array} - */ -const matchAll = (regExp, str) => { - let matches; - const arr = []; - - while ((matches = regExp.exec(str)) !== null) { - arr.push(matches); - } - - return arr; -}; - -/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */ -const isHTMLForm = kindOfTest('HTMLFormElement'); - -const toCamelCase = str => { - return str.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g, - function replacer(m, p1, p2) { - return p1.toUpperCase() + p2; - } - ); -}; - -/* Creating a function that will check if an object has a property. */ -const hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype); - -/** - * Determine if a value is a RegExp object - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a RegExp object, otherwise false - */ -const isRegExp = kindOfTest('RegExp'); - -const reduceDescriptors = (obj, reducer) => { - const descriptors = Object.getOwnPropertyDescriptors(obj); - const reducedDescriptors = {}; - - forEach(descriptors, (descriptor, name) => { - let ret; - if ((ret = reducer(descriptor, name, obj)) !== false) { - reducedDescriptors[name] = ret || descriptor; - } - }); - - Object.defineProperties(obj, reducedDescriptors); -}; - -/** - * Makes all methods read-only - * @param {Object} obj - */ - -const freezeMethods = (obj) => { - reduceDescriptors(obj, (descriptor, name) => { - // skip restricted props in strict mode - if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) { - return false; - } - - const value = obj[name]; - - if (!isFunction(value)) return; - - descriptor.enumerable = false; - - if ('writable' in descriptor) { - descriptor.writable = false; - return; - } - - if (!descriptor.set) { - descriptor.set = () => { - throw Error('Can not rewrite read-only method \'' + name + '\''); - }; - } - }); -}; - -const toObjectSet = (arrayOrString, delimiter) => { - const obj = {}; - - const define = (arr) => { - arr.forEach(value => { - obj[value] = true; - }); - }; - - isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter)); - - return obj; -}; - -const noop = () => {}; - -const toFiniteNumber = (value, defaultValue) => { - value = +value; - return Number.isFinite(value) ? value : defaultValue; -}; - -const ALPHA = 'abcdefghijklmnopqrstuvwxyz'; - -const DIGIT = '0123456789'; - -const ALPHABET = { - DIGIT, - ALPHA, - ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT -}; - -const generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => { - let str = ''; - const {length} = alphabet; - while (size--) { - str += alphabet[Math.random() * length|0]; - } - - return str; -}; - -/** - * If the thing is a FormData object, return true, otherwise return false. - * - * @param {unknown} thing - The thing to check. - * - * @returns {boolean} - */ -function isSpecCompliantForm(thing) { - return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]); -} - -const toJSONObject = (obj) => { - const stack = new Array(10); - - const visit = (source, i) => { - - if (isObject(source)) { - if (stack.indexOf(source) >= 0) { - return; - } - - if(!('toJSON' in source)) { - stack[i] = source; - const target = isArray(source) ? [] : {}; - - forEach(source, (value, key) => { - const reducedValue = visit(value, i + 1); - !isUndefined(reducedValue) && (target[key] = reducedValue); - }); - - stack[i] = undefined; - - return target; - } - } - - return source; - }; - - return visit(obj, 0); -}; - -const isAsyncFn = kindOfTest('AsyncFunction'); - -const isThenable = (thing) => - thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch); - -const utils$1 = { - isArray, - isArrayBuffer, - isBuffer, - isFormData, - isArrayBufferView, - isString, - isNumber, - isBoolean, - isObject, - isPlainObject, - isUndefined, - isDate, - isFile, - isBlob, - isRegExp, - isFunction, - isStream, - isURLSearchParams, - isTypedArray, - isFileList, - forEach, - merge, - extend, - trim, - stripBOM, - inherits, - toFlatObject, - kindOf, - kindOfTest, - endsWith, - toArray, - forEachEntry, - matchAll, - isHTMLForm, - hasOwnProperty, - hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection - reduceDescriptors, - freezeMethods, - toObjectSet, - toCamelCase, - noop, - toFiniteNumber, - findKey, - global: _global, - isContextDefined, - ALPHABET, - generateString, - isSpecCompliantForm, - toJSONObject, - isAsyncFn, - isThenable -}; - -/** - * Create an Error with the specified message, config, error code, request and response. - * - * @param {string} message The error message. - * @param {string} [code] The error code (for example, 'ECONNABORTED'). - * @param {Object} [config] The config. - * @param {Object} [request] The request. - * @param {Object} [response] The response. - * - * @returns {Error} The created error. - */ -function AxiosError(message, code, config, request, response) { - Error.call(this); - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } else { - this.stack = (new Error()).stack; - } - - this.message = message; - this.name = 'AxiosError'; - code && (this.code = code); - config && (this.config = config); - request && (this.request = request); - response && (this.response = response); -} - -utils$1.inherits(AxiosError, Error, { - toJSON: function toJSON() { - return { - // Standard - message: this.message, - name: this.name, - // Microsoft - description: this.description, - number: this.number, - // Mozilla - fileName: this.fileName, - lineNumber: this.lineNumber, - columnNumber: this.columnNumber, - stack: this.stack, - // Axios - config: utils$1.toJSONObject(this.config), - code: this.code, - status: this.response && this.response.status ? this.response.status : null - }; - } -}); - -const prototype$1 = AxiosError.prototype; -const descriptors = {}; - -[ - 'ERR_BAD_OPTION_VALUE', - 'ERR_BAD_OPTION', - 'ECONNABORTED', - 'ETIMEDOUT', - 'ERR_NETWORK', - 'ERR_FR_TOO_MANY_REDIRECTS', - 'ERR_DEPRECATED', - 'ERR_BAD_RESPONSE', - 'ERR_BAD_REQUEST', - 'ERR_CANCELED', - 'ERR_NOT_SUPPORT', - 'ERR_INVALID_URL' -// eslint-disable-next-line func-names -].forEach(code => { - descriptors[code] = {value: code}; -}); - -Object.defineProperties(AxiosError, descriptors); -Object.defineProperty(prototype$1, 'isAxiosError', {value: true}); - -// eslint-disable-next-line func-names -AxiosError.from = (error, code, config, request, response, customProps) => { - const axiosError = Object.create(prototype$1); - - utils$1.toFlatObject(error, axiosError, function filter(obj) { - return obj !== Error.prototype; - }, prop => { - return prop !== 'isAxiosError'; - }); - - AxiosError.call(axiosError, error.message, code, config, request, response); - - axiosError.cause = error; - - axiosError.name = error.name; - - customProps && Object.assign(axiosError, customProps); - - return axiosError; -}; - -/** - * Determines if the given thing is a array or js object. - * - * @param {string} thing - The object or array to be visited. - * - * @returns {boolean} - */ -function isVisitable(thing) { - return utils$1.isPlainObject(thing) || utils$1.isArray(thing); -} - -/** - * It removes the brackets from the end of a string - * - * @param {string} key - The key of the parameter. - * - * @returns {string} the key without the brackets. - */ -function removeBrackets(key) { - return utils$1.endsWith(key, '[]') ? key.slice(0, -2) : key; -} - -/** - * It takes a path, a key, and a boolean, and returns a string - * - * @param {string} path - The path to the current key. - * @param {string} key - The key of the current object being iterated over. - * @param {string} dots - If true, the key will be rendered with dots instead of brackets. - * - * @returns {string} The path to the current key. - */ -function renderKey(path, key, dots) { - if (!path) return key; - return path.concat(key).map(function each(token, i) { - // eslint-disable-next-line no-param-reassign - token = removeBrackets(token); - return !dots && i ? '[' + token + ']' : token; - }).join(dots ? '.' : ''); -} - -/** - * If the array is an array and none of its elements are visitable, then it's a flat array. - * - * @param {Array} arr - The array to check - * - * @returns {boolean} - */ -function isFlatArray(arr) { - return utils$1.isArray(arr) && !arr.some(isVisitable); -} - -const predicates = utils$1.toFlatObject(utils$1, {}, null, function filter(prop) { - return /^is[A-Z]/.test(prop); -}); - -/** - * Convert a data object to FormData - * - * @param {Object} obj - * @param {?Object} [formData] - * @param {?Object} [options] - * @param {Function} [options.visitor] - * @param {Boolean} [options.metaTokens = true] - * @param {Boolean} [options.dots = false] - * @param {?Boolean} [options.indexes = false] - * - * @returns {Object} - **/ - -/** - * It converts an object into a FormData object - * - * @param {Object} obj - The object to convert to form data. - * @param {string} formData - The FormData object to append to. - * @param {Object} options - * - * @returns - */ -function toFormData(obj, formData, options) { - if (!utils$1.isObject(obj)) { - throw new TypeError('target must be an object'); - } - - // eslint-disable-next-line no-param-reassign - formData = formData || new (FormData__default["default"] || FormData)(); - - // eslint-disable-next-line no-param-reassign - options = utils$1.toFlatObject(options, { - metaTokens: true, - dots: false, - indexes: false - }, false, function defined(option, source) { - // eslint-disable-next-line no-eq-null,eqeqeq - return !utils$1.isUndefined(source[option]); - }); - - const metaTokens = options.metaTokens; - // eslint-disable-next-line no-use-before-define - const visitor = options.visitor || defaultVisitor; - const dots = options.dots; - const indexes = options.indexes; - const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob; - const useBlob = _Blob && utils$1.isSpecCompliantForm(formData); - - if (!utils$1.isFunction(visitor)) { - throw new TypeError('visitor must be a function'); - } - - function convertValue(value) { - if (value === null) return ''; - - if (utils$1.isDate(value)) { - return value.toISOString(); - } - - if (!useBlob && utils$1.isBlob(value)) { - throw new AxiosError('Blob is not supported. Use a Buffer instead.'); - } - - if (utils$1.isArrayBuffer(value) || utils$1.isTypedArray(value)) { - return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value); - } - - return value; - } - - /** - * Default visitor. - * - * @param {*} value - * @param {String|Number} key - * @param {Array} path - * @this {FormData} - * - * @returns {boolean} return true to visit the each prop of the value recursively - */ - function defaultVisitor(value, key, path) { - let arr = value; - - if (value && !path && typeof value === 'object') { - if (utils$1.endsWith(key, '{}')) { - // eslint-disable-next-line no-param-reassign - key = metaTokens ? key : key.slice(0, -2); - // eslint-disable-next-line no-param-reassign - value = JSON.stringify(value); - } else if ( - (utils$1.isArray(value) && isFlatArray(value)) || - ((utils$1.isFileList(value) || utils$1.endsWith(key, '[]')) && (arr = utils$1.toArray(value)) - )) { - // eslint-disable-next-line no-param-reassign - key = removeBrackets(key); - - arr.forEach(function each(el, index) { - !(utils$1.isUndefined(el) || el === null) && formData.append( - // eslint-disable-next-line no-nested-ternary - indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'), - convertValue(el) - ); - }); - return false; - } - } - - if (isVisitable(value)) { - return true; - } - - formData.append(renderKey(path, key, dots), convertValue(value)); - - return false; - } - - const stack = []; - - const exposedHelpers = Object.assign(predicates, { - defaultVisitor, - convertValue, - isVisitable - }); - - function build(value, path) { - if (utils$1.isUndefined(value)) return; - - if (stack.indexOf(value) !== -1) { - throw Error('Circular reference detected in ' + path.join('.')); - } - - stack.push(value); - - utils$1.forEach(value, function each(el, key) { - const result = !(utils$1.isUndefined(el) || el === null) && visitor.call( - formData, el, utils$1.isString(key) ? key.trim() : key, path, exposedHelpers - ); - - if (result === true) { - build(el, path ? path.concat(key) : [key]); - } - }); - - stack.pop(); - } - - if (!utils$1.isObject(obj)) { - throw new TypeError('data must be an object'); - } - - build(obj); - - return formData; -} - -/** - * It encodes a string by replacing all characters that are not in the unreserved set with - * their percent-encoded equivalents - * - * @param {string} str - The string to encode. - * - * @returns {string} The encoded string. - */ -function encode$1(str) { - const charMap = { - '!': '%21', - "'": '%27', - '(': '%28', - ')': '%29', - '~': '%7E', - '%20': '+', - '%00': '\x00' - }; - return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) { - return charMap[match]; - }); -} - -/** - * It takes a params object and converts it to a FormData object - * - * @param {Object} params - The parameters to be converted to a FormData object. - * @param {Object} options - The options object passed to the Axios constructor. - * - * @returns {void} - */ -function AxiosURLSearchParams(params, options) { - this._pairs = []; - - params && toFormData(params, this, options); -} - -const prototype = AxiosURLSearchParams.prototype; - -prototype.append = function append(name, value) { - this._pairs.push([name, value]); -}; - -prototype.toString = function toString(encoder) { - const _encode = encoder ? function(value) { - return encoder.call(this, value, encode$1); - } : encode$1; - - return this._pairs.map(function each(pair) { - return _encode(pair[0]) + '=' + _encode(pair[1]); - }, '').join('&'); -}; - -/** - * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their - * URI encoded counterparts - * - * @param {string} val The value to be encoded. - * - * @returns {string} The encoded value. - */ -function encode(val) { - return encodeURIComponent(val). - replace(/%3A/gi, ':'). - replace(/%24/g, '$'). - replace(/%2C/gi, ','). - replace(/%20/g, '+'). - replace(/%5B/gi, '['). - replace(/%5D/gi, ']'); -} - -/** - * Build a URL by appending params to the end - * - * @param {string} url The base of the url (e.g., http://www.google.com) - * @param {object} [params] The params to be appended - * @param {?object} options - * - * @returns {string} The formatted url - */ -function buildURL(url, params, options) { - /*eslint no-param-reassign:0*/ - if (!params) { - return url; - } - - const _encode = options && options.encode || encode; - - const serializeFn = options && options.serialize; - - let serializedParams; - - if (serializeFn) { - serializedParams = serializeFn(params, options); - } else { - serializedParams = utils$1.isURLSearchParams(params) ? - params.toString() : - new AxiosURLSearchParams(params, options).toString(_encode); - } - - if (serializedParams) { - const hashmarkIndex = url.indexOf("#"); - - if (hashmarkIndex !== -1) { - url = url.slice(0, hashmarkIndex); - } - url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams; - } - - return url; -} - -class InterceptorManager { - constructor() { - this.handlers = []; - } - - /** - * Add a new interceptor to the stack - * - * @param {Function} fulfilled The function to handle `then` for a `Promise` - * @param {Function} rejected The function to handle `reject` for a `Promise` - * - * @return {Number} An ID used to remove interceptor later - */ - use(fulfilled, rejected, options) { - this.handlers.push({ - fulfilled, - rejected, - synchronous: options ? options.synchronous : false, - runWhen: options ? options.runWhen : null - }); - return this.handlers.length - 1; - } - - /** - * Remove an interceptor from the stack - * - * @param {Number} id The ID that was returned by `use` - * - * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise - */ - eject(id) { - if (this.handlers[id]) { - this.handlers[id] = null; - } - } - - /** - * Clear all interceptors from the stack - * - * @returns {void} - */ - clear() { - if (this.handlers) { - this.handlers = []; - } - } - - /** - * Iterate over all the registered interceptors - * - * This method is particularly useful for skipping over any - * interceptors that may have become `null` calling `eject`. - * - * @param {Function} fn The function to call for each interceptor - * - * @returns {void} - */ - forEach(fn) { - utils$1.forEach(this.handlers, function forEachHandler(h) { - if (h !== null) { - fn(h); - } - }); - } -} - -const InterceptorManager$1 = InterceptorManager; - -const transitionalDefaults = { - silentJSONParsing: true, - forcedJSONParsing: true, - clarifyTimeoutError: false -}; - -const URLSearchParams = url__default["default"].URLSearchParams; - -const platform$1 = { - isNode: true, - classes: { - URLSearchParams, - FormData: FormData__default["default"], - Blob: typeof Blob !== 'undefined' && Blob || null - }, - protocols: [ 'http', 'https', 'file', 'data' ] -}; - -const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined'; - -/** - * Determine if we're running in a standard browser environment - * - * This allows axios to run in a web worker, and react-native. - * Both environments support XMLHttpRequest, but not fully standard globals. - * - * web workers: - * typeof window -> undefined - * typeof document -> undefined - * - * react-native: - * navigator.product -> 'ReactNative' - * nativescript - * navigator.product -> 'NativeScript' or 'NS' - * - * @returns {boolean} - */ -const hasStandardBrowserEnv = ( - (product) => { - return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0 - })(typeof navigator !== 'undefined' && navigator.product); - -/** - * Determine if we're running in a standard browser webWorker environment - * - * Although the `isStandardBrowserEnv` method indicates that - * `allows axios to run in a web worker`, the WebWorker will still be - * filtered out due to its judgment standard - * `typeof window !== 'undefined' && typeof document !== 'undefined'`. - * This leads to a problem when axios post `FormData` in webWorker - */ -const hasStandardBrowserWebWorkerEnv = (() => { - return ( - typeof WorkerGlobalScope !== 'undefined' && - // eslint-disable-next-line no-undef - self instanceof WorkerGlobalScope && - typeof self.importScripts === 'function' - ); -})(); - -const utils = /*#__PURE__*/Object.freeze({ - __proto__: null, - hasBrowserEnv: hasBrowserEnv, - hasStandardBrowserWebWorkerEnv: hasStandardBrowserWebWorkerEnv, - hasStandardBrowserEnv: hasStandardBrowserEnv -}); - -const platform = { - ...utils, - ...platform$1 -}; - -function toURLEncodedForm(data, options) { - return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({ - visitor: function(value, key, path, helpers) { - if (platform.isNode && utils$1.isBuffer(value)) { - this.append(key, value.toString('base64')); - return false; - } - - return helpers.defaultVisitor.apply(this, arguments); - } - }, options)); -} - -/** - * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z'] - * - * @param {string} name - The name of the property to get. - * - * @returns An array of strings. - */ -function parsePropPath(name) { - // foo[x][y][z] - // foo.x.y.z - // foo-x-y-z - // foo x y z - return utils$1.matchAll(/\w+|\[(\w*)]/g, name).map(match => { - return match[0] === '[]' ? '' : match[1] || match[0]; - }); -} - -/** - * Convert an array to an object. - * - * @param {Array} arr - The array to convert to an object. - * - * @returns An object with the same keys and values as the array. - */ -function arrayToObject(arr) { - const obj = {}; - const keys = Object.keys(arr); - let i; - const len = keys.length; - let key; - for (i = 0; i < len; i++) { - key = keys[i]; - obj[key] = arr[key]; - } - return obj; -} - -/** - * It takes a FormData object and returns a JavaScript object - * - * @param {string} formData The FormData object to convert to JSON. - * - * @returns {Object | null} The converted object. - */ -function formDataToJSON(formData) { - function buildPath(path, value, target, index) { - let name = path[index++]; - - if (name === '__proto__') return true; - - const isNumericKey = Number.isFinite(+name); - const isLast = index >= path.length; - name = !name && utils$1.isArray(target) ? target.length : name; - - if (isLast) { - if (utils$1.hasOwnProp(target, name)) { - target[name] = [target[name], value]; - } else { - target[name] = value; - } - - return !isNumericKey; - } - - if (!target[name] || !utils$1.isObject(target[name])) { - target[name] = []; - } - - const result = buildPath(path, value, target[name], index); - - if (result && utils$1.isArray(target[name])) { - target[name] = arrayToObject(target[name]); - } - - return !isNumericKey; - } - - if (utils$1.isFormData(formData) && utils$1.isFunction(formData.entries)) { - const obj = {}; - - utils$1.forEachEntry(formData, (name, value) => { - buildPath(parsePropPath(name), value, obj, 0); - }); - - return obj; - } - - return null; -} - -/** - * It takes a string, tries to parse it, and if it fails, it returns the stringified version - * of the input - * - * @param {any} rawValue - The value to be stringified. - * @param {Function} parser - A function that parses a string into a JavaScript object. - * @param {Function} encoder - A function that takes a value and returns a string. - * - * @returns {string} A stringified version of the rawValue. - */ -function stringifySafely(rawValue, parser, encoder) { - if (utils$1.isString(rawValue)) { - try { - (parser || JSON.parse)(rawValue); - return utils$1.trim(rawValue); - } catch (e) { - if (e.name !== 'SyntaxError') { - throw e; - } - } - } - - return (encoder || JSON.stringify)(rawValue); -} - -const defaults = { - - transitional: transitionalDefaults, - - adapter: ['xhr', 'http'], - - transformRequest: [function transformRequest(data, headers) { - const contentType = headers.getContentType() || ''; - const hasJSONContentType = contentType.indexOf('application/json') > -1; - const isObjectPayload = utils$1.isObject(data); - - if (isObjectPayload && utils$1.isHTMLForm(data)) { - data = new FormData(data); - } - - const isFormData = utils$1.isFormData(data); - - if (isFormData) { - return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data; - } - - if (utils$1.isArrayBuffer(data) || - utils$1.isBuffer(data) || - utils$1.isStream(data) || - utils$1.isFile(data) || - utils$1.isBlob(data) - ) { - return data; - } - if (utils$1.isArrayBufferView(data)) { - return data.buffer; - } - if (utils$1.isURLSearchParams(data)) { - headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false); - return data.toString(); - } - - let isFileList; - - if (isObjectPayload) { - if (contentType.indexOf('application/x-www-form-urlencoded') > -1) { - return toURLEncodedForm(data, this.formSerializer).toString(); - } - - if ((isFileList = utils$1.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) { - const _FormData = this.env && this.env.FormData; - - return toFormData( - isFileList ? {'files[]': data} : data, - _FormData && new _FormData(), - this.formSerializer - ); - } - } - - if (isObjectPayload || hasJSONContentType ) { - headers.setContentType('application/json', false); - return stringifySafely(data); - } - - return data; - }], - - transformResponse: [function transformResponse(data) { - const transitional = this.transitional || defaults.transitional; - const forcedJSONParsing = transitional && transitional.forcedJSONParsing; - const JSONRequested = this.responseType === 'json'; - - if (data && utils$1.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) { - const silentJSONParsing = transitional && transitional.silentJSONParsing; - const strictJSONParsing = !silentJSONParsing && JSONRequested; - - try { - return JSON.parse(data); - } catch (e) { - if (strictJSONParsing) { - if (e.name === 'SyntaxError') { - throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response); - } - throw e; - } - } - } - - return data; - }], - - /** - * A timeout in milliseconds to abort a request. If set to 0 (default) a - * timeout is not created. - */ - timeout: 0, - - xsrfCookieName: 'XSRF-TOKEN', - xsrfHeaderName: 'X-XSRF-TOKEN', - - maxContentLength: -1, - maxBodyLength: -1, - - env: { - FormData: platform.classes.FormData, - Blob: platform.classes.Blob - }, - - validateStatus: function validateStatus(status) { - return status >= 200 && status < 300; - }, - - headers: { - common: { - 'Accept': 'application/json, text/plain, */*', - 'Content-Type': undefined - } - } -}; - -utils$1.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => { - defaults.headers[method] = {}; -}); - -const defaults$1 = defaults; - -// RawAxiosHeaders whose duplicates are ignored by node -// c.f. https://nodejs.org/api/http.html#http_message_headers -const ignoreDuplicateOf = utils$1.toObjectSet([ - 'age', 'authorization', 'content-length', 'content-type', 'etag', - 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since', - 'last-modified', 'location', 'max-forwards', 'proxy-authorization', - 'referer', 'retry-after', 'user-agent' -]); - -/** - * Parse headers into an object - * - * ``` - * Date: Wed, 27 Aug 2014 08:58:49 GMT - * Content-Type: application/json - * Connection: keep-alive - * Transfer-Encoding: chunked - * ``` - * - * @param {String} rawHeaders Headers needing to be parsed - * - * @returns {Object} Headers parsed into an object - */ -const parseHeaders = rawHeaders => { - const parsed = {}; - let key; - let val; - let i; - - rawHeaders && rawHeaders.split('\n').forEach(function parser(line) { - i = line.indexOf(':'); - key = line.substring(0, i).trim().toLowerCase(); - val = line.substring(i + 1).trim(); - - if (!key || (parsed[key] && ignoreDuplicateOf[key])) { - return; - } - - if (key === 'set-cookie') { - if (parsed[key]) { - parsed[key].push(val); - } else { - parsed[key] = [val]; - } - } else { - parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val; - } - }); - - return parsed; -}; - -const $internals = Symbol('internals'); - -function normalizeHeader(header) { - return header && String(header).trim().toLowerCase(); -} - -function normalizeValue(value) { - if (value === false || value == null) { - return value; - } - - return utils$1.isArray(value) ? value.map(normalizeValue) : String(value); -} - -function parseTokens(str) { - const tokens = Object.create(null); - const tokensRE = /([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g; - let match; - - while ((match = tokensRE.exec(str))) { - tokens[match[1]] = match[2]; - } - - return tokens; -} - -const isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim()); - -function matchHeaderValue(context, value, header, filter, isHeaderNameFilter) { - if (utils$1.isFunction(filter)) { - return filter.call(this, value, header); - } - - if (isHeaderNameFilter) { - value = header; - } - - if (!utils$1.isString(value)) return; - - if (utils$1.isString(filter)) { - return value.indexOf(filter) !== -1; - } - - if (utils$1.isRegExp(filter)) { - return filter.test(value); - } -} - -function formatHeader(header) { - return header.trim() - .toLowerCase().replace(/([a-z\d])(\w*)/g, (w, char, str) => { - return char.toUpperCase() + str; - }); -} - -function buildAccessors(obj, header) { - const accessorName = utils$1.toCamelCase(' ' + header); - - ['get', 'set', 'has'].forEach(methodName => { - Object.defineProperty(obj, methodName + accessorName, { - value: function(arg1, arg2, arg3) { - return this[methodName].call(this, header, arg1, arg2, arg3); - }, - configurable: true - }); - }); -} - -class AxiosHeaders { - constructor(headers) { - headers && this.set(headers); - } - - set(header, valueOrRewrite, rewrite) { - const self = this; - - function setHeader(_value, _header, _rewrite) { - const lHeader = normalizeHeader(_header); - - if (!lHeader) { - throw new Error('header name must be a non-empty string'); - } - - const key = utils$1.findKey(self, lHeader); - - if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) { - self[key || _header] = normalizeValue(_value); - } - } - - const setHeaders = (headers, _rewrite) => - utils$1.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite)); - - if (utils$1.isPlainObject(header) || header instanceof this.constructor) { - setHeaders(header, valueOrRewrite); - } else if(utils$1.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) { - setHeaders(parseHeaders(header), valueOrRewrite); - } else { - header != null && setHeader(valueOrRewrite, header, rewrite); - } - - return this; - } - - get(header, parser) { - header = normalizeHeader(header); - - if (header) { - const key = utils$1.findKey(this, header); - - if (key) { - const value = this[key]; - - if (!parser) { - return value; - } - - if (parser === true) { - return parseTokens(value); - } - - if (utils$1.isFunction(parser)) { - return parser.call(this, value, key); - } - - if (utils$1.isRegExp(parser)) { - return parser.exec(value); - } - - throw new TypeError('parser must be boolean|regexp|function'); - } - } - } - - has(header, matcher) { - header = normalizeHeader(header); - - if (header) { - const key = utils$1.findKey(this, header); - - return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher))); - } - - return false; - } - - delete(header, matcher) { - const self = this; - let deleted = false; - - function deleteHeader(_header) { - _header = normalizeHeader(_header); - - if (_header) { - const key = utils$1.findKey(self, _header); - - if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) { - delete self[key]; - - deleted = true; - } - } - } - - if (utils$1.isArray(header)) { - header.forEach(deleteHeader); - } else { - deleteHeader(header); - } - - return deleted; - } - - clear(matcher) { - const keys = Object.keys(this); - let i = keys.length; - let deleted = false; - - while (i--) { - const key = keys[i]; - if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) { - delete this[key]; - deleted = true; - } - } - - return deleted; - } - - normalize(format) { - const self = this; - const headers = {}; - - utils$1.forEach(this, (value, header) => { - const key = utils$1.findKey(headers, header); - - if (key) { - self[key] = normalizeValue(value); - delete self[header]; - return; - } - - const normalized = format ? formatHeader(header) : String(header).trim(); - - if (normalized !== header) { - delete self[header]; - } - - self[normalized] = normalizeValue(value); - - headers[normalized] = true; - }); - - return this; - } - - concat(...targets) { - return this.constructor.concat(this, ...targets); - } - - toJSON(asStrings) { - const obj = Object.create(null); - - utils$1.forEach(this, (value, header) => { - value != null && value !== false && (obj[header] = asStrings && utils$1.isArray(value) ? value.join(', ') : value); - }); - - return obj; - } - - [Symbol.iterator]() { - return Object.entries(this.toJSON())[Symbol.iterator](); - } - - toString() { - return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\n'); - } - - get [Symbol.toStringTag]() { - return 'AxiosHeaders'; - } - - static from(thing) { - return thing instanceof this ? thing : new this(thing); - } - - static concat(first, ...targets) { - const computed = new this(first); - - targets.forEach((target) => computed.set(target)); - - return computed; - } - - static accessor(header) { - const internals = this[$internals] = (this[$internals] = { - accessors: {} - }); - - const accessors = internals.accessors; - const prototype = this.prototype; - - function defineAccessor(_header) { - const lHeader = normalizeHeader(_header); - - if (!accessors[lHeader]) { - buildAccessors(prototype, _header); - accessors[lHeader] = true; - } - } - - utils$1.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header); - - return this; - } -} - -AxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']); - -// reserved names hotfix -utils$1.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => { - let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set` - return { - get: () => value, - set(headerValue) { - this[mapped] = headerValue; - } - } -}); - -utils$1.freezeMethods(AxiosHeaders); - -const AxiosHeaders$1 = AxiosHeaders; - -/** - * Transform the data for a request or a response - * - * @param {Array|Function} fns A single function or Array of functions - * @param {?Object} response The response object - * - * @returns {*} The resulting transformed data - */ -function transformData(fns, response) { - const config = this || defaults$1; - const context = response || config; - const headers = AxiosHeaders$1.from(context.headers); - let data = context.data; - - utils$1.forEach(fns, function transform(fn) { - data = fn.call(config, data, headers.normalize(), response ? response.status : undefined); - }); - - headers.normalize(); - - return data; -} - -function isCancel(value) { - return !!(value && value.__CANCEL__); -} - -/** - * A `CanceledError` is an object that is thrown when an operation is canceled. - * - * @param {string=} message The message. - * @param {Object=} config The config. - * @param {Object=} request The request. - * - * @returns {CanceledError} The created error. - */ -function CanceledError(message, config, request) { - // eslint-disable-next-line no-eq-null,eqeqeq - AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request); - this.name = 'CanceledError'; -} - -utils$1.inherits(CanceledError, AxiosError, { - __CANCEL__: true -}); - -/** - * Resolve or reject a Promise based on response status. - * - * @param {Function} resolve A function that resolves the promise. - * @param {Function} reject A function that rejects the promise. - * @param {object} response The response. - * - * @returns {object} The response. - */ -function settle(resolve, reject, response) { - const validateStatus = response.config.validateStatus; - if (!response.status || !validateStatus || validateStatus(response.status)) { - resolve(response); - } else { - reject(new AxiosError( - 'Request failed with status code ' + response.status, - [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4], - response.config, - response.request, - response - )); - } -} - -/** - * Determines whether the specified URL is absolute - * - * @param {string} url The URL to test - * - * @returns {boolean} True if the specified URL is absolute, otherwise false - */ -function isAbsoluteURL(url) { - // A URL is considered absolute if it begins with "://" or "//" (protocol-relative URL). - // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed - // by any combination of letters, digits, plus, period, or hyphen. - return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url); -} - -/** - * Creates a new URL by combining the specified URLs - * - * @param {string} baseURL The base URL - * @param {string} relativeURL The relative URL - * - * @returns {string} The combined URL - */ -function combineURLs(baseURL, relativeURL) { - return relativeURL - ? baseURL.replace(/\/?\/$/, '') + '/' + relativeURL.replace(/^\/+/, '') - : baseURL; -} - -/** - * Creates a new URL by combining the baseURL with the requestedURL, - * only when the requestedURL is not already an absolute URL. - * If the requestURL is absolute, this function returns the requestedURL untouched. - * - * @param {string} baseURL The base URL - * @param {string} requestedURL Absolute or relative URL to combine - * - * @returns {string} The combined full path - */ -function buildFullPath(baseURL, requestedURL) { - if (baseURL && !isAbsoluteURL(requestedURL)) { - return combineURLs(baseURL, requestedURL); - } - return requestedURL; -} - -const VERSION = "1.6.7"; - -function parseProtocol(url) { - const match = /^([-+\w]{1,25})(:?\/\/|:)/.exec(url); - return match && match[1] || ''; -} - -const DATA_URL_PATTERN = /^(?:([^;]+);)?(?:[^;]+;)?(base64|),([\s\S]*)$/; - -/** - * Parse data uri to a Buffer or Blob - * - * @param {String} uri - * @param {?Boolean} asBlob - * @param {?Object} options - * @param {?Function} options.Blob - * - * @returns {Buffer|Blob} - */ -function fromDataURI(uri, asBlob, options) { - const _Blob = options && options.Blob || platform.classes.Blob; - const protocol = parseProtocol(uri); - - if (asBlob === undefined && _Blob) { - asBlob = true; - } - - if (protocol === 'data') { - uri = protocol.length ? uri.slice(protocol.length + 1) : uri; - - const match = DATA_URL_PATTERN.exec(uri); - - if (!match) { - throw new AxiosError('Invalid URL', AxiosError.ERR_INVALID_URL); - } - - const mime = match[1]; - const isBase64 = match[2]; - const body = match[3]; - const buffer = Buffer.from(decodeURIComponent(body), isBase64 ? 'base64' : 'utf8'); - - if (asBlob) { - if (!_Blob) { - throw new AxiosError('Blob is not supported', AxiosError.ERR_NOT_SUPPORT); - } - - return new _Blob([buffer], {type: mime}); - } - - return buffer; - } - - throw new AxiosError('Unsupported protocol ' + protocol, AxiosError.ERR_NOT_SUPPORT); -} - -/** - * Throttle decorator - * @param {Function} fn - * @param {Number} freq - * @return {Function} - */ -function throttle(fn, freq) { - let timestamp = 0; - const threshold = 1000 / freq; - let timer = null; - return function throttled(force, args) { - const now = Date.now(); - if (force || now - timestamp > threshold) { - if (timer) { - clearTimeout(timer); - timer = null; - } - timestamp = now; - return fn.apply(null, args); - } - if (!timer) { - timer = setTimeout(() => { - timer = null; - timestamp = Date.now(); - return fn.apply(null, args); - }, threshold - (now - timestamp)); - } - }; -} - -/** - * Calculate data maxRate - * @param {Number} [samplesCount= 10] - * @param {Number} [min= 1000] - * @returns {Function} - */ -function speedometer(samplesCount, min) { - samplesCount = samplesCount || 10; - const bytes = new Array(samplesCount); - const timestamps = new Array(samplesCount); - let head = 0; - let tail = 0; - let firstSampleTS; - - min = min !== undefined ? min : 1000; - - return function push(chunkLength) { - const now = Date.now(); - - const startedAt = timestamps[tail]; - - if (!firstSampleTS) { - firstSampleTS = now; - } - - bytes[head] = chunkLength; - timestamps[head] = now; - - let i = tail; - let bytesCount = 0; - - while (i !== head) { - bytesCount += bytes[i++]; - i = i % samplesCount; - } - - head = (head + 1) % samplesCount; - - if (head === tail) { - tail = (tail + 1) % samplesCount; - } - - if (now - firstSampleTS < min) { - return; - } - - const passed = startedAt && now - startedAt; - - return passed ? Math.round(bytesCount * 1000 / passed) : undefined; - }; -} - -const kInternals = Symbol('internals'); - -class AxiosTransformStream extends stream__default["default"].Transform{ - constructor(options) { - options = utils$1.toFlatObject(options, { - maxRate: 0, - chunkSize: 64 * 1024, - minChunkSize: 100, - timeWindow: 500, - ticksRate: 2, - samplesCount: 15 - }, null, (prop, source) => { - return !utils$1.isUndefined(source[prop]); - }); - - super({ - readableHighWaterMark: options.chunkSize - }); - - const self = this; - - const internals = this[kInternals] = { - length: options.length, - timeWindow: options.timeWindow, - ticksRate: options.ticksRate, - chunkSize: options.chunkSize, - maxRate: options.maxRate, - minChunkSize: options.minChunkSize, - bytesSeen: 0, - isCaptured: false, - notifiedBytesLoaded: 0, - ts: Date.now(), - bytes: 0, - onReadCallback: null - }; - - const _speedometer = speedometer(internals.ticksRate * options.samplesCount, internals.timeWindow); - - this.on('newListener', event => { - if (event === 'progress') { - if (!internals.isCaptured) { - internals.isCaptured = true; - } - } - }); - - let bytesNotified = 0; - - internals.updateProgress = throttle(function throttledHandler() { - const totalBytes = internals.length; - const bytesTransferred = internals.bytesSeen; - const progressBytes = bytesTransferred - bytesNotified; - if (!progressBytes || self.destroyed) return; - - const rate = _speedometer(progressBytes); - - bytesNotified = bytesTransferred; - - process.nextTick(() => { - self.emit('progress', { - 'loaded': bytesTransferred, - 'total': totalBytes, - 'progress': totalBytes ? (bytesTransferred / totalBytes) : undefined, - 'bytes': progressBytes, - 'rate': rate ? rate : undefined, - 'estimated': rate && totalBytes && bytesTransferred <= totalBytes ? - (totalBytes - bytesTransferred) / rate : undefined - }); - }); - }, internals.ticksRate); - - const onFinish = () => { - internals.updateProgress(true); - }; - - this.once('end', onFinish); - this.once('error', onFinish); - } - - _read(size) { - const internals = this[kInternals]; - - if (internals.onReadCallback) { - internals.onReadCallback(); - } - - return super._read(size); - } - - _transform(chunk, encoding, callback) { - const self = this; - const internals = this[kInternals]; - const maxRate = internals.maxRate; - - const readableHighWaterMark = this.readableHighWaterMark; - - const timeWindow = internals.timeWindow; - - const divider = 1000 / timeWindow; - const bytesThreshold = (maxRate / divider); - const minChunkSize = internals.minChunkSize !== false ? Math.max(internals.minChunkSize, bytesThreshold * 0.01) : 0; - - function pushChunk(_chunk, _callback) { - const bytes = Buffer.byteLength(_chunk); - internals.bytesSeen += bytes; - internals.bytes += bytes; - - if (internals.isCaptured) { - internals.updateProgress(); - } - - if (self.push(_chunk)) { - process.nextTick(_callback); - } else { - internals.onReadCallback = () => { - internals.onReadCallback = null; - process.nextTick(_callback); - }; - } - } - - const transformChunk = (_chunk, _callback) => { - const chunkSize = Buffer.byteLength(_chunk); - let chunkRemainder = null; - let maxChunkSize = readableHighWaterMark; - let bytesLeft; - let passed = 0; - - if (maxRate) { - const now = Date.now(); - - if (!internals.ts || (passed = (now - internals.ts)) >= timeWindow) { - internals.ts = now; - bytesLeft = bytesThreshold - internals.bytes; - internals.bytes = bytesLeft < 0 ? -bytesLeft : 0; - passed = 0; - } - - bytesLeft = bytesThreshold - internals.bytes; - } - - if (maxRate) { - if (bytesLeft <= 0) { - // next time window - return setTimeout(() => { - _callback(null, _chunk); - }, timeWindow - passed); - } - - if (bytesLeft < maxChunkSize) { - maxChunkSize = bytesLeft; - } - } - - if (maxChunkSize && chunkSize > maxChunkSize && (chunkSize - maxChunkSize) > minChunkSize) { - chunkRemainder = _chunk.subarray(maxChunkSize); - _chunk = _chunk.subarray(0, maxChunkSize); - } - - pushChunk(_chunk, chunkRemainder ? () => { - process.nextTick(_callback, null, chunkRemainder); - } : _callback); - }; - - transformChunk(chunk, function transformNextChunk(err, _chunk) { - if (err) { - return callback(err); - } - - if (_chunk) { - transformChunk(_chunk, transformNextChunk); - } else { - callback(null); - } - }); - } - - setLength(length) { - this[kInternals].length = +length; - return this; - } -} - -const AxiosTransformStream$1 = AxiosTransformStream; - -const {asyncIterator} = Symbol; - -const readBlob = async function* (blob) { - if (blob.stream) { - yield* blob.stream(); - } else if (blob.arrayBuffer) { - yield await blob.arrayBuffer(); - } else if (blob[asyncIterator]) { - yield* blob[asyncIterator](); - } else { - yield blob; - } -}; - -const readBlob$1 = readBlob; - -const BOUNDARY_ALPHABET = utils$1.ALPHABET.ALPHA_DIGIT + '-_'; - -const textEncoder = new util.TextEncoder(); - -const CRLF = '\r\n'; -const CRLF_BYTES = textEncoder.encode(CRLF); -const CRLF_BYTES_COUNT = 2; - -class FormDataPart { - constructor(name, value) { - const {escapeName} = this.constructor; - const isStringValue = utils$1.isString(value); - - let headers = `Content-Disposition: form-data; name="${escapeName(name)}"${ - !isStringValue && value.name ? `; filename="${escapeName(value.name)}"` : '' - }${CRLF}`; - - if (isStringValue) { - value = textEncoder.encode(String(value).replace(/\r?\n|\r\n?/g, CRLF)); - } else { - headers += `Content-Type: ${value.type || "application/octet-stream"}${CRLF}`; - } - - this.headers = textEncoder.encode(headers + CRLF); - - this.contentLength = isStringValue ? value.byteLength : value.size; - - this.size = this.headers.byteLength + this.contentLength + CRLF_BYTES_COUNT; - - this.name = name; - this.value = value; - } - - async *encode(){ - yield this.headers; - - const {value} = this; - - if(utils$1.isTypedArray(value)) { - yield value; - } else { - yield* readBlob$1(value); - } - - yield CRLF_BYTES; - } - - static escapeName(name) { - return String(name).replace(/[\r\n"]/g, (match) => ({ - '\r' : '%0D', - '\n' : '%0A', - '"' : '%22', - }[match])); - } -} - -const formDataToStream = (form, headersHandler, options) => { - const { - tag = 'form-data-boundary', - size = 25, - boundary = tag + '-' + utils$1.generateString(size, BOUNDARY_ALPHABET) - } = options || {}; - - if(!utils$1.isFormData(form)) { - throw TypeError('FormData instance required'); - } - - if (boundary.length < 1 || boundary.length > 70) { - throw Error('boundary must be 10-70 characters long') - } - - const boundaryBytes = textEncoder.encode('--' + boundary + CRLF); - const footerBytes = textEncoder.encode('--' + boundary + '--' + CRLF + CRLF); - let contentLength = footerBytes.byteLength; - - const parts = Array.from(form.entries()).map(([name, value]) => { - const part = new FormDataPart(name, value); - contentLength += part.size; - return part; - }); - - contentLength += boundaryBytes.byteLength * parts.length; - - contentLength = utils$1.toFiniteNumber(contentLength); - - const computedHeaders = { - 'Content-Type': `multipart/form-data; boundary=${boundary}` - }; - - if (Number.isFinite(contentLength)) { - computedHeaders['Content-Length'] = contentLength; - } - - headersHandler && headersHandler(computedHeaders); - - return stream.Readable.from((async function *() { - for(const part of parts) { - yield boundaryBytes; - yield* part.encode(); - } - - yield footerBytes; - })()); -}; - -const formDataToStream$1 = formDataToStream; - -class ZlibHeaderTransformStream extends stream__default["default"].Transform { - __transform(chunk, encoding, callback) { - this.push(chunk); - callback(); - } - - _transform(chunk, encoding, callback) { - if (chunk.length !== 0) { - this._transform = this.__transform; - - // Add Default Compression headers if no zlib headers are present - if (chunk[0] !== 120) { // Hex: 78 - const header = Buffer.alloc(2); - header[0] = 120; // Hex: 78 - header[1] = 156; // Hex: 9C - this.push(header, encoding); - } - } - - this.__transform(chunk, encoding, callback); - } -} - -const ZlibHeaderTransformStream$1 = ZlibHeaderTransformStream; - -const callbackify = (fn, reducer) => { - return utils$1.isAsyncFn(fn) ? function (...args) { - const cb = args.pop(); - fn.apply(this, args).then((value) => { - try { - reducer ? cb(null, ...reducer(value)) : cb(null, value); - } catch (err) { - cb(err); - } - }, cb); - } : fn; -}; - -const callbackify$1 = callbackify; - -const zlibOptions = { - flush: zlib__default["default"].constants.Z_SYNC_FLUSH, - finishFlush: zlib__default["default"].constants.Z_SYNC_FLUSH -}; - -const brotliOptions = { - flush: zlib__default["default"].constants.BROTLI_OPERATION_FLUSH, - finishFlush: zlib__default["default"].constants.BROTLI_OPERATION_FLUSH -}; - -const isBrotliSupported = utils$1.isFunction(zlib__default["default"].createBrotliDecompress); - -const {http: httpFollow, https: httpsFollow} = followRedirects__default["default"]; - -const isHttps = /https:?/; - -const supportedProtocols = platform.protocols.map(protocol => { - return protocol + ':'; -}); - -/** - * If the proxy or config beforeRedirects functions are defined, call them with the options - * object. - * - * @param {Object} options - The options object that was passed to the request. - * - * @returns {Object} - */ -function dispatchBeforeRedirect(options, responseDetails) { - if (options.beforeRedirects.proxy) { - options.beforeRedirects.proxy(options); - } - if (options.beforeRedirects.config) { - options.beforeRedirects.config(options, responseDetails); - } -} - -/** - * If the proxy or config afterRedirects functions are defined, call them with the options - * - * @param {http.ClientRequestArgs} options - * @param {AxiosProxyConfig} configProxy configuration from Axios options object - * @param {string} location - * - * @returns {http.ClientRequestArgs} - */ -function setProxy(options, configProxy, location) { - let proxy = configProxy; - if (!proxy && proxy !== false) { - const proxyUrl = proxyFromEnv.getProxyForUrl(location); - if (proxyUrl) { - proxy = new URL(proxyUrl); - } - } - if (proxy) { - // Basic proxy authorization - if (proxy.username) { - proxy.auth = (proxy.username || '') + ':' + (proxy.password || ''); - } - - if (proxy.auth) { - // Support proxy auth object form - if (proxy.auth.username || proxy.auth.password) { - proxy.auth = (proxy.auth.username || '') + ':' + (proxy.auth.password || ''); - } - const base64 = Buffer - .from(proxy.auth, 'utf8') - .toString('base64'); - options.headers['Proxy-Authorization'] = 'Basic ' + base64; - } - - options.headers.host = options.hostname + (options.port ? ':' + options.port : ''); - const proxyHost = proxy.hostname || proxy.host; - options.hostname = proxyHost; - // Replace 'host' since options is not a URL object - options.host = proxyHost; - options.port = proxy.port; - options.path = location; - if (proxy.protocol) { - options.protocol = proxy.protocol.includes(':') ? proxy.protocol : `${proxy.protocol}:`; - } - } - - options.beforeRedirects.proxy = function beforeRedirect(redirectOptions) { - // Configure proxy for redirected request, passing the original config proxy to apply - // the exact same logic as if the redirected request was performed by axios directly. - setProxy(redirectOptions, configProxy, redirectOptions.href); - }; -} - -const isHttpAdapterSupported = typeof process !== 'undefined' && utils$1.kindOf(process) === 'process'; - -// temporary hotfix - -const wrapAsync = (asyncExecutor) => { - return new Promise((resolve, reject) => { - let onDone; - let isDone; - - const done = (value, isRejected) => { - if (isDone) return; - isDone = true; - onDone && onDone(value, isRejected); - }; - - const _resolve = (value) => { - done(value); - resolve(value); - }; - - const _reject = (reason) => { - done(reason, true); - reject(reason); - }; - - asyncExecutor(_resolve, _reject, (onDoneHandler) => (onDone = onDoneHandler)).catch(_reject); - }) -}; - -const resolveFamily = ({address, family}) => { - if (!utils$1.isString(address)) { - throw TypeError('address must be a string'); - } - return ({ - address, - family: family || (address.indexOf('.') < 0 ? 6 : 4) - }); -}; - -const buildAddressEntry = (address, family) => resolveFamily(utils$1.isObject(address) ? address : {address, family}); - -/*eslint consistent-return:0*/ -const httpAdapter = isHttpAdapterSupported && function httpAdapter(config) { - return wrapAsync(async function dispatchHttpRequest(resolve, reject, onDone) { - let {data, lookup, family} = config; - const {responseType, responseEncoding} = config; - const method = config.method.toUpperCase(); - let isDone; - let rejected = false; - let req; - - if (lookup) { - const _lookup = callbackify$1(lookup, (value) => utils$1.isArray(value) ? value : [value]); - // hotfix to support opt.all option which is required for node 20.x - lookup = (hostname, opt, cb) => { - _lookup(hostname, opt, (err, arg0, arg1) => { - if (err) { - return cb(err); - } - - const addresses = utils$1.isArray(arg0) ? arg0.map(addr => buildAddressEntry(addr)) : [buildAddressEntry(arg0, arg1)]; - - opt.all ? cb(err, addresses) : cb(err, addresses[0].address, addresses[0].family); - }); - }; - } - - // temporary internal emitter until the AxiosRequest class will be implemented - const emitter = new EventEmitter__default["default"](); - - const onFinished = () => { - if (config.cancelToken) { - config.cancelToken.unsubscribe(abort); - } - - if (config.signal) { - config.signal.removeEventListener('abort', abort); - } - - emitter.removeAllListeners(); - }; - - onDone((value, isRejected) => { - isDone = true; - if (isRejected) { - rejected = true; - onFinished(); - } - }); - - function abort(reason) { - emitter.emit('abort', !reason || reason.type ? new CanceledError(null, config, req) : reason); - } - - emitter.once('abort', reject); - - if (config.cancelToken || config.signal) { - config.cancelToken && config.cancelToken.subscribe(abort); - if (config.signal) { - config.signal.aborted ? abort() : config.signal.addEventListener('abort', abort); - } - } - - // Parse url - const fullPath = buildFullPath(config.baseURL, config.url); - const parsed = new URL(fullPath, 'http://localhost'); - const protocol = parsed.protocol || supportedProtocols[0]; - - if (protocol === 'data:') { - let convertedData; - - if (method !== 'GET') { - return settle(resolve, reject, { - status: 405, - statusText: 'method not allowed', - headers: {}, - config - }); - } - - try { - convertedData = fromDataURI(config.url, responseType === 'blob', { - Blob: config.env && config.env.Blob - }); - } catch (err) { - throw AxiosError.from(err, AxiosError.ERR_BAD_REQUEST, config); - } - - if (responseType === 'text') { - convertedData = convertedData.toString(responseEncoding); - - if (!responseEncoding || responseEncoding === 'utf8') { - convertedData = utils$1.stripBOM(convertedData); - } - } else if (responseType === 'stream') { - convertedData = stream__default["default"].Readable.from(convertedData); - } - - return settle(resolve, reject, { - data: convertedData, - status: 200, - statusText: 'OK', - headers: new AxiosHeaders$1(), - config - }); - } - - if (supportedProtocols.indexOf(protocol) === -1) { - return reject(new AxiosError( - 'Unsupported protocol ' + protocol, - AxiosError.ERR_BAD_REQUEST, - config - )); - } - - const headers = AxiosHeaders$1.from(config.headers).normalize(); - - // Set User-Agent (required by some servers) - // See https://github.com/axios/axios/issues/69 - // User-Agent is specified; handle case where no UA header is desired - // Only set header if it hasn't been set in config - headers.set('User-Agent', 'axios/' + VERSION, false); - - const onDownloadProgress = config.onDownloadProgress; - const onUploadProgress = config.onUploadProgress; - const maxRate = config.maxRate; - let maxUploadRate = undefined; - let maxDownloadRate = undefined; - - // support for spec compliant FormData objects - if (utils$1.isSpecCompliantForm(data)) { - const userBoundary = headers.getContentType(/boundary=([-_\w\d]{10,70})/i); - - data = formDataToStream$1(data, (formHeaders) => { - headers.set(formHeaders); - }, { - tag: `axios-${VERSION}-boundary`, - boundary: userBoundary && userBoundary[1] || undefined - }); - // support for https://www.npmjs.com/package/form-data api - } else if (utils$1.isFormData(data) && utils$1.isFunction(data.getHeaders)) { - headers.set(data.getHeaders()); - - if (!headers.hasContentLength()) { - try { - const knownLength = await util__default["default"].promisify(data.getLength).call(data); - Number.isFinite(knownLength) && knownLength >= 0 && headers.setContentLength(knownLength); - /*eslint no-empty:0*/ - } catch (e) { - } - } - } else if (utils$1.isBlob(data)) { - data.size && headers.setContentType(data.type || 'application/octet-stream'); - headers.setContentLength(data.size || 0); - data = stream__default["default"].Readable.from(readBlob$1(data)); - } else if (data && !utils$1.isStream(data)) { - if (Buffer.isBuffer(data)) ; else if (utils$1.isArrayBuffer(data)) { - data = Buffer.from(new Uint8Array(data)); - } else if (utils$1.isString(data)) { - data = Buffer.from(data, 'utf-8'); - } else { - return reject(new AxiosError( - 'Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream', - AxiosError.ERR_BAD_REQUEST, - config - )); - } - - // Add Content-Length header if data exists - headers.setContentLength(data.length, false); - - if (config.maxBodyLength > -1 && data.length > config.maxBodyLength) { - return reject(new AxiosError( - 'Request body larger than maxBodyLength limit', - AxiosError.ERR_BAD_REQUEST, - config - )); - } - } - - const contentLength = utils$1.toFiniteNumber(headers.getContentLength()); - - if (utils$1.isArray(maxRate)) { - maxUploadRate = maxRate[0]; - maxDownloadRate = maxRate[1]; - } else { - maxUploadRate = maxDownloadRate = maxRate; - } - - if (data && (onUploadProgress || maxUploadRate)) { - if (!utils$1.isStream(data)) { - data = stream__default["default"].Readable.from(data, {objectMode: false}); - } - - data = stream__default["default"].pipeline([data, new AxiosTransformStream$1({ - length: contentLength, - maxRate: utils$1.toFiniteNumber(maxUploadRate) - })], utils$1.noop); - - onUploadProgress && data.on('progress', progress => { - onUploadProgress(Object.assign(progress, { - upload: true - })); - }); - } - - // HTTP basic authentication - let auth = undefined; - if (config.auth) { - const username = config.auth.username || ''; - const password = config.auth.password || ''; - auth = username + ':' + password; - } - - if (!auth && parsed.username) { - const urlUsername = parsed.username; - const urlPassword = parsed.password; - auth = urlUsername + ':' + urlPassword; - } - - auth && headers.delete('authorization'); - - let path; - - try { - path = buildURL( - parsed.pathname + parsed.search, - config.params, - config.paramsSerializer - ).replace(/^\?/, ''); - } catch (err) { - const customErr = new Error(err.message); - customErr.config = config; - customErr.url = config.url; - customErr.exists = true; - return reject(customErr); - } - - headers.set( - 'Accept-Encoding', - 'gzip, compress, deflate' + (isBrotliSupported ? ', br' : ''), false - ); - - const options = { - path, - method: method, - headers: headers.toJSON(), - agents: { http: config.httpAgent, https: config.httpsAgent }, - auth, - protocol, - family, - beforeRedirect: dispatchBeforeRedirect, - beforeRedirects: {} - }; - - // cacheable-lookup integration hotfix - !utils$1.isUndefined(lookup) && (options.lookup = lookup); - - if (config.socketPath) { - options.socketPath = config.socketPath; - } else { - options.hostname = parsed.hostname; - options.port = parsed.port; - setProxy(options, config.proxy, protocol + '//' + parsed.hostname + (parsed.port ? ':' + parsed.port : '') + options.path); - } - - let transport; - const isHttpsRequest = isHttps.test(options.protocol); - options.agent = isHttpsRequest ? config.httpsAgent : config.httpAgent; - if (config.transport) { - transport = config.transport; - } else if (config.maxRedirects === 0) { - transport = isHttpsRequest ? https__default["default"] : http__default["default"]; - } else { - if (config.maxRedirects) { - options.maxRedirects = config.maxRedirects; - } - if (config.beforeRedirect) { - options.beforeRedirects.config = config.beforeRedirect; - } - transport = isHttpsRequest ? httpsFollow : httpFollow; - } - - if (config.maxBodyLength > -1) { - options.maxBodyLength = config.maxBodyLength; - } else { - // follow-redirects does not skip comparison, so it should always succeed for axios -1 unlimited - options.maxBodyLength = Infinity; - } - - if (config.insecureHTTPParser) { - options.insecureHTTPParser = config.insecureHTTPParser; - } - - // Create the request - req = transport.request(options, function handleResponse(res) { - if (req.destroyed) return; - - const streams = [res]; - - const responseLength = +res.headers['content-length']; - - if (onDownloadProgress) { - const transformStream = new AxiosTransformStream$1({ - length: utils$1.toFiniteNumber(responseLength), - maxRate: utils$1.toFiniteNumber(maxDownloadRate) - }); - - onDownloadProgress && transformStream.on('progress', progress => { - onDownloadProgress(Object.assign(progress, { - download: true - })); - }); - - streams.push(transformStream); - } - - // decompress the response body transparently if required - let responseStream = res; - - // return the last request in case of redirects - const lastRequest = res.req || req; - - // if decompress disabled we should not decompress - if (config.decompress !== false && res.headers['content-encoding']) { - // if no content, but headers still say that it is encoded, - // remove the header not confuse downstream operations - if (method === 'HEAD' || res.statusCode === 204) { - delete res.headers['content-encoding']; - } - - switch ((res.headers['content-encoding'] || '').toLowerCase()) { - /*eslint default-case:0*/ - case 'gzip': - case 'x-gzip': - case 'compress': - case 'x-compress': - // add the unzipper to the body stream processing pipeline - streams.push(zlib__default["default"].createUnzip(zlibOptions)); - - // remove the content-encoding in order to not confuse downstream operations - delete res.headers['content-encoding']; - break; - case 'deflate': - streams.push(new ZlibHeaderTransformStream$1()); - - // add the unzipper to the body stream processing pipeline - streams.push(zlib__default["default"].createUnzip(zlibOptions)); - - // remove the content-encoding in order to not confuse downstream operations - delete res.headers['content-encoding']; - break; - case 'br': - if (isBrotliSupported) { - streams.push(zlib__default["default"].createBrotliDecompress(brotliOptions)); - delete res.headers['content-encoding']; - } - } - } - - responseStream = streams.length > 1 ? stream__default["default"].pipeline(streams, utils$1.noop) : streams[0]; - - const offListeners = stream__default["default"].finished(responseStream, () => { - offListeners(); - onFinished(); - }); - - const response = { - status: res.statusCode, - statusText: res.statusMessage, - headers: new AxiosHeaders$1(res.headers), - config, - request: lastRequest - }; - - if (responseType === 'stream') { - response.data = responseStream; - settle(resolve, reject, response); - } else { - const responseBuffer = []; - let totalResponseBytes = 0; - - responseStream.on('data', function handleStreamData(chunk) { - responseBuffer.push(chunk); - totalResponseBytes += chunk.length; - - // make sure the content length is not over the maxContentLength if specified - if (config.maxContentLength > -1 && totalResponseBytes > config.maxContentLength) { - // stream.destroy() emit aborted event before calling reject() on Node.js v16 - rejected = true; - responseStream.destroy(); - reject(new AxiosError('maxContentLength size of ' + config.maxContentLength + ' exceeded', - AxiosError.ERR_BAD_RESPONSE, config, lastRequest)); - } - }); - - responseStream.on('aborted', function handlerStreamAborted() { - if (rejected) { - return; - } - - const err = new AxiosError( - 'maxContentLength size of ' + config.maxContentLength + ' exceeded', - AxiosError.ERR_BAD_RESPONSE, - config, - lastRequest - ); - responseStream.destroy(err); - reject(err); - }); - - responseStream.on('error', function handleStreamError(err) { - if (req.destroyed) return; - reject(AxiosError.from(err, null, config, lastRequest)); - }); - - responseStream.on('end', function handleStreamEnd() { - try { - let responseData = responseBuffer.length === 1 ? responseBuffer[0] : Buffer.concat(responseBuffer); - if (responseType !== 'arraybuffer') { - responseData = responseData.toString(responseEncoding); - if (!responseEncoding || responseEncoding === 'utf8') { - responseData = utils$1.stripBOM(responseData); - } - } - response.data = responseData; - } catch (err) { - return reject(AxiosError.from(err, null, config, response.request, response)); - } - settle(resolve, reject, response); - }); - } - - emitter.once('abort', err => { - if (!responseStream.destroyed) { - responseStream.emit('error', err); - responseStream.destroy(); - } - }); - }); - - emitter.once('abort', err => { - reject(err); - req.destroy(err); - }); - - // Handle errors - req.on('error', function handleRequestError(err) { - // @todo remove - // if (req.aborted && err.code !== AxiosError.ERR_FR_TOO_MANY_REDIRECTS) return; - reject(AxiosError.from(err, null, config, req)); - }); - - // set tcp keep alive to prevent drop connection by peer - req.on('socket', function handleRequestSocket(socket) { - // default interval of sending ack packet is 1 minute - socket.setKeepAlive(true, 1000 * 60); - }); - - // Handle request timeout - if (config.timeout) { - // This is forcing a int timeout to avoid problems if the `req` interface doesn't handle other types. - const timeout = parseInt(config.timeout, 10); - - if (Number.isNaN(timeout)) { - reject(new AxiosError( - 'error trying to parse `config.timeout` to int', - AxiosError.ERR_BAD_OPTION_VALUE, - config, - req - )); - - return; - } - - // Sometime, the response will be very slow, and does not respond, the connect event will be block by event loop system. - // And timer callback will be fired, and abort() will be invoked before connection, then get "socket hang up" and code ECONNRESET. - // At this time, if we have a large number of request, nodejs will hang up some socket on background. and the number will up and up. - // And then these socket which be hang up will devouring CPU little by little. - // ClientRequest.setTimeout will be fired on the specify milliseconds, and can make sure that abort() will be fired after connect. - req.setTimeout(timeout, function handleRequestTimeout() { - if (isDone) return; - let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded'; - const transitional = config.transitional || transitionalDefaults; - if (config.timeoutErrorMessage) { - timeoutErrorMessage = config.timeoutErrorMessage; - } - reject(new AxiosError( - timeoutErrorMessage, - transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED, - config, - req - )); - abort(); - }); - } - - - // Send the request - if (utils$1.isStream(data)) { - let ended = false; - let errored = false; - - data.on('end', () => { - ended = true; - }); - - data.once('error', err => { - errored = true; - req.destroy(err); - }); - - data.on('close', () => { - if (!ended && !errored) { - abort(new CanceledError('Request stream has been aborted', config, req)); - } - }); - - data.pipe(req); - } else { - req.end(data); - } - }); -}; - -const cookies = platform.hasStandardBrowserEnv ? - - // Standard browser envs support document.cookie - { - write(name, value, expires, path, domain, secure) { - const cookie = [name + '=' + encodeURIComponent(value)]; - - utils$1.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString()); - - utils$1.isString(path) && cookie.push('path=' + path); - - utils$1.isString(domain) && cookie.push('domain=' + domain); - - secure === true && cookie.push('secure'); - - document.cookie = cookie.join('; '); - }, - - read(name) { - const match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)')); - return (match ? decodeURIComponent(match[3]) : null); - }, - - remove(name) { - this.write(name, '', Date.now() - 86400000); - } - } - - : - - // Non-standard browser env (web workers, react-native) lack needed support. - { - write() {}, - read() { - return null; - }, - remove() {} - }; - -const isURLSameOrigin = platform.hasStandardBrowserEnv ? - -// Standard browser envs have full support of the APIs needed to test -// whether the request URL is of the same origin as current location. - (function standardBrowserEnv() { - const msie = /(msie|trident)/i.test(navigator.userAgent); - const urlParsingNode = document.createElement('a'); - let originURL; - - /** - * Parse a URL to discover its components - * - * @param {String} url The URL to be parsed - * @returns {Object} - */ - function resolveURL(url) { - let href = url; - - if (msie) { - // IE needs attribute set twice to normalize properties - urlParsingNode.setAttribute('href', href); - href = urlParsingNode.href; - } - - urlParsingNode.setAttribute('href', href); - - // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils - return { - href: urlParsingNode.href, - protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '', - host: urlParsingNode.host, - search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '', - hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '', - hostname: urlParsingNode.hostname, - port: urlParsingNode.port, - pathname: (urlParsingNode.pathname.charAt(0) === '/') ? - urlParsingNode.pathname : - '/' + urlParsingNode.pathname - }; - } - - originURL = resolveURL(window.location.href); - - /** - * Determine if a URL shares the same origin as the current location - * - * @param {String} requestURL The URL to test - * @returns {boolean} True if URL shares the same origin, otherwise false - */ - return function isURLSameOrigin(requestURL) { - const parsed = (utils$1.isString(requestURL)) ? resolveURL(requestURL) : requestURL; - return (parsed.protocol === originURL.protocol && - parsed.host === originURL.host); - }; - })() : - - // Non standard browser envs (web workers, react-native) lack needed support. - (function nonStandardBrowserEnv() { - return function isURLSameOrigin() { - return true; - }; - })(); - -function progressEventReducer(listener, isDownloadStream) { - let bytesNotified = 0; - const _speedometer = speedometer(50, 250); - - return e => { - const loaded = e.loaded; - const total = e.lengthComputable ? e.total : undefined; - const progressBytes = loaded - bytesNotified; - const rate = _speedometer(progressBytes); - const inRange = loaded <= total; - - bytesNotified = loaded; - - const data = { - loaded, - total, - progress: total ? (loaded / total) : undefined, - bytes: progressBytes, - rate: rate ? rate : undefined, - estimated: rate && total && inRange ? (total - loaded) / rate : undefined, - event: e - }; - - data[isDownloadStream ? 'download' : 'upload'] = true; - - listener(data); - }; -} - -const isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined'; - -const xhrAdapter = isXHRAdapterSupported && function (config) { - return new Promise(function dispatchXhrRequest(resolve, reject) { - let requestData = config.data; - const requestHeaders = AxiosHeaders$1.from(config.headers).normalize(); - let {responseType, withXSRFToken} = config; - let onCanceled; - function done() { - if (config.cancelToken) { - config.cancelToken.unsubscribe(onCanceled); - } - - if (config.signal) { - config.signal.removeEventListener('abort', onCanceled); - } - } - - let contentType; - - if (utils$1.isFormData(requestData)) { - if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) { - requestHeaders.setContentType(false); // Let the browser set it - } else if ((contentType = requestHeaders.getContentType()) !== false) { - // fix semicolon duplication issue for ReactNative FormData implementation - const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : []; - requestHeaders.setContentType([type || 'multipart/form-data', ...tokens].join('; ')); - } - } - - let request = new XMLHttpRequest(); - - // HTTP basic authentication - if (config.auth) { - const username = config.auth.username || ''; - const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : ''; - requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password)); - } - - const fullPath = buildFullPath(config.baseURL, config.url); - - request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true); - - // Set the request timeout in MS - request.timeout = config.timeout; - - function onloadend() { - if (!request) { - return; - } - // Prepare the response - const responseHeaders = AxiosHeaders$1.from( - 'getAllResponseHeaders' in request && request.getAllResponseHeaders() - ); - const responseData = !responseType || responseType === 'text' || responseType === 'json' ? - request.responseText : request.response; - const response = { - data: responseData, - status: request.status, - statusText: request.statusText, - headers: responseHeaders, - config, - request - }; - - settle(function _resolve(value) { - resolve(value); - done(); - }, function _reject(err) { - reject(err); - done(); - }, response); - - // Clean up request - request = null; - } - - if ('onloadend' in request) { - // Use onloadend if available - request.onloadend = onloadend; - } else { - // Listen for ready state to emulate onloadend - request.onreadystatechange = function handleLoad() { - if (!request || request.readyState !== 4) { - return; - } - - // The request errored out and we didn't get a response, this will be - // handled by onerror instead - // With one exception: request that using file: protocol, most browsers - // will return status as 0 even though it's a successful request - if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) { - return; - } - // readystate handler is calling before onerror or ontimeout handlers, - // so we should call onloadend on the next 'tick' - setTimeout(onloadend); - }; - } - - // Handle browser request cancellation (as opposed to a manual cancellation) - request.onabort = function handleAbort() { - if (!request) { - return; - } - - reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request)); - - // Clean up request - request = null; - }; - - // Handle low level network errors - request.onerror = function handleError() { - // Real errors are hidden from us by the browser - // onerror should only fire if it's a network error - reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request)); - - // Clean up request - request = null; - }; - - // Handle timeout - request.ontimeout = function handleTimeout() { - let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded'; - const transitional = config.transitional || transitionalDefaults; - if (config.timeoutErrorMessage) { - timeoutErrorMessage = config.timeoutErrorMessage; - } - reject(new AxiosError( - timeoutErrorMessage, - transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED, - config, - request)); - - // Clean up request - request = null; - }; - - // Add xsrf header - // This is only done if running in a standard browser environment. - // Specifically not if we're in a web worker, or react-native. - if(platform.hasStandardBrowserEnv) { - withXSRFToken && utils$1.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(config)); - - if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(fullPath))) { - // Add xsrf header - const xsrfValue = config.xsrfHeaderName && config.xsrfCookieName && cookies.read(config.xsrfCookieName); - - if (xsrfValue) { - requestHeaders.set(config.xsrfHeaderName, xsrfValue); - } - } - } - - // Remove Content-Type if data is undefined - requestData === undefined && requestHeaders.setContentType(null); - - // Add headers to the request - if ('setRequestHeader' in request) { - utils$1.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) { - request.setRequestHeader(key, val); - }); - } - - // Add withCredentials to request if needed - if (!utils$1.isUndefined(config.withCredentials)) { - request.withCredentials = !!config.withCredentials; - } - - // Add responseType to request if needed - if (responseType && responseType !== 'json') { - request.responseType = config.responseType; - } - - // Handle progress if needed - if (typeof config.onDownloadProgress === 'function') { - request.addEventListener('progress', progressEventReducer(config.onDownloadProgress, true)); - } - - // Not all browsers support upload events - if (typeof config.onUploadProgress === 'function' && request.upload) { - request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress)); - } - - if (config.cancelToken || config.signal) { - // Handle cancellation - // eslint-disable-next-line func-names - onCanceled = cancel => { - if (!request) { - return; - } - reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel); - request.abort(); - request = null; - }; - - config.cancelToken && config.cancelToken.subscribe(onCanceled); - if (config.signal) { - config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled); - } - } - - const protocol = parseProtocol(fullPath); - - if (protocol && platform.protocols.indexOf(protocol) === -1) { - reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config)); - return; - } - - - // Send the request - request.send(requestData || null); - }); -}; - -const knownAdapters = { - http: httpAdapter, - xhr: xhrAdapter -}; - -utils$1.forEach(knownAdapters, (fn, value) => { - if (fn) { - try { - Object.defineProperty(fn, 'name', {value}); - } catch (e) { - // eslint-disable-next-line no-empty - } - Object.defineProperty(fn, 'adapterName', {value}); - } -}); - -const renderReason = (reason) => `- ${reason}`; - -const isResolvedHandle = (adapter) => utils$1.isFunction(adapter) || adapter === null || adapter === false; - -const adapters = { - getAdapter: (adapters) => { - adapters = utils$1.isArray(adapters) ? adapters : [adapters]; - - const {length} = adapters; - let nameOrAdapter; - let adapter; - - const rejectedReasons = {}; - - for (let i = 0; i < length; i++) { - nameOrAdapter = adapters[i]; - let id; - - adapter = nameOrAdapter; - - if (!isResolvedHandle(nameOrAdapter)) { - adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()]; - - if (adapter === undefined) { - throw new AxiosError(`Unknown adapter '${id}'`); - } - } - - if (adapter) { - break; - } - - rejectedReasons[id || '#' + i] = adapter; - } - - if (!adapter) { - - const reasons = Object.entries(rejectedReasons) - .map(([id, state]) => `adapter ${id} ` + - (state === false ? 'is not supported by the environment' : 'is not available in the build') - ); - - let s = length ? - (reasons.length > 1 ? 'since :\n' + reasons.map(renderReason).join('\n') : ' ' + renderReason(reasons[0])) : - 'as no adapter specified'; - - throw new AxiosError( - `There is no suitable adapter to dispatch the request ` + s, - 'ERR_NOT_SUPPORT' - ); - } - - return adapter; - }, - adapters: knownAdapters -}; - -/** - * Throws a `CanceledError` if cancellation has been requested. - * - * @param {Object} config The config that is to be used for the request - * - * @returns {void} - */ -function throwIfCancellationRequested(config) { - if (config.cancelToken) { - config.cancelToken.throwIfRequested(); - } - - if (config.signal && config.signal.aborted) { - throw new CanceledError(null, config); - } -} - -/** - * Dispatch a request to the server using the configured adapter. - * - * @param {object} config The config that is to be used for the request - * - * @returns {Promise} The Promise to be fulfilled - */ -function dispatchRequest(config) { - throwIfCancellationRequested(config); - - config.headers = AxiosHeaders$1.from(config.headers); - - // Transform request data - config.data = transformData.call( - config, - config.transformRequest - ); - - if (['post', 'put', 'patch'].indexOf(config.method) !== -1) { - config.headers.setContentType('application/x-www-form-urlencoded', false); - } - - const adapter = adapters.getAdapter(config.adapter || defaults$1.adapter); - - return adapter(config).then(function onAdapterResolution(response) { - throwIfCancellationRequested(config); - - // Transform response data - response.data = transformData.call( - config, - config.transformResponse, - response - ); - - response.headers = AxiosHeaders$1.from(response.headers); - - return response; - }, function onAdapterRejection(reason) { - if (!isCancel(reason)) { - throwIfCancellationRequested(config); - - // Transform response data - if (reason && reason.response) { - reason.response.data = transformData.call( - config, - config.transformResponse, - reason.response - ); - reason.response.headers = AxiosHeaders$1.from(reason.response.headers); - } - } - - return Promise.reject(reason); - }); -} - -const headersToObject = (thing) => thing instanceof AxiosHeaders$1 ? thing.toJSON() : thing; - -/** - * Config-specific merge-function which creates a new config-object - * by merging two configuration objects together. - * - * @param {Object} config1 - * @param {Object} config2 - * - * @returns {Object} New object resulting from merging config2 to config1 - */ -function mergeConfig(config1, config2) { - // eslint-disable-next-line no-param-reassign - config2 = config2 || {}; - const config = {}; - - function getMergedValue(target, source, caseless) { - if (utils$1.isPlainObject(target) && utils$1.isPlainObject(source)) { - return utils$1.merge.call({caseless}, target, source); - } else if (utils$1.isPlainObject(source)) { - return utils$1.merge({}, source); - } else if (utils$1.isArray(source)) { - return source.slice(); - } - return source; - } - - // eslint-disable-next-line consistent-return - function mergeDeepProperties(a, b, caseless) { - if (!utils$1.isUndefined(b)) { - return getMergedValue(a, b, caseless); - } else if (!utils$1.isUndefined(a)) { - return getMergedValue(undefined, a, caseless); - } - } - - // eslint-disable-next-line consistent-return - function valueFromConfig2(a, b) { - if (!utils$1.isUndefined(b)) { - return getMergedValue(undefined, b); - } - } - - // eslint-disable-next-line consistent-return - function defaultToConfig2(a, b) { - if (!utils$1.isUndefined(b)) { - return getMergedValue(undefined, b); - } else if (!utils$1.isUndefined(a)) { - return getMergedValue(undefined, a); - } - } - - // eslint-disable-next-line consistent-return - function mergeDirectKeys(a, b, prop) { - if (prop in config2) { - return getMergedValue(a, b); - } else if (prop in config1) { - return getMergedValue(undefined, a); - } - } - - const mergeMap = { - url: valueFromConfig2, - method: valueFromConfig2, - data: valueFromConfig2, - baseURL: defaultToConfig2, - transformRequest: defaultToConfig2, - transformResponse: defaultToConfig2, - paramsSerializer: defaultToConfig2, - timeout: defaultToConfig2, - timeoutMessage: defaultToConfig2, - withCredentials: defaultToConfig2, - withXSRFToken: defaultToConfig2, - adapter: defaultToConfig2, - responseType: defaultToConfig2, - xsrfCookieName: defaultToConfig2, - xsrfHeaderName: defaultToConfig2, - onUploadProgress: defaultToConfig2, - onDownloadProgress: defaultToConfig2, - decompress: defaultToConfig2, - maxContentLength: defaultToConfig2, - maxBodyLength: defaultToConfig2, - beforeRedirect: defaultToConfig2, - transport: defaultToConfig2, - httpAgent: defaultToConfig2, - httpsAgent: defaultToConfig2, - cancelToken: defaultToConfig2, - socketPath: defaultToConfig2, - responseEncoding: defaultToConfig2, - validateStatus: mergeDirectKeys, - headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true) - }; - - utils$1.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) { - const merge = mergeMap[prop] || mergeDeepProperties; - const configValue = merge(config1[prop], config2[prop], prop); - (utils$1.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue); - }); - - return config; -} - -const validators$1 = {}; - -// eslint-disable-next-line func-names -['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => { - validators$1[type] = function validator(thing) { - return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type; - }; -}); - -const deprecatedWarnings = {}; - -/** - * Transitional option validator - * - * @param {function|boolean?} validator - set to false if the transitional option has been removed - * @param {string?} version - deprecated version / removed since version - * @param {string?} message - some message with additional info - * - * @returns {function} - */ -validators$1.transitional = function transitional(validator, version, message) { - function formatMessage(opt, desc) { - return '[Axios v' + VERSION + '] Transitional option \'' + opt + '\'' + desc + (message ? '. ' + message : ''); - } - - // eslint-disable-next-line func-names - return (value, opt, opts) => { - if (validator === false) { - throw new AxiosError( - formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')), - AxiosError.ERR_DEPRECATED - ); - } - - if (version && !deprecatedWarnings[opt]) { - deprecatedWarnings[opt] = true; - // eslint-disable-next-line no-console - console.warn( - formatMessage( - opt, - ' has been deprecated since v' + version + ' and will be removed in the near future' - ) - ); - } - - return validator ? validator(value, opt, opts) : true; - }; -}; - -/** - * Assert object's properties type - * - * @param {object} options - * @param {object} schema - * @param {boolean?} allowUnknown - * - * @returns {object} - */ - -function assertOptions(options, schema, allowUnknown) { - if (typeof options !== 'object') { - throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE); - } - const keys = Object.keys(options); - let i = keys.length; - while (i-- > 0) { - const opt = keys[i]; - const validator = schema[opt]; - if (validator) { - const value = options[opt]; - const result = value === undefined || validator(value, opt, options); - if (result !== true) { - throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE); - } - continue; - } - if (allowUnknown !== true) { - throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION); - } - } -} - -const validator = { - assertOptions, - validators: validators$1 -}; - -const validators = validator.validators; - -/** - * Create a new instance of Axios - * - * @param {Object} instanceConfig The default config for the instance - * - * @return {Axios} A new instance of Axios - */ -class Axios { - constructor(instanceConfig) { - this.defaults = instanceConfig; - this.interceptors = { - request: new InterceptorManager$1(), - response: new InterceptorManager$1() - }; - } - - /** - * Dispatch a request - * - * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults) - * @param {?Object} config - * - * @returns {Promise} The Promise to be fulfilled - */ - async request(configOrUrl, config) { - try { - return await this._request(configOrUrl, config); - } catch (err) { - if (err instanceof Error) { - let dummy; - - Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error()); - - // slice off the Error: ... line - const stack = dummy.stack ? dummy.stack.replace(/^.+\n/, '') : ''; - - if (!err.stack) { - err.stack = stack; - // match without the 2 top stack lines - } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\n.+\n/, ''))) { - err.stack += '\n' + stack; - } - } - - throw err; - } - } - - _request(configOrUrl, config) { - /*eslint no-param-reassign:0*/ - // Allow for axios('example/url'[, config]) a la fetch API - if (typeof configOrUrl === 'string') { - config = config || {}; - config.url = configOrUrl; - } else { - config = configOrUrl || {}; - } - - config = mergeConfig(this.defaults, config); - - const {transitional, paramsSerializer, headers} = config; - - if (transitional !== undefined) { - validator.assertOptions(transitional, { - silentJSONParsing: validators.transitional(validators.boolean), - forcedJSONParsing: validators.transitional(validators.boolean), - clarifyTimeoutError: validators.transitional(validators.boolean) - }, false); - } - - if (paramsSerializer != null) { - if (utils$1.isFunction(paramsSerializer)) { - config.paramsSerializer = { - serialize: paramsSerializer - }; - } else { - validator.assertOptions(paramsSerializer, { - encode: validators.function, - serialize: validators.function - }, true); - } - } - - // Set config.method - config.method = (config.method || this.defaults.method || 'get').toLowerCase(); - - // Flatten headers - let contextHeaders = headers && utils$1.merge( - headers.common, - headers[config.method] - ); - - headers && utils$1.forEach( - ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], - (method) => { - delete headers[method]; - } - ); - - config.headers = AxiosHeaders$1.concat(contextHeaders, headers); - - // filter out skipped interceptors - const requestInterceptorChain = []; - let synchronousRequestInterceptors = true; - this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) { - if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) { - return; - } - - synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous; - - requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected); - }); - - const responseInterceptorChain = []; - this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) { - responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected); - }); - - let promise; - let i = 0; - let len; - - if (!synchronousRequestInterceptors) { - const chain = [dispatchRequest.bind(this), undefined]; - chain.unshift.apply(chain, requestInterceptorChain); - chain.push.apply(chain, responseInterceptorChain); - len = chain.length; - - promise = Promise.resolve(config); - - while (i < len) { - promise = promise.then(chain[i++], chain[i++]); - } - - return promise; - } - - len = requestInterceptorChain.length; - - let newConfig = config; - - i = 0; - - while (i < len) { - const onFulfilled = requestInterceptorChain[i++]; - const onRejected = requestInterceptorChain[i++]; - try { - newConfig = onFulfilled(newConfig); - } catch (error) { - onRejected.call(this, error); - break; - } - } - - try { - promise = dispatchRequest.call(this, newConfig); - } catch (error) { - return Promise.reject(error); - } - - i = 0; - len = responseInterceptorChain.length; - - while (i < len) { - promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]); - } - - return promise; - } - - getUri(config) { - config = mergeConfig(this.defaults, config); - const fullPath = buildFullPath(config.baseURL, config.url); - return buildURL(fullPath, config.params, config.paramsSerializer); - } -} - -// Provide aliases for supported request methods -utils$1.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) { - /*eslint func-names:0*/ - Axios.prototype[method] = function(url, config) { - return this.request(mergeConfig(config || {}, { - method, - url, - data: (config || {}).data - })); - }; -}); - -utils$1.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { - /*eslint func-names:0*/ - - function generateHTTPMethod(isForm) { - return function httpMethod(url, data, config) { - return this.request(mergeConfig(config || {}, { - method, - headers: isForm ? { - 'Content-Type': 'multipart/form-data' - } : {}, - url, - data - })); - }; - } - - Axios.prototype[method] = generateHTTPMethod(); - - Axios.prototype[method + 'Form'] = generateHTTPMethod(true); -}); - -const Axios$1 = Axios; - -/** - * A `CancelToken` is an object that can be used to request cancellation of an operation. - * - * @param {Function} executor The executor function. - * - * @returns {CancelToken} - */ -class CancelToken { - constructor(executor) { - if (typeof executor !== 'function') { - throw new TypeError('executor must be a function.'); - } - - let resolvePromise; - - this.promise = new Promise(function promiseExecutor(resolve) { - resolvePromise = resolve; - }); - - const token = this; - - // eslint-disable-next-line func-names - this.promise.then(cancel => { - if (!token._listeners) return; - - let i = token._listeners.length; - - while (i-- > 0) { - token._listeners[i](cancel); - } - token._listeners = null; - }); - - // eslint-disable-next-line func-names - this.promise.then = onfulfilled => { - let _resolve; - // eslint-disable-next-line func-names - const promise = new Promise(resolve => { - token.subscribe(resolve); - _resolve = resolve; - }).then(onfulfilled); - - promise.cancel = function reject() { - token.unsubscribe(_resolve); - }; - - return promise; - }; - - executor(function cancel(message, config, request) { - if (token.reason) { - // Cancellation has already been requested - return; - } - - token.reason = new CanceledError(message, config, request); - resolvePromise(token.reason); - }); - } - - /** - * Throws a `CanceledError` if cancellation has been requested. - */ - throwIfRequested() { - if (this.reason) { - throw this.reason; - } - } - - /** - * Subscribe to the cancel signal - */ - - subscribe(listener) { - if (this.reason) { - listener(this.reason); - return; - } - - if (this._listeners) { - this._listeners.push(listener); - } else { - this._listeners = [listener]; - } - } - - /** - * Unsubscribe from the cancel signal - */ - - unsubscribe(listener) { - if (!this._listeners) { - return; - } - const index = this._listeners.indexOf(listener); - if (index !== -1) { - this._listeners.splice(index, 1); - } - } - - /** - * Returns an object that contains a new `CancelToken` and a function that, when called, - * cancels the `CancelToken`. - */ - static source() { - let cancel; - const token = new CancelToken(function executor(c) { - cancel = c; - }); - return { - token, - cancel - }; - } -} - -const CancelToken$1 = CancelToken; - -/** - * Syntactic sugar for invoking a function and expanding an array for arguments. - * - * Common use case would be to use `Function.prototype.apply`. - * - * ```js - * function f(x, y, z) {} - * var args = [1, 2, 3]; - * f.apply(null, args); - * ``` - * - * With `spread` this example can be re-written. - * - * ```js - * spread(function(x, y, z) {})([1, 2, 3]); - * ``` - * - * @param {Function} callback - * - * @returns {Function} - */ -function spread(callback) { - return function wrap(arr) { - return callback.apply(null, arr); - }; -} - -/** - * Determines whether the payload is an error thrown by Axios - * - * @param {*} payload The value to test - * - * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false - */ -function isAxiosError(payload) { - return utils$1.isObject(payload) && (payload.isAxiosError === true); -} - -const HttpStatusCode = { - Continue: 100, - SwitchingProtocols: 101, - Processing: 102, - EarlyHints: 103, - Ok: 200, - Created: 201, - Accepted: 202, - NonAuthoritativeInformation: 203, - NoContent: 204, - ResetContent: 205, - PartialContent: 206, - MultiStatus: 207, - AlreadyReported: 208, - ImUsed: 226, - MultipleChoices: 300, - MovedPermanently: 301, - Found: 302, - SeeOther: 303, - NotModified: 304, - UseProxy: 305, - Unused: 306, - TemporaryRedirect: 307, - PermanentRedirect: 308, - BadRequest: 400, - Unauthorized: 401, - PaymentRequired: 402, - Forbidden: 403, - NotFound: 404, - MethodNotAllowed: 405, - NotAcceptable: 406, - ProxyAuthenticationRequired: 407, - RequestTimeout: 408, - Conflict: 409, - Gone: 410, - LengthRequired: 411, - PreconditionFailed: 412, - PayloadTooLarge: 413, - UriTooLong: 414, - UnsupportedMediaType: 415, - RangeNotSatisfiable: 416, - ExpectationFailed: 417, - ImATeapot: 418, - MisdirectedRequest: 421, - UnprocessableEntity: 422, - Locked: 423, - FailedDependency: 424, - TooEarly: 425, - UpgradeRequired: 426, - PreconditionRequired: 428, - TooManyRequests: 429, - RequestHeaderFieldsTooLarge: 431, - UnavailableForLegalReasons: 451, - InternalServerError: 500, - NotImplemented: 501, - BadGateway: 502, - ServiceUnavailable: 503, - GatewayTimeout: 504, - HttpVersionNotSupported: 505, - VariantAlsoNegotiates: 506, - InsufficientStorage: 507, - LoopDetected: 508, - NotExtended: 510, - NetworkAuthenticationRequired: 511, -}; - -Object.entries(HttpStatusCode).forEach(([key, value]) => { - HttpStatusCode[value] = key; -}); - -const HttpStatusCode$1 = HttpStatusCode; - -/** - * Create an instance of Axios - * - * @param {Object} defaultConfig The default config for the instance - * - * @returns {Axios} A new instance of Axios - */ -function createInstance(defaultConfig) { - const context = new Axios$1(defaultConfig); - const instance = bind(Axios$1.prototype.request, context); - - // Copy axios.prototype to instance - utils$1.extend(instance, Axios$1.prototype, context, {allOwnKeys: true}); - - // Copy context to instance - utils$1.extend(instance, context, null, {allOwnKeys: true}); - - // Factory for creating new instances - instance.create = function create(instanceConfig) { - return createInstance(mergeConfig(defaultConfig, instanceConfig)); - }; - - return instance; -} - -// Create the default instance to be exported -const axios = createInstance(defaults$1); - -// Expose Axios class to allow class inheritance -axios.Axios = Axios$1; - -// Expose Cancel & CancelToken -axios.CanceledError = CanceledError; -axios.CancelToken = CancelToken$1; -axios.isCancel = isCancel; -axios.VERSION = VERSION; -axios.toFormData = toFormData; - -// Expose AxiosError class -axios.AxiosError = AxiosError; - -// alias for CanceledError for backward compatibility -axios.Cancel = axios.CanceledError; - -// Expose all/spread -axios.all = function all(promises) { - return Promise.all(promises); -}; - -axios.spread = spread; - -// Expose isAxiosError -axios.isAxiosError = isAxiosError; - -// Expose mergeConfig -axios.mergeConfig = mergeConfig; - -axios.AxiosHeaders = AxiosHeaders$1; - -axios.formToJSON = thing => formDataToJSON(utils$1.isHTMLForm(thing) ? new FormData(thing) : thing); - -axios.getAdapter = adapters.getAdapter; - -axios.HttpStatusCode = HttpStatusCode$1; - -axios.default = axios; - -module.exports = axios; -//# sourceMappingURL=axios.cjs.map diff --git a/node_modules/axios/dist/node/axios.cjs.map b/node_modules/axios/dist/node/axios.cjs.map deleted file mode 100644 index ab531c8..0000000 --- a/node_modules/axios/dist/node/axios.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"axios.cjs","sources":["../../lib/helpers/bind.js","../../lib/utils.js","../../lib/core/AxiosError.js","../../lib/helpers/toFormData.js","../../lib/helpers/AxiosURLSearchParams.js","../../lib/helpers/buildURL.js","../../lib/core/InterceptorManager.js","../../lib/defaults/transitional.js","../../lib/platform/node/classes/URLSearchParams.js","../../lib/platform/node/index.js","../../lib/platform/common/utils.js","../../lib/platform/index.js","../../lib/helpers/toURLEncodedForm.js","../../lib/helpers/formDataToJSON.js","../../lib/defaults/index.js","../../lib/helpers/parseHeaders.js","../../lib/core/AxiosHeaders.js","../../lib/core/transformData.js","../../lib/cancel/isCancel.js","../../lib/cancel/CanceledError.js","../../lib/core/settle.js","../../lib/helpers/isAbsoluteURL.js","../../lib/helpers/combineURLs.js","../../lib/core/buildFullPath.js","../../lib/env/data.js","../../lib/helpers/parseProtocol.js","../../lib/helpers/fromDataURI.js","../../lib/helpers/throttle.js","../../lib/helpers/speedometer.js","../../lib/helpers/AxiosTransformStream.js","../../lib/helpers/readBlob.js","../../lib/helpers/formDataToStream.js","../../lib/helpers/ZlibHeaderTransformStream.js","../../lib/helpers/callbackify.js","../../lib/adapters/http.js","../../lib/helpers/cookies.js","../../lib/helpers/isURLSameOrigin.js","../../lib/adapters/xhr.js","../../lib/adapters/adapters.js","../../lib/core/dispatchRequest.js","../../lib/core/mergeConfig.js","../../lib/helpers/validator.js","../../lib/core/Axios.js","../../lib/cancel/CancelToken.js","../../lib/helpers/spread.js","../../lib/helpers/isAxiosError.js","../../lib/helpers/HttpStatusCode.js","../../lib/axios.js"],"sourcesContent":["'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n value = +value;\n return Number.isFinite(value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0]\n }\n\n return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","'use strict';\n\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/**\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/**\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/**\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) 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/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\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/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} 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\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\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\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\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} 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\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 } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\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 + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","'use strict';\n\nimport url from 'url';\nexport default url.URLSearchParams;\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\n\nexport default {\n isNode: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob: typeof Blob !== 'undefined' && Blob || null\n },\n protocols: [ 'http', 'https', 'file', 'data' ]\n};\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = (\n (product) => {\n return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0\n })(typeof navigator !== 'undefined' && navigator.product);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","export const VERSION = \"1.6.7\";","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport parseProtocol from './parseProtocol.js';\nimport platform from '../platform/index.js';\n\nconst DATA_URL_PATTERN = /^(?:([^;]+);)?(?:[^;]+;)?(base64|),([\\s\\S]*)$/;\n\n/**\n * Parse data uri to a Buffer or Blob\n *\n * @param {String} uri\n * @param {?Boolean} asBlob\n * @param {?Object} options\n * @param {?Function} options.Blob\n *\n * @returns {Buffer|Blob}\n */\nexport default function fromDataURI(uri, asBlob, options) {\n const _Blob = options && options.Blob || platform.classes.Blob;\n const protocol = parseProtocol(uri);\n\n if (asBlob === undefined && _Blob) {\n asBlob = true;\n }\n\n if (protocol === 'data') {\n uri = protocol.length ? uri.slice(protocol.length + 1) : uri;\n\n const match = DATA_URL_PATTERN.exec(uri);\n\n if (!match) {\n throw new AxiosError('Invalid URL', AxiosError.ERR_INVALID_URL);\n }\n\n const mime = match[1];\n const isBase64 = match[2];\n const body = match[3];\n const buffer = Buffer.from(decodeURIComponent(body), isBase64 ? 'base64' : 'utf8');\n\n if (asBlob) {\n if (!_Blob) {\n throw new AxiosError('Blob is not supported', AxiosError.ERR_NOT_SUPPORT);\n }\n\n return new _Blob([buffer], {type: mime});\n }\n\n return buffer;\n }\n\n throw new AxiosError('Unsupported protocol ' + protocol, AxiosError.ERR_NOT_SUPPORT);\n}\n","'use strict';\n\n/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n const threshold = 1000 / freq;\n let timer = null;\n return function throttled(force, args) {\n const now = Date.now();\n if (force || now - timestamp > threshold) {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n timestamp = now;\n return fn.apply(null, args);\n }\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n timestamp = Date.now();\n return fn.apply(null, args);\n }, threshold - (now - timestamp));\n }\n };\n}\n\nexport default throttle;\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","'use strict';\n\nimport stream from 'stream';\nimport utils from '../utils.js';\nimport throttle from './throttle.js';\nimport speedometer from './speedometer.js';\n\nconst kInternals = Symbol('internals');\n\nclass AxiosTransformStream extends stream.Transform{\n constructor(options) {\n options = utils.toFlatObject(options, {\n maxRate: 0,\n chunkSize: 64 * 1024,\n minChunkSize: 100,\n timeWindow: 500,\n ticksRate: 2,\n samplesCount: 15\n }, null, (prop, source) => {\n return !utils.isUndefined(source[prop]);\n });\n\n super({\n readableHighWaterMark: options.chunkSize\n });\n\n const self = this;\n\n const internals = this[kInternals] = {\n length: options.length,\n timeWindow: options.timeWindow,\n ticksRate: options.ticksRate,\n chunkSize: options.chunkSize,\n maxRate: options.maxRate,\n minChunkSize: options.minChunkSize,\n bytesSeen: 0,\n isCaptured: false,\n notifiedBytesLoaded: 0,\n ts: Date.now(),\n bytes: 0,\n onReadCallback: null\n };\n\n const _speedometer = speedometer(internals.ticksRate * options.samplesCount, internals.timeWindow);\n\n this.on('newListener', event => {\n if (event === 'progress') {\n if (!internals.isCaptured) {\n internals.isCaptured = true;\n }\n }\n });\n\n let bytesNotified = 0;\n\n internals.updateProgress = throttle(function throttledHandler() {\n const totalBytes = internals.length;\n const bytesTransferred = internals.bytesSeen;\n const progressBytes = bytesTransferred - bytesNotified;\n if (!progressBytes || self.destroyed) return;\n\n const rate = _speedometer(progressBytes);\n\n bytesNotified = bytesTransferred;\n\n process.nextTick(() => {\n self.emit('progress', {\n 'loaded': bytesTransferred,\n 'total': totalBytes,\n 'progress': totalBytes ? (bytesTransferred / totalBytes) : undefined,\n 'bytes': progressBytes,\n 'rate': rate ? rate : undefined,\n 'estimated': rate && totalBytes && bytesTransferred <= totalBytes ?\n (totalBytes - bytesTransferred) / rate : undefined\n });\n });\n }, internals.ticksRate);\n\n const onFinish = () => {\n internals.updateProgress(true);\n };\n\n this.once('end', onFinish);\n this.once('error', onFinish);\n }\n\n _read(size) {\n const internals = this[kInternals];\n\n if (internals.onReadCallback) {\n internals.onReadCallback();\n }\n\n return super._read(size);\n }\n\n _transform(chunk, encoding, callback) {\n const self = this;\n const internals = this[kInternals];\n const maxRate = internals.maxRate;\n\n const readableHighWaterMark = this.readableHighWaterMark;\n\n const timeWindow = internals.timeWindow;\n\n const divider = 1000 / timeWindow;\n const bytesThreshold = (maxRate / divider);\n const minChunkSize = internals.minChunkSize !== false ? Math.max(internals.minChunkSize, bytesThreshold * 0.01) : 0;\n\n function pushChunk(_chunk, _callback) {\n const bytes = Buffer.byteLength(_chunk);\n internals.bytesSeen += bytes;\n internals.bytes += bytes;\n\n if (internals.isCaptured) {\n internals.updateProgress();\n }\n\n if (self.push(_chunk)) {\n process.nextTick(_callback);\n } else {\n internals.onReadCallback = () => {\n internals.onReadCallback = null;\n process.nextTick(_callback);\n };\n }\n }\n\n const transformChunk = (_chunk, _callback) => {\n const chunkSize = Buffer.byteLength(_chunk);\n let chunkRemainder = null;\n let maxChunkSize = readableHighWaterMark;\n let bytesLeft;\n let passed = 0;\n\n if (maxRate) {\n const now = Date.now();\n\n if (!internals.ts || (passed = (now - internals.ts)) >= timeWindow) {\n internals.ts = now;\n bytesLeft = bytesThreshold - internals.bytes;\n internals.bytes = bytesLeft < 0 ? -bytesLeft : 0;\n passed = 0;\n }\n\n bytesLeft = bytesThreshold - internals.bytes;\n }\n\n if (maxRate) {\n if (bytesLeft <= 0) {\n // next time window\n return setTimeout(() => {\n _callback(null, _chunk);\n }, timeWindow - passed);\n }\n\n if (bytesLeft < maxChunkSize) {\n maxChunkSize = bytesLeft;\n }\n }\n\n if (maxChunkSize && chunkSize > maxChunkSize && (chunkSize - maxChunkSize) > minChunkSize) {\n chunkRemainder = _chunk.subarray(maxChunkSize);\n _chunk = _chunk.subarray(0, maxChunkSize);\n }\n\n pushChunk(_chunk, chunkRemainder ? () => {\n process.nextTick(_callback, null, chunkRemainder);\n } : _callback);\n };\n\n transformChunk(chunk, function transformNextChunk(err, _chunk) {\n if (err) {\n return callback(err);\n }\n\n if (_chunk) {\n transformChunk(_chunk, transformNextChunk);\n } else {\n callback(null);\n }\n });\n }\n\n setLength(length) {\n this[kInternals].length = +length;\n return this;\n }\n}\n\nexport default AxiosTransformStream;\n","const {asyncIterator} = Symbol;\n\nconst readBlob = async function* (blob) {\n if (blob.stream) {\n yield* blob.stream()\n } else if (blob.arrayBuffer) {\n yield await blob.arrayBuffer()\n } else if (blob[asyncIterator]) {\n yield* blob[asyncIterator]();\n } else {\n yield blob;\n }\n}\n\nexport default readBlob;\n","import {TextEncoder} from 'util';\nimport {Readable} from 'stream';\nimport utils from \"../utils.js\";\nimport readBlob from \"./readBlob.js\";\n\nconst BOUNDARY_ALPHABET = utils.ALPHABET.ALPHA_DIGIT + '-_';\n\nconst textEncoder = new TextEncoder();\n\nconst CRLF = '\\r\\n';\nconst CRLF_BYTES = textEncoder.encode(CRLF);\nconst CRLF_BYTES_COUNT = 2;\n\nclass FormDataPart {\n constructor(name, value) {\n const {escapeName} = this.constructor;\n const isStringValue = utils.isString(value);\n\n let headers = `Content-Disposition: form-data; name=\"${escapeName(name)}\"${\n !isStringValue && value.name ? `; filename=\"${escapeName(value.name)}\"` : ''\n }${CRLF}`;\n\n if (isStringValue) {\n value = textEncoder.encode(String(value).replace(/\\r?\\n|\\r\\n?/g, CRLF));\n } else {\n headers += `Content-Type: ${value.type || \"application/octet-stream\"}${CRLF}`\n }\n\n this.headers = textEncoder.encode(headers + CRLF);\n\n this.contentLength = isStringValue ? value.byteLength : value.size;\n\n this.size = this.headers.byteLength + this.contentLength + CRLF_BYTES_COUNT;\n\n this.name = name;\n this.value = value;\n }\n\n async *encode(){\n yield this.headers;\n\n const {value} = this;\n\n if(utils.isTypedArray(value)) {\n yield value;\n } else {\n yield* readBlob(value);\n }\n\n yield CRLF_BYTES;\n }\n\n static escapeName(name) {\n return String(name).replace(/[\\r\\n\"]/g, (match) => ({\n '\\r' : '%0D',\n '\\n' : '%0A',\n '\"' : '%22',\n }[match]));\n }\n}\n\nconst formDataToStream = (form, headersHandler, options) => {\n const {\n tag = 'form-data-boundary',\n size = 25,\n boundary = tag + '-' + utils.generateString(size, BOUNDARY_ALPHABET)\n } = options || {};\n\n if(!utils.isFormData(form)) {\n throw TypeError('FormData instance required');\n }\n\n if (boundary.length < 1 || boundary.length > 70) {\n throw Error('boundary must be 10-70 characters long')\n }\n\n const boundaryBytes = textEncoder.encode('--' + boundary + CRLF);\n const footerBytes = textEncoder.encode('--' + boundary + '--' + CRLF + CRLF);\n let contentLength = footerBytes.byteLength;\n\n const parts = Array.from(form.entries()).map(([name, value]) => {\n const part = new FormDataPart(name, value);\n contentLength += part.size;\n return part;\n });\n\n contentLength += boundaryBytes.byteLength * parts.length;\n\n contentLength = utils.toFiniteNumber(contentLength);\n\n const computedHeaders = {\n 'Content-Type': `multipart/form-data; boundary=${boundary}`\n }\n\n if (Number.isFinite(contentLength)) {\n computedHeaders['Content-Length'] = contentLength;\n }\n\n headersHandler && headersHandler(computedHeaders);\n\n return Readable.from((async function *() {\n for(const part of parts) {\n yield boundaryBytes;\n yield* part.encode();\n }\n\n yield footerBytes;\n })());\n};\n\nexport default formDataToStream;\n","\"use strict\";\n\nimport stream from \"stream\";\n\nclass ZlibHeaderTransformStream extends stream.Transform {\n __transform(chunk, encoding, callback) {\n this.push(chunk);\n callback();\n }\n\n _transform(chunk, encoding, callback) {\n if (chunk.length !== 0) {\n this._transform = this.__transform;\n\n // Add Default Compression headers if no zlib headers are present\n if (chunk[0] !== 120) { // Hex: 78\n const header = Buffer.alloc(2);\n header[0] = 120; // Hex: 78\n header[1] = 156; // Hex: 9C \n this.push(header, encoding);\n }\n }\n\n this.__transform(chunk, encoding, callback);\n }\n}\n\nexport default ZlibHeaderTransformStream;\n","import utils from \"../utils.js\";\n\nconst callbackify = (fn, reducer) => {\n return utils.isAsyncFn(fn) ? function (...args) {\n const cb = args.pop();\n fn.apply(this, args).then((value) => {\n try {\n reducer ? cb(null, ...reducer(value)) : cb(null, value);\n } catch (err) {\n cb(err);\n }\n }, cb);\n } : fn;\n}\n\nexport default callbackify;\n","'use strict';\n\nimport utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport buildURL from './../helpers/buildURL.js';\nimport {getProxyForUrl} from 'proxy-from-env';\nimport http from 'http';\nimport https from 'https';\nimport util from 'util';\nimport followRedirects from 'follow-redirects';\nimport zlib from 'zlib';\nimport {VERSION} from '../env/data.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport platform from '../platform/index.js';\nimport fromDataURI from '../helpers/fromDataURI.js';\nimport stream from 'stream';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport AxiosTransformStream from '../helpers/AxiosTransformStream.js';\nimport EventEmitter from 'events';\nimport formDataToStream from \"../helpers/formDataToStream.js\";\nimport readBlob from \"../helpers/readBlob.js\";\nimport ZlibHeaderTransformStream from '../helpers/ZlibHeaderTransformStream.js';\nimport callbackify from \"../helpers/callbackify.js\";\n\nconst zlibOptions = {\n flush: zlib.constants.Z_SYNC_FLUSH,\n finishFlush: zlib.constants.Z_SYNC_FLUSH\n};\n\nconst brotliOptions = {\n flush: zlib.constants.BROTLI_OPERATION_FLUSH,\n finishFlush: zlib.constants.BROTLI_OPERATION_FLUSH\n}\n\nconst isBrotliSupported = utils.isFunction(zlib.createBrotliDecompress);\n\nconst {http: httpFollow, https: httpsFollow} = followRedirects;\n\nconst isHttps = /https:?/;\n\nconst supportedProtocols = platform.protocols.map(protocol => {\n return protocol + ':';\n});\n\n/**\n * If the proxy or config beforeRedirects functions are defined, call them with the options\n * object.\n *\n * @param {Object} options - The options object that was passed to the request.\n *\n * @returns {Object}\n */\nfunction dispatchBeforeRedirect(options, responseDetails) {\n if (options.beforeRedirects.proxy) {\n options.beforeRedirects.proxy(options);\n }\n if (options.beforeRedirects.config) {\n options.beforeRedirects.config(options, responseDetails);\n }\n}\n\n/**\n * If the proxy or config afterRedirects functions are defined, call them with the options\n *\n * @param {http.ClientRequestArgs} options\n * @param {AxiosProxyConfig} configProxy configuration from Axios options object\n * @param {string} location\n *\n * @returns {http.ClientRequestArgs}\n */\nfunction setProxy(options, configProxy, location) {\n let proxy = configProxy;\n if (!proxy && proxy !== false) {\n const proxyUrl = getProxyForUrl(location);\n if (proxyUrl) {\n proxy = new URL(proxyUrl);\n }\n }\n if (proxy) {\n // Basic proxy authorization\n if (proxy.username) {\n proxy.auth = (proxy.username || '') + ':' + (proxy.password || '');\n }\n\n if (proxy.auth) {\n // Support proxy auth object form\n if (proxy.auth.username || proxy.auth.password) {\n proxy.auth = (proxy.auth.username || '') + ':' + (proxy.auth.password || '');\n }\n const base64 = Buffer\n .from(proxy.auth, 'utf8')\n .toString('base64');\n options.headers['Proxy-Authorization'] = 'Basic ' + base64;\n }\n\n options.headers.host = options.hostname + (options.port ? ':' + options.port : '');\n const proxyHost = proxy.hostname || proxy.host;\n options.hostname = proxyHost;\n // Replace 'host' since options is not a URL object\n options.host = proxyHost;\n options.port = proxy.port;\n options.path = location;\n if (proxy.protocol) {\n options.protocol = proxy.protocol.includes(':') ? proxy.protocol : `${proxy.protocol}:`;\n }\n }\n\n options.beforeRedirects.proxy = function beforeRedirect(redirectOptions) {\n // Configure proxy for redirected request, passing the original config proxy to apply\n // the exact same logic as if the redirected request was performed by axios directly.\n setProxy(redirectOptions, configProxy, redirectOptions.href);\n };\n}\n\nconst isHttpAdapterSupported = typeof process !== 'undefined' && utils.kindOf(process) === 'process';\n\n// temporary hotfix\n\nconst wrapAsync = (asyncExecutor) => {\n return new Promise((resolve, reject) => {\n let onDone;\n let isDone;\n\n const done = (value, isRejected) => {\n if (isDone) return;\n isDone = true;\n onDone && onDone(value, isRejected);\n }\n\n const _resolve = (value) => {\n done(value);\n resolve(value);\n };\n\n const _reject = (reason) => {\n done(reason, true);\n reject(reason);\n }\n\n asyncExecutor(_resolve, _reject, (onDoneHandler) => (onDone = onDoneHandler)).catch(_reject);\n })\n};\n\nconst resolveFamily = ({address, family}) => {\n if (!utils.isString(address)) {\n throw TypeError('address must be a string');\n }\n return ({\n address,\n family: family || (address.indexOf('.') < 0 ? 6 : 4)\n });\n}\n\nconst buildAddressEntry = (address, family) => resolveFamily(utils.isObject(address) ? address : {address, family});\n\n/*eslint consistent-return:0*/\nexport default isHttpAdapterSupported && function httpAdapter(config) {\n return wrapAsync(async function dispatchHttpRequest(resolve, reject, onDone) {\n let {data, lookup, family} = config;\n const {responseType, responseEncoding} = config;\n const method = config.method.toUpperCase();\n let isDone;\n let rejected = false;\n let req;\n\n if (lookup) {\n const _lookup = callbackify(lookup, (value) => utils.isArray(value) ? value : [value]);\n // hotfix to support opt.all option which is required for node 20.x\n lookup = (hostname, opt, cb) => {\n _lookup(hostname, opt, (err, arg0, arg1) => {\n if (err) {\n return cb(err);\n }\n\n const addresses = utils.isArray(arg0) ? arg0.map(addr => buildAddressEntry(addr)) : [buildAddressEntry(arg0, arg1)];\n\n opt.all ? cb(err, addresses) : cb(err, addresses[0].address, addresses[0].family);\n });\n }\n }\n\n // temporary internal emitter until the AxiosRequest class will be implemented\n const emitter = new EventEmitter();\n\n const onFinished = () => {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(abort);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', abort);\n }\n\n emitter.removeAllListeners();\n }\n\n onDone((value, isRejected) => {\n isDone = true;\n if (isRejected) {\n rejected = true;\n onFinished();\n }\n });\n\n function abort(reason) {\n emitter.emit('abort', !reason || reason.type ? new CanceledError(null, config, req) : reason);\n }\n\n emitter.once('abort', reject);\n\n if (config.cancelToken || config.signal) {\n config.cancelToken && config.cancelToken.subscribe(abort);\n if (config.signal) {\n config.signal.aborted ? abort() : config.signal.addEventListener('abort', abort);\n }\n }\n\n // Parse url\n const fullPath = buildFullPath(config.baseURL, config.url);\n const parsed = new URL(fullPath, 'http://localhost');\n const protocol = parsed.protocol || supportedProtocols[0];\n\n if (protocol === 'data:') {\n let convertedData;\n\n if (method !== 'GET') {\n return settle(resolve, reject, {\n status: 405,\n statusText: 'method not allowed',\n headers: {},\n config\n });\n }\n\n try {\n convertedData = fromDataURI(config.url, responseType === 'blob', {\n Blob: config.env && config.env.Blob\n });\n } catch (err) {\n throw AxiosError.from(err, AxiosError.ERR_BAD_REQUEST, config);\n }\n\n if (responseType === 'text') {\n convertedData = convertedData.toString(responseEncoding);\n\n if (!responseEncoding || responseEncoding === 'utf8') {\n convertedData = utils.stripBOM(convertedData);\n }\n } else if (responseType === 'stream') {\n convertedData = stream.Readable.from(convertedData);\n }\n\n return settle(resolve, reject, {\n data: convertedData,\n status: 200,\n statusText: 'OK',\n headers: new AxiosHeaders(),\n config\n });\n }\n\n if (supportedProtocols.indexOf(protocol) === -1) {\n return reject(new AxiosError(\n 'Unsupported protocol ' + protocol,\n AxiosError.ERR_BAD_REQUEST,\n config\n ));\n }\n\n const headers = AxiosHeaders.from(config.headers).normalize();\n\n // Set User-Agent (required by some servers)\n // See https://github.com/axios/axios/issues/69\n // User-Agent is specified; handle case where no UA header is desired\n // Only set header if it hasn't been set in config\n headers.set('User-Agent', 'axios/' + VERSION, false);\n\n const onDownloadProgress = config.onDownloadProgress;\n const onUploadProgress = config.onUploadProgress;\n const maxRate = config.maxRate;\n let maxUploadRate = undefined;\n let maxDownloadRate = undefined;\n\n // support for spec compliant FormData objects\n if (utils.isSpecCompliantForm(data)) {\n const userBoundary = headers.getContentType(/boundary=([-_\\w\\d]{10,70})/i);\n\n data = formDataToStream(data, (formHeaders) => {\n headers.set(formHeaders);\n }, {\n tag: `axios-${VERSION}-boundary`,\n boundary: userBoundary && userBoundary[1] || undefined\n });\n // support for https://www.npmjs.com/package/form-data api\n } else if (utils.isFormData(data) && utils.isFunction(data.getHeaders)) {\n headers.set(data.getHeaders());\n\n if (!headers.hasContentLength()) {\n try {\n const knownLength = await util.promisify(data.getLength).call(data);\n Number.isFinite(knownLength) && knownLength >= 0 && headers.setContentLength(knownLength);\n /*eslint no-empty:0*/\n } catch (e) {\n }\n }\n } else if (utils.isBlob(data)) {\n data.size && headers.setContentType(data.type || 'application/octet-stream');\n headers.setContentLength(data.size || 0);\n data = stream.Readable.from(readBlob(data));\n } else if (data && !utils.isStream(data)) {\n if (Buffer.isBuffer(data)) {\n // Nothing to do...\n } else if (utils.isArrayBuffer(data)) {\n data = Buffer.from(new Uint8Array(data));\n } else if (utils.isString(data)) {\n data = Buffer.from(data, 'utf-8');\n } else {\n return reject(new AxiosError(\n 'Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream',\n AxiosError.ERR_BAD_REQUEST,\n config\n ));\n }\n\n // Add Content-Length header if data exists\n headers.setContentLength(data.length, false);\n\n if (config.maxBodyLength > -1 && data.length > config.maxBodyLength) {\n return reject(new AxiosError(\n 'Request body larger than maxBodyLength limit',\n AxiosError.ERR_BAD_REQUEST,\n config\n ));\n }\n }\n\n const contentLength = utils.toFiniteNumber(headers.getContentLength());\n\n if (utils.isArray(maxRate)) {\n maxUploadRate = maxRate[0];\n maxDownloadRate = maxRate[1];\n } else {\n maxUploadRate = maxDownloadRate = maxRate;\n }\n\n if (data && (onUploadProgress || maxUploadRate)) {\n if (!utils.isStream(data)) {\n data = stream.Readable.from(data, {objectMode: false});\n }\n\n data = stream.pipeline([data, new AxiosTransformStream({\n length: contentLength,\n maxRate: utils.toFiniteNumber(maxUploadRate)\n })], utils.noop);\n\n onUploadProgress && data.on('progress', progress => {\n onUploadProgress(Object.assign(progress, {\n upload: true\n }));\n });\n }\n\n // HTTP basic authentication\n let auth = undefined;\n if (config.auth) {\n const username = config.auth.username || '';\n const password = config.auth.password || '';\n auth = username + ':' + password;\n }\n\n if (!auth && parsed.username) {\n const urlUsername = parsed.username;\n const urlPassword = parsed.password;\n auth = urlUsername + ':' + urlPassword;\n }\n\n auth && headers.delete('authorization');\n\n let path;\n\n try {\n path = buildURL(\n parsed.pathname + parsed.search,\n config.params,\n config.paramsSerializer\n ).replace(/^\\?/, '');\n } catch (err) {\n const customErr = new Error(err.message);\n customErr.config = config;\n customErr.url = config.url;\n customErr.exists = true;\n return reject(customErr);\n }\n\n headers.set(\n 'Accept-Encoding',\n 'gzip, compress, deflate' + (isBrotliSupported ? ', br' : ''), false\n );\n\n const options = {\n path,\n method: method,\n headers: headers.toJSON(),\n agents: { http: config.httpAgent, https: config.httpsAgent },\n auth,\n protocol,\n family,\n beforeRedirect: dispatchBeforeRedirect,\n beforeRedirects: {}\n };\n\n // cacheable-lookup integration hotfix\n !utils.isUndefined(lookup) && (options.lookup = lookup);\n\n if (config.socketPath) {\n options.socketPath = config.socketPath;\n } else {\n options.hostname = parsed.hostname;\n options.port = parsed.port;\n setProxy(options, config.proxy, protocol + '//' + parsed.hostname + (parsed.port ? ':' + parsed.port : '') + options.path);\n }\n\n let transport;\n const isHttpsRequest = isHttps.test(options.protocol);\n options.agent = isHttpsRequest ? config.httpsAgent : config.httpAgent;\n if (config.transport) {\n transport = config.transport;\n } else if (config.maxRedirects === 0) {\n transport = isHttpsRequest ? https : http;\n } else {\n if (config.maxRedirects) {\n options.maxRedirects = config.maxRedirects;\n }\n if (config.beforeRedirect) {\n options.beforeRedirects.config = config.beforeRedirect;\n }\n transport = isHttpsRequest ? httpsFollow : httpFollow;\n }\n\n if (config.maxBodyLength > -1) {\n options.maxBodyLength = config.maxBodyLength;\n } else {\n // follow-redirects does not skip comparison, so it should always succeed for axios -1 unlimited\n options.maxBodyLength = Infinity;\n }\n\n if (config.insecureHTTPParser) {\n options.insecureHTTPParser = config.insecureHTTPParser;\n }\n\n // Create the request\n req = transport.request(options, function handleResponse(res) {\n if (req.destroyed) return;\n\n const streams = [res];\n\n const responseLength = +res.headers['content-length'];\n\n if (onDownloadProgress) {\n const transformStream = new AxiosTransformStream({\n length: utils.toFiniteNumber(responseLength),\n maxRate: utils.toFiniteNumber(maxDownloadRate)\n });\n\n onDownloadProgress && transformStream.on('progress', progress => {\n onDownloadProgress(Object.assign(progress, {\n download: true\n }));\n });\n\n streams.push(transformStream);\n }\n\n // decompress the response body transparently if required\n let responseStream = res;\n\n // return the last request in case of redirects\n const lastRequest = res.req || req;\n\n // if decompress disabled we should not decompress\n if (config.decompress !== false && res.headers['content-encoding']) {\n // if no content, but headers still say that it is encoded,\n // remove the header not confuse downstream operations\n if (method === 'HEAD' || res.statusCode === 204) {\n delete res.headers['content-encoding'];\n }\n\n switch ((res.headers['content-encoding'] || '').toLowerCase()) {\n /*eslint default-case:0*/\n case 'gzip':\n case 'x-gzip':\n case 'compress':\n case 'x-compress':\n // add the unzipper to the body stream processing pipeline\n streams.push(zlib.createUnzip(zlibOptions));\n\n // remove the content-encoding in order to not confuse downstream operations\n delete res.headers['content-encoding'];\n break;\n case 'deflate':\n streams.push(new ZlibHeaderTransformStream());\n\n // add the unzipper to the body stream processing pipeline\n streams.push(zlib.createUnzip(zlibOptions));\n\n // remove the content-encoding in order to not confuse downstream operations\n delete res.headers['content-encoding'];\n break;\n case 'br':\n if (isBrotliSupported) {\n streams.push(zlib.createBrotliDecompress(brotliOptions));\n delete res.headers['content-encoding'];\n }\n }\n }\n\n responseStream = streams.length > 1 ? stream.pipeline(streams, utils.noop) : streams[0];\n\n const offListeners = stream.finished(responseStream, () => {\n offListeners();\n onFinished();\n });\n\n const response = {\n status: res.statusCode,\n statusText: res.statusMessage,\n headers: new AxiosHeaders(res.headers),\n config,\n request: lastRequest\n };\n\n if (responseType === 'stream') {\n response.data = responseStream;\n settle(resolve, reject, response);\n } else {\n const responseBuffer = [];\n let totalResponseBytes = 0;\n\n responseStream.on('data', function handleStreamData(chunk) {\n responseBuffer.push(chunk);\n totalResponseBytes += chunk.length;\n\n // make sure the content length is not over the maxContentLength if specified\n if (config.maxContentLength > -1 && totalResponseBytes > config.maxContentLength) {\n // stream.destroy() emit aborted event before calling reject() on Node.js v16\n rejected = true;\n responseStream.destroy();\n reject(new AxiosError('maxContentLength size of ' + config.maxContentLength + ' exceeded',\n AxiosError.ERR_BAD_RESPONSE, config, lastRequest));\n }\n });\n\n responseStream.on('aborted', function handlerStreamAborted() {\n if (rejected) {\n return;\n }\n\n const err = new AxiosError(\n 'maxContentLength size of ' + config.maxContentLength + ' exceeded',\n AxiosError.ERR_BAD_RESPONSE,\n config,\n lastRequest\n );\n responseStream.destroy(err);\n reject(err);\n });\n\n responseStream.on('error', function handleStreamError(err) {\n if (req.destroyed) return;\n reject(AxiosError.from(err, null, config, lastRequest));\n });\n\n responseStream.on('end', function handleStreamEnd() {\n try {\n let responseData = responseBuffer.length === 1 ? responseBuffer[0] : Buffer.concat(responseBuffer);\n if (responseType !== 'arraybuffer') {\n responseData = responseData.toString(responseEncoding);\n if (!responseEncoding || responseEncoding === 'utf8') {\n responseData = utils.stripBOM(responseData);\n }\n }\n response.data = responseData;\n } catch (err) {\n return reject(AxiosError.from(err, null, config, response.request, response));\n }\n settle(resolve, reject, response);\n });\n }\n\n emitter.once('abort', err => {\n if (!responseStream.destroyed) {\n responseStream.emit('error', err);\n responseStream.destroy();\n }\n });\n });\n\n emitter.once('abort', err => {\n reject(err);\n req.destroy(err);\n });\n\n // Handle errors\n req.on('error', function handleRequestError(err) {\n // @todo remove\n // if (req.aborted && err.code !== AxiosError.ERR_FR_TOO_MANY_REDIRECTS) return;\n reject(AxiosError.from(err, null, config, req));\n });\n\n // set tcp keep alive to prevent drop connection by peer\n req.on('socket', function handleRequestSocket(socket) {\n // default interval of sending ack packet is 1 minute\n socket.setKeepAlive(true, 1000 * 60);\n });\n\n // Handle request timeout\n if (config.timeout) {\n // This is forcing a int timeout to avoid problems if the `req` interface doesn't handle other types.\n const timeout = parseInt(config.timeout, 10);\n\n if (Number.isNaN(timeout)) {\n reject(new AxiosError(\n 'error trying to parse `config.timeout` to int',\n AxiosError.ERR_BAD_OPTION_VALUE,\n config,\n req\n ));\n\n return;\n }\n\n // Sometime, the response will be very slow, and does not respond, the connect event will be block by event loop system.\n // And timer callback will be fired, and abort() will be invoked before connection, then get \"socket hang up\" and code ECONNRESET.\n // At this time, if we have a large number of request, nodejs will hang up some socket on background. and the number will up and up.\n // And then these socket which be hang up will devouring CPU little by little.\n // ClientRequest.setTimeout will be fired on the specify milliseconds, and can make sure that abort() will be fired after connect.\n req.setTimeout(timeout, function handleRequestTimeout() {\n if (isDone) return;\n let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n req\n ));\n abort();\n });\n }\n\n\n // Send the request\n if (utils.isStream(data)) {\n let ended = false;\n let errored = false;\n\n data.on('end', () => {\n ended = true;\n });\n\n data.once('error', err => {\n errored = true;\n req.destroy(err);\n });\n\n data.on('close', () => {\n if (!ended && !errored) {\n abort(new CanceledError('Request stream has been aborted', config, req));\n }\n });\n\n data.pipe(req);\n } else {\n req.end(data);\n }\n });\n}\n\nexport const __setProxy = setProxy;\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n const msie = /(msie|trident)/i.test(navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let originURL;\n\n /**\n * Parse a URL to discover its components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n let href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })();\n","'use strict';\n\nimport utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport cookies from './../helpers/cookies.js';\nimport buildURL from './../helpers/buildURL.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport isURLSameOrigin from './../helpers/isURLSameOrigin.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport speedometer from '../helpers/speedometer.js';\n\nfunction progressEventReducer(listener, isDownloadStream) {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e\n };\n\n data[isDownloadStream ? 'download' : 'upload'] = true;\n\n listener(data);\n };\n}\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n let requestData = config.data;\n const requestHeaders = AxiosHeaders.from(config.headers).normalize();\n let {responseType, withXSRFToken} = config;\n let onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n let contentType;\n\n if (utils.isFormData(requestData)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n requestHeaders.setContentType(false); // Let the browser set it\n } else if ((contentType = requestHeaders.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n requestHeaders.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n let request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n const username = config.auth.username || '';\n const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password));\n }\n\n const fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if(platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(config));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(fullPath))) {\n // Add xsrf header\n const xsrfValue = config.xsrfHeaderName && config.xsrfCookieName && cookies.read(config.xsrfCookieName);\n\n if (xsrfValue) {\n requestHeaders.set(config.xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', progressEventReducer(config.onDownloadProgress, true));\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress));\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(fullPath);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? thing.toJSON() : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy;\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n"],"names":["utils","prototype","PlatformFormData","encode","url","FormData","platform","defaults","AxiosHeaders","stream","TextEncoder","readBlob","Readable","zlib","followRedirects","getProxyForUrl","callbackify","EventEmitter","formDataToStream","util","AxiosTransformStream","https","http","ZlibHeaderTransformStream","validators","InterceptorManager","Axios","CancelToken","HttpStatusCode"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAEe,SAAS,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE;AAC1C,EAAE,OAAO,SAAS,IAAI,GAAG;AACzB,IAAI,OAAO,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AACxC,GAAG,CAAC;AACJ;;ACFA;AACA;AACA,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC;AACpC,MAAM,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC;AAChC;AACA,MAAM,MAAM,GAAG,CAAC,KAAK,IAAI,KAAK,IAAI;AAClC,IAAI,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACrC,IAAI,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AACvE,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACxB;AACA,MAAM,UAAU,GAAG,CAAC,IAAI,KAAK;AAC7B,EAAE,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AAC5B,EAAE,OAAO,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI;AAC1C,EAAC;AACD;AACA,MAAM,UAAU,GAAG,IAAI,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,IAAI,CAAC;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,QAAQ,CAAC,GAAG,EAAE;AACvB,EAAE,OAAO,GAAG,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,WAAW,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC;AACvG,OAAO,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC7E,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,aAAa,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,iBAAiB,CAAC,GAAG,EAAE;AAChC,EAAE,IAAI,MAAM,CAAC;AACb,EAAE,IAAI,CAAC,OAAO,WAAW,KAAK,WAAW,MAAM,WAAW,CAAC,MAAM,CAAC,EAAE;AACpE,IAAI,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACrC,GAAG,MAAM;AACT,IAAI,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,KAAK,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAClE,GAAG;AACH,EAAE,OAAO,MAAM,CAAC;AAChB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,QAAQ,GAAG,CAAC,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,SAAS,GAAG,KAAK,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,CAAC;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,aAAa,GAAG,CAAC,GAAG,KAAK;AAC/B,EAAE,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE;AAChC,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH;AACA,EAAE,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;AACxC,EAAE,OAAO,CAAC,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,IAAI,KAAK,EAAE,MAAM,CAAC,WAAW,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,IAAI,GAAG,CAAC,CAAC;AAC1K,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK,QAAQ,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,UAAU,GAAG,CAAC,KAAK,KAAK;AAC9B,EAAE,IAAI,IAAI,CAAC;AACX,EAAE,OAAO,KAAK;AACd,IAAI,CAAC,OAAO,QAAQ,KAAK,UAAU,IAAI,KAAK,YAAY,QAAQ;AAChE,MAAM,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC;AAC9B,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,UAAU;AAC7C;AACA,SAAS,IAAI,KAAK,QAAQ,IAAI,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,KAAK,mBAAmB,CAAC;AACrG,OAAO;AACP,KAAK;AACL,GAAG;AACH,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,iBAAiB,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAC;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI;AAC9B,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,oCAAoC,EAAE,EAAE,CAAC,CAAC;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,UAAU,GAAG,KAAK,CAAC,GAAG,EAAE,EAAE;AACrD;AACA,EAAE,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,WAAW,EAAE;AAClD,IAAI,OAAO;AACX,GAAG;AACH;AACA,EAAE,IAAI,CAAC,CAAC;AACR,EAAE,IAAI,CAAC,CAAC;AACR;AACA;AACA,EAAE,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AAC/B;AACA,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AAChB,GAAG;AACH;AACA,EAAE,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE;AACpB;AACA,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC5C,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AACpC,KAAK;AACL,GAAG,MAAM;AACT;AACA,IAAI,MAAM,IAAI,GAAG,UAAU,GAAG,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACjF,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;AAC5B,IAAI,IAAI,GAAG,CAAC;AACZ;AACA,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACxC,KAAK;AACL,GAAG;AACH,CAAC;AACD;AACA,SAAS,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE;AAC3B,EAAE,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;AAC1B,EAAE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;AACtB,EAAE,IAAI,IAAI,CAAC;AACX,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;AAClB,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACnB,IAAI,IAAI,GAAG,KAAK,IAAI,CAAC,WAAW,EAAE,EAAE;AACpC,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,GAAG;AACH,EAAE,OAAO,IAAI,CAAC;AACd,CAAC;AACD;AACA,MAAM,OAAO,GAAG,CAAC,MAAM;AACvB;AACA,EAAE,IAAI,OAAO,UAAU,KAAK,WAAW,EAAE,OAAO,UAAU,CAAC;AAC3D,EAAE,OAAO,OAAO,IAAI,KAAK,WAAW,GAAG,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC;AAC/F,CAAC,GAAG,CAAC;AACL;AACA,MAAM,gBAAgB,GAAG,CAAC,OAAO,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,OAAO,KAAK,OAAO,CAAC;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,KAAK,8BAA8B;AAC5C,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;AAC1D,EAAE,MAAM,MAAM,GAAG,EAAE,CAAC;AACpB,EAAE,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK;AACpC,IAAI,MAAM,SAAS,GAAG,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC;AAC9D,IAAI,IAAI,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE;AAChE,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC;AACxD,KAAK,MAAM,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE;AACnC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AACzC,KAAK,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE;AAC7B,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;AACtC,KAAK,MAAM;AACX,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC;AAC9B,KAAK;AACL,IAAG;AACH;AACA,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACpD,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;AACvD,GAAG;AACH,EAAE,OAAO,MAAM,CAAC;AAChB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,KAAK;AACpD,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK;AAC3B,IAAI,IAAI,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE;AACpC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAClC,KAAK,MAAM;AACX,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AACnB,KAAK;AACL,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;AACnB,EAAE,OAAO,CAAC,CAAC;AACX,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,QAAQ,GAAG,CAAC,OAAO,KAAK;AAC9B,EAAE,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE;AACxC,IAAI,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/B,GAAG;AACH,EAAE,OAAO,OAAO,CAAC;AACjB,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,QAAQ,GAAG,CAAC,WAAW,EAAE,gBAAgB,EAAE,KAAK,EAAE,WAAW,KAAK;AACxE,EAAE,WAAW,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AACjF,EAAE,WAAW,CAAC,SAAS,CAAC,WAAW,GAAG,WAAW,CAAC;AAClD,EAAE,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,OAAO,EAAE;AAC9C,IAAI,KAAK,EAAE,gBAAgB,CAAC,SAAS;AACrC,GAAG,CAAC,CAAC;AACL,EAAE,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AACvD,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,YAAY,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,KAAK;AACjE,EAAE,IAAI,KAAK,CAAC;AACZ,EAAE,IAAI,CAAC,CAAC;AACR,EAAE,IAAI,IAAI,CAAC;AACX,EAAE,MAAM,MAAM,GAAG,EAAE,CAAC;AACpB;AACA,EAAE,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;AAC1B;AACA,EAAE,IAAI,SAAS,IAAI,IAAI,EAAE,OAAO,OAAO,CAAC;AACxC;AACA,EAAE,GAAG;AACL,IAAI,KAAK,GAAG,MAAM,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;AAClD,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;AACrB,IAAI,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;AACpB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACtB,MAAM,IAAI,CAAC,CAAC,UAAU,IAAI,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AAClF,QAAQ,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AACxC,QAAQ,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAC5B,OAAO;AACP,KAAK;AACL,IAAI,SAAS,GAAG,MAAM,KAAK,KAAK,IAAI,cAAc,CAAC,SAAS,CAAC,CAAC;AAC9D,GAAG,QAAQ,SAAS,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,IAAI,SAAS,KAAK,MAAM,CAAC,SAAS,EAAE;AACnG;AACA,EAAE,OAAO,OAAO,CAAC;AACjB,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE,YAAY,EAAE,QAAQ,KAAK;AAClD,EAAE,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AACpB,EAAE,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE;AACvD,IAAI,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC;AAC1B,GAAG;AACH,EAAE,QAAQ,IAAI,YAAY,CAAC,MAAM,CAAC;AAClC,EAAE,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;AACxD,EAAE,OAAO,SAAS,KAAK,CAAC,CAAC,IAAI,SAAS,KAAK,QAAQ,CAAC;AACpD,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,OAAO,GAAG,CAAC,KAAK,KAAK;AAC3B,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,CAAC;AAC1B,EAAE,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;AACnC,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;AACvB,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,CAAC;AAChC,EAAE,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAC3B,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;AAClB,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACtB,GAAG;AACH,EAAE,OAAO,GAAG,CAAC;AACb,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,YAAY,GAAG,CAAC,UAAU,IAAI;AACpC;AACA,EAAE,OAAO,KAAK,IAAI;AAClB,IAAI,OAAO,UAAU,IAAI,KAAK,YAAY,UAAU,CAAC;AACrD,GAAG,CAAC;AACJ,CAAC,EAAE,OAAO,UAAU,KAAK,WAAW,IAAI,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK;AAClC,EAAE,MAAM,SAAS,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAChD;AACA,EAAE,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvC;AACA,EAAE,IAAI,MAAM,CAAC;AACb;AACA,EAAE,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE;AACrD,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC;AAC9B,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,GAAG;AACH,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,GAAG,KAAK;AAClC,EAAE,IAAI,OAAO,CAAC;AACd,EAAE,MAAM,GAAG,GAAG,EAAE,CAAC;AACjB;AACA,EAAE,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE;AAChD,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACtB,GAAG;AACH;AACA,EAAE,OAAO,GAAG,CAAC;AACb,EAAC;AACD;AACA;AACA,MAAM,UAAU,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAC;AACjD;AACA,MAAM,WAAW,GAAG,GAAG,IAAI;AAC3B,EAAE,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,uBAAuB;AAC1D,IAAI,SAAS,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;AACjC,MAAM,OAAO,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC;AACnC,KAAK;AACL,GAAG,CAAC;AACJ,CAAC,CAAC;AACF;AACA;AACA,MAAM,cAAc,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,KAAK,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;AAC/G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;AACtC;AACA,MAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK;AAC5C,EAAE,MAAM,WAAW,GAAG,MAAM,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC;AAC5D,EAAE,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAChC;AACA,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,UAAU,EAAE,IAAI,KAAK;AAC7C,IAAI,IAAI,GAAG,CAAC;AACZ,IAAI,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,UAAU,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,KAAK,EAAE;AAC1D,MAAM,kBAAkB,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,UAAU,CAAC;AACnD,KAAK;AACL,GAAG,CAAC,CAAC;AACL;AACA,EAAE,MAAM,CAAC,gBAAgB,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC;AACnD,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,aAAa,GAAG,CAAC,GAAG,KAAK;AAC/B,EAAE,iBAAiB,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,IAAI,KAAK;AAC/C;AACA,IAAI,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;AACnF,MAAM,OAAO,KAAK,CAAC;AACnB,KAAK;AACL;AACA,IAAI,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;AAC5B;AACA,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,OAAO;AACnC;AACA,IAAI,UAAU,CAAC,UAAU,GAAG,KAAK,CAAC;AAClC;AACA,IAAI,IAAI,UAAU,IAAI,UAAU,EAAE;AAClC,MAAM,UAAU,CAAC,QAAQ,GAAG,KAAK,CAAC;AAClC,MAAM,OAAO;AACb,KAAK;AACL;AACA,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE;AACzB,MAAM,UAAU,CAAC,GAAG,GAAG,MAAM;AAC7B,QAAQ,MAAM,KAAK,CAAC,qCAAqC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;AACzE,OAAO,CAAC;AACR,KAAK;AACL,GAAG,CAAC,CAAC;AACL,EAAC;AACD;AACA,MAAM,WAAW,GAAG,CAAC,aAAa,EAAE,SAAS,KAAK;AAClD,EAAE,MAAM,GAAG,GAAG,EAAE,CAAC;AACjB;AACA,EAAE,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK;AAC1B,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI;AACzB,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;AACxB,KAAK,CAAC,CAAC;AACP,IAAG;AACH;AACA,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;AAClG;AACA,EAAE,OAAO,GAAG,CAAC;AACb,EAAC;AACD;AACA,MAAM,IAAI,GAAG,MAAM,GAAE;AACrB;AACA,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,YAAY,KAAK;AAChD,EAAE,KAAK,GAAG,CAAC,KAAK,CAAC;AACjB,EAAE,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,YAAY,CAAC;AACvD,EAAC;AACD;AACA,MAAM,KAAK,GAAG,6BAA4B;AAC1C;AACA,MAAM,KAAK,GAAG,YAAY,CAAC;AAC3B;AACA,MAAM,QAAQ,GAAG;AACjB,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,WAAW,EAAE,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,GAAG,KAAK;AAClD,EAAC;AACD;AACA,MAAM,cAAc,GAAG,CAAC,IAAI,GAAG,EAAE,EAAE,QAAQ,GAAG,QAAQ,CAAC,WAAW,KAAK;AACvE,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC;AACf,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;AAC5B,EAAE,OAAO,IAAI,EAAE,EAAE;AACjB,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,EAAC;AAC7C,GAAG;AACH;AACA,EAAE,OAAO,GAAG,CAAC;AACb,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,mBAAmB,CAAC,KAAK,EAAE;AACpC,EAAE,OAAO,CAAC,EAAE,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,UAAU,IAAI,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AACrH,CAAC;AACD;AACA,MAAM,YAAY,GAAG,CAAC,GAAG,KAAK;AAC9B,EAAE,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC;AAC9B;AACA,EAAE,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK;AAC/B;AACA,IAAI,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC1B,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AACtC,QAAQ,OAAO;AACf,OAAO;AACP;AACA,MAAM,GAAG,EAAE,QAAQ,IAAI,MAAM,CAAC,EAAE;AAChC,QAAQ,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;AAC1B,QAAQ,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;AACjD;AACA,QAAQ,OAAO,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK;AACxC,UAAU,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACnD,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC;AACrE,SAAS,CAAC,CAAC;AACX;AACA,QAAQ,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;AAC7B;AACA,QAAQ,OAAO,MAAM,CAAC;AACtB,OAAO;AACP,KAAK;AACL;AACA,IAAI,OAAO,MAAM,CAAC;AAClB,IAAG;AACH;AACA,EAAE,OAAO,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACvB,EAAC;AACD;AACA,MAAM,SAAS,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC;AAC9C;AACA,MAAM,UAAU,GAAG,CAAC,KAAK;AACzB,EAAE,KAAK,KAAK,QAAQ,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACvG;AACA,gBAAe;AACf,EAAE,OAAO;AACT,EAAE,aAAa;AACf,EAAE,QAAQ;AACV,EAAE,UAAU;AACZ,EAAE,iBAAiB;AACnB,EAAE,QAAQ;AACV,EAAE,QAAQ;AACV,EAAE,SAAS;AACX,EAAE,QAAQ;AACV,EAAE,aAAa;AACf,EAAE,WAAW;AACb,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,QAAQ;AACV,EAAE,UAAU;AACZ,EAAE,QAAQ;AACV,EAAE,iBAAiB;AACnB,EAAE,YAAY;AACd,EAAE,UAAU;AACZ,EAAE,OAAO;AACT,EAAE,KAAK;AACP,EAAE,MAAM;AACR,EAAE,IAAI;AACN,EAAE,QAAQ;AACV,EAAE,QAAQ;AACV,EAAE,YAAY;AACd,EAAE,MAAM;AACR,EAAE,UAAU;AACZ,EAAE,QAAQ;AACV,EAAE,OAAO;AACT,EAAE,YAAY;AACd,EAAE,QAAQ;AACV,EAAE,UAAU;AACZ,EAAE,cAAc;AAChB,EAAE,UAAU,EAAE,cAAc;AAC5B,EAAE,iBAAiB;AACnB,EAAE,aAAa;AACf,EAAE,WAAW;AACb,EAAE,WAAW;AACb,EAAE,IAAI;AACN,EAAE,cAAc;AAChB,EAAE,OAAO;AACT,EAAE,MAAM,EAAE,OAAO;AACjB,EAAE,gBAAgB;AAClB,EAAE,QAAQ;AACV,EAAE,cAAc;AAChB,EAAE,mBAAmB;AACrB,EAAE,YAAY;AACd,EAAE,SAAS;AACX,EAAE,UAAU;AACZ,CAAC;;AC9sBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE;AAC9D,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnB;AACA,EAAE,IAAI,KAAK,CAAC,iBAAiB,EAAE;AAC/B,IAAI,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;AACpD,GAAG,MAAM;AACT,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,KAAK,EAAE,EAAE,KAAK,CAAC;AACrC,GAAG;AACH;AACA,EAAE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACzB,EAAE,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;AAC3B,EAAE,IAAI,KAAK,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;AAC7B,EAAE,MAAM,KAAK,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;AACnC,EAAE,OAAO,KAAK,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC;AACtC,EAAE,QAAQ,KAAK,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAC;AACzC,CAAC;AACD;AACAA,OAAK,CAAC,QAAQ,CAAC,UAAU,EAAE,KAAK,EAAE;AAClC,EAAE,MAAM,EAAE,SAAS,MAAM,GAAG;AAC5B,IAAI,OAAO;AACX;AACA,MAAM,OAAO,EAAE,IAAI,CAAC,OAAO;AAC3B,MAAM,IAAI,EAAE,IAAI,CAAC,IAAI;AACrB;AACA,MAAM,WAAW,EAAE,IAAI,CAAC,WAAW;AACnC,MAAM,MAAM,EAAE,IAAI,CAAC,MAAM;AACzB;AACA,MAAM,QAAQ,EAAE,IAAI,CAAC,QAAQ;AAC7B,MAAM,UAAU,EAAE,IAAI,CAAC,UAAU;AACjC,MAAM,YAAY,EAAE,IAAI,CAAC,YAAY;AACrC,MAAM,KAAK,EAAE,IAAI,CAAC,KAAK;AACvB;AACA,MAAM,MAAM,EAAEA,OAAK,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;AAC7C,MAAM,IAAI,EAAE,IAAI,CAAC,IAAI;AACrB,MAAM,MAAM,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI;AACjF,KAAK,CAAC;AACN,GAAG;AACH,CAAC,CAAC,CAAC;AACH;AACA,MAAMC,WAAS,GAAG,UAAU,CAAC,SAAS,CAAC;AACvC,MAAM,WAAW,GAAG,EAAE,CAAC;AACvB;AACA;AACA,EAAE,sBAAsB;AACxB,EAAE,gBAAgB;AAClB,EAAE,cAAc;AAChB,EAAE,WAAW;AACb,EAAE,aAAa;AACf,EAAE,2BAA2B;AAC7B,EAAE,gBAAgB;AAClB,EAAE,kBAAkB;AACpB,EAAE,iBAAiB;AACnB,EAAE,cAAc;AAChB,EAAE,iBAAiB;AACnB,EAAE,iBAAiB;AACnB;AACA,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI;AAClB,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACpC,CAAC,CAAC,CAAC;AACH;AACA,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AACjD,MAAM,CAAC,cAAc,CAACA,WAAS,EAAE,cAAc,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AAChE;AACA;AACA,UAAU,CAAC,IAAI,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,KAAK;AAC3E,EAAE,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAACA,WAAS,CAAC,CAAC;AAC9C;AACA,EAAED,OAAK,CAAC,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,MAAM,CAAC,GAAG,EAAE;AAC7D,IAAI,OAAO,GAAG,KAAK,KAAK,CAAC,SAAS,CAAC;AACnC,GAAG,EAAE,IAAI,IAAI;AACb,IAAI,OAAO,IAAI,KAAK,cAAc,CAAC;AACnC,GAAG,CAAC,CAAC;AACL;AACA,EAAE,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC9E;AACA,EAAE,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B;AACA,EAAE,UAAU,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;AAC/B;AACA,EAAE,WAAW,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AACxD;AACA,EAAE,OAAO,UAAU,CAAC;AACpB,CAAC;;AC1FD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,WAAW,CAAC,KAAK,EAAE;AAC5B,EAAE,OAAOA,OAAK,CAAC,aAAa,CAAC,KAAK,CAAC,IAAIA,OAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC5D,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,cAAc,CAAC,GAAG,EAAE;AAC7B,EAAE,OAAOA,OAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AAC5D,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;AACpC,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,CAAC;AACxB,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE;AACtD;AACA,IAAI,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;AAClC,IAAI,OAAO,CAAC,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC;AAClD,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC;AAC3B,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,WAAW,CAAC,GAAG,EAAE;AAC1B,EAAE,OAAOA,OAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACtD,CAAC;AACD;AACA,MAAM,UAAU,GAAGA,OAAK,CAAC,YAAY,CAACA,OAAK,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,MAAM,CAAC,IAAI,EAAE;AAC7E,EAAE,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC,CAAC,CAAC;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,UAAU,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE;AAC5C,EAAE,IAAI,CAACA,OAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC5B,IAAI,MAAM,IAAI,SAAS,CAAC,0BAA0B,CAAC,CAAC;AACpD,GAAG;AACH;AACA;AACA,EAAE,QAAQ,GAAG,QAAQ,IAAI,KAAKE,4BAAgB,IAAI,QAAQ,GAAG,CAAC;AAC9D;AACA;AACA,EAAE,OAAO,GAAGF,OAAK,CAAC,YAAY,CAAC,OAAO,EAAE;AACxC,IAAI,UAAU,EAAE,IAAI;AACpB,IAAI,IAAI,EAAE,KAAK;AACf,IAAI,OAAO,EAAE,KAAK;AAClB,GAAG,EAAE,KAAK,EAAE,SAAS,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE;AAC7C;AACA,IAAI,OAAO,CAACA,OAAK,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9C,GAAG,CAAC,CAAC;AACL;AACA,EAAE,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;AACxC;AACA,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,cAAc,CAAC;AACpD,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;AAC5B,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;AAClC,EAAE,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC;AACpE,EAAE,MAAM,OAAO,GAAG,KAAK,IAAIA,OAAK,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;AAC/D;AACA,EAAE,IAAI,CAACA,OAAK,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;AAClC,IAAI,MAAM,IAAI,SAAS,CAAC,4BAA4B,CAAC,CAAC;AACtD,GAAG;AACH;AACA,EAAE,SAAS,YAAY,CAAC,KAAK,EAAE;AAC/B,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC;AAClC;AACA,IAAI,IAAIA,OAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AAC7B,MAAM,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;AACjC,KAAK;AACL;AACA,IAAI,IAAI,CAAC,OAAO,IAAIA,OAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AACzC,MAAM,MAAM,IAAI,UAAU,CAAC,8CAA8C,CAAC,CAAC;AAC3E,KAAK;AACL;AACA,IAAI,IAAIA,OAAK,CAAC,aAAa,CAAC,KAAK,CAAC,IAAIA,OAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;AACjE,MAAM,OAAO,OAAO,IAAI,OAAO,IAAI,KAAK,UAAU,GAAG,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5F,KAAK;AACL;AACA,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,SAAS,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE;AAC5C,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC;AACpB;AACA,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACrD,MAAM,IAAIA,OAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE;AACrC;AACA,QAAQ,GAAG,GAAG,UAAU,GAAG,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAClD;AACA,QAAQ,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACtC,OAAO,MAAM;AACb,QAAQ,CAACA,OAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC;AACnD,SAAS,CAACA,OAAK,CAAC,UAAU,CAAC,KAAK,CAAC,IAAIA,OAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,GAAG,GAAGA,OAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC/F,SAAS,EAAE;AACX;AACA,QAAQ,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;AAClC;AACA,QAAQ,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE;AAC7C,UAAU,EAAEA,OAAK,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC,IAAI,QAAQ,CAAC,MAAM;AACpE;AACA,YAAY,OAAO,KAAK,IAAI,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,OAAO,KAAK,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC;AACpG,YAAY,YAAY,CAAC,EAAE,CAAC;AAC5B,WAAW,CAAC;AACZ,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,KAAK,CAAC;AACrB,OAAO;AACP,KAAK;AACL;AACA,IAAI,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE;AAC5B,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL;AACA,IAAI,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;AACrE;AACA,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH;AACA,EAAE,MAAM,KAAK,GAAG,EAAE,CAAC;AACnB;AACA,EAAE,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE;AACnD,IAAI,cAAc;AAClB,IAAI,YAAY;AAChB,IAAI,WAAW;AACf,GAAG,CAAC,CAAC;AACL;AACA,EAAE,SAAS,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE;AAC9B,IAAI,IAAIA,OAAK,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,OAAO;AACzC;AACA,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;AACrC,MAAM,MAAM,KAAK,CAAC,iCAAiC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACtE,KAAK;AACL;AACA,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACtB;AACA,IAAIA,OAAK,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE;AAChD,MAAM,MAAM,MAAM,GAAG,EAAEA,OAAK,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI;AAC5E,QAAQ,QAAQ,EAAE,EAAE,EAAEA,OAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,EAAE,IAAI,EAAE,cAAc;AAClF,OAAO,CAAC;AACR;AACA,MAAM,IAAI,MAAM,KAAK,IAAI,EAAE;AAC3B,QAAQ,KAAK,CAAC,EAAE,EAAE,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACnD,OAAO;AACP,KAAK,CAAC,CAAC;AACP;AACA,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;AAChB,GAAG;AACH;AACA,EAAE,IAAI,CAACA,OAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC5B,IAAI,MAAM,IAAI,SAAS,CAAC,wBAAwB,CAAC,CAAC;AAClD,GAAG;AACH;AACA,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;AACb;AACA,EAAE,OAAO,QAAQ,CAAC;AAClB;;ACpNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASG,QAAM,CAAC,GAAG,EAAE;AACrB,EAAE,MAAM,OAAO,GAAG;AAClB,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,KAAK,EAAE,GAAG;AACd,IAAI,KAAK,EAAE,MAAM;AACjB,GAAG,CAAC;AACJ,EAAE,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,SAAS,QAAQ,CAAC,KAAK,EAAE;AACtF,IAAI,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;AAC1B,GAAG,CAAC,CAAC;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,oBAAoB,CAAC,MAAM,EAAE,OAAO,EAAE;AAC/C,EAAE,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AACnB;AACA,EAAE,MAAM,IAAI,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAC9C,CAAC;AACD;AACA,MAAM,SAAS,GAAG,oBAAoB,CAAC,SAAS,CAAC;AACjD;AACA,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE;AAChD,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AAClC,CAAC,CAAC;AACF;AACA,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,CAAC,OAAO,EAAE;AAChD,EAAE,MAAM,OAAO,GAAG,OAAO,GAAG,SAAS,KAAK,EAAE;AAC5C,IAAI,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAEA,QAAM,CAAC,CAAC;AAC7C,GAAG,GAAGA,QAAM,CAAC;AACb;AACA,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,IAAI,EAAE;AAC7C,IAAI,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnB,CAAC;;AClDD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,MAAM,CAAC,GAAG,EAAE;AACrB,EAAE,OAAO,kBAAkB,CAAC,GAAG,CAAC;AAChC,IAAI,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;AACzB,IAAI,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;AACxB,IAAI,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;AACzB,IAAI,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;AACxB,IAAI,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;AACzB,IAAI,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAC1B,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE;AACvD;AACA,EAAE,IAAI,CAAC,MAAM,EAAE;AACf,IAAI,OAAO,GAAG,CAAC;AACf,GAAG;AACH;AACA,EAAE,MAAM,OAAO,GAAG,OAAO,IAAI,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC;AACtD;AACA,EAAE,MAAM,WAAW,GAAG,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC;AACnD;AACA,EAAE,IAAI,gBAAgB,CAAC;AACvB;AACA,EAAE,IAAI,WAAW,EAAE;AACnB,IAAI,gBAAgB,GAAG,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACpD,GAAG,MAAM;AACT,IAAI,gBAAgB,GAAGH,OAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC;AACtD,MAAM,MAAM,CAAC,QAAQ,EAAE;AACvB,MAAM,IAAI,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAClE,GAAG;AACH;AACA,EAAE,IAAI,gBAAgB,EAAE;AACxB,IAAI,MAAM,aAAa,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC3C;AACA,IAAI,IAAI,aAAa,KAAK,CAAC,CAAC,EAAE;AAC9B,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;AACxC,KAAK;AACL,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,gBAAgB,CAAC;AACpE,GAAG;AACH;AACA,EAAE,OAAO,GAAG,CAAC;AACb;;AC1DA,MAAM,kBAAkB,CAAC;AACzB,EAAE,WAAW,GAAG;AAChB,IAAI,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACvB,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE;AACpC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACvB,MAAM,SAAS;AACf,MAAM,QAAQ;AACd,MAAM,WAAW,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,GAAG,KAAK;AACxD,MAAM,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI;AAC/C,KAAK,CAAC,CAAC;AACP,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;AACpC,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,KAAK,CAAC,EAAE,EAAE;AACZ,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;AAC3B,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;AAC/B,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,KAAK,GAAG;AACV,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;AACvB,MAAM,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACzB,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,CAAC,EAAE,EAAE;AACd,IAAIA,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,cAAc,CAAC,CAAC,EAAE;AAC5D,MAAM,IAAI,CAAC,KAAK,IAAI,EAAE;AACtB,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;AACd,OAAO;AACP,KAAK,CAAC,CAAC;AACP,GAAG;AACH,CAAC;AACD;AACA,6BAAe,kBAAkB;;ACpEjC,6BAAe;AACf,EAAE,iBAAiB,EAAE,IAAI;AACzB,EAAE,iBAAiB,EAAE,IAAI;AACzB,EAAE,mBAAmB,EAAE,KAAK;AAC5B,CAAC;;ACHD,wBAAeI,uBAAG,CAAC,eAAe;;ACAlC,mBAAe;AACf,EAAE,MAAM,EAAE,IAAI;AACd,EAAE,OAAO,EAAE;AACX,IAAI,eAAe;AACnB,cAAIC,4BAAQ;AACZ,IAAI,IAAI,EAAE,OAAO,IAAI,KAAK,WAAW,IAAI,IAAI,IAAI,IAAI;AACrD,GAAG;AACH,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE;AAChD,CAAC;;ACXD,MAAM,aAAa,GAAG,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,QAAQ,KAAK,WAAW,CAAC;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,qBAAqB,GAAG;AAC9B,EAAE,CAAC,OAAO,KAAK;AACf,IAAI,OAAO,aAAa,IAAI,CAAC,aAAa,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC;AACtF,GAAG,EAAE,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,8BAA8B,GAAG,CAAC,MAAM;AAC9C,EAAE;AACF,IAAI,OAAO,iBAAiB,KAAK,WAAW;AAC5C;AACA,IAAI,IAAI,YAAY,iBAAiB;AACrC,IAAI,OAAO,IAAI,CAAC,aAAa,KAAK,UAAU;AAC5C,IAAI;AACJ,CAAC,GAAG;;;;;;;;;ACrCJ,iBAAe;AACf,EAAE,GAAG,KAAK;AACV,EAAE,GAAGC,UAAQ;AACb;;ACAe,SAAS,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE;AACxD,EAAE,OAAO,UAAU,CAAC,IAAI,EAAE,IAAI,QAAQ,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC;AAChF,IAAI,OAAO,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE;AACjD,MAAM,IAAI,QAAQ,CAAC,MAAM,IAAIN,OAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACpD,QAAQ,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;AACnD,QAAQ,OAAO,KAAK,CAAC;AACrB,OAAO;AACP;AACA,MAAM,OAAO,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAC3D,KAAK;AACL,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;AACf;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,aAAa,CAAC,IAAI,EAAE;AAC7B;AACA;AACA;AACA;AACA,EAAE,OAAOA,OAAK,CAAC,QAAQ,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI;AAC5D,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AACzD,GAAG,CAAC,CAAC;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,aAAa,CAAC,GAAG,EAAE;AAC5B,EAAE,MAAM,GAAG,GAAG,EAAE,CAAC;AACjB,EAAE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChC,EAAE,IAAI,CAAC,CAAC;AACR,EAAE,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;AAC1B,EAAE,IAAI,GAAG,CAAC;AACV,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AAC5B,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AACxB,GAAG;AACH,EAAE,OAAO,GAAG,CAAC;AACb,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,cAAc,CAAC,QAAQ,EAAE;AAClC,EAAE,SAAS,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;AACjD,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AAC7B;AACA,IAAI,IAAI,IAAI,KAAK,WAAW,EAAE,OAAO,IAAI,CAAC;AAC1C;AACA,IAAI,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;AAChD,IAAI,MAAM,MAAM,GAAG,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC;AACxC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAIA,OAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;AACjE;AACA,IAAI,IAAI,MAAM,EAAE;AAChB,MAAM,IAAIA,OAAK,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;AAC1C,QAAQ,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;AAC7C,OAAO,MAAM;AACb,QAAQ,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;AAC7B,OAAO;AACP;AACA,MAAM,OAAO,CAAC,YAAY,CAAC;AAC3B,KAAK;AACL;AACA,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAACA,OAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE;AACxD,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AACxB,KAAK;AACL;AACA,IAAI,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;AAC/D;AACA,IAAI,IAAI,MAAM,IAAIA,OAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE;AAC/C,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACjD,KAAK;AACL;AACA,IAAI,OAAO,CAAC,YAAY,CAAC;AACzB,GAAG;AACH;AACA,EAAE,IAAIA,OAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAIA,OAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AACxE,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;AACnB;AACA,IAAIA,OAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK;AAClD,MAAM,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;AACpD,KAAK,CAAC,CAAC;AACP;AACA,IAAI,OAAO,GAAG,CAAC;AACf,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC;AACd;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE;AACpD,EAAE,IAAIA,OAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AAChC,IAAI,IAAI;AACR,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AACvC,MAAM,OAAOA,OAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAClC,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa,EAAE;AACpC,QAAQ,MAAM,CAAC,CAAC;AAChB,OAAO;AACP,KAAK;AACL,GAAG;AACH;AACA,EAAE,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAC/C,CAAC;AACD;AACA,MAAM,QAAQ,GAAG;AACjB;AACA,EAAE,YAAY,EAAE,oBAAoB;AACpC;AACA,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;AAC1B;AACA,EAAE,gBAAgB,EAAE,CAAC,SAAS,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE;AAC9D,IAAI,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC;AACvD,IAAI,MAAM,kBAAkB,GAAG,WAAW,CAAC,OAAO,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5E,IAAI,MAAM,eAAe,GAAGA,OAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACjD;AACA,IAAI,IAAI,eAAe,IAAIA,OAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AACnD,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;AAChC,KAAK;AACL;AACA,IAAI,MAAM,UAAU,GAAGA,OAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC9C;AACA,IAAI,IAAI,UAAU,EAAE;AACpB,MAAM,OAAO,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;AAC9E,KAAK;AACL;AACA,IAAI,IAAIA,OAAK,CAAC,aAAa,CAAC,IAAI,CAAC;AACjC,MAAMA,OAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC1B,MAAMA,OAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC1B,MAAMA,OAAK,CAAC,MAAM,CAAC,IAAI,CAAC;AACxB,MAAMA,OAAK,CAAC,MAAM,CAAC,IAAI,CAAC;AACxB,MAAM;AACN,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,IAAI,IAAIA,OAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE;AACvC,MAAM,OAAO,IAAI,CAAC,MAAM,CAAC;AACzB,KAAK;AACL,IAAI,IAAIA,OAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE;AACvC,MAAM,OAAO,CAAC,cAAc,CAAC,iDAAiD,EAAE,KAAK,CAAC,CAAC;AACvF,MAAM,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC7B,KAAK;AACL;AACA,IAAI,IAAI,UAAU,CAAC;AACnB;AACA,IAAI,IAAI,eAAe,EAAE;AACzB,MAAM,IAAI,WAAW,CAAC,OAAO,CAAC,mCAAmC,CAAC,GAAG,CAAC,CAAC,EAAE;AACzE,QAAQ,OAAO,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE,CAAC;AACtE,OAAO;AACP;AACA,MAAM,IAAI,CAAC,UAAU,GAAGA,OAAK,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,WAAW,CAAC,OAAO,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,EAAE;AACpG,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;AACxD;AACA,QAAQ,OAAO,UAAU;AACzB,UAAU,UAAU,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,IAAI;AAC/C,UAAU,SAAS,IAAI,IAAI,SAAS,EAAE;AACtC,UAAU,IAAI,CAAC,cAAc;AAC7B,SAAS,CAAC;AACV,OAAO;AACP,KAAK;AACL;AACA,IAAI,IAAI,eAAe,IAAI,kBAAkB,GAAG;AAChD,MAAM,OAAO,CAAC,cAAc,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;AACxD,MAAM,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;AACnC,KAAK;AACL;AACA,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG,CAAC;AACJ;AACA,EAAE,iBAAiB,EAAE,CAAC,SAAS,iBAAiB,CAAC,IAAI,EAAE;AACvD,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,QAAQ,CAAC,YAAY,CAAC;AACpE,IAAI,MAAM,iBAAiB,GAAG,YAAY,IAAI,YAAY,CAAC,iBAAiB,CAAC;AAC7E,IAAI,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,KAAK,MAAM,CAAC;AACvD;AACA,IAAI,IAAI,IAAI,IAAIA,OAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,YAAY,KAAK,aAAa,CAAC,EAAE;AACtG,MAAM,MAAM,iBAAiB,GAAG,YAAY,IAAI,YAAY,CAAC,iBAAiB,CAAC;AAC/E,MAAM,MAAM,iBAAiB,GAAG,CAAC,iBAAiB,IAAI,aAAa,CAAC;AACpE;AACA,MAAM,IAAI;AACV,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAChC,OAAO,CAAC,OAAO,CAAC,EAAE;AAClB,QAAQ,IAAI,iBAAiB,EAAE;AAC/B,UAAU,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa,EAAE;AACxC,YAAY,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,gBAAgB,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC7F,WAAW;AACX,UAAU,MAAM,CAAC,CAAC;AAClB,SAAS;AACT,OAAO;AACP,KAAK;AACL;AACA,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG,CAAC;AACJ;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,EAAE,CAAC;AACZ;AACA,EAAE,cAAc,EAAE,YAAY;AAC9B,EAAE,cAAc,EAAE,cAAc;AAChC;AACA,EAAE,gBAAgB,EAAE,CAAC,CAAC;AACtB,EAAE,aAAa,EAAE,CAAC,CAAC;AACnB;AACA,EAAE,GAAG,EAAE;AACP,IAAI,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,QAAQ;AACvC,IAAI,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI;AAC/B,GAAG;AACH;AACA,EAAE,cAAc,EAAE,SAAS,cAAc,CAAC,MAAM,EAAE;AAClD,IAAI,OAAO,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG,CAAC;AACzC,GAAG;AACH;AACA,EAAE,OAAO,EAAE;AACX,IAAI,MAAM,EAAE;AACZ,MAAM,QAAQ,EAAE,mCAAmC;AACnD,MAAM,cAAc,EAAE,SAAS;AAC/B,KAAK;AACL,GAAG;AACH,CAAC,CAAC;AACF;AACAA,OAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC,MAAM,KAAK;AAC7E,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;AAChC,CAAC,CAAC,CAAC;AACH;AACA,mBAAe,QAAQ;;ACvJvB;AACA;AACA,MAAM,iBAAiB,GAAGA,OAAK,CAAC,WAAW,CAAC;AAC5C,EAAE,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM;AAClE,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,EAAE,qBAAqB;AACvE,EAAE,eAAe,EAAE,UAAU,EAAE,cAAc,EAAE,qBAAqB;AACpE,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY;AACxC,CAAC,CAAC,CAAC;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAe,UAAU,IAAI;AAC7B,EAAE,MAAM,MAAM,GAAG,EAAE,CAAC;AACpB,EAAE,IAAI,GAAG,CAAC;AACV,EAAE,IAAI,GAAG,CAAC;AACV,EAAE,IAAI,CAAC,CAAC;AACR;AACA,EAAE,UAAU,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,SAAS,MAAM,CAAC,IAAI,EAAE;AACrE,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC1B,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AACpD,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACvC;AACA,IAAI,IAAI,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,CAAC,IAAI,iBAAiB,CAAC,GAAG,CAAC,CAAC,EAAE;AACzD,MAAM,OAAO;AACb,KAAK;AACL;AACA,IAAI,IAAI,GAAG,KAAK,YAAY,EAAE;AAC9B,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE;AACvB,QAAQ,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9B,OAAO,MAAM;AACb,QAAQ,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC5B,OAAO;AACP,KAAK,MAAM;AACX,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC;AACjE,KAAK;AACL,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,CAAC;;ACjDD,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AACvC;AACA,SAAS,eAAe,CAAC,MAAM,EAAE;AACjC,EAAE,OAAO,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AACvD,CAAC;AACD;AACA,SAAS,cAAc,CAAC,KAAK,EAAE;AAC/B,EAAE,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,IAAI,IAAI,EAAE;AACxC,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH;AACA,EAAE,OAAOA,OAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1E,CAAC;AACD;AACA,SAAS,WAAW,CAAC,GAAG,EAAE;AAC1B,EAAE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACrC,EAAE,MAAM,QAAQ,GAAG,kCAAkC,CAAC;AACtD,EAAE,IAAI,KAAK,CAAC;AACZ;AACA,EAAE,QAAQ,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;AACvC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAChC,GAAG;AACH;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,CAAC;AACD;AACA,MAAM,iBAAiB,GAAG,CAAC,GAAG,KAAK,gCAAgC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;AACrF;AACA,SAAS,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,EAAE;AAC9E,EAAE,IAAIA,OAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;AAChC,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAC5C,GAAG;AACH;AACA,EAAE,IAAI,kBAAkB,EAAE;AAC1B,IAAI,KAAK,GAAG,MAAM,CAAC;AACnB,GAAG;AACH;AACA,EAAE,IAAI,CAACA,OAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO;AACrC;AACA,EAAE,IAAIA,OAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC9B,IAAI,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,GAAG;AACH;AACA,EAAE,IAAIA,OAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC9B,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9B,GAAG;AACH,CAAC;AACD;AACA,SAAS,YAAY,CAAC,MAAM,EAAE;AAC9B,EAAE,OAAO,MAAM,CAAC,IAAI,EAAE;AACtB,KAAK,WAAW,EAAE,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,KAAK;AAChE,MAAM,OAAO,IAAI,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC;AACtC,KAAK,CAAC,CAAC;AACP,CAAC;AACD;AACA,SAAS,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE;AACrC,EAAE,MAAM,YAAY,GAAGA,OAAK,CAAC,WAAW,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC;AACvD;AACA,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,UAAU,IAAI;AAC9C,IAAI,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,UAAU,GAAG,YAAY,EAAE;AAC1D,MAAM,KAAK,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;AACxC,QAAQ,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACrE,OAAO;AACP,MAAM,YAAY,EAAE,IAAI;AACxB,KAAK,CAAC,CAAC;AACP,GAAG,CAAC,CAAC;AACL,CAAC;AACD;AACA,MAAM,YAAY,CAAC;AACnB,EAAE,WAAW,CAAC,OAAO,EAAE;AACvB,IAAI,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACjC,GAAG;AACH;AACA,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE;AACvC,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC;AACtB;AACA,IAAI,SAAS,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE;AAClD,MAAM,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;AAC/C;AACA,MAAM,IAAI,CAAC,OAAO,EAAE;AACpB,QAAQ,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;AAClE,OAAO;AACP;AACA,MAAM,MAAM,GAAG,GAAGA,OAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC/C;AACA,MAAM,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI,KAAK,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,EAAE;AAClH,QAAQ,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;AACtD,OAAO;AACP,KAAK;AACL;AACA,IAAI,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,QAAQ;AACzC,MAAMA,OAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AACxF;AACA,IAAI,IAAIA,OAAK,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,MAAM,YAAY,IAAI,CAAC,WAAW,EAAE;AAC3E,MAAM,UAAU,CAAC,MAAM,EAAE,cAAc,EAAC;AACxC,KAAK,MAAM,GAAGA,OAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE;AAChG,MAAM,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC,CAAC;AACvD,KAAK,MAAM;AACX,MAAM,MAAM,IAAI,IAAI,IAAI,SAAS,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AACnE,KAAK;AACL;AACA,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH;AACA,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE;AACtB,IAAI,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;AACrC;AACA,IAAI,IAAI,MAAM,EAAE;AAChB,MAAM,MAAM,GAAG,GAAGA,OAAK,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC9C;AACA,MAAM,IAAI,GAAG,EAAE;AACf,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;AAChC;AACA,QAAQ,IAAI,CAAC,MAAM,EAAE;AACrB,UAAU,OAAO,KAAK,CAAC;AACvB,SAAS;AACT;AACA,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE;AAC7B,UAAU,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;AACpC,SAAS;AACT;AACA,QAAQ,IAAIA,OAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;AACtC,UAAU,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AAC/C,SAAS;AACT;AACA,QAAQ,IAAIA,OAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACpC,UAAU,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACpC,SAAS;AACT;AACA,QAAQ,MAAM,IAAI,SAAS,CAAC,wCAAwC,CAAC,CAAC;AACtE,OAAO;AACP,KAAK;AACL,GAAG;AACH;AACA,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE;AACvB,IAAI,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;AACrC;AACA,IAAI,IAAI,MAAM,EAAE;AAChB,MAAM,MAAM,GAAG,GAAGA,OAAK,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC9C;AACA,MAAM,OAAO,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,SAAS,KAAK,CAAC,OAAO,IAAI,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AACjH,KAAK;AACL;AACA,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH;AACA,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE;AAC1B,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC;AACtB,IAAI,IAAI,OAAO,GAAG,KAAK,CAAC;AACxB;AACA,IAAI,SAAS,YAAY,CAAC,OAAO,EAAE;AACnC,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;AACzC;AACA,MAAM,IAAI,OAAO,EAAE;AACnB,QAAQ,MAAM,GAAG,GAAGA,OAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACjD;AACA,QAAQ,IAAI,GAAG,KAAK,CAAC,OAAO,IAAI,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,EAAE;AAClF,UAAU,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3B;AACA,UAAU,OAAO,GAAG,IAAI,CAAC;AACzB,SAAS;AACT,OAAO;AACP,KAAK;AACL;AACA,IAAI,IAAIA,OAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AAC/B,MAAM,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AACnC,KAAK,MAAM;AACX,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC;AAC3B,KAAK;AACL;AACA,IAAI,OAAO,OAAO,CAAC;AACnB,GAAG;AACH;AACA,EAAE,KAAK,CAAC,OAAO,EAAE;AACjB,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;AACxB,IAAI,IAAI,OAAO,GAAG,KAAK,CAAC;AACxB;AACA,IAAI,OAAO,CAAC,EAAE,EAAE;AAChB,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAC1B,MAAM,GAAG,CAAC,OAAO,IAAI,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE;AAC5E,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,QAAQ,OAAO,GAAG,IAAI,CAAC;AACvB,OAAO;AACP,KAAK;AACL;AACA,IAAI,OAAO,OAAO,CAAC;AACnB,GAAG;AACH;AACA,EAAE,SAAS,CAAC,MAAM,EAAE;AACpB,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC;AACtB,IAAI,MAAM,OAAO,GAAG,EAAE,CAAC;AACvB;AACA,IAAIA,OAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK;AAC3C,MAAM,MAAM,GAAG,GAAGA,OAAK,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AACjD;AACA,MAAM,IAAI,GAAG,EAAE;AACf,QAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;AAC1C,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,QAAQ,OAAO;AACf,OAAO;AACP;AACA,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;AAC/E;AACA,MAAM,IAAI,UAAU,KAAK,MAAM,EAAE;AACjC,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,OAAO;AACP;AACA,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;AAC/C;AACA,MAAM,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;AACjC,KAAK,CAAC,CAAC;AACP;AACA,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH;AACA,EAAE,MAAM,CAAC,GAAG,OAAO,EAAE;AACrB,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,CAAC;AACrD,GAAG;AACH;AACA,EAAE,MAAM,CAAC,SAAS,EAAE;AACpB,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACpC;AACA,IAAIA,OAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK;AAC3C,MAAM,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC,MAAM,CAAC,GAAG,SAAS,IAAIA,OAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;AACvH,KAAK,CAAC,CAAC;AACP;AACA,IAAI,OAAO,GAAG,CAAC;AACf,GAAG;AACH;AACA,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG;AACtB,IAAI,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;AAC5D,GAAG;AACH;AACA,EAAE,QAAQ,GAAG;AACb,IAAI,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,MAAM,GAAG,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpG,GAAG;AACH;AACA,EAAE,KAAK,MAAM,CAAC,WAAW,CAAC,GAAG;AAC7B,IAAI,OAAO,cAAc,CAAC;AAC1B,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC,KAAK,EAAE;AACrB,IAAI,OAAO,KAAK,YAAY,IAAI,GAAG,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3D,GAAG;AACH;AACA,EAAE,OAAO,MAAM,CAAC,KAAK,EAAE,GAAG,OAAO,EAAE;AACnC,IAAI,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;AACrC;AACA,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AACtD;AACA,IAAI,OAAO,QAAQ,CAAC;AACpB,GAAG;AACH;AACA,EAAE,OAAO,QAAQ,CAAC,MAAM,EAAE;AAC1B,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG;AAC7D,MAAM,SAAS,EAAE,EAAE;AACnB,KAAK,CAAC,CAAC;AACP;AACA,IAAI,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;AAC1C,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AACrC;AACA,IAAI,SAAS,cAAc,CAAC,OAAO,EAAE;AACrC,MAAM,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;AAC/C;AACA,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;AAC/B,QAAQ,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAC3C,QAAQ,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;AAClC,OAAO;AACP,KAAK;AACL;AACA,IAAIA,OAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;AACpF;AACA,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,CAAC;AACD;AACA,YAAY,CAAC,QAAQ,CAAC,CAAC,cAAc,EAAE,gBAAgB,EAAE,QAAQ,EAAE,iBAAiB,EAAE,YAAY,EAAE,eAAe,CAAC,CAAC,CAAC;AACtH;AACA;AACAA,OAAK,CAAC,iBAAiB,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK;AAClE,EAAE,IAAI,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnD,EAAE,OAAO;AACT,IAAI,GAAG,EAAE,MAAM,KAAK;AACpB,IAAI,GAAG,CAAC,WAAW,EAAE;AACrB,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC;AACjC,KAAK;AACL,GAAG;AACH,CAAC,CAAC,CAAC;AACH;AACAA,OAAK,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;AAClC;AACA,uBAAe,YAAY;;ACnS3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE;AACrD,EAAE,MAAM,MAAM,GAAG,IAAI,IAAIO,UAAQ,CAAC;AAClC,EAAE,MAAM,OAAO,GAAG,QAAQ,IAAI,MAAM,CAAC;AACrC,EAAE,MAAM,OAAO,GAAGC,cAAY,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACrD,EAAE,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;AAC1B;AACA,EAAER,OAAK,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,SAAS,CAAC,EAAE,EAAE;AAC5C,IAAI,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,SAAS,EAAE,EAAE,QAAQ,GAAG,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;AAC9F,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;AACtB;AACA,EAAE,OAAO,IAAI,CAAC;AACd;;ACzBe,SAAS,QAAQ,CAAC,KAAK,EAAE;AACxC,EAAE,OAAO,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC;AACvC;;ACCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;AACjD;AACA,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,IAAI,IAAI,GAAG,UAAU,GAAG,OAAO,EAAE,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AAC1G,EAAE,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;AAC9B,CAAC;AACD;AACAA,OAAK,CAAC,QAAQ,CAAC,aAAa,EAAE,UAAU,EAAE;AAC1C,EAAE,UAAU,EAAE,IAAI;AAClB,CAAC,CAAC;;AClBF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE;AAC1D,EAAE,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC;AACxD,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,IAAI,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC9E,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;AACtB,GAAG,MAAM;AACT,IAAI,MAAM,CAAC,IAAI,UAAU;AACzB,MAAM,kCAAkC,GAAG,QAAQ,CAAC,MAAM;AAC1D,MAAM,CAAC,UAAU,CAAC,eAAe,EAAE,UAAU,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AACtG,MAAM,QAAQ,CAAC,MAAM;AACrB,MAAM,QAAQ,CAAC,OAAO;AACtB,MAAM,QAAQ;AACd,KAAK,CAAC,CAAC;AACP,GAAG;AACH;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,aAAa,CAAC,GAAG,EAAE;AAC3C;AACA;AACA;AACA,EAAE,OAAO,6BAA6B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACjD;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE;AAC1D,EAAE,OAAO,WAAW;AACpB,MAAM,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;AAC3E,MAAM,OAAO,CAAC;AACd;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,aAAa,CAAC,OAAO,EAAE,YAAY,EAAE;AAC7D,EAAE,IAAI,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE;AAC/C,IAAI,OAAO,WAAW,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AAC9C,GAAG;AACH,EAAE,OAAO,YAAY,CAAC;AACtB;;ACpBO,MAAM,OAAO,GAAG,OAAO;;ACEf,SAAS,aAAa,CAAC,GAAG,EAAE;AAC3C,EAAE,MAAM,KAAK,GAAG,2BAA2B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtD,EAAE,OAAO,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACjC;;ACCA,MAAM,gBAAgB,GAAG,+CAA+C,CAAC;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE;AAC1D,EAAE,MAAM,KAAK,GAAG,OAAO,IAAI,OAAO,CAAC,IAAI,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;AACjE,EAAE,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;AACtC;AACA,EAAE,IAAI,MAAM,KAAK,SAAS,IAAI,KAAK,EAAE;AACrC,IAAI,MAAM,GAAG,IAAI,CAAC;AAClB,GAAG;AACH;AACA,EAAE,IAAI,QAAQ,KAAK,MAAM,EAAE;AAC3B,IAAI,GAAG,GAAG,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;AACjE;AACA,IAAI,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7C;AACA,IAAI,IAAI,CAAC,KAAK,EAAE;AAChB,MAAM,MAAM,IAAI,UAAU,CAAC,aAAa,EAAE,UAAU,CAAC,eAAe,CAAC,CAAC;AACtE,KAAK;AACL;AACA,IAAI,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1B,IAAI,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9B,IAAI,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1B,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC,CAAC;AACvF;AACA,IAAI,IAAI,MAAM,EAAE;AAChB,MAAM,IAAI,CAAC,KAAK,EAAE;AAClB,QAAQ,MAAM,IAAI,UAAU,CAAC,uBAAuB,EAAE,UAAU,CAAC,eAAe,CAAC,CAAC;AAClF,OAAO;AACP;AACA,MAAM,OAAO,IAAI,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAC/C,KAAK;AACL;AACA,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG;AACH;AACA,EAAE,MAAM,IAAI,UAAU,CAAC,uBAAuB,GAAG,QAAQ,EAAE,UAAU,CAAC,eAAe,CAAC,CAAC;AACvF;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE;AAC5B,EAAE,IAAI,SAAS,GAAG,CAAC,CAAC;AACpB,EAAE,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC;AAChC,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC;AACnB,EAAE,OAAO,SAAS,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE;AACzC,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAC3B,IAAI,IAAI,KAAK,IAAI,GAAG,GAAG,SAAS,GAAG,SAAS,EAAE;AAC9C,MAAM,IAAI,KAAK,EAAE;AACjB,QAAQ,YAAY,CAAC,KAAK,CAAC,CAAC;AAC5B,QAAQ,KAAK,GAAG,IAAI,CAAC;AACrB,OAAO;AACP,MAAM,SAAS,GAAG,GAAG,CAAC;AACtB,MAAM,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAClC,KAAK;AACL,IAAI,IAAI,CAAC,KAAK,EAAE;AAChB,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM;AAC/B,QAAQ,KAAK,GAAG,IAAI,CAAC;AACrB,QAAQ,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAC/B,QAAQ,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACpC,OAAO,EAAE,SAAS,IAAI,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC;AACxC,KAAK;AACL,GAAG,CAAC;AACJ;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,WAAW,CAAC,YAAY,EAAE,GAAG,EAAE;AACxC,EAAE,YAAY,GAAG,YAAY,IAAI,EAAE,CAAC;AACpC,EAAE,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;AACxC,EAAE,MAAM,UAAU,GAAG,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;AAC7C,EAAE,IAAI,IAAI,GAAG,CAAC,CAAC;AACf,EAAE,IAAI,IAAI,GAAG,CAAC,CAAC;AACf,EAAE,IAAI,aAAa,CAAC;AACpB;AACA,EAAE,GAAG,GAAG,GAAG,KAAK,SAAS,GAAG,GAAG,GAAG,IAAI,CAAC;AACvC;AACA,EAAE,OAAO,SAAS,IAAI,CAAC,WAAW,EAAE;AACpC,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAC3B;AACA,IAAI,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;AACvC;AACA,IAAI,IAAI,CAAC,aAAa,EAAE;AACxB,MAAM,aAAa,GAAG,GAAG,CAAC;AAC1B,KAAK;AACL;AACA,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC;AAC9B,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;AAC3B;AACA,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC;AACjB,IAAI,IAAI,UAAU,GAAG,CAAC,CAAC;AACvB;AACA,IAAI,OAAO,CAAC,KAAK,IAAI,EAAE;AACvB,MAAM,UAAU,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AAC/B,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC;AAC3B,KAAK;AACL;AACA,IAAI,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,YAAY,CAAC;AACrC;AACA,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE;AACvB,MAAM,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,YAAY,CAAC;AACvC,KAAK;AACL;AACA,IAAI,IAAI,GAAG,GAAG,aAAa,GAAG,GAAG,EAAE;AACnC,MAAM,OAAO;AACb,KAAK;AACL;AACA,IAAI,MAAM,MAAM,GAAG,SAAS,IAAI,GAAG,GAAG,SAAS,CAAC;AAChD;AACA,IAAI,OAAO,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,GAAG,MAAM,CAAC,GAAG,SAAS,CAAC;AACvE,GAAG,CAAC;AACJ;;AC7CA,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AACvC;AACA,MAAM,oBAAoB,SAASS,0BAAM,CAAC,SAAS;AACnD,EAAE,WAAW,CAAC,OAAO,EAAE;AACvB,IAAI,OAAO,GAAGT,OAAK,CAAC,YAAY,CAAC,OAAO,EAAE;AAC1C,MAAM,OAAO,EAAE,CAAC;AAChB,MAAM,SAAS,EAAE,EAAE,GAAG,IAAI;AAC1B,MAAM,YAAY,EAAE,GAAG;AACvB,MAAM,UAAU,EAAE,GAAG;AACrB,MAAM,SAAS,EAAE,CAAC;AAClB,MAAM,YAAY,EAAE,EAAE;AACtB,KAAK,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK;AAC/B,MAAM,OAAO,CAACA,OAAK,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9C,KAAK,CAAC,CAAC;AACP;AACA,IAAI,KAAK,CAAC;AACV,MAAM,qBAAqB,EAAE,OAAO,CAAC,SAAS;AAC9C,KAAK,CAAC,CAAC;AACP;AACA,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC;AACtB;AACA,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG;AACzC,MAAM,MAAM,EAAE,OAAO,CAAC,MAAM;AAC5B,MAAM,UAAU,EAAE,OAAO,CAAC,UAAU;AACpC,MAAM,SAAS,EAAE,OAAO,CAAC,SAAS;AAClC,MAAM,SAAS,EAAE,OAAO,CAAC,SAAS;AAClC,MAAM,OAAO,EAAE,OAAO,CAAC,OAAO;AAC9B,MAAM,YAAY,EAAE,OAAO,CAAC,YAAY;AACxC,MAAM,SAAS,EAAE,CAAC;AAClB,MAAM,UAAU,EAAE,KAAK;AACvB,MAAM,mBAAmB,EAAE,CAAC;AAC5B,MAAM,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE;AACpB,MAAM,KAAK,EAAE,CAAC;AACd,MAAM,cAAc,EAAE,IAAI;AAC1B,KAAK,CAAC;AACN;AACA,IAAI,MAAM,YAAY,GAAG,WAAW,CAAC,SAAS,CAAC,SAAS,GAAG,OAAO,CAAC,YAAY,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;AACvG;AACA,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,KAAK,IAAI;AACpC,MAAM,IAAI,KAAK,KAAK,UAAU,EAAE;AAChC,QAAQ,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;AACnC,UAAU,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC;AACtC,SAAS;AACT,OAAO;AACP,KAAK,CAAC,CAAC;AACP;AACA,IAAI,IAAI,aAAa,GAAG,CAAC,CAAC;AAC1B;AACA,IAAI,SAAS,CAAC,cAAc,GAAG,QAAQ,CAAC,SAAS,gBAAgB,GAAG;AACpE,MAAM,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC;AAC1C,MAAM,MAAM,gBAAgB,GAAG,SAAS,CAAC,SAAS,CAAC;AACnD,MAAM,MAAM,aAAa,GAAG,gBAAgB,GAAG,aAAa,CAAC;AAC7D,MAAM,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,SAAS,EAAE,OAAO;AACnD;AACA,MAAM,MAAM,IAAI,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC;AAC/C;AACA,MAAM,aAAa,GAAG,gBAAgB,CAAC;AACvC;AACA,MAAM,OAAO,CAAC,QAAQ,CAAC,MAAM;AAC7B,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AAC9B,UAAU,QAAQ,EAAE,gBAAgB;AACpC,UAAU,OAAO,EAAE,UAAU;AAC7B,UAAU,UAAU,EAAE,UAAU,IAAI,gBAAgB,GAAG,UAAU,IAAI,SAAS;AAC9E,UAAU,OAAO,EAAE,aAAa;AAChC,UAAU,MAAM,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS;AACzC,UAAU,WAAW,EAAE,IAAI,IAAI,UAAU,IAAI,gBAAgB,IAAI,UAAU;AAC3E,YAAY,CAAC,UAAU,GAAG,gBAAgB,IAAI,IAAI,GAAG,SAAS;AAC9D,SAAS,CAAC,CAAC;AACX,OAAO,CAAC,CAAC;AACT,KAAK,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;AAC5B;AACA,IAAI,MAAM,QAAQ,GAAG,MAAM;AAC3B,MAAM,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AACrC,KAAK,CAAC;AACN;AACA,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC/B,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AACjC,GAAG;AACH;AACA,EAAE,KAAK,CAAC,IAAI,EAAE;AACd,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;AACvC;AACA,IAAI,IAAI,SAAS,CAAC,cAAc,EAAE;AAClC,MAAM,SAAS,CAAC,cAAc,EAAE,CAAC;AACjC,KAAK;AACL;AACA,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC7B,GAAG;AACH;AACA,EAAE,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE;AACxC,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC;AACtB,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;AACvC,IAAI,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;AACtC;AACA,IAAI,MAAM,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC;AAC7D;AACA,IAAI,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;AAC5C;AACA,IAAI,MAAM,OAAO,GAAG,IAAI,GAAG,UAAU,CAAC;AACtC,IAAI,MAAM,cAAc,IAAI,OAAO,GAAG,OAAO,CAAC,CAAC;AAC/C,IAAI,MAAM,YAAY,GAAG,SAAS,CAAC,YAAY,KAAK,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,YAAY,EAAE,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;AACxH;AACA,IAAI,SAAS,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE;AAC1C,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC9C,MAAM,SAAS,CAAC,SAAS,IAAI,KAAK,CAAC;AACnC,MAAM,SAAS,CAAC,KAAK,IAAI,KAAK,CAAC;AAC/B;AACA,MAAM,IAAI,SAAS,CAAC,UAAU,EAAE;AAChC,QAAQ,SAAS,CAAC,cAAc,EAAE,CAAC;AACnC,OAAO;AACP;AACA,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AAC7B,QAAQ,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACpC,OAAO,MAAM;AACb,QAAQ,SAAS,CAAC,cAAc,GAAG,MAAM;AACzC,UAAU,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC;AAC1C,UAAU,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACtC,SAAS,CAAC;AACV,OAAO;AACP,KAAK;AACL;AACA,IAAI,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,SAAS,KAAK;AAClD,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAClD,MAAM,IAAI,cAAc,GAAG,IAAI,CAAC;AAChC,MAAM,IAAI,YAAY,GAAG,qBAAqB,CAAC;AAC/C,MAAM,IAAI,SAAS,CAAC;AACpB,MAAM,IAAI,MAAM,GAAG,CAAC,CAAC;AACrB;AACA,MAAM,IAAI,OAAO,EAAE;AACnB,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAC/B;AACA,QAAQ,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,MAAM,IAAI,GAAG,GAAG,SAAS,CAAC,EAAE,CAAC,KAAK,UAAU,EAAE;AAC5E,UAAU,SAAS,CAAC,EAAE,GAAG,GAAG,CAAC;AAC7B,UAAU,SAAS,GAAG,cAAc,GAAG,SAAS,CAAC,KAAK,CAAC;AACvD,UAAU,SAAS,CAAC,KAAK,GAAG,SAAS,GAAG,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC;AAC3D,UAAU,MAAM,GAAG,CAAC,CAAC;AACrB,SAAS;AACT;AACA,QAAQ,SAAS,GAAG,cAAc,GAAG,SAAS,CAAC,KAAK,CAAC;AACrD,OAAO;AACP;AACA,MAAM,IAAI,OAAO,EAAE;AACnB,QAAQ,IAAI,SAAS,IAAI,CAAC,EAAE;AAC5B;AACA,UAAU,OAAO,UAAU,CAAC,MAAM;AAClC,YAAY,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACpC,WAAW,EAAE,UAAU,GAAG,MAAM,CAAC,CAAC;AAClC,SAAS;AACT;AACA,QAAQ,IAAI,SAAS,GAAG,YAAY,EAAE;AACtC,UAAU,YAAY,GAAG,SAAS,CAAC;AACnC,SAAS;AACT,OAAO;AACP;AACA,MAAM,IAAI,YAAY,IAAI,SAAS,GAAG,YAAY,IAAI,CAAC,SAAS,GAAG,YAAY,IAAI,YAAY,EAAE;AACjG,QAAQ,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AACvD,QAAQ,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;AAClD,OAAO;AACP;AACA,MAAM,SAAS,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM;AAC/C,QAAQ,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;AAC1D,OAAO,GAAG,SAAS,CAAC,CAAC;AACrB,KAAK,CAAC;AACN;AACA,IAAI,cAAc,CAAC,KAAK,EAAE,SAAS,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE;AACnE,MAAM,IAAI,GAAG,EAAE;AACf,QAAQ,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC7B,OAAO;AACP;AACA,MAAM,IAAI,MAAM,EAAE;AAClB,QAAQ,cAAc,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;AACnD,OAAO,MAAM;AACb,QAAQ,QAAQ,CAAC,IAAI,CAAC,CAAC;AACvB,OAAO;AACP,KAAK,CAAC,CAAC;AACP,GAAG;AACH;AACA,EAAE,SAAS,CAAC,MAAM,EAAE;AACpB,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC;AACtC,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,CAAC;AACD;AACA,+BAAe,oBAAoB;;AC9LnC,MAAM,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC;AAC/B;AACA,MAAM,QAAQ,GAAG,iBAAiB,IAAI,EAAE;AACxC,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE;AACnB,IAAI,OAAO,IAAI,CAAC,MAAM,GAAE;AACxB,GAAG,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE;AAC/B,IAAI,MAAM,MAAM,IAAI,CAAC,WAAW,GAAE;AAClC,GAAG,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,EAAE;AAClC,IAAI,OAAO,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;AACjC,GAAG,MAAM;AACT,IAAI,MAAM,IAAI,CAAC;AACf,GAAG;AACH,EAAC;AACD;AACA,mBAAe,QAAQ;;ACTvB,MAAM,iBAAiB,GAAGA,OAAK,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC;AAC5D;AACA,MAAM,WAAW,GAAG,IAAIU,gBAAW,EAAE,CAAC;AACtC;AACA,MAAM,IAAI,GAAG,MAAM,CAAC;AACpB,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC5C,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAC3B;AACA,MAAM,YAAY,CAAC;AACnB,EAAE,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE;AAC3B,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;AAC1C,IAAI,MAAM,aAAa,GAAGV,OAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAChD;AACA,IAAI,IAAI,OAAO,GAAG,CAAC,sCAAsC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7E,MAAM,CAAC,aAAa,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;AAClF,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AACd;AACA,IAAI,IAAI,aAAa,EAAE;AACvB,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC;AAC9E,KAAK,MAAM;AACX,MAAM,OAAO,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,IAAI,IAAI,0BAA0B,CAAC,EAAE,IAAI,CAAC,EAAC;AACnF,KAAK;AACL;AACA,IAAI,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;AACtD;AACA,IAAI,IAAI,CAAC,aAAa,GAAG,aAAa,GAAG,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC;AACvE;AACA,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,GAAG,gBAAgB,CAAC;AAChF;AACA,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACrB,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACvB,GAAG;AACH;AACA,EAAE,OAAO,MAAM,EAAE;AACjB,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC;AACvB;AACA,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;AACzB;AACA,IAAI,GAAGA,OAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;AAClC,MAAM,MAAM,KAAK,CAAC;AAClB,KAAK,MAAM;AACX,MAAM,OAAOW,UAAQ,CAAC,KAAK,CAAC,CAAC;AAC7B,KAAK;AACL;AACA,IAAI,MAAM,UAAU,CAAC;AACrB,GAAG;AACH;AACA,EAAE,OAAO,UAAU,CAAC,IAAI,EAAE;AAC1B,MAAM,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,MAAM;AAC1D,QAAQ,IAAI,GAAG,KAAK;AACpB,QAAQ,IAAI,GAAG,KAAK;AACpB,QAAQ,GAAG,GAAG,KAAK;AACnB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACjB,GAAG;AACH,CAAC;AACD;AACA,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,KAAK;AAC5D,EAAE,MAAM;AACR,IAAI,GAAG,GAAG,oBAAoB;AAC9B,IAAI,IAAI,GAAG,EAAE;AACb,IAAI,QAAQ,GAAG,GAAG,GAAG,GAAG,GAAGX,OAAK,CAAC,cAAc,CAAC,IAAI,EAAE,iBAAiB,CAAC;AACxE,GAAG,GAAG,OAAO,IAAI,EAAE,CAAC;AACpB;AACA,EAAE,GAAG,CAACA,OAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AAC9B,IAAI,MAAM,SAAS,CAAC,4BAA4B,CAAC,CAAC;AAClD,GAAG;AACH;AACA,EAAE,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,EAAE,EAAE;AACnD,IAAI,MAAM,KAAK,CAAC,wCAAwC,CAAC;AACzD,GAAG;AACH;AACA,EAAE,MAAM,aAAa,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,GAAG,QAAQ,GAAG,IAAI,CAAC,CAAC;AACnE,EAAE,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,GAAG,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;AAC/E,EAAE,IAAI,aAAa,GAAG,WAAW,CAAC,UAAU,CAAC;AAC7C;AACA,EAAE,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK;AAClE,IAAI,MAAM,IAAI,GAAG,IAAI,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC/C,IAAI,aAAa,IAAI,IAAI,CAAC,IAAI,CAAC;AAC/B,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG,CAAC,CAAC;AACL;AACA,EAAE,aAAa,IAAI,aAAa,CAAC,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC;AAC3D;AACA,EAAE,aAAa,GAAGA,OAAK,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;AACtD;AACA,EAAE,MAAM,eAAe,GAAG;AAC1B,IAAI,cAAc,EAAE,CAAC,8BAA8B,EAAE,QAAQ,CAAC,CAAC;AAC/D,IAAG;AACH;AACA,EAAE,IAAI,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;AACtC,IAAI,eAAe,CAAC,gBAAgB,CAAC,GAAG,aAAa,CAAC;AACtD,GAAG;AACH;AACA,EAAE,cAAc,IAAI,cAAc,CAAC,eAAe,CAAC,CAAC;AACpD;AACA,EAAE,OAAOY,eAAQ,CAAC,IAAI,CAAC,CAAC,mBAAmB;AAC3C,IAAI,IAAI,MAAM,IAAI,IAAI,KAAK,EAAE;AAC7B,MAAM,MAAM,aAAa,CAAC;AAC1B,MAAM,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AAC3B,KAAK;AACL;AACA,IAAI,MAAM,WAAW,CAAC;AACtB,GAAG,GAAG,CAAC,CAAC;AACR,CAAC,CAAC;AACF;AACA,2BAAe,gBAAgB;;AC1G/B,MAAM,yBAAyB,SAASH,0BAAM,CAAC,SAAS,CAAC;AACzD,EAAE,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE;AACzC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACrB,IAAI,QAAQ,EAAE,CAAC;AACf,GAAG;AACH;AACA,EAAE,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE;AACxC,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AAC5B,MAAM,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC;AACzC;AACA;AACA,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AAC5B,QAAQ,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACvC,QAAQ,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AACxB,QAAQ,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AACxB,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AACpC,OAAO;AACP,KAAK;AACL;AACA,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAChD,GAAG;AACH,CAAC;AACD;AACA,oCAAe,yBAAyB;;ACzBxC,MAAM,WAAW,GAAG,CAAC,EAAE,EAAE,OAAO,KAAK;AACrC,EAAE,OAAOT,OAAK,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,UAAU,GAAG,IAAI,EAAE;AAClD,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAC1B,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK;AACzC,MAAM,IAAI;AACV,QAAQ,OAAO,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAChE,OAAO,CAAC,OAAO,GAAG,EAAE;AACpB,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC;AAChB,OAAO;AACP,KAAK,EAAE,EAAE,CAAC,CAAC;AACX,GAAG,GAAG,EAAE,CAAC;AACT,EAAC;AACD;AACA,sBAAe,WAAW;;ACY1B,MAAM,WAAW,GAAG;AACpB,EAAE,KAAK,EAAEa,wBAAI,CAAC,SAAS,CAAC,YAAY;AACpC,EAAE,WAAW,EAAEA,wBAAI,CAAC,SAAS,CAAC,YAAY;AAC1C,CAAC,CAAC;AACF;AACA,MAAM,aAAa,GAAG;AACtB,EAAE,KAAK,EAAEA,wBAAI,CAAC,SAAS,CAAC,sBAAsB;AAC9C,EAAE,WAAW,EAAEA,wBAAI,CAAC,SAAS,CAAC,sBAAsB;AACpD,EAAC;AACD;AACA,MAAM,iBAAiB,GAAGb,OAAK,CAAC,UAAU,CAACa,wBAAI,CAAC,sBAAsB,CAAC,CAAC;AACxE;AACA,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,CAAC,GAAGC,mCAAe,CAAC;AAC/D;AACA,MAAM,OAAO,GAAG,SAAS,CAAC;AAC1B;AACA,MAAM,kBAAkB,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,IAAI;AAC9D,EAAE,OAAO,QAAQ,GAAG,GAAG,CAAC;AACxB,CAAC,CAAC,CAAC;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,sBAAsB,CAAC,OAAO,EAAE,eAAe,EAAE;AAC1D,EAAE,IAAI,OAAO,CAAC,eAAe,CAAC,KAAK,EAAE;AACrC,IAAI,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC3C,GAAG;AACH,EAAE,IAAI,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE;AACtC,IAAI,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;AAC7D,GAAG;AACH,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,QAAQ,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE;AAClD,EAAE,IAAI,KAAK,GAAG,WAAW,CAAC;AAC1B,EAAE,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,KAAK,EAAE;AACjC,IAAI,MAAM,QAAQ,GAAGC,2BAAc,CAAC,QAAQ,CAAC,CAAC;AAC9C,IAAI,IAAI,QAAQ,EAAE;AAClB,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;AAChC,KAAK;AACL,GAAG;AACH,EAAE,IAAI,KAAK,EAAE;AACb;AACA,IAAI,IAAI,KAAK,CAAC,QAAQ,EAAE;AACxB,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,IAAI,GAAG,IAAI,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;AACzE,KAAK;AACL;AACA,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE;AACpB;AACA,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE;AACtD,QAAQ,KAAK,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,IAAI,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;AACrF,OAAO;AACP,MAAM,MAAM,MAAM,GAAG,MAAM;AAC3B,SAAS,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC;AACjC,SAAS,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC5B,MAAM,OAAO,CAAC,OAAO,CAAC,qBAAqB,CAAC,GAAG,QAAQ,GAAG,MAAM,CAAC;AACjE,KAAK;AACL;AACA,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,GAAG,GAAG,GAAG,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;AACvF,IAAI,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC;AACnD,IAAI,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;AACjC;AACA,IAAI,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;AAC7B,IAAI,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;AAC9B,IAAI,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC;AAC5B,IAAI,IAAI,KAAK,CAAC,QAAQ,EAAE;AACxB,MAAM,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC9F,KAAK;AACL,GAAG;AACH;AACA,EAAE,OAAO,CAAC,eAAe,CAAC,KAAK,GAAG,SAAS,cAAc,CAAC,eAAe,EAAE;AAC3E;AACA;AACA,IAAI,QAAQ,CAAC,eAAe,EAAE,WAAW,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;AACjE,GAAG,CAAC;AACJ,CAAC;AACD;AACA,MAAM,sBAAsB,GAAG,OAAO,OAAO,KAAK,WAAW,IAAIf,OAAK,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,SAAS,CAAC;AACrG;AACA;AACA;AACA,MAAM,SAAS,GAAG,CAAC,aAAa,KAAK;AACrC,EAAE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC1C,IAAI,IAAI,MAAM,CAAC;AACf,IAAI,IAAI,MAAM,CAAC;AACf;AACA,IAAI,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE,UAAU,KAAK;AACxC,MAAM,IAAI,MAAM,EAAE,OAAO;AACzB,MAAM,MAAM,GAAG,IAAI,CAAC;AACpB,MAAM,MAAM,IAAI,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AAC1C,MAAK;AACL;AACA,IAAI,MAAM,QAAQ,GAAG,CAAC,KAAK,KAAK;AAChC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC;AAClB,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;AACrB,KAAK,CAAC;AACN;AACA,IAAI,MAAM,OAAO,GAAG,CAAC,MAAM,KAAK;AAChC,MAAM,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACzB,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;AACrB,MAAK;AACL;AACA,IAAI,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,aAAa,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACjG,GAAG,CAAC;AACJ,CAAC,CAAC;AACF;AACA,MAAM,aAAa,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK;AAC7C,EAAE,IAAI,CAACA,OAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AAChC,IAAI,MAAM,SAAS,CAAC,0BAA0B,CAAC,CAAC;AAChD,GAAG;AACH,EAAE,QAAQ;AACV,IAAI,OAAO;AACX,IAAI,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACxD,GAAG,EAAE;AACL,EAAC;AACD;AACA,MAAM,iBAAiB,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,aAAa,CAACA,OAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,OAAO,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AACpH;AACA;AACA,oBAAe,sBAAsB,IAAI,SAAS,WAAW,CAAC,MAAM,EAAE;AACtE,EAAE,OAAO,SAAS,CAAC,eAAe,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE;AAC/E,IAAI,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC;AACxC,IAAI,MAAM,CAAC,YAAY,EAAE,gBAAgB,CAAC,GAAG,MAAM,CAAC;AACpD,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;AAC/C,IAAI,IAAI,MAAM,CAAC;AACf,IAAI,IAAI,QAAQ,GAAG,KAAK,CAAC;AACzB,IAAI,IAAI,GAAG,CAAC;AACZ;AACA,IAAI,IAAI,MAAM,EAAE;AAChB,MAAM,MAAM,OAAO,GAAGgB,aAAW,CAAC,MAAM,EAAE,CAAC,KAAK,KAAKhB,OAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7F;AACA,MAAM,MAAM,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,KAAK;AACtC,QAAQ,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,KAAK;AACpD,UAAU,IAAI,GAAG,EAAE;AACnB,YAAY,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;AAC3B,WAAW;AACX;AACA,UAAU,MAAM,SAAS,GAAGA,OAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAC9H;AACA,UAAU,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAC5F,SAAS,CAAC,CAAC;AACX,QAAO;AACP,KAAK;AACL;AACA;AACA,IAAI,MAAM,OAAO,GAAG,IAAIiB,gCAAY,EAAE,CAAC;AACvC;AACA,IAAI,MAAM,UAAU,GAAG,MAAM;AAC7B,MAAM,IAAI,MAAM,CAAC,WAAW,EAAE;AAC9B,QAAQ,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC9C,OAAO;AACP;AACA,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE;AACzB,QAAQ,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAC1D,OAAO;AACP;AACA,MAAM,OAAO,CAAC,kBAAkB,EAAE,CAAC;AACnC,MAAK;AACL;AACA,IAAI,MAAM,CAAC,CAAC,KAAK,EAAE,UAAU,KAAK;AAClC,MAAM,MAAM,GAAG,IAAI,CAAC;AACpB,MAAM,IAAI,UAAU,EAAE;AACtB,QAAQ,QAAQ,GAAG,IAAI,CAAC;AACxB,QAAQ,UAAU,EAAE,CAAC;AACrB,OAAO;AACP,KAAK,CAAC,CAAC;AACP;AACA,IAAI,SAAS,KAAK,CAAC,MAAM,EAAE;AAC3B,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,GAAG,IAAI,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;AACpG,KAAK;AACL;AACA,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAClC;AACA,IAAI,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE;AAC7C,MAAM,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAChE,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE;AACzB,QAAQ,MAAM,CAAC,MAAM,CAAC,OAAO,GAAG,KAAK,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AACzF,OAAO;AACP,KAAK;AACL;AACA;AACA,IAAI,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;AAC/D,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;AACzD,IAAI,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC9D;AACA,IAAI,IAAI,QAAQ,KAAK,OAAO,EAAE;AAC9B,MAAM,IAAI,aAAa,CAAC;AACxB;AACA,MAAM,IAAI,MAAM,KAAK,KAAK,EAAE;AAC5B,QAAQ,OAAO,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE;AACvC,UAAU,MAAM,EAAE,GAAG;AACrB,UAAU,UAAU,EAAE,oBAAoB;AAC1C,UAAU,OAAO,EAAE,EAAE;AACrB,UAAU,MAAM;AAChB,SAAS,CAAC,CAAC;AACX,OAAO;AACP;AACA,MAAM,IAAI;AACV,QAAQ,aAAa,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,YAAY,KAAK,MAAM,EAAE;AACzE,UAAU,IAAI,EAAE,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI;AAC7C,SAAS,CAAC,CAAC;AACX,OAAO,CAAC,OAAO,GAAG,EAAE;AACpB,QAAQ,MAAM,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;AACvE,OAAO;AACP;AACA,MAAM,IAAI,YAAY,KAAK,MAAM,EAAE;AACnC,QAAQ,aAAa,GAAG,aAAa,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;AACjE;AACA,QAAQ,IAAI,CAAC,gBAAgB,IAAI,gBAAgB,KAAK,MAAM,EAAE;AAC9D,UAAU,aAAa,GAAGjB,OAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;AACxD,SAAS;AACT,OAAO,MAAM,IAAI,YAAY,KAAK,QAAQ,EAAE;AAC5C,QAAQ,aAAa,GAAGS,0BAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAC5D,OAAO;AACP;AACA,MAAM,OAAO,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE;AACrC,QAAQ,IAAI,EAAE,aAAa;AAC3B,QAAQ,MAAM,EAAE,GAAG;AACnB,QAAQ,UAAU,EAAE,IAAI;AACxB,QAAQ,OAAO,EAAE,IAAID,cAAY,EAAE;AACnC,QAAQ,MAAM;AACd,OAAO,CAAC,CAAC;AACT,KAAK;AACL;AACA,IAAI,IAAI,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;AACrD,MAAM,OAAO,MAAM,CAAC,IAAI,UAAU;AAClC,QAAQ,uBAAuB,GAAG,QAAQ;AAC1C,QAAQ,UAAU,CAAC,eAAe;AAClC,QAAQ,MAAM;AACd,OAAO,CAAC,CAAC;AACT,KAAK;AACL;AACA,IAAI,MAAM,OAAO,GAAGA,cAAY,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC;AAClE;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,QAAQ,GAAG,OAAO,EAAE,KAAK,CAAC,CAAC;AACzD;AACA,IAAI,MAAM,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;AACzD,IAAI,MAAM,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACrD,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACnC,IAAI,IAAI,aAAa,GAAG,SAAS,CAAC;AAClC,IAAI,IAAI,eAAe,GAAG,SAAS,CAAC;AACpC;AACA;AACA,IAAI,IAAIR,OAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE;AACzC,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,6BAA6B,CAAC,CAAC;AACjF;AACA,MAAM,IAAI,GAAGkB,kBAAgB,CAAC,IAAI,EAAE,CAAC,WAAW,KAAK;AACrD,QAAQ,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AACjC,OAAO,EAAE;AACT,QAAQ,GAAG,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC;AACxC,QAAQ,QAAQ,EAAE,YAAY,IAAI,YAAY,CAAC,CAAC,CAAC,IAAI,SAAS;AAC9D,OAAO,CAAC,CAAC;AACT;AACA,KAAK,MAAM,IAAIlB,OAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAIA,OAAK,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AAC5E,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AACrC;AACA,MAAM,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE;AACvC,QAAQ,IAAI;AACZ,UAAU,MAAM,WAAW,GAAG,MAAMmB,wBAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9E,UAAU,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,WAAW,IAAI,CAAC,IAAI,OAAO,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;AACpG;AACA,SAAS,CAAC,OAAO,CAAC,EAAE;AACpB,SAAS;AACT,OAAO;AACP,KAAK,MAAM,IAAInB,OAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AACnC,MAAM,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,IAAI,0BAA0B,CAAC,CAAC;AACnF,MAAM,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;AAC/C,MAAM,IAAI,GAAGS,0BAAM,CAAC,QAAQ,CAAC,IAAI,CAACE,UAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAClD,KAAK,MAAM,IAAI,IAAI,IAAI,CAACX,OAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAC9C,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAE1B,MAAM,IAAIA,OAAK,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;AAC5C,QAAQ,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AACjD,OAAO,MAAM,IAAIA,OAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AACvC,QAAQ,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC1C,OAAO,MAAM;AACb,QAAQ,OAAO,MAAM,CAAC,IAAI,UAAU;AACpC,UAAU,mFAAmF;AAC7F,UAAU,UAAU,CAAC,eAAe;AACpC,UAAU,MAAM;AAChB,SAAS,CAAC,CAAC;AACX,OAAO;AACP;AACA;AACA,MAAM,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AACnD;AACA,MAAM,IAAI,MAAM,CAAC,aAAa,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,aAAa,EAAE;AAC3E,QAAQ,OAAO,MAAM,CAAC,IAAI,UAAU;AACpC,UAAU,8CAA8C;AACxD,UAAU,UAAU,CAAC,eAAe;AACpC,UAAU,MAAM;AAChB,SAAS,CAAC,CAAC;AACX,OAAO;AACP,KAAK;AACL;AACA,IAAI,MAAM,aAAa,GAAGA,OAAK,CAAC,cAAc,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;AAC3E;AACA,IAAI,IAAIA,OAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AAChC,MAAM,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AACjC,MAAM,eAAe,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AACnC,KAAK,MAAM;AACX,MAAM,aAAa,GAAG,eAAe,GAAG,OAAO,CAAC;AAChD,KAAK;AACL;AACA,IAAI,IAAI,IAAI,KAAK,gBAAgB,IAAI,aAAa,CAAC,EAAE;AACrD,MAAM,IAAI,CAACA,OAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AACjC,QAAQ,IAAI,GAAGS,0BAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;AAC/D,OAAO;AACP;AACA,MAAM,IAAI,GAAGA,0BAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,IAAIW,sBAAoB,CAAC;AAC7D,QAAQ,MAAM,EAAE,aAAa;AAC7B,QAAQ,OAAO,EAAEpB,OAAK,CAAC,cAAc,CAAC,aAAa,CAAC;AACpD,OAAO,CAAC,CAAC,EAAEA,OAAK,CAAC,IAAI,CAAC,CAAC;AACvB;AACA,MAAM,gBAAgB,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,IAAI;AAC1D,QAAQ,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE;AACjD,UAAU,MAAM,EAAE,IAAI;AACtB,SAAS,CAAC,CAAC,CAAC;AACZ,OAAO,CAAC,CAAC;AACT,KAAK;AACL;AACA;AACA,IAAI,IAAI,IAAI,GAAG,SAAS,CAAC;AACzB,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE;AACrB,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;AAClD,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;AAClD,MAAM,IAAI,GAAG,QAAQ,GAAG,GAAG,GAAG,QAAQ,CAAC;AACvC,KAAK;AACL;AACA,IAAI,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,QAAQ,EAAE;AAClC,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC1C,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC1C,MAAM,IAAI,GAAG,WAAW,GAAG,GAAG,GAAG,WAAW,CAAC;AAC7C,KAAK;AACL;AACA,IAAI,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;AAC5C;AACA,IAAI,IAAI,IAAI,CAAC;AACb;AACA,IAAI,IAAI;AACR,MAAM,IAAI,GAAG,QAAQ;AACrB,QAAQ,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM;AACvC,QAAQ,MAAM,CAAC,MAAM;AACrB,QAAQ,MAAM,CAAC,gBAAgB;AAC/B,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC3B,KAAK,CAAC,OAAO,GAAG,EAAE;AAClB,MAAM,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC/C,MAAM,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC;AAChC,MAAM,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;AACjC,MAAM,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC;AAC9B,MAAM,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC;AAC/B,KAAK;AACL;AACA,IAAI,OAAO,CAAC,GAAG;AACf,MAAM,iBAAiB;AACvB,MAAM,yBAAyB,IAAI,iBAAiB,GAAG,MAAM,GAAG,EAAE,CAAC,EAAE,KAAK;AAC1E,OAAO,CAAC;AACR;AACA,IAAI,MAAM,OAAO,GAAG;AACpB,MAAM,IAAI;AACV,MAAM,MAAM,EAAE,MAAM;AACpB,MAAM,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE;AAC/B,MAAM,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE;AAClE,MAAM,IAAI;AACV,MAAM,QAAQ;AACd,MAAM,MAAM;AACZ,MAAM,cAAc,EAAE,sBAAsB;AAC5C,MAAM,eAAe,EAAE,EAAE;AACzB,KAAK,CAAC;AACN;AACA;AACA,IAAI,CAACA,OAAK,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;AAC5D;AACA,IAAI,IAAI,MAAM,CAAC,UAAU,EAAE;AAC3B,MAAM,OAAO,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC7C,KAAK,MAAM;AACX,MAAM,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AACzC,MAAM,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AACjC,MAAM,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,GAAG,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AACjI,KAAK;AACL;AACA,IAAI,IAAI,SAAS,CAAC;AAClB,IAAI,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC1D,IAAI,OAAO,CAAC,KAAK,GAAG,cAAc,GAAG,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC;AAC1E,IAAI,IAAI,MAAM,CAAC,SAAS,EAAE;AAC1B,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AACnC,KAAK,MAAM,IAAI,MAAM,CAAC,YAAY,KAAK,CAAC,EAAE;AAC1C,MAAM,SAAS,GAAG,cAAc,GAAGqB,yBAAK,GAAGC,wBAAI,CAAC;AAChD,KAAK,MAAM;AACX,MAAM,IAAI,MAAM,CAAC,YAAY,EAAE;AAC/B,QAAQ,OAAO,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AACnD,OAAO;AACP,MAAM,IAAI,MAAM,CAAC,cAAc,EAAE;AACjC,QAAQ,OAAO,CAAC,eAAe,CAAC,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC;AAC/D,OAAO;AACP,MAAM,SAAS,GAAG,cAAc,GAAG,WAAW,GAAG,UAAU,CAAC;AAC5D,KAAK;AACL;AACA,IAAI,IAAI,MAAM,CAAC,aAAa,GAAG,CAAC,CAAC,EAAE;AACnC,MAAM,OAAO,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AACnD,KAAK,MAAM;AACX;AACA,MAAM,OAAO,CAAC,aAAa,GAAG,QAAQ,CAAC;AACvC,KAAK;AACL;AACA,IAAI,IAAI,MAAM,CAAC,kBAAkB,EAAE;AACnC,MAAM,OAAO,CAAC,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAC7D,KAAK;AACL;AACA;AACA,IAAI,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,cAAc,CAAC,GAAG,EAAE;AAClE,MAAM,IAAI,GAAG,CAAC,SAAS,EAAE,OAAO;AAChC;AACA,MAAM,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;AAC5B;AACA,MAAM,MAAM,cAAc,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAC5D;AACA,MAAM,IAAI,kBAAkB,EAAE;AAC9B,QAAQ,MAAM,eAAe,GAAG,IAAIF,sBAAoB,CAAC;AACzD,UAAU,MAAM,EAAEpB,OAAK,CAAC,cAAc,CAAC,cAAc,CAAC;AACtD,UAAU,OAAO,EAAEA,OAAK,CAAC,cAAc,CAAC,eAAe,CAAC;AACxD,SAAS,CAAC,CAAC;AACX;AACA,QAAQ,kBAAkB,IAAI,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,IAAI;AACzE,UAAU,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE;AACrD,YAAY,QAAQ,EAAE,IAAI;AAC1B,WAAW,CAAC,CAAC,CAAC;AACd,SAAS,CAAC,CAAC;AACX;AACA,QAAQ,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACtC,OAAO;AACP;AACA;AACA,MAAM,IAAI,cAAc,GAAG,GAAG,CAAC;AAC/B;AACA;AACA,MAAM,MAAM,WAAW,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC;AACzC;AACA;AACA,MAAM,IAAI,MAAM,CAAC,UAAU,KAAK,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE;AAC1E;AACA;AACA,QAAQ,IAAI,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE;AACzD,UAAU,OAAO,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;AACjD,SAAS;AACT;AACA,QAAQ,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE;AACrE;AACA,QAAQ,KAAK,MAAM,CAAC;AACpB,QAAQ,KAAK,QAAQ,CAAC;AACtB,QAAQ,KAAK,UAAU,CAAC;AACxB,QAAQ,KAAK,YAAY;AACzB;AACA,UAAU,OAAO,CAAC,IAAI,CAACa,wBAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;AACtD;AACA;AACA,UAAU,OAAO,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;AACjD,UAAU,MAAM;AAChB,QAAQ,KAAK,SAAS;AACtB,UAAU,OAAO,CAAC,IAAI,CAAC,IAAIU,2BAAyB,EAAE,CAAC,CAAC;AACxD;AACA;AACA,UAAU,OAAO,CAAC,IAAI,CAACV,wBAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;AACtD;AACA;AACA,UAAU,OAAO,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;AACjD,UAAU,MAAM;AAChB,QAAQ,KAAK,IAAI;AACjB,UAAU,IAAI,iBAAiB,EAAE;AACjC,YAAY,OAAO,CAAC,IAAI,CAACA,wBAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,CAAC,CAAC;AACrE,YAAY,OAAO,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;AACnD,WAAW;AACX,SAAS;AACT,OAAO;AACP;AACA,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,GAAGJ,0BAAM,CAAC,QAAQ,CAAC,OAAO,EAAET,OAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAC9F;AACA,MAAM,MAAM,YAAY,GAAGS,0BAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,MAAM;AACjE,QAAQ,YAAY,EAAE,CAAC;AACvB,QAAQ,UAAU,EAAE,CAAC;AACrB,OAAO,CAAC,CAAC;AACT;AACA,MAAM,MAAM,QAAQ,GAAG;AACvB,QAAQ,MAAM,EAAE,GAAG,CAAC,UAAU;AAC9B,QAAQ,UAAU,EAAE,GAAG,CAAC,aAAa;AACrC,QAAQ,OAAO,EAAE,IAAID,cAAY,CAAC,GAAG,CAAC,OAAO,CAAC;AAC9C,QAAQ,MAAM;AACd,QAAQ,OAAO,EAAE,WAAW;AAC5B,OAAO,CAAC;AACR;AACA,MAAM,IAAI,YAAY,KAAK,QAAQ,EAAE;AACrC,QAAQ,QAAQ,CAAC,IAAI,GAAG,cAAc,CAAC;AACvC,QAAQ,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC1C,OAAO,MAAM;AACb,QAAQ,MAAM,cAAc,GAAG,EAAE,CAAC;AAClC,QAAQ,IAAI,kBAAkB,GAAG,CAAC,CAAC;AACnC;AACA,QAAQ,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,gBAAgB,CAAC,KAAK,EAAE;AACnE,UAAU,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACrC,UAAU,kBAAkB,IAAI,KAAK,CAAC,MAAM,CAAC;AAC7C;AACA;AACA,UAAU,IAAI,MAAM,CAAC,gBAAgB,GAAG,CAAC,CAAC,IAAI,kBAAkB,GAAG,MAAM,CAAC,gBAAgB,EAAE;AAC5F;AACA,YAAY,QAAQ,GAAG,IAAI,CAAC;AAC5B,YAAY,cAAc,CAAC,OAAO,EAAE,CAAC;AACrC,YAAY,MAAM,CAAC,IAAI,UAAU,CAAC,2BAA2B,GAAG,MAAM,CAAC,gBAAgB,GAAG,WAAW;AACrG,cAAc,UAAU,CAAC,gBAAgB,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;AACjE,WAAW;AACX,SAAS,CAAC,CAAC;AACX;AACA,QAAQ,cAAc,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,oBAAoB,GAAG;AACrE,UAAU,IAAI,QAAQ,EAAE;AACxB,YAAY,OAAO;AACnB,WAAW;AACX;AACA,UAAU,MAAM,GAAG,GAAG,IAAI,UAAU;AACpC,YAAY,2BAA2B,GAAG,MAAM,CAAC,gBAAgB,GAAG,WAAW;AAC/E,YAAY,UAAU,CAAC,gBAAgB;AACvC,YAAY,MAAM;AAClB,YAAY,WAAW;AACvB,WAAW,CAAC;AACZ,UAAU,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACtC,UAAU,MAAM,CAAC,GAAG,CAAC,CAAC;AACtB,SAAS,CAAC,CAAC;AACX;AACA,QAAQ,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,iBAAiB,CAAC,GAAG,EAAE;AACnE,UAAU,IAAI,GAAG,CAAC,SAAS,EAAE,OAAO;AACpC,UAAU,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;AAClE,SAAS,CAAC,CAAC;AACX;AACA,QAAQ,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,eAAe,GAAG;AAC5D,UAAU,IAAI;AACd,YAAY,IAAI,YAAY,GAAG,cAAc,CAAC,MAAM,KAAK,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AAC/G,YAAY,IAAI,YAAY,KAAK,aAAa,EAAE;AAChD,cAAc,YAAY,GAAG,YAAY,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;AACrE,cAAc,IAAI,CAAC,gBAAgB,IAAI,gBAAgB,KAAK,MAAM,EAAE;AACpE,gBAAgB,YAAY,GAAGR,OAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AAC5D,eAAe;AACf,aAAa;AACb,YAAY,QAAQ,CAAC,IAAI,GAAG,YAAY,CAAC;AACzC,WAAW,CAAC,OAAO,GAAG,EAAE;AACxB,YAAY,OAAO,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC1F,WAAW;AACX,UAAU,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC5C,SAAS,CAAC,CAAC;AACX,OAAO;AACP;AACA,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI;AACnC,QAAQ,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE;AACvC,UAAU,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAC5C,UAAU,cAAc,CAAC,OAAO,EAAE,CAAC;AACnC,SAAS;AACT,OAAO,CAAC,CAAC;AACT,KAAK,CAAC,CAAC;AACP;AACA,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI;AACjC,MAAM,MAAM,CAAC,GAAG,CAAC,CAAC;AAClB,MAAM,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACvB,KAAK,CAAC,CAAC;AACP;AACA;AACA,IAAI,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,kBAAkB,CAAC,GAAG,EAAE;AACrD;AACA;AACA,MAAM,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;AACtD,KAAK,CAAC,CAAC;AACP;AACA;AACA,IAAI,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,mBAAmB,CAAC,MAAM,EAAE;AAC1D;AACA,MAAM,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;AAC3C,KAAK,CAAC,CAAC;AACP;AACA;AACA,IAAI,IAAI,MAAM,CAAC,OAAO,EAAE;AACxB;AACA,MAAM,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACnD;AACA,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;AACjC,QAAQ,MAAM,CAAC,IAAI,UAAU;AAC7B,UAAU,+CAA+C;AACzD,UAAU,UAAU,CAAC,oBAAoB;AACzC,UAAU,MAAM;AAChB,UAAU,GAAG;AACb,SAAS,CAAC,CAAC;AACX;AACA,QAAQ,OAAO;AACf,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,GAAG,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,oBAAoB,GAAG;AAC9D,QAAQ,IAAI,MAAM,EAAE,OAAO;AAC3B,QAAQ,IAAI,mBAAmB,GAAG,MAAM,CAAC,OAAO,GAAG,aAAa,GAAG,MAAM,CAAC,OAAO,GAAG,aAAa,GAAG,kBAAkB,CAAC;AACvH,QAAQ,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,oBAAoB,CAAC;AACzE,QAAQ,IAAI,MAAM,CAAC,mBAAmB,EAAE;AACxC,UAAU,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAC3D,SAAS;AACT,QAAQ,MAAM,CAAC,IAAI,UAAU;AAC7B,UAAU,mBAAmB;AAC7B,UAAU,YAAY,CAAC,mBAAmB,GAAG,UAAU,CAAC,SAAS,GAAG,UAAU,CAAC,YAAY;AAC3F,UAAU,MAAM;AAChB,UAAU,GAAG;AACb,SAAS,CAAC,CAAC;AACX,QAAQ,KAAK,EAAE,CAAC;AAChB,OAAO,CAAC,CAAC;AACT,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAIA,OAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAC9B,MAAM,IAAI,KAAK,GAAG,KAAK,CAAC;AACxB,MAAM,IAAI,OAAO,GAAG,KAAK,CAAC;AAC1B;AACA,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM;AAC3B,QAAQ,KAAK,GAAG,IAAI,CAAC;AACrB,OAAO,CAAC,CAAC;AACT;AACA,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI;AAChC,QAAQ,OAAO,GAAG,IAAI,CAAC;AACvB,QAAQ,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACzB,OAAO,CAAC,CAAC;AACT;AACA,MAAM,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM;AAC7B,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE;AAChC,UAAU,KAAK,CAAC,IAAI,aAAa,CAAC,iCAAiC,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;AACnF,SAAS;AACT,OAAO,CAAC,CAAC;AACT;AACA,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrB,KAAK,MAAM;AACX,MAAM,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACpB,KAAK;AACL,GAAG,CAAC,CAAC;AACL;;ACvqBA,gBAAe,QAAQ,CAAC,qBAAqB;AAC7C;AACA;AACA,EAAE;AACF,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE;AACtD,MAAM,MAAM,MAAM,GAAG,CAAC,IAAI,GAAG,GAAG,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9D;AACA,MAAMA,OAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AAC3F;AACA,MAAMA,OAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;AAC1D;AACA,MAAMA,OAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC;AAChE;AACA,MAAM,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC/C;AACA,MAAM,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAK;AACL;AACA,IAAI,IAAI,CAAC,IAAI,EAAE;AACf,MAAM,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,YAAY,GAAG,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC;AACzF,MAAM,QAAQ,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE;AAC3D,KAAK;AACL;AACA,IAAI,MAAM,CAAC,IAAI,EAAE;AACjB,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC;AAClD,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA,EAAE;AACF,IAAI,KAAK,GAAG,EAAE;AACd,IAAI,IAAI,GAAG;AACX,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,IAAI,MAAM,GAAG,EAAE;AACf,GAAG;;ACnCH,wBAAe,QAAQ,CAAC,qBAAqB;AAC7C;AACA;AACA;AACA,EAAE,CAAC,SAAS,kBAAkB,GAAG;AACjC,IAAI,MAAM,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;AAC7D,IAAI,MAAM,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AACvD,IAAI,IAAI,SAAS,CAAC;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,UAAU,CAAC,GAAG,EAAE;AAC7B,MAAM,IAAI,IAAI,GAAG,GAAG,CAAC;AACrB;AACA,MAAM,IAAI,IAAI,EAAE;AAChB;AACA,QAAQ,cAAc,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAClD,QAAQ,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC;AACnC,OAAO;AACP;AACA,MAAM,cAAc,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAChD;AACA;AACA,MAAM,OAAO;AACb,QAAQ,IAAI,EAAE,cAAc,CAAC,IAAI;AACjC,QAAQ,QAAQ,EAAE,cAAc,CAAC,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,EAAE;AAC1F,QAAQ,IAAI,EAAE,cAAc,CAAC,IAAI;AACjC,QAAQ,MAAM,EAAE,cAAc,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,EAAE;AACrF,QAAQ,IAAI,EAAE,cAAc,CAAC,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,EAAE;AAC9E,QAAQ,QAAQ,EAAE,cAAc,CAAC,QAAQ;AACzC,QAAQ,IAAI,EAAE,cAAc,CAAC,IAAI;AACjC,QAAQ,QAAQ,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG;AAC5D,UAAU,cAAc,CAAC,QAAQ;AACjC,UAAU,GAAG,GAAG,cAAc,CAAC,QAAQ;AACvC,OAAO,CAAC;AACR,KAAK;AACL;AACA,IAAI,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,SAAS,eAAe,CAAC,UAAU,EAAE;AAChD,MAAM,MAAM,MAAM,GAAG,CAACA,OAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC;AACxF,MAAM,QAAQ,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,QAAQ;AACpD,UAAU,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,EAAE;AAC1C,KAAK,CAAC;AACN,GAAG,GAAG;AACN;AACA;AACA,EAAE,CAAC,SAAS,qBAAqB,GAAG;AACpC,IAAI,OAAO,SAAS,eAAe,GAAG;AACtC,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK,CAAC;AACN,GAAG,GAAG;;AClDN,SAAS,oBAAoB,CAAC,QAAQ,EAAE,gBAAgB,EAAE;AAC1D,EAAE,IAAI,aAAa,GAAG,CAAC,CAAC;AACxB,EAAE,MAAM,YAAY,GAAG,WAAW,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AAC5C;AACA,EAAE,OAAO,CAAC,IAAI;AACd,IAAI,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;AAC5B,IAAI,MAAM,KAAK,GAAG,CAAC,CAAC,gBAAgB,GAAG,CAAC,CAAC,KAAK,GAAG,SAAS,CAAC;AAC3D,IAAI,MAAM,aAAa,GAAG,MAAM,GAAG,aAAa,CAAC;AACjD,IAAI,MAAM,IAAI,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC;AAC7C,IAAI,MAAM,OAAO,GAAG,MAAM,IAAI,KAAK,CAAC;AACpC;AACA,IAAI,aAAa,GAAG,MAAM,CAAC;AAC3B;AACA,IAAI,MAAM,IAAI,GAAG;AACjB,MAAM,MAAM;AACZ,MAAM,KAAK;AACX,MAAM,QAAQ,EAAE,KAAK,IAAI,MAAM,GAAG,KAAK,IAAI,SAAS;AACpD,MAAM,KAAK,EAAE,aAAa;AAC1B,MAAM,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS;AACnC,MAAM,SAAS,EAAE,IAAI,IAAI,KAAK,IAAI,OAAO,GAAG,CAAC,KAAK,GAAG,MAAM,IAAI,IAAI,GAAG,SAAS;AAC/E,MAAM,KAAK,EAAE,CAAC;AACd,KAAK,CAAC;AACN;AACA,IAAI,IAAI,CAAC,gBAAgB,GAAG,UAAU,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC;AAC1D;AACA,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;AACnB,GAAG,CAAC;AACJ,CAAC;AACD;AACA,MAAM,qBAAqB,GAAG,OAAO,cAAc,KAAK,WAAW,CAAC;AACpE;AACA,mBAAe,qBAAqB,IAAI,UAAU,MAAM,EAAE;AAC1D,EAAE,OAAO,IAAI,OAAO,CAAC,SAAS,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE;AAClE,IAAI,IAAI,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC;AAClC,IAAI,MAAM,cAAc,GAAGQ,cAAY,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC;AACzE,IAAI,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,GAAG,MAAM,CAAC;AAC/C,IAAI,IAAI,UAAU,CAAC;AACnB,IAAI,SAAS,IAAI,GAAG;AACpB,MAAM,IAAI,MAAM,CAAC,WAAW,EAAE;AAC9B,QAAQ,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;AACnD,OAAO;AACP;AACA,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE;AACzB,QAAQ,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAC/D,OAAO;AACP,KAAK;AACL;AACA,IAAI,IAAI,WAAW,CAAC;AACpB;AACA,IAAI,IAAIR,OAAK,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE;AACvC,MAAM,IAAI,QAAQ,CAAC,qBAAqB,IAAI,QAAQ,CAAC,8BAA8B,EAAE;AACrF,QAAQ,cAAc,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC7C,OAAO,MAAM,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC,cAAc,EAAE,MAAM,KAAK,EAAE;AAC5E;AACA,QAAQ,MAAM,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,GAAG,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;AACvH,QAAQ,cAAc,CAAC,cAAc,CAAC,CAAC,IAAI,IAAI,qBAAqB,EAAE,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7F,OAAO;AACP,KAAK;AACL;AACA,IAAI,IAAI,OAAO,GAAG,IAAI,cAAc,EAAE,CAAC;AACvC;AACA;AACA,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE;AACrB,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;AAClD,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC;AACtG,MAAM,cAAc,CAAC,GAAG,CAAC,eAAe,EAAE,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC;AACtF,KAAK;AACL;AACA,IAAI,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;AAC/D;AACA,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,gBAAgB,CAAC,EAAE,IAAI,CAAC,CAAC;AAChH;AACA;AACA,IAAI,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACrC;AACA,IAAI,SAAS,SAAS,GAAG;AACzB,MAAM,IAAI,CAAC,OAAO,EAAE;AACpB,QAAQ,OAAO;AACf,OAAO;AACP;AACA,MAAM,MAAM,eAAe,GAAGQ,cAAY,CAAC,IAAI;AAC/C,QAAQ,uBAAuB,IAAI,OAAO,IAAI,OAAO,CAAC,qBAAqB,EAAE;AAC7E,OAAO,CAAC;AACR,MAAM,MAAM,YAAY,GAAG,CAAC,YAAY,IAAI,YAAY,KAAK,MAAM,IAAI,YAAY,KAAK,MAAM;AAC9F,QAAQ,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC;AAChD,MAAM,MAAM,QAAQ,GAAG;AACvB,QAAQ,IAAI,EAAE,YAAY;AAC1B,QAAQ,MAAM,EAAE,OAAO,CAAC,MAAM;AAC9B,QAAQ,UAAU,EAAE,OAAO,CAAC,UAAU;AACtC,QAAQ,OAAO,EAAE,eAAe;AAChC,QAAQ,MAAM;AACd,QAAQ,OAAO;AACf,OAAO,CAAC;AACR;AACA,MAAM,MAAM,CAAC,SAAS,QAAQ,CAAC,KAAK,EAAE;AACtC,QAAQ,OAAO,CAAC,KAAK,CAAC,CAAC;AACvB,QAAQ,IAAI,EAAE,CAAC;AACf,OAAO,EAAE,SAAS,OAAO,CAAC,GAAG,EAAE;AAC/B,QAAQ,MAAM,CAAC,GAAG,CAAC,CAAC;AACpB,QAAQ,IAAI,EAAE,CAAC;AACf,OAAO,EAAE,QAAQ,CAAC,CAAC;AACnB;AACA;AACA,MAAM,OAAO,GAAG,IAAI,CAAC;AACrB,KAAK;AACL;AACA,IAAI,IAAI,WAAW,IAAI,OAAO,EAAE;AAChC;AACA,MAAM,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;AACpC,KAAK,MAAM;AACX;AACA,MAAM,OAAO,CAAC,kBAAkB,GAAG,SAAS,UAAU,GAAG;AACzD,QAAQ,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,KAAK,CAAC,EAAE;AAClD,UAAU,OAAO;AACjB,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE;AAC1G,UAAU,OAAO;AACjB,SAAS;AACT;AACA;AACA,QAAQ,UAAU,CAAC,SAAS,CAAC,CAAC;AAC9B,OAAO,CAAC;AACR,KAAK;AACL;AACA;AACA,IAAI,OAAO,CAAC,OAAO,GAAG,SAAS,WAAW,GAAG;AAC7C,MAAM,IAAI,CAAC,OAAO,EAAE;AACpB,QAAQ,OAAO;AACf,OAAO;AACP;AACA,MAAM,MAAM,CAAC,IAAI,UAAU,CAAC,iBAAiB,EAAE,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAC1F;AACA;AACA,MAAM,OAAO,GAAG,IAAI,CAAC;AACrB,KAAK,CAAC;AACN;AACA;AACA,IAAI,OAAO,CAAC,OAAO,GAAG,SAAS,WAAW,GAAG;AAC7C;AACA;AACA,MAAM,MAAM,CAAC,IAAI,UAAU,CAAC,eAAe,EAAE,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AACvF;AACA;AACA,MAAM,OAAO,GAAG,IAAI,CAAC;AACrB,KAAK,CAAC;AACN;AACA;AACA,IAAI,OAAO,CAAC,SAAS,GAAG,SAAS,aAAa,GAAG;AACjD,MAAM,IAAI,mBAAmB,GAAG,MAAM,CAAC,OAAO,GAAG,aAAa,GAAG,MAAM,CAAC,OAAO,GAAG,aAAa,GAAG,kBAAkB,CAAC;AACrH,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,oBAAoB,CAAC;AACvE,MAAM,IAAI,MAAM,CAAC,mBAAmB,EAAE;AACtC,QAAQ,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACzD,OAAO;AACP,MAAM,MAAM,CAAC,IAAI,UAAU;AAC3B,QAAQ,mBAAmB;AAC3B,QAAQ,YAAY,CAAC,mBAAmB,GAAG,UAAU,CAAC,SAAS,GAAG,UAAU,CAAC,YAAY;AACzF,QAAQ,MAAM;AACd,QAAQ,OAAO,CAAC,CAAC,CAAC;AAClB;AACA;AACA,MAAM,OAAO,GAAG,IAAI,CAAC;AACrB,KAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,GAAG,QAAQ,CAAC,qBAAqB,EAAE;AACvC,MAAM,aAAa,IAAIR,OAAK,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;AAClG;AACA,MAAM,IAAI,aAAa,KAAK,aAAa,KAAK,KAAK,IAAI,eAAe,CAAC,QAAQ,CAAC,CAAC,EAAE;AACnF;AACA,QAAQ,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AAChH;AACA,QAAQ,IAAI,SAAS,EAAE;AACvB,UAAU,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;AAC/D,SAAS;AACT,OAAO;AACP,KAAK;AACL;AACA;AACA,IAAI,WAAW,KAAK,SAAS,IAAI,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AACrE;AACA;AACA,IAAI,IAAI,kBAAkB,IAAI,OAAO,EAAE;AACvC,MAAMA,OAAK,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,SAAS,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE;AACjF,QAAQ,OAAO,CAAC,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC3C,OAAO,CAAC,CAAC;AACT,KAAK;AACL;AACA;AACA,IAAI,IAAI,CAACA,OAAK,CAAC,WAAW,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE;AACpD,MAAM,OAAO,CAAC,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC;AACzD,KAAK;AACL;AACA;AACA,IAAI,IAAI,YAAY,IAAI,YAAY,KAAK,MAAM,EAAE;AACjD,MAAM,OAAO,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AACjD,KAAK;AACL;AACA;AACA,IAAI,IAAI,OAAO,MAAM,CAAC,kBAAkB,KAAK,UAAU,EAAE;AACzD,MAAM,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE,oBAAoB,CAAC,MAAM,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC,CAAC;AAClG,KAAK;AACL;AACA;AACA,IAAI,IAAI,OAAO,MAAM,CAAC,gBAAgB,KAAK,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE;AACzE,MAAM,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACjG,KAAK;AACL;AACA,IAAI,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE;AAC7C;AACA;AACA,MAAM,UAAU,GAAG,MAAM,IAAI;AAC7B,QAAQ,IAAI,CAAC,OAAO,EAAE;AACtB,UAAU,OAAO;AACjB,SAAS;AACT,QAAQ,MAAM,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,GAAG,IAAI,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC;AAC3F,QAAQ,OAAO,CAAC,KAAK,EAAE,CAAC;AACxB,QAAQ,OAAO,GAAG,IAAI,CAAC;AACvB,OAAO,CAAC;AACR;AACA,MAAM,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;AACrE,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE;AACzB,QAAQ,MAAM,CAAC,MAAM,CAAC,OAAO,GAAG,UAAU,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AACnG,OAAO;AACP,KAAK;AACL;AACA,IAAI,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;AAC7C;AACA,IAAI,IAAI,QAAQ,IAAI,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;AACjE,MAAM,MAAM,CAAC,IAAI,UAAU,CAAC,uBAAuB,GAAG,QAAQ,GAAG,GAAG,EAAE,UAAU,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC;AAC3G,MAAM,OAAO;AACb,KAAK;AACL;AACA;AACA;AACA,IAAI,OAAO,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC;AACtC,GAAG,CAAC,CAAC;AACL;;AC9PA,MAAM,aAAa,GAAG;AACtB,EAAE,IAAI,EAAE,WAAW;AACnB,EAAE,GAAG,EAAE,UAAU;AACjB,EAAC;AACD;AACAA,OAAK,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,EAAE,EAAE,KAAK,KAAK;AAC5C,EAAE,IAAI,EAAE,EAAE;AACV,IAAI,IAAI;AACR,MAAM,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AACjD,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB;AACA,KAAK;AACL,IAAI,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,aAAa,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AACtD,GAAG;AACH,CAAC,CAAC,CAAC;AACH;AACA,MAAM,YAAY,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;AAC/C;AACA,MAAM,gBAAgB,GAAG,CAAC,OAAO,KAAKA,OAAK,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,CAAC;AACzG;AACA,iBAAe;AACf,EAAE,UAAU,EAAE,CAAC,QAAQ,KAAK;AAC5B,IAAI,QAAQ,GAAGA,OAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC/D;AACA,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;AAC9B,IAAI,IAAI,aAAa,CAAC;AACtB,IAAI,IAAI,OAAO,CAAC;AAChB;AACA,IAAI,MAAM,eAAe,GAAG,EAAE,CAAC;AAC/B;AACA,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AACrC,MAAM,aAAa,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;AAClC,MAAM,IAAI,EAAE,CAAC;AACb;AACA,MAAM,OAAO,GAAG,aAAa,CAAC;AAC9B;AACA,MAAM,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,EAAE;AAC5C,QAAQ,OAAO,GAAG,aAAa,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;AAC5E;AACA,QAAQ,IAAI,OAAO,KAAK,SAAS,EAAE;AACnC,UAAU,MAAM,IAAI,UAAU,CAAC,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,SAAS;AACT,OAAO;AACP;AACA,MAAM,IAAI,OAAO,EAAE;AACnB,QAAQ,MAAM;AACd,OAAO;AACP;AACA,MAAM,eAAe,CAAC,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC;AAC/C,KAAK;AACL;AACA,IAAI,IAAI,CAAC,OAAO,EAAE;AAClB;AACA,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC;AACrD,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;AAC9C,WAAW,KAAK,KAAK,KAAK,GAAG,qCAAqC,GAAG,+BAA+B,CAAC;AACrG,SAAS,CAAC;AACV;AACA,MAAM,IAAI,CAAC,GAAG,MAAM;AACpB,SAAS,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACjH,QAAQ,yBAAyB,CAAC;AAClC;AACA,MAAM,MAAM,IAAI,UAAU;AAC1B,QAAQ,CAAC,qDAAqD,CAAC,GAAG,CAAC;AACnE,QAAQ,iBAAiB;AACzB,OAAO,CAAC;AACR,KAAK;AACL;AACA,IAAI,OAAO,OAAO,CAAC;AACnB,GAAG;AACH,EAAE,QAAQ,EAAE,aAAa;AACzB;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,4BAA4B,CAAC,MAAM,EAAE;AAC9C,EAAE,IAAI,MAAM,CAAC,WAAW,EAAE;AAC1B,IAAI,MAAM,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC;AAC1C,GAAG;AACH;AACA,EAAE,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE;AAC9C,IAAI,MAAM,IAAI,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC1C,GAAG;AACH,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,eAAe,CAAC,MAAM,EAAE;AAChD,EAAE,4BAA4B,CAAC,MAAM,CAAC,CAAC;AACvC;AACA,EAAE,MAAM,CAAC,OAAO,GAAGQ,cAAY,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACrD;AACA;AACA,EAAE,MAAM,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI;AAClC,IAAI,MAAM;AACV,IAAI,MAAM,CAAC,gBAAgB;AAC3B,GAAG,CAAC;AACJ;AACA,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;AAC9D,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;AAC9E,GAAG;AACH;AACA,EAAE,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,IAAID,UAAQ,CAAC,OAAO,CAAC,CAAC;AAC1E;AACA,EAAE,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,mBAAmB,CAAC,QAAQ,EAAE;AACrE,IAAI,4BAA4B,CAAC,MAAM,CAAC,CAAC;AACzC;AACA;AACA,IAAI,QAAQ,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI;AACtC,MAAM,MAAM;AACZ,MAAM,MAAM,CAAC,iBAAiB;AAC9B,MAAM,QAAQ;AACd,KAAK,CAAC;AACN;AACA,IAAI,QAAQ,CAAC,OAAO,GAAGC,cAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC3D;AACA,IAAI,OAAO,QAAQ,CAAC;AACpB,GAAG,EAAE,SAAS,kBAAkB,CAAC,MAAM,EAAE;AACzC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC3B,MAAM,4BAA4B,CAAC,MAAM,CAAC,CAAC;AAC3C;AACA;AACA,MAAM,IAAI,MAAM,IAAI,MAAM,CAAC,QAAQ,EAAE;AACrC,QAAQ,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI;AACjD,UAAU,MAAM;AAChB,UAAU,MAAM,CAAC,iBAAiB;AAClC,UAAU,MAAM,CAAC,QAAQ;AACzB,SAAS,CAAC;AACV,QAAQ,MAAM,CAAC,QAAQ,CAAC,OAAO,GAAGA,cAAY,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC7E,OAAO;AACP,KAAK;AACL;AACA,IAAI,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAClC,GAAG,CAAC,CAAC;AACL;;AC3EA,MAAM,eAAe,GAAG,CAAC,KAAK,KAAK,KAAK,YAAYA,cAAY,GAAG,KAAK,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE;AACtD;AACA,EAAE,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;AAC1B,EAAE,MAAM,MAAM,GAAG,EAAE,CAAC;AACpB;AACA,EAAE,SAAS,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE;AACpD,IAAI,IAAIR,OAAK,CAAC,aAAa,CAAC,MAAM,CAAC,IAAIA,OAAK,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE;AACpE,MAAM,OAAOA,OAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAC1D,KAAK,MAAM,IAAIA,OAAK,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE;AAC5C,MAAM,OAAOA,OAAK,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;AACrC,KAAK,MAAM,IAAIA,OAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACtC,MAAM,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC;AAC5B,KAAK;AACL,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG;AACH;AACA;AACA,EAAE,SAAS,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE;AAC/C,IAAI,IAAI,CAACA,OAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;AAC/B,MAAM,OAAO,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC5C,KAAK,MAAM,IAAI,CAACA,OAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;AACtC,MAAM,OAAO,cAAc,CAAC,SAAS,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;AACpD,KAAK;AACL,GAAG;AACH;AACA;AACA,EAAE,SAAS,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE;AAClC,IAAI,IAAI,CAACA,OAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;AAC/B,MAAM,OAAO,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAC1C,KAAK;AACL,GAAG;AACH;AACA;AACA,EAAE,SAAS,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE;AAClC,IAAI,IAAI,CAACA,OAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;AAC/B,MAAM,OAAO,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAC1C,KAAK,MAAM,IAAI,CAACA,OAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;AACtC,MAAM,OAAO,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAC1C,KAAK;AACL,GAAG;AACH;AACA;AACA,EAAE,SAAS,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE;AACvC,IAAI,IAAI,IAAI,IAAI,OAAO,EAAE;AACzB,MAAM,OAAO,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,KAAK,MAAM,IAAI,IAAI,IAAI,OAAO,EAAE;AAChC,MAAM,OAAO,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAC1C,KAAK;AACL,GAAG;AACH;AACA,EAAE,MAAM,QAAQ,GAAG;AACnB,IAAI,GAAG,EAAE,gBAAgB;AACzB,IAAI,MAAM,EAAE,gBAAgB;AAC5B,IAAI,IAAI,EAAE,gBAAgB;AAC1B,IAAI,OAAO,EAAE,gBAAgB;AAC7B,IAAI,gBAAgB,EAAE,gBAAgB;AACtC,IAAI,iBAAiB,EAAE,gBAAgB;AACvC,IAAI,gBAAgB,EAAE,gBAAgB;AACtC,IAAI,OAAO,EAAE,gBAAgB;AAC7B,IAAI,cAAc,EAAE,gBAAgB;AACpC,IAAI,eAAe,EAAE,gBAAgB;AACrC,IAAI,aAAa,EAAE,gBAAgB;AACnC,IAAI,OAAO,EAAE,gBAAgB;AAC7B,IAAI,YAAY,EAAE,gBAAgB;AAClC,IAAI,cAAc,EAAE,gBAAgB;AACpC,IAAI,cAAc,EAAE,gBAAgB;AACpC,IAAI,gBAAgB,EAAE,gBAAgB;AACtC,IAAI,kBAAkB,EAAE,gBAAgB;AACxC,IAAI,UAAU,EAAE,gBAAgB;AAChC,IAAI,gBAAgB,EAAE,gBAAgB;AACtC,IAAI,aAAa,EAAE,gBAAgB;AACnC,IAAI,cAAc,EAAE,gBAAgB;AACpC,IAAI,SAAS,EAAE,gBAAgB;AAC/B,IAAI,SAAS,EAAE,gBAAgB;AAC/B,IAAI,UAAU,EAAE,gBAAgB;AAChC,IAAI,WAAW,EAAE,gBAAgB;AACjC,IAAI,UAAU,EAAE,gBAAgB;AAChC,IAAI,gBAAgB,EAAE,gBAAgB;AACtC,IAAI,cAAc,EAAE,eAAe;AACnC,IAAI,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,mBAAmB,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;AACxF,GAAG,CAAC;AACJ;AACA,EAAEA,OAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,EAAE,SAAS,kBAAkB,CAAC,IAAI,EAAE;AACpG,IAAI,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,mBAAmB,CAAC;AACxD,IAAI,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;AAClE,IAAI,CAACA,OAAK,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,KAAK,KAAK,eAAe,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;AAClG,GAAG,CAAC,CAAC;AACL;AACA,EAAE,OAAO,MAAM,CAAC;AAChB;;ACpGA,MAAMwB,YAAU,GAAG,EAAE,CAAC;AACtB;AACA;AACA,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK;AACrF,EAAEA,YAAU,CAAC,IAAI,CAAC,GAAG,SAAS,SAAS,CAAC,KAAK,EAAE;AAC/C,IAAI,OAAO,OAAO,KAAK,KAAK,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC;AACtE,GAAG,CAAC;AACJ,CAAC,CAAC,CAAC;AACH;AACA,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAA,YAAU,CAAC,YAAY,GAAG,SAAS,YAAY,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE;AAC7E,EAAE,SAAS,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE;AACpC,IAAI,OAAO,UAAU,GAAG,OAAO,GAAG,0BAA0B,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,OAAO,GAAG,IAAI,GAAG,OAAO,GAAG,EAAE,CAAC,CAAC;AACnH,GAAG;AACH;AACA;AACA,EAAE,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,KAAK;AAC/B,IAAI,IAAI,SAAS,KAAK,KAAK,EAAE;AAC7B,MAAM,MAAM,IAAI,UAAU;AAC1B,QAAQ,aAAa,CAAC,GAAG,EAAE,mBAAmB,IAAI,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,EAAE,CAAC,CAAC;AACnF,QAAQ,UAAU,CAAC,cAAc;AACjC,OAAO,CAAC;AACR,KAAK;AACL;AACA,IAAI,IAAI,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE;AAC7C,MAAM,kBAAkB,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;AACrC;AACA,MAAM,OAAO,CAAC,IAAI;AAClB,QAAQ,aAAa;AACrB,UAAU,GAAG;AACb,UAAU,8BAA8B,GAAG,OAAO,GAAG,yCAAyC;AAC9F,SAAS;AACT,OAAO,CAAC;AACR,KAAK;AACL;AACA,IAAI,OAAO,SAAS,GAAG,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC;AAC1D,GAAG,CAAC;AACJ,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE;AACtD,EAAE,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AACnC,IAAI,MAAM,IAAI,UAAU,CAAC,2BAA2B,EAAE,UAAU,CAAC,oBAAoB,CAAC,CAAC;AACvF,GAAG;AACH,EAAE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACpC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;AACtB,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;AAClB,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACxB,IAAI,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AAClC,IAAI,IAAI,SAAS,EAAE;AACnB,MAAM,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;AACjC,MAAM,MAAM,MAAM,GAAG,KAAK,KAAK,SAAS,IAAI,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;AAC3E,MAAM,IAAI,MAAM,KAAK,IAAI,EAAE;AAC3B,QAAQ,MAAM,IAAI,UAAU,CAAC,SAAS,GAAG,GAAG,GAAG,WAAW,GAAG,MAAM,EAAE,UAAU,CAAC,oBAAoB,CAAC,CAAC;AACtG,OAAO;AACP,MAAM,SAAS;AACf,KAAK;AACL,IAAI,IAAI,YAAY,KAAK,IAAI,EAAE;AAC/B,MAAM,MAAM,IAAI,UAAU,CAAC,iBAAiB,GAAG,GAAG,EAAE,UAAU,CAAC,cAAc,CAAC,CAAC;AAC/E,KAAK;AACL,GAAG;AACH,CAAC;AACD;AACA,kBAAe;AACf,EAAE,aAAa;AACf,cAAEA,YAAU;AACZ,CAAC;;AC/ED,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,KAAK,CAAC;AACZ,EAAE,WAAW,CAAC,cAAc,EAAE;AAC9B,IAAI,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC;AACnC,IAAI,IAAI,CAAC,YAAY,GAAG;AACxB,MAAM,OAAO,EAAE,IAAIC,oBAAkB,EAAE;AACvC,MAAM,QAAQ,EAAE,IAAIA,oBAAkB,EAAE;AACxC,KAAK,CAAC;AACN,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE;AACrC,IAAI,IAAI;AACR,MAAM,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AACtD,KAAK,CAAC,OAAO,GAAG,EAAE;AAClB,MAAM,IAAI,GAAG,YAAY,KAAK,EAAE;AAChC,QAAQ,IAAI,KAAK,CAAC;AAClB;AACA,QAAQ,KAAK,CAAC,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,CAAC,KAAK,GAAG,EAAE,CAAC,IAAI,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC;AAC9F;AACA;AACA,QAAQ,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;AAC1E;AACA,QAAQ,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;AACxB,UAAU,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC;AAC5B;AACA,SAAS,MAAM,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,EAAE;AACzF,UAAU,GAAG,CAAC,KAAK,IAAI,IAAI,GAAG,MAAK;AACnC,SAAS;AACT,OAAO;AACP;AACA,MAAM,MAAM,GAAG,CAAC;AAChB,KAAK;AACL,GAAG;AACH;AACA,EAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE;AAChC;AACA;AACA,IAAI,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;AACzC,MAAM,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC;AAC5B,MAAM,MAAM,CAAC,GAAG,GAAG,WAAW,CAAC;AAC/B,KAAK,MAAM;AACX,MAAM,MAAM,GAAG,WAAW,IAAI,EAAE,CAAC;AACjC,KAAK;AACL;AACA,IAAI,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAChD;AACA,IAAI,MAAM,CAAC,YAAY,EAAE,gBAAgB,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC;AAC7D;AACA,IAAI,IAAI,YAAY,KAAK,SAAS,EAAE;AACpC,MAAM,SAAS,CAAC,aAAa,CAAC,YAAY,EAAE;AAC5C,QAAQ,iBAAiB,EAAE,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC;AACtE,QAAQ,iBAAiB,EAAE,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC;AACtE,QAAQ,mBAAmB,EAAE,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC;AACxE,OAAO,EAAE,KAAK,CAAC,CAAC;AAChB,KAAK;AACL;AACA,IAAI,IAAI,gBAAgB,IAAI,IAAI,EAAE;AAClC,MAAM,IAAIzB,OAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE;AAC9C,QAAQ,MAAM,CAAC,gBAAgB,GAAG;AAClC,UAAU,SAAS,EAAE,gBAAgB;AACrC,UAAS;AACT,OAAO,MAAM;AACb,QAAQ,SAAS,CAAC,aAAa,CAAC,gBAAgB,EAAE;AAClD,UAAU,MAAM,EAAE,UAAU,CAAC,QAAQ;AACrC,UAAU,SAAS,EAAE,UAAU,CAAC,QAAQ;AACxC,SAAS,EAAE,IAAI,CAAC,CAAC;AACjB,OAAO;AACP,KAAK;AACL;AACA;AACA,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,KAAK,EAAE,WAAW,EAAE,CAAC;AACnF;AACA;AACA,IAAI,IAAI,cAAc,GAAG,OAAO,IAAIA,OAAK,CAAC,KAAK;AAC/C,MAAM,OAAO,CAAC,MAAM;AACpB,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;AAC5B,KAAK,CAAC;AACN;AACA,IAAI,OAAO,IAAIA,OAAK,CAAC,OAAO;AAC5B,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC;AACjE,MAAM,CAAC,MAAM,KAAK;AAClB,QAAQ,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;AAC/B,OAAO;AACP,KAAK,CAAC;AACN;AACA,IAAI,MAAM,CAAC,OAAO,GAAGQ,cAAY,CAAC,MAAM,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;AAClE;AACA;AACA,IAAI,MAAM,uBAAuB,GAAG,EAAE,CAAC;AACvC,IAAI,IAAI,8BAA8B,GAAG,IAAI,CAAC;AAC9C,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,0BAA0B,CAAC,WAAW,EAAE;AACvF,MAAM,IAAI,OAAO,WAAW,CAAC,OAAO,KAAK,UAAU,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,EAAE;AAC9F,QAAQ,OAAO;AACf,OAAO;AACP;AACA,MAAM,8BAA8B,GAAG,8BAA8B,IAAI,WAAW,CAAC,WAAW,CAAC;AACjG;AACA,MAAM,uBAAuB,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;AACnF,KAAK,CAAC,CAAC;AACP;AACA,IAAI,MAAM,wBAAwB,GAAG,EAAE,CAAC;AACxC,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,wBAAwB,CAAC,WAAW,EAAE;AACtF,MAAM,wBAAwB,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;AACjF,KAAK,CAAC,CAAC;AACP;AACA,IAAI,IAAI,OAAO,CAAC;AAChB,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,IAAI,IAAI,GAAG,CAAC;AACZ;AACA,IAAI,IAAI,CAAC,8BAA8B,EAAE;AACzC,MAAM,MAAM,KAAK,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;AAC5D,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC;AAC1D,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,wBAAwB,CAAC,CAAC;AACxD,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC;AACzB;AACA,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACxC;AACA,MAAM,OAAO,CAAC,GAAG,GAAG,EAAE;AACtB,QAAQ,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,OAAO;AACP;AACA,MAAM,OAAO,OAAO,CAAC;AACrB,KAAK;AACL;AACA,IAAI,GAAG,GAAG,uBAAuB,CAAC,MAAM,CAAC;AACzC;AACA,IAAI,IAAI,SAAS,GAAG,MAAM,CAAC;AAC3B;AACA,IAAI,CAAC,GAAG,CAAC,CAAC;AACV;AACA,IAAI,OAAO,CAAC,GAAG,GAAG,EAAE;AACpB,MAAM,MAAM,WAAW,GAAG,uBAAuB,CAAC,CAAC,EAAE,CAAC,CAAC;AACvD,MAAM,MAAM,UAAU,GAAG,uBAAuB,CAAC,CAAC,EAAE,CAAC,CAAC;AACtD,MAAM,IAAI;AACV,QAAQ,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;AAC3C,OAAO,CAAC,OAAO,KAAK,EAAE;AACtB,QAAQ,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACrC,QAAQ,MAAM;AACd,OAAO;AACP,KAAK;AACL;AACA,IAAI,IAAI;AACR,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACtD,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACnC,KAAK;AACL;AACA,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,IAAI,GAAG,GAAG,wBAAwB,CAAC,MAAM,CAAC;AAC1C;AACA,IAAI,OAAO,CAAC,GAAG,GAAG,EAAE;AACpB,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,EAAE,CAAC,EAAE,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3F,KAAK;AACL;AACA,IAAI,OAAO,OAAO,CAAC;AACnB,GAAG;AACH;AACA,EAAE,MAAM,CAAC,MAAM,EAAE;AACjB,IAAI,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAChD,IAAI,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;AAC/D,IAAI,OAAO,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;AACtE,GAAG;AACH,CAAC;AACD;AACA;AACAR,OAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,SAAS,mBAAmB,CAAC,MAAM,EAAE;AACzF;AACA,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,SAAS,GAAG,EAAE,MAAM,EAAE;AAClD,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,IAAI,EAAE,EAAE;AAClD,MAAM,MAAM;AACZ,MAAM,GAAG;AACT,MAAM,IAAI,EAAE,CAAC,MAAM,IAAI,EAAE,EAAE,IAAI;AAC/B,KAAK,CAAC,CAAC,CAAC;AACR,GAAG,CAAC;AACJ,CAAC,CAAC,CAAC;AACH;AACAA,OAAK,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,SAAS,qBAAqB,CAAC,MAAM,EAAE;AAC/E;AACA;AACA,EAAE,SAAS,kBAAkB,CAAC,MAAM,EAAE;AACtC,IAAI,OAAO,SAAS,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE;AAClD,MAAM,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,IAAI,EAAE,EAAE;AACpD,QAAQ,MAAM;AACd,QAAQ,OAAO,EAAE,MAAM,GAAG;AAC1B,UAAU,cAAc,EAAE,qBAAqB;AAC/C,SAAS,GAAG,EAAE;AACd,QAAQ,GAAG;AACX,QAAQ,IAAI;AACZ,OAAO,CAAC,CAAC,CAAC;AACV,KAAK,CAAC;AACN,GAAG;AACH;AACA,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,kBAAkB,EAAE,CAAC;AACjD;AACA,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAC9D,CAAC,CAAC,CAAC;AACH;AACA,gBAAe,KAAK;;AC5NpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,WAAW,CAAC;AAClB,EAAE,WAAW,CAAC,QAAQ,EAAE;AACxB,IAAI,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AACxC,MAAM,MAAM,IAAI,SAAS,CAAC,8BAA8B,CAAC,CAAC;AAC1D,KAAK;AACL;AACA,IAAI,IAAI,cAAc,CAAC;AACvB;AACA,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,SAAS,eAAe,CAAC,OAAO,EAAE;AACjE,MAAM,cAAc,GAAG,OAAO,CAAC;AAC/B,KAAK,CAAC,CAAC;AACP;AACA,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC;AACvB;AACA;AACA,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI;AAChC,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO;AACpC;AACA,MAAM,IAAI,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC;AACtC;AACA,MAAM,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;AACtB,QAAQ,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AACpC,OAAO;AACP,MAAM,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;AAC9B,KAAK,CAAC,CAAC;AACP;AACA;AACA,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,WAAW,IAAI;AACvC,MAAM,IAAI,QAAQ,CAAC;AACnB;AACA,MAAM,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,IAAI;AAC7C,QAAQ,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AACjC,QAAQ,QAAQ,GAAG,OAAO,CAAC;AAC3B,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC3B;AACA,MAAM,OAAO,CAAC,MAAM,GAAG,SAAS,MAAM,GAAG;AACzC,QAAQ,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACpC,OAAO,CAAC;AACR;AACA,MAAM,OAAO,OAAO,CAAC;AACrB,KAAK,CAAC;AACN;AACA,IAAI,QAAQ,CAAC,SAAS,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;AACvD,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE;AACxB;AACA,QAAQ,OAAO;AACf,OAAO;AACP;AACA,MAAM,KAAK,CAAC,MAAM,GAAG,IAAI,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AACjE,MAAM,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACnC,KAAK,CAAC,CAAC;AACP,GAAG;AACH;AACA;AACA;AACA;AACA,EAAE,gBAAgB,GAAG;AACrB,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;AACrB,MAAM,MAAM,IAAI,CAAC,MAAM,CAAC;AACxB,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,EAAE,SAAS,CAAC,QAAQ,EAAE;AACtB,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;AACrB,MAAM,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,MAAM,OAAO;AACb,KAAK;AACL;AACA,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;AACzB,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACrC,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,UAAU,GAAG,CAAC,QAAQ,CAAC,CAAC;AACnC,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,EAAE,WAAW,CAAC,QAAQ,EAAE;AACxB,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AAC1B,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACpD,IAAI,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AACtB,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACvC,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,MAAM,GAAG;AAClB,IAAI,IAAI,MAAM,CAAC;AACf,IAAI,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,SAAS,QAAQ,CAAC,CAAC,EAAE;AACvD,MAAM,MAAM,GAAG,CAAC,CAAC;AACjB,KAAK,CAAC,CAAC;AACP,IAAI,OAAO;AACX,MAAM,KAAK;AACX,MAAM,MAAM;AACZ,KAAK,CAAC;AACN,GAAG;AACH,CAAC;AACD;AACA,sBAAe,WAAW;;ACtH1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,MAAM,CAAC,QAAQ,EAAE;AACzC,EAAE,OAAO,SAAS,IAAI,CAAC,GAAG,EAAE;AAC5B,IAAI,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACrC,GAAG,CAAC;AACJ;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS,YAAY,CAAC,OAAO,EAAE;AAC9C,EAAE,OAAOA,OAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC;AACpE;;ACbA,MAAM,cAAc,GAAG;AACvB,EAAE,QAAQ,EAAE,GAAG;AACf,EAAE,kBAAkB,EAAE,GAAG;AACzB,EAAE,UAAU,EAAE,GAAG;AACjB,EAAE,UAAU,EAAE,GAAG;AACjB,EAAE,EAAE,EAAE,GAAG;AACT,EAAE,OAAO,EAAE,GAAG;AACd,EAAE,QAAQ,EAAE,GAAG;AACf,EAAE,2BAA2B,EAAE,GAAG;AAClC,EAAE,SAAS,EAAE,GAAG;AAChB,EAAE,YAAY,EAAE,GAAG;AACnB,EAAE,cAAc,EAAE,GAAG;AACrB,EAAE,WAAW,EAAE,GAAG;AAClB,EAAE,eAAe,EAAE,GAAG;AACtB,EAAE,MAAM,EAAE,GAAG;AACb,EAAE,eAAe,EAAE,GAAG;AACtB,EAAE,gBAAgB,EAAE,GAAG;AACvB,EAAE,KAAK,EAAE,GAAG;AACZ,EAAE,QAAQ,EAAE,GAAG;AACf,EAAE,WAAW,EAAE,GAAG;AAClB,EAAE,QAAQ,EAAE,GAAG;AACf,EAAE,MAAM,EAAE,GAAG;AACb,EAAE,iBAAiB,EAAE,GAAG;AACxB,EAAE,iBAAiB,EAAE,GAAG;AACxB,EAAE,UAAU,EAAE,GAAG;AACjB,EAAE,YAAY,EAAE,GAAG;AACnB,EAAE,eAAe,EAAE,GAAG;AACtB,EAAE,SAAS,EAAE,GAAG;AAChB,EAAE,QAAQ,EAAE,GAAG;AACf,EAAE,gBAAgB,EAAE,GAAG;AACvB,EAAE,aAAa,EAAE,GAAG;AACpB,EAAE,2BAA2B,EAAE,GAAG;AAClC,EAAE,cAAc,EAAE,GAAG;AACrB,EAAE,QAAQ,EAAE,GAAG;AACf,EAAE,IAAI,EAAE,GAAG;AACX,EAAE,cAAc,EAAE,GAAG;AACrB,EAAE,kBAAkB,EAAE,GAAG;AACzB,EAAE,eAAe,EAAE,GAAG;AACtB,EAAE,UAAU,EAAE,GAAG;AACjB,EAAE,oBAAoB,EAAE,GAAG;AAC3B,EAAE,mBAAmB,EAAE,GAAG;AAC1B,EAAE,iBAAiB,EAAE,GAAG;AACxB,EAAE,SAAS,EAAE,GAAG;AAChB,EAAE,kBAAkB,EAAE,GAAG;AACzB,EAAE,mBAAmB,EAAE,GAAG;AAC1B,EAAE,MAAM,EAAE,GAAG;AACb,EAAE,gBAAgB,EAAE,GAAG;AACvB,EAAE,QAAQ,EAAE,GAAG;AACf,EAAE,eAAe,EAAE,GAAG;AACtB,EAAE,oBAAoB,EAAE,GAAG;AAC3B,EAAE,eAAe,EAAE,GAAG;AACtB,EAAE,2BAA2B,EAAE,GAAG;AAClC,EAAE,0BAA0B,EAAE,GAAG;AACjC,EAAE,mBAAmB,EAAE,GAAG;AAC1B,EAAE,cAAc,EAAE,GAAG;AACrB,EAAE,UAAU,EAAE,GAAG;AACjB,EAAE,kBAAkB,EAAE,GAAG;AACzB,EAAE,cAAc,EAAE,GAAG;AACrB,EAAE,uBAAuB,EAAE,GAAG;AAC9B,EAAE,qBAAqB,EAAE,GAAG;AAC5B,EAAE,mBAAmB,EAAE,GAAG;AAC1B,EAAE,YAAY,EAAE,GAAG;AACnB,EAAE,WAAW,EAAE,GAAG;AAClB,EAAE,6BAA6B,EAAE,GAAG;AACpC,CAAC,CAAC;AACF;AACA,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK;AACzD,EAAE,cAAc,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;AAC9B,CAAC,CAAC,CAAC;AACH;AACA,yBAAe,cAAc;;AClD7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,cAAc,CAAC,aAAa,EAAE;AACvC,EAAE,MAAM,OAAO,GAAG,IAAI0B,OAAK,CAAC,aAAa,CAAC,CAAC;AAC3C,EAAE,MAAM,QAAQ,GAAG,IAAI,CAACA,OAAK,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC1D;AACA;AACA,EAAE1B,OAAK,CAAC,MAAM,CAAC,QAAQ,EAAE0B,OAAK,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;AACvE;AACA;AACA,EAAE1B,OAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;AAC5D;AACA;AACA,EAAE,QAAQ,CAAC,MAAM,GAAG,SAAS,MAAM,CAAC,cAAc,EAAE;AACpD,IAAI,OAAO,cAAc,CAAC,WAAW,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC;AACtE,GAAG,CAAC;AACJ;AACA,EAAE,OAAO,QAAQ,CAAC;AAClB,CAAC;AACD;AACA;AACK,MAAC,KAAK,GAAG,cAAc,CAACO,UAAQ,EAAE;AACvC;AACA;AACA,KAAK,CAAC,KAAK,GAAGmB,OAAK,CAAC;AACpB;AACA;AACA,KAAK,CAAC,aAAa,GAAG,aAAa,CAAC;AACpC,KAAK,CAAC,WAAW,GAAGC,aAAW,CAAC;AAChC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC1B,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;AACxB,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC;AAC9B;AACA;AACA,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC;AAC9B;AACA;AACA,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC;AACnC;AACA;AACA,KAAK,CAAC,GAAG,GAAG,SAAS,GAAG,CAAC,QAAQ,EAAE;AACnC,EAAE,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC/B,CAAC,CAAC;AACF;AACA,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AACtB;AACA;AACA,KAAK,CAAC,YAAY,GAAG,YAAY,CAAC;AAClC;AACA;AACA,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC;AAChC;AACA,KAAK,CAAC,YAAY,GAAGnB,cAAY,CAAC;AAClC;AACA,KAAK,CAAC,UAAU,GAAG,KAAK,IAAI,cAAc,CAACR,OAAK,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;AAClG;AACA,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;AACvC;AACA,KAAK,CAAC,cAAc,GAAG4B,gBAAc,CAAC;AACtC;AACA,KAAK,CAAC,OAAO,GAAG,KAAK;;;;"} \ No newline at end of file diff --git a/node_modules/axios/index.d.cts b/node_modules/axios/index.d.cts deleted file mode 100644 index d95e6ef..0000000 --- a/node_modules/axios/index.d.cts +++ /dev/null @@ -1,542 +0,0 @@ -interface RawAxiosHeaders { - [key: string]: axios.AxiosHeaderValue; -} - -type MethodsHeaders = Partial<{ - [Key in axios.Method as Lowercase]: AxiosHeaders; -} & {common: AxiosHeaders}>; - -type AxiosHeaderMatcher = (this: AxiosHeaders, value: string, name: string, headers: RawAxiosHeaders) => boolean; - -type AxiosHeaderParser = (this: AxiosHeaders, value: axios.AxiosHeaderValue, header: string) => any; - -type CommonRequestHeadersList = 'Accept' | 'Content-Length' | 'User-Agent'| 'Content-Encoding' | 'Authorization'; - -type ContentType = axios.AxiosHeaderValue | 'text/html' | 'text/plain' | 'multipart/form-data' | 'application/json' | 'application/x-www-form-urlencoded' | 'application/octet-stream'; - -type CommonResponseHeadersList = 'Server' | 'Content-Type' | 'Content-Length' | 'Cache-Control'| 'Content-Encoding'; - -declare class AxiosHeaders { - constructor( - headers?: RawAxiosHeaders | AxiosHeaders | string - ); - - [key: string]: any; - - set(headerName?: string, value?: axios.AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders; - set(headers?: RawAxiosHeaders | AxiosHeaders | string, rewrite?: boolean): AxiosHeaders; - - get(headerName: string, parser: RegExp): RegExpExecArray | null; - get(headerName: string, matcher?: true | AxiosHeaderParser): axios.AxiosHeaderValue; - - has(header: string, matcher?: AxiosHeaderMatcher): boolean; - - delete(header: string | string[], matcher?: AxiosHeaderMatcher): boolean; - - clear(matcher?: AxiosHeaderMatcher): boolean; - - normalize(format: boolean): AxiosHeaders; - - concat(...targets: Array): AxiosHeaders; - - toJSON(asStrings?: boolean): RawAxiosHeaders; - - static from(thing?: AxiosHeaders | RawAxiosHeaders | string): AxiosHeaders; - - static accessor(header: string | string[]): AxiosHeaders; - - static concat(...targets: Array): AxiosHeaders; - - setContentType(value: ContentType, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders; - getContentType(parser?: RegExp): RegExpExecArray | null; - getContentType(matcher?: AxiosHeaderMatcher): axios.AxiosHeaderValue; - hasContentType(matcher?: AxiosHeaderMatcher): boolean; - - setContentLength(value: axios.AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders; - getContentLength(parser?: RegExp): RegExpExecArray | null; - getContentLength(matcher?: AxiosHeaderMatcher): axios.AxiosHeaderValue; - hasContentLength(matcher?: AxiosHeaderMatcher): boolean; - - setAccept(value: axios.AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders; - getAccept(parser?: RegExp): RegExpExecArray | null; - getAccept(matcher?: AxiosHeaderMatcher): axios.AxiosHeaderValue; - hasAccept(matcher?: AxiosHeaderMatcher): boolean; - - setUserAgent(value: axios.AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders; - getUserAgent(parser?: RegExp): RegExpExecArray | null; - getUserAgent(matcher?: AxiosHeaderMatcher): axios.AxiosHeaderValue; - hasUserAgent(matcher?: AxiosHeaderMatcher): boolean; - - setContentEncoding(value: axios.AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders; - getContentEncoding(parser?: RegExp): RegExpExecArray | null; - getContentEncoding(matcher?: AxiosHeaderMatcher): axios.AxiosHeaderValue; - hasContentEncoding(matcher?: AxiosHeaderMatcher): boolean; - - setAuthorization(value: axios.AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders; - getAuthorization(parser?: RegExp): RegExpExecArray | null; - getAuthorization(matcher?: AxiosHeaderMatcher): axios.AxiosHeaderValue; - hasAuthorization(matcher?: AxiosHeaderMatcher): boolean; - - [Symbol.iterator](): IterableIterator<[string, axios.AxiosHeaderValue]>; -} - -declare class AxiosError extends Error { - constructor( - message?: string, - code?: string, - config?: axios.InternalAxiosRequestConfig, - request?: any, - response?: axios.AxiosResponse - ); - - config?: axios.InternalAxiosRequestConfig; - code?: string; - request?: any; - response?: axios.AxiosResponse; - isAxiosError: boolean; - status?: number; - toJSON: () => object; - cause?: Error; - static readonly ERR_FR_TOO_MANY_REDIRECTS = "ERR_FR_TOO_MANY_REDIRECTS"; - static readonly ERR_BAD_OPTION_VALUE = "ERR_BAD_OPTION_VALUE"; - static readonly ERR_BAD_OPTION = "ERR_BAD_OPTION"; - static readonly ERR_NETWORK = "ERR_NETWORK"; - static readonly ERR_DEPRECATED = "ERR_DEPRECATED"; - static readonly ERR_BAD_RESPONSE = "ERR_BAD_RESPONSE"; - static readonly ERR_BAD_REQUEST = "ERR_BAD_REQUEST"; - static readonly ERR_NOT_SUPPORT = "ERR_NOT_SUPPORT"; - static readonly ERR_INVALID_URL = "ERR_INVALID_URL"; - static readonly ERR_CANCELED = "ERR_CANCELED"; - static readonly ECONNABORTED = "ECONNABORTED"; - static readonly ETIMEDOUT = "ETIMEDOUT"; -} - -declare class CanceledError extends AxiosError { -} - -declare class Axios { - constructor(config?: axios.AxiosRequestConfig); - defaults: axios.AxiosDefaults; - interceptors: { - request: axios.AxiosInterceptorManager; - response: axios.AxiosInterceptorManager; - }; - getUri(config?: axios.AxiosRequestConfig): string; - request, D = any>(config: axios.AxiosRequestConfig): Promise; - get, D = any>(url: string, config?: axios.AxiosRequestConfig): Promise; - delete, D = any>(url: string, config?: axios.AxiosRequestConfig): Promise; - head, D = any>(url: string, config?: axios.AxiosRequestConfig): Promise; - options, D = any>(url: string, config?: axios.AxiosRequestConfig): Promise; - post, D = any>(url: string, data?: D, config?: axios.AxiosRequestConfig): Promise; - put, D = any>(url: string, data?: D, config?: axios.AxiosRequestConfig): Promise; - patch, D = any>(url: string, data?: D, config?: axios.AxiosRequestConfig): Promise; - postForm, D = any>(url: string, data?: D, config?: axios.AxiosRequestConfig): Promise; - putForm, D = any>(url: string, data?: D, config?: axios.AxiosRequestConfig): Promise; - patchForm, D = any>(url: string, data?: D, config?: axios.AxiosRequestConfig): Promise; -} - -declare enum HttpStatusCode { - Continue = 100, - SwitchingProtocols = 101, - Processing = 102, - EarlyHints = 103, - Ok = 200, - Created = 201, - Accepted = 202, - NonAuthoritativeInformation = 203, - NoContent = 204, - ResetContent = 205, - PartialContent = 206, - MultiStatus = 207, - AlreadyReported = 208, - ImUsed = 226, - MultipleChoices = 300, - MovedPermanently = 301, - Found = 302, - SeeOther = 303, - NotModified = 304, - UseProxy = 305, - Unused = 306, - TemporaryRedirect = 307, - PermanentRedirect = 308, - BadRequest = 400, - Unauthorized = 401, - PaymentRequired = 402, - Forbidden = 403, - NotFound = 404, - MethodNotAllowed = 405, - NotAcceptable = 406, - ProxyAuthenticationRequired = 407, - RequestTimeout = 408, - Conflict = 409, - Gone = 410, - LengthRequired = 411, - PreconditionFailed = 412, - PayloadTooLarge = 413, - UriTooLong = 414, - UnsupportedMediaType = 415, - RangeNotSatisfiable = 416, - ExpectationFailed = 417, - ImATeapot = 418, - MisdirectedRequest = 421, - UnprocessableEntity = 422, - Locked = 423, - FailedDependency = 424, - TooEarly = 425, - UpgradeRequired = 426, - PreconditionRequired = 428, - TooManyRequests = 429, - RequestHeaderFieldsTooLarge = 431, - UnavailableForLegalReasons = 451, - InternalServerError = 500, - NotImplemented = 501, - BadGateway = 502, - ServiceUnavailable = 503, - GatewayTimeout = 504, - HttpVersionNotSupported = 505, - VariantAlsoNegotiates = 506, - InsufficientStorage = 507, - LoopDetected = 508, - NotExtended = 510, - NetworkAuthenticationRequired = 511, -} - -type InternalAxiosError = AxiosError; - -declare namespace axios { - type AxiosError = InternalAxiosError; - - type RawAxiosRequestHeaders = Partial; - - type AxiosRequestHeaders = RawAxiosRequestHeaders & AxiosHeaders; - - type AxiosHeaderValue = AxiosHeaders | string | string[] | number | boolean | null; - - type RawCommonResponseHeaders = { - [Key in CommonResponseHeadersList]: AxiosHeaderValue; - } & { - "set-cookie": string[]; - }; - - type RawAxiosResponseHeaders = Partial; - - type AxiosResponseHeaders = RawAxiosResponseHeaders & AxiosHeaders; - - interface AxiosRequestTransformer { - (this: InternalAxiosRequestConfig, data: any, headers: AxiosRequestHeaders): any; - } - - interface AxiosResponseTransformer { - (this: InternalAxiosRequestConfig, data: any, headers: AxiosResponseHeaders, status?: number): any; - } - - interface AxiosAdapter { - (config: InternalAxiosRequestConfig): AxiosPromise; - } - - interface AxiosBasicCredentials { - username: string; - password: string; - } - - interface AxiosProxyConfig { - host: string; - port: number; - auth?: AxiosBasicCredentials; - protocol?: string; - } - - type Method = - | 'get' | 'GET' - | 'delete' | 'DELETE' - | 'head' | 'HEAD' - | 'options' | 'OPTIONS' - | 'post' | 'POST' - | 'put' | 'PUT' - | 'patch' | 'PATCH' - | 'purge' | 'PURGE' - | 'link' | 'LINK' - | 'unlink' | 'UNLINK'; - - type ResponseType = - | 'arraybuffer' - | 'blob' - | 'document' - | 'json' - | 'text' - | 'stream'; - - type responseEncoding = - | 'ascii' | 'ASCII' - | 'ansi' | 'ANSI' - | 'binary' | 'BINARY' - | 'base64' | 'BASE64' - | 'base64url' | 'BASE64URL' - | 'hex' | 'HEX' - | 'latin1' | 'LATIN1' - | 'ucs-2' | 'UCS-2' - | 'ucs2' | 'UCS2' - | 'utf-8' | 'UTF-8' - | 'utf8' | 'UTF8' - | 'utf16le' | 'UTF16LE'; - - interface TransitionalOptions { - silentJSONParsing?: boolean; - forcedJSONParsing?: boolean; - clarifyTimeoutError?: boolean; - } - - interface GenericAbortSignal { - readonly aborted: boolean; - onabort?: ((...args: any) => any) | null; - addEventListener?: (...args: any) => any; - removeEventListener?: (...args: any) => any; - } - - interface FormDataVisitorHelpers { - defaultVisitor: SerializerVisitor; - convertValue: (value: any) => any; - isVisitable: (value: any) => boolean; - } - - interface SerializerVisitor { - ( - this: GenericFormData, - value: any, - key: string | number, - path: null | Array, - helpers: FormDataVisitorHelpers - ): boolean; - } - - interface SerializerOptions { - visitor?: SerializerVisitor; - dots?: boolean; - metaTokens?: boolean; - indexes?: boolean | null; - } - - // tslint:disable-next-line - interface FormSerializerOptions extends SerializerOptions { - } - - interface ParamEncoder { - (value: any, defaultEncoder: (value: any) => any): any; - } - - interface CustomParamsSerializer { - (params: Record, options?: ParamsSerializerOptions): string; - } - - interface ParamsSerializerOptions extends SerializerOptions { - encode?: ParamEncoder; - serialize?: CustomParamsSerializer; - } - - type MaxUploadRate = number; - - type MaxDownloadRate = number; - - type BrowserProgressEvent = any; - - interface AxiosProgressEvent { - loaded: number; - total?: number; - progress?: number; - bytes: number; - rate?: number; - estimated?: number; - upload?: boolean; - download?: boolean; - event?: BrowserProgressEvent; - } - - type Milliseconds = number; - - type AxiosAdapterName = 'xhr' | 'http' | string; - - type AxiosAdapterConfig = AxiosAdapter | AxiosAdapterName; - - type AddressFamily = 4 | 6 | undefined; - - interface LookupAddressEntry { - address: string; - family?: AddressFamily; - } - - type LookupAddress = string | LookupAddressEntry; - - interface AxiosRequestConfig { - url?: string; - method?: Method | string; - baseURL?: string; - transformRequest?: AxiosRequestTransformer | AxiosRequestTransformer[]; - transformResponse?: AxiosResponseTransformer | AxiosResponseTransformer[]; - headers?: (RawAxiosRequestHeaders & MethodsHeaders) | AxiosHeaders; - params?: any; - paramsSerializer?: ParamsSerializerOptions | CustomParamsSerializer; - data?: D; - timeout?: Milliseconds; - timeoutErrorMessage?: string; - withCredentials?: boolean; - adapter?: AxiosAdapterConfig | AxiosAdapterConfig[]; - auth?: AxiosBasicCredentials; - responseType?: ResponseType; - responseEncoding?: responseEncoding | string; - xsrfCookieName?: string; - xsrfHeaderName?: string; - onUploadProgress?: (progressEvent: AxiosProgressEvent) => void; - onDownloadProgress?: (progressEvent: AxiosProgressEvent) => void; - maxContentLength?: number; - validateStatus?: ((status: number) => boolean) | null; - maxBodyLength?: number; - maxRedirects?: number; - maxRate?: number | [MaxUploadRate, MaxDownloadRate]; - beforeRedirect?: (options: Record, responseDetails: {headers: Record, statusCode: HttpStatusCode}) => void; - socketPath?: string | null; - transport?: any; - httpAgent?: any; - httpsAgent?: any; - proxy?: AxiosProxyConfig | false; - cancelToken?: CancelToken; - decompress?: boolean; - transitional?: TransitionalOptions; - signal?: GenericAbortSignal; - insecureHTTPParser?: boolean; - env?: { - FormData?: new (...args: any[]) => object; - }; - formSerializer?: FormSerializerOptions; - family?: AddressFamily; - lookup?: ((hostname: string, options: object, cb: (err: Error | null, address: LookupAddress | LookupAddress[], family?: AddressFamily) => void) => void) | - ((hostname: string, options: object) => Promise<[address: LookupAddressEntry | LookupAddressEntry[], family?: AddressFamily] | LookupAddress>); - withXSRFToken?: boolean | ((config: InternalAxiosRequestConfig) => boolean | undefined); - } - - // Alias - type RawAxiosRequestConfig = AxiosRequestConfig; - - interface InternalAxiosRequestConfig extends AxiosRequestConfig { - headers: AxiosRequestHeaders; - } - - interface HeadersDefaults { - common: RawAxiosRequestHeaders; - delete: RawAxiosRequestHeaders; - get: RawAxiosRequestHeaders; - head: RawAxiosRequestHeaders; - post: RawAxiosRequestHeaders; - put: RawAxiosRequestHeaders; - patch: RawAxiosRequestHeaders; - options?: RawAxiosRequestHeaders; - purge?: RawAxiosRequestHeaders; - link?: RawAxiosRequestHeaders; - unlink?: RawAxiosRequestHeaders; - } - - interface AxiosDefaults extends Omit, 'headers'> { - headers: HeadersDefaults; - } - - interface CreateAxiosDefaults extends Omit, 'headers'> { - headers?: RawAxiosRequestHeaders | AxiosHeaders | Partial; - } - - interface AxiosResponse { - data: T; - status: number; - statusText: string; - headers: RawAxiosResponseHeaders | AxiosResponseHeaders; - config: InternalAxiosRequestConfig; - request?: any; - } - - type AxiosPromise = Promise>; - - interface CancelStatic { - new (message?: string): Cancel; - } - - interface Cancel { - message: string | undefined; - } - - interface Canceler { - (message?: string, config?: AxiosRequestConfig, request?: any): void; - } - - interface CancelTokenStatic { - new (executor: (cancel: Canceler) => void): CancelToken; - source(): CancelTokenSource; - } - - interface CancelToken { - promise: Promise; - reason?: Cancel; - throwIfRequested(): void; - } - - interface CancelTokenSource { - token: CancelToken; - cancel: Canceler; - } - - interface AxiosInterceptorOptions { - synchronous?: boolean; - runWhen?: (config: InternalAxiosRequestConfig) => boolean; - } - - interface AxiosInterceptorManager { - use(onFulfilled?: (value: V) => V | Promise, onRejected?: (error: any) => any, options?: AxiosInterceptorOptions): number; - eject(id: number): void; - clear(): void; - } - - interface AxiosInstance extends Axios { - , D = any>(config: AxiosRequestConfig): Promise; - , D = any>(url: string, config?: AxiosRequestConfig): Promise; - - defaults: Omit & { - headers: HeadersDefaults & { - [key: string]: AxiosHeaderValue - } - }; - } - - interface GenericFormData { - append(name: string, value: any, options?: any): any; - } - - interface GenericHTMLFormElement { - name: string; - method: string; - submit(): void; - } - - interface AxiosStatic extends AxiosInstance { - create(config?: CreateAxiosDefaults): AxiosInstance; - Cancel: CancelStatic; - CancelToken: CancelTokenStatic; - Axios: typeof Axios; - AxiosError: typeof AxiosError; - CanceledError: typeof CanceledError; - HttpStatusCode: typeof HttpStatusCode; - readonly VERSION: string; - isCancel(value: any): value is Cancel; - all(values: Array>): Promise; - spread(callback: (...args: T[]) => R): (array: T[]) => R; - isAxiosError(payload: any): payload is AxiosError; - toFormData(sourceObj: object, targetFormData?: GenericFormData, options?: FormSerializerOptions): GenericFormData; - formToJSON(form: GenericFormData|GenericHTMLFormElement): object; - getAdapter(adapters: AxiosAdapterConfig | AxiosAdapterConfig[] | undefined): AxiosAdapter; - AxiosHeaders: typeof AxiosHeaders; - } -} - -declare const axios: axios.AxiosStatic; - -export = axios; diff --git a/node_modules/axios/index.d.ts b/node_modules/axios/index.d.ts index 02a8c09..78f733f 100644 --- a/node_modules/axios/index.d.ts +++ b/node_modules/axios/index.d.ts @@ -1,116 +1,9 @@ -// TypeScript Version: 4.7 -export type AxiosHeaderValue = AxiosHeaders | string | string[] | number | boolean | null; - -interface RawAxiosHeaders { - [key: string]: AxiosHeaderValue; -} - -type MethodsHeaders = Partial<{ - [Key in Method as Lowercase]: AxiosHeaders; -} & {common: AxiosHeaders}>; - -type AxiosHeaderMatcher = string | RegExp | ((this: AxiosHeaders, value: string, name: string) => boolean); - -type AxiosHeaderParser = (this: AxiosHeaders, value: AxiosHeaderValue, header: string) => any; - -export class AxiosHeaders { - constructor( - headers?: RawAxiosHeaders | AxiosHeaders | string - ); - - [key: string]: any; - - set(headerName?: string, value?: AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders; - set(headers?: RawAxiosHeaders | AxiosHeaders | string, rewrite?: boolean): AxiosHeaders; - - get(headerName: string, parser: RegExp): RegExpExecArray | null; - get(headerName: string, matcher?: true | AxiosHeaderParser): AxiosHeaderValue; - - has(header: string, matcher?: AxiosHeaderMatcher): boolean; - - delete(header: string | string[], matcher?: AxiosHeaderMatcher): boolean; - - clear(matcher?: AxiosHeaderMatcher): boolean; - - normalize(format: boolean): AxiosHeaders; - - concat(...targets: Array): AxiosHeaders; - - toJSON(asStrings?: boolean): RawAxiosHeaders; - - static from(thing?: AxiosHeaders | RawAxiosHeaders | string): AxiosHeaders; - - static accessor(header: string | string[]): AxiosHeaders; - - static concat(...targets: Array): AxiosHeaders; - - setContentType(value: ContentType, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders; - getContentType(parser?: RegExp): RegExpExecArray | null; - getContentType(matcher?: AxiosHeaderMatcher): AxiosHeaderValue; - hasContentType(matcher?: AxiosHeaderMatcher): boolean; - - setContentLength(value: AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders; - getContentLength(parser?: RegExp): RegExpExecArray | null; - getContentLength(matcher?: AxiosHeaderMatcher): AxiosHeaderValue; - hasContentLength(matcher?: AxiosHeaderMatcher): boolean; - - setAccept(value: AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders; - getAccept(parser?: RegExp): RegExpExecArray | null; - getAccept(matcher?: AxiosHeaderMatcher): AxiosHeaderValue; - hasAccept(matcher?: AxiosHeaderMatcher): boolean; - - setUserAgent(value: AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders; - getUserAgent(parser?: RegExp): RegExpExecArray | null; - getUserAgent(matcher?: AxiosHeaderMatcher): AxiosHeaderValue; - hasUserAgent(matcher?: AxiosHeaderMatcher): boolean; - - setContentEncoding(value: AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders; - getContentEncoding(parser?: RegExp): RegExpExecArray | null; - getContentEncoding(matcher?: AxiosHeaderMatcher): AxiosHeaderValue; - hasContentEncoding(matcher?: AxiosHeaderMatcher): boolean; - - setAuthorization(value: AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders; - getAuthorization(parser?: RegExp): RegExpExecArray | null; - getAuthorization(matcher?: AxiosHeaderMatcher): AxiosHeaderValue; - hasAuthorization(matcher?: AxiosHeaderMatcher): boolean; - - [Symbol.iterator](): IterableIterator<[string, AxiosHeaderValue]>; -} - -type CommonRequestHeadersList = 'Accept' | 'Content-Length' | 'User-Agent' | 'Content-Encoding' | 'Authorization'; - -type ContentType = AxiosHeaderValue | 'text/html' | 'text/plain' | 'multipart/form-data' | 'application/json' | 'application/x-www-form-urlencoded' | 'application/octet-stream'; - -export type RawAxiosRequestHeaders = Partial; - -export type AxiosRequestHeaders = RawAxiosRequestHeaders & AxiosHeaders; - -type CommonResponseHeadersList = 'Server' | 'Content-Type' | 'Content-Length' | 'Cache-Control'| 'Content-Encoding'; - -type RawCommonResponseHeaders = { - [Key in CommonResponseHeadersList]: AxiosHeaderValue; -} & { - "set-cookie": string[]; -}; - -export type RawAxiosResponseHeaders = Partial; - -export type AxiosResponseHeaders = RawAxiosResponseHeaders & AxiosHeaders; - -export interface AxiosRequestTransformer { - (this: InternalAxiosRequestConfig, data: any, headers: AxiosRequestHeaders): any; -} - -export interface AxiosResponseTransformer { - (this: InternalAxiosRequestConfig, data: any, headers: AxiosResponseHeaders, status?: number): any; +export interface AxiosTransformer { + (data: any, headers?: any): any; } export interface AxiosAdapter { - (config: InternalAxiosRequestConfig): AxiosPromise; + (config: AxiosRequestConfig): AxiosPromise; } export interface AxiosBasicCredentials { @@ -121,335 +14,103 @@ export interface AxiosBasicCredentials { export interface AxiosProxyConfig { host: string; port: number; - auth?: AxiosBasicCredentials; + auth?: { + username: string; + password:string; + }; protocol?: string; } -export enum HttpStatusCode { - Continue = 100, - SwitchingProtocols = 101, - Processing = 102, - EarlyHints = 103, - Ok = 200, - Created = 201, - Accepted = 202, - NonAuthoritativeInformation = 203, - NoContent = 204, - ResetContent = 205, - PartialContent = 206, - MultiStatus = 207, - AlreadyReported = 208, - ImUsed = 226, - MultipleChoices = 300, - MovedPermanently = 301, - Found = 302, - SeeOther = 303, - NotModified = 304, - UseProxy = 305, - Unused = 306, - TemporaryRedirect = 307, - PermanentRedirect = 308, - BadRequest = 400, - Unauthorized = 401, - PaymentRequired = 402, - Forbidden = 403, - NotFound = 404, - MethodNotAllowed = 405, - NotAcceptable = 406, - ProxyAuthenticationRequired = 407, - RequestTimeout = 408, - Conflict = 409, - Gone = 410, - LengthRequired = 411, - PreconditionFailed = 412, - PayloadTooLarge = 413, - UriTooLong = 414, - UnsupportedMediaType = 415, - RangeNotSatisfiable = 416, - ExpectationFailed = 417, - ImATeapot = 418, - MisdirectedRequest = 421, - UnprocessableEntity = 422, - Locked = 423, - FailedDependency = 424, - TooEarly = 425, - UpgradeRequired = 426, - PreconditionRequired = 428, - TooManyRequests = 429, - RequestHeaderFieldsTooLarge = 431, - UnavailableForLegalReasons = 451, - InternalServerError = 500, - NotImplemented = 501, - BadGateway = 502, - ServiceUnavailable = 503, - GatewayTimeout = 504, - HttpVersionNotSupported = 505, - VariantAlsoNegotiates = 506, - InsufficientStorage = 507, - LoopDetected = 508, - NotExtended = 510, - NetworkAuthenticationRequired = 511, -} - export type Method = - | 'get' | 'GET' - | 'delete' | 'DELETE' - | 'head' | 'HEAD' - | 'options' | 'OPTIONS' - | 'post' | 'POST' - | 'put' | 'PUT' - | 'patch' | 'PATCH' - | 'purge' | 'PURGE' - | 'link' | 'LINK' - | 'unlink' | 'UNLINK'; + | 'get' | 'GET' + | 'delete' | 'DELETE' + | 'head' | 'HEAD' + | 'options' | 'OPTIONS' + | 'post' | 'POST' + | 'put' | 'PUT' + | 'patch' | 'PATCH' + | 'purge' | 'PURGE' + | 'link' | 'LINK' + | 'unlink' | 'UNLINK' export type ResponseType = - | 'arraybuffer' - | 'blob' - | 'document' - | 'json' - | 'text' - | 'stream'; + | 'arraybuffer' + | 'blob' + | 'document' + | 'json' + | 'text' + | 'stream' -export type responseEncoding = - | 'ascii' | 'ASCII' - | 'ansi' | 'ANSI' - | 'binary' | 'BINARY' - | 'base64' | 'BASE64' - | 'base64url' | 'BASE64URL' - | 'hex' | 'HEX' - | 'latin1' | 'LATIN1' - | 'ucs-2' | 'UCS-2' - | 'ucs2' | 'UCS2' - | 'utf-8' | 'UTF-8' - | 'utf8' | 'UTF8' - | 'utf16le' | 'UTF16LE'; - -export interface TransitionalOptions { - silentJSONParsing?: boolean; - forcedJSONParsing?: boolean; - clarifyTimeoutError?: boolean; +export interface TransitionalOptions{ + silentJSONParsing: boolean; + forcedJSONParsing: boolean; + clarifyTimeoutError: boolean; } -export interface GenericAbortSignal { - readonly aborted: boolean; - onabort?: ((...args: any) => any) | null; - addEventListener?: (...args: any) => any; - removeEventListener?: (...args: any) => any; -} - -export interface FormDataVisitorHelpers { - defaultVisitor: SerializerVisitor; - convertValue: (value: any) => any; - isVisitable: (value: any) => boolean; -} - -export interface SerializerVisitor { - ( - this: GenericFormData, - value: any, - key: string | number, - path: null | Array, - helpers: FormDataVisitorHelpers - ): boolean; -} - -export interface SerializerOptions { - visitor?: SerializerVisitor; - dots?: boolean; - metaTokens?: boolean; - indexes?: boolean | null; -} - -// tslint:disable-next-line -export interface FormSerializerOptions extends SerializerOptions { -} - -export interface ParamEncoder { - (value: any, defaultEncoder: (value: any) => any): any; -} - -export interface CustomParamsSerializer { - (params: Record, options?: ParamsSerializerOptions): string; -} - -export interface ParamsSerializerOptions extends SerializerOptions { - encode?: ParamEncoder; - serialize?: CustomParamsSerializer; -} - -type MaxUploadRate = number; - -type MaxDownloadRate = number; - -type BrowserProgressEvent = any; - -export interface AxiosProgressEvent { - loaded: number; - total?: number; - progress?: number; - bytes: number; - rate?: number; - estimated?: number; - upload?: boolean; - download?: boolean; - event?: BrowserProgressEvent; -} - -type Milliseconds = number; - -type AxiosAdapterName = 'xhr' | 'http' | string; - -type AxiosAdapterConfig = AxiosAdapter | AxiosAdapterName; - -export type AddressFamily = 4 | 6 | undefined; - -export interface LookupAddressEntry { - address: string; - family?: AddressFamily; -} - -export type LookupAddress = string | LookupAddressEntry; - -export interface AxiosRequestConfig { +export interface AxiosRequestConfig { url?: string; - method?: Method | string; + method?: Method; baseURL?: string; - transformRequest?: AxiosRequestTransformer | AxiosRequestTransformer[]; - transformResponse?: AxiosResponseTransformer | AxiosResponseTransformer[]; - headers?: (RawAxiosRequestHeaders & MethodsHeaders) | AxiosHeaders; + transformRequest?: AxiosTransformer | AxiosTransformer[]; + transformResponse?: AxiosTransformer | AxiosTransformer[]; + headers?: any; params?: any; - paramsSerializer?: ParamsSerializerOptions | CustomParamsSerializer; - data?: D; - timeout?: Milliseconds; + paramsSerializer?: (params: any) => string; + data?: any; + timeout?: number; timeoutErrorMessage?: string; withCredentials?: boolean; - adapter?: AxiosAdapterConfig | AxiosAdapterConfig[]; + adapter?: AxiosAdapter; auth?: AxiosBasicCredentials; responseType?: ResponseType; - responseEncoding?: responseEncoding | string; xsrfCookieName?: string; xsrfHeaderName?: string; - onUploadProgress?: (progressEvent: AxiosProgressEvent) => void; - onDownloadProgress?: (progressEvent: AxiosProgressEvent) => void; + onUploadProgress?: (progressEvent: any) => void; + onDownloadProgress?: (progressEvent: any) => void; maxContentLength?: number; validateStatus?: ((status: number) => boolean) | null; maxBodyLength?: number; maxRedirects?: number; - maxRate?: number | [MaxUploadRate, MaxDownloadRate]; - beforeRedirect?: (options: Record, responseDetails: {headers: Record, statusCode: HttpStatusCode}) => void; socketPath?: string | null; - transport?: any; httpAgent?: any; httpsAgent?: any; proxy?: AxiosProxyConfig | false; cancelToken?: CancelToken; decompress?: boolean; - transitional?: TransitionalOptions; - signal?: GenericAbortSignal; - insecureHTTPParser?: boolean; - env?: { - FormData?: new (...args: any[]) => object; - }; - formSerializer?: FormSerializerOptions; - family?: AddressFamily; - lookup?: ((hostname: string, options: object, cb: (err: Error | null, address: LookupAddress | LookupAddress[], family?: AddressFamily) => void) => void) | - ((hostname: string, options: object) => Promise<[address: LookupAddressEntry | LookupAddressEntry[], family?: AddressFamily] | LookupAddress>); - withXSRFToken?: boolean | ((config: InternalAxiosRequestConfig) => boolean | undefined); + transitional?: TransitionalOptions } -// Alias -export type RawAxiosRequestConfig = AxiosRequestConfig; - -export interface InternalAxiosRequestConfig extends AxiosRequestConfig { - headers: AxiosRequestHeaders; -} - -export interface HeadersDefaults { - common: RawAxiosRequestHeaders; - delete: RawAxiosRequestHeaders; - get: RawAxiosRequestHeaders; - head: RawAxiosRequestHeaders; - post: RawAxiosRequestHeaders; - put: RawAxiosRequestHeaders; - patch: RawAxiosRequestHeaders; - options?: RawAxiosRequestHeaders; - purge?: RawAxiosRequestHeaders; - link?: RawAxiosRequestHeaders; - unlink?: RawAxiosRequestHeaders; -} - -export interface AxiosDefaults extends Omit, 'headers'> { - headers: HeadersDefaults; -} - -export interface CreateAxiosDefaults extends Omit, 'headers'> { - headers?: RawAxiosRequestHeaders | AxiosHeaders | Partial; -} - -export interface AxiosResponse { +export interface AxiosResponse { data: T; status: number; statusText: string; - headers: RawAxiosResponseHeaders | AxiosResponseHeaders; - config: InternalAxiosRequestConfig; + headers: any; + config: AxiosRequestConfig; request?: any; } -export class AxiosError extends Error { - constructor( - message?: string, - code?: string, - config?: InternalAxiosRequestConfig, - request?: any, - response?: AxiosResponse - ); - - config?: InternalAxiosRequestConfig; +export interface AxiosError extends Error { + config: AxiosRequestConfig; code?: string; request?: any; - response?: AxiosResponse; + response?: AxiosResponse; isAxiosError: boolean; - status?: number; toJSON: () => object; - cause?: Error; - static from( - error: Error | unknown, - code?: string, - config?: InternalAxiosRequestConfig, - request?: any, - response?: AxiosResponse, - customProps?: object, -): AxiosError; - static readonly ERR_FR_TOO_MANY_REDIRECTS = "ERR_FR_TOO_MANY_REDIRECTS"; - static readonly ERR_BAD_OPTION_VALUE = "ERR_BAD_OPTION_VALUE"; - static readonly ERR_BAD_OPTION = "ERR_BAD_OPTION"; - static readonly ERR_NETWORK = "ERR_NETWORK"; - static readonly ERR_DEPRECATED = "ERR_DEPRECATED"; - static readonly ERR_BAD_RESPONSE = "ERR_BAD_RESPONSE"; - static readonly ERR_BAD_REQUEST = "ERR_BAD_REQUEST"; - static readonly ERR_NOT_SUPPORT = "ERR_NOT_SUPPORT"; - static readonly ERR_INVALID_URL = "ERR_INVALID_URL"; - static readonly ERR_CANCELED = "ERR_CANCELED"; - static readonly ECONNABORTED = "ECONNABORTED"; - static readonly ETIMEDOUT = "ETIMEDOUT"; } -export class CanceledError extends AxiosError { +export interface AxiosPromise extends Promise> { } -export type AxiosPromise = Promise>; - export interface CancelStatic { new (message?: string): Cancel; } export interface Cancel { - message: string | undefined; + message: string; } export interface Canceler { - (message?: string, config?: AxiosRequestConfig, request?: any): void; + (message?: string): void; } export interface CancelTokenStatic { @@ -468,90 +129,38 @@ export interface CancelTokenSource { cancel: Canceler; } -export interface AxiosInterceptorOptions { - synchronous?: boolean; - runWhen?: (config: InternalAxiosRequestConfig) => boolean; -} - export interface AxiosInterceptorManager { - use(onFulfilled?: ((value: V) => V | Promise) | null, onRejected?: ((error: any) => any) | null, options?: AxiosInterceptorOptions): number; + use(onFulfilled?: (value: V) => T | Promise, onRejected?: (error: any) => any): number; eject(id: number): void; - clear(): void; } -export class Axios { - constructor(config?: AxiosRequestConfig); - defaults: AxiosDefaults; +export interface AxiosInstance { + (config: AxiosRequestConfig): AxiosPromise; + (url: string, config?: AxiosRequestConfig): AxiosPromise; + defaults: AxiosRequestConfig; interceptors: { - request: AxiosInterceptorManager; + request: AxiosInterceptorManager; response: AxiosInterceptorManager; }; getUri(config?: AxiosRequestConfig): string; - request, D = any>(config: AxiosRequestConfig): Promise; - get, D = any>(url: string, config?: AxiosRequestConfig): Promise; - delete, D = any>(url: string, config?: AxiosRequestConfig): Promise; - head, D = any>(url: string, config?: AxiosRequestConfig): Promise; - options, D = any>(url: string, config?: AxiosRequestConfig): Promise; - post, D = any>(url: string, data?: D, config?: AxiosRequestConfig): Promise; - put, D = any>(url: string, data?: D, config?: AxiosRequestConfig): Promise; - patch, D = any>(url: string, data?: D, config?: AxiosRequestConfig): Promise; - postForm, D = any>(url: string, data?: D, config?: AxiosRequestConfig): Promise; - putForm, D = any>(url: string, data?: D, config?: AxiosRequestConfig): Promise; - patchForm, D = any>(url: string, data?: D, config?: AxiosRequestConfig): Promise; + request> (config: AxiosRequestConfig): Promise; + get>(url: string, config?: AxiosRequestConfig): Promise; + delete>(url: string, config?: AxiosRequestConfig): Promise; + head>(url: string, config?: AxiosRequestConfig): Promise; + options>(url: string, config?: AxiosRequestConfig): Promise; + post>(url: string, data?: any, config?: AxiosRequestConfig): Promise; + put>(url: string, data?: any, config?: AxiosRequestConfig): Promise; + patch>(url: string, data?: any, config?: AxiosRequestConfig): Promise; } -export interface AxiosInstance extends Axios { - , D = any>(config: AxiosRequestConfig): Promise; - , D = any>(url: string, config?: AxiosRequestConfig): Promise; - - defaults: Omit & { - headers: HeadersDefaults & { - [key: string]: AxiosHeaderValue - } - }; -} - -export interface GenericFormData { - append(name: string, value: any, options?: any): any; -} - -export interface GenericHTMLFormElement { - name: string; - method: string; - submit(): void; -} - -export function getAdapter(adapters: AxiosAdapterConfig | AxiosAdapterConfig[] | undefined): AxiosAdapter; - -export function toFormData(sourceObj: object, targetFormData?: GenericFormData, options?: FormSerializerOptions): GenericFormData; - -export function formToJSON(form: GenericFormData|GenericHTMLFormElement): object; - -export function isAxiosError(payload: any): payload is AxiosError; - -export function spread(callback: (...args: T[]) => R): (array: T[]) => R; - -export function isCancel(value: any): value is Cancel; - -export function all(values: Array>): Promise; - export interface AxiosStatic extends AxiosInstance { - create(config?: CreateAxiosDefaults): AxiosInstance; + create(config?: AxiosRequestConfig): AxiosInstance; Cancel: CancelStatic; CancelToken: CancelTokenStatic; - Axios: typeof Axios; - AxiosError: typeof AxiosError; - HttpStatusCode: typeof HttpStatusCode; - readonly VERSION: string; - isCancel: typeof isCancel; - all: typeof all; - spread: typeof spread; - isAxiosError: typeof isAxiosError; - toFormData: typeof toFormData; - formToJSON: typeof formToJSON; - getAdapter: typeof getAdapter; - CanceledError: typeof CanceledError; - AxiosHeaders: typeof AxiosHeaders; + isCancel(value: any): boolean; + all(values: (T | Promise)[]): Promise; + spread(callback: (...args: T[]) => R): (array: T[]) => R; + isAxiosError(payload: any): payload is AxiosError; } declare const axios: AxiosStatic; diff --git a/node_modules/axios/index.js b/node_modules/axios/index.js index fba3990..79dfd09 100644 --- a/node_modules/axios/index.js +++ b/node_modules/axios/index.js @@ -1,43 +1 @@ -import axios from './lib/axios.js'; - -// This module is intended to unwrap Axios default export as named. -// Keep top-level export same with static properties -// so that it can keep same with es module or cjs -const { - Axios, - AxiosError, - CanceledError, - isCancel, - CancelToken, - VERSION, - all, - Cancel, - isAxiosError, - spread, - toFormData, - AxiosHeaders, - HttpStatusCode, - formToJSON, - getAdapter, - mergeConfig -} = axios; - -export { - axios as default, - Axios, - AxiosError, - CanceledError, - isCancel, - CancelToken, - VERSION, - all, - Cancel, - isAxiosError, - spread, - toFormData, - AxiosHeaders, - HttpStatusCode, - formToJSON, - getAdapter, - mergeConfig -} +module.exports = require('./lib/axios'); \ No newline at end of file diff --git a/node_modules/axios/lib/adapters/adapters.js b/node_modules/axios/lib/adapters/adapters.js deleted file mode 100644 index 550997d..0000000 --- a/node_modules/axios/lib/adapters/adapters.js +++ /dev/null @@ -1,77 +0,0 @@ -import utils from '../utils.js'; -import httpAdapter from './http.js'; -import xhrAdapter from './xhr.js'; -import AxiosError from "../core/AxiosError.js"; - -const knownAdapters = { - http: httpAdapter, - xhr: xhrAdapter -} - -utils.forEach(knownAdapters, (fn, value) => { - if (fn) { - try { - Object.defineProperty(fn, 'name', {value}); - } catch (e) { - // eslint-disable-next-line no-empty - } - Object.defineProperty(fn, 'adapterName', {value}); - } -}); - -const renderReason = (reason) => `- ${reason}`; - -const isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false; - -export default { - getAdapter: (adapters) => { - adapters = utils.isArray(adapters) ? adapters : [adapters]; - - const {length} = adapters; - let nameOrAdapter; - let adapter; - - const rejectedReasons = {}; - - for (let i = 0; i < length; i++) { - nameOrAdapter = adapters[i]; - let id; - - adapter = nameOrAdapter; - - if (!isResolvedHandle(nameOrAdapter)) { - adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()]; - - if (adapter === undefined) { - throw new AxiosError(`Unknown adapter '${id}'`); - } - } - - if (adapter) { - break; - } - - rejectedReasons[id || '#' + i] = adapter; - } - - if (!adapter) { - - const reasons = Object.entries(rejectedReasons) - .map(([id, state]) => `adapter ${id} ` + - (state === false ? 'is not supported by the environment' : 'is not available in the build') - ); - - let s = length ? - (reasons.length > 1 ? 'since :\n' + reasons.map(renderReason).join('\n') : ' ' + renderReason(reasons[0])) : - 'as no adapter specified'; - - throw new AxiosError( - `There is no suitable adapter to dispatch the request ` + s, - 'ERR_NOT_SUPPORT' - ); - } - - return adapter; - }, - adapters: knownAdapters -} diff --git a/node_modules/axios/lib/adapters/http.js b/node_modules/axios/lib/adapters/http.js index 21d6458..0cca3bd 100755 --- a/node_modules/axios/lib/adapters/http.js +++ b/node_modules/axios/lib/adapters/http.js @@ -1,316 +1,73 @@ 'use strict'; -import utils from './../utils.js'; -import settle from './../core/settle.js'; -import buildFullPath from '../core/buildFullPath.js'; -import buildURL from './../helpers/buildURL.js'; -import {getProxyForUrl} from 'proxy-from-env'; -import http from 'http'; -import https from 'https'; -import util from 'util'; -import followRedirects from 'follow-redirects'; -import zlib from 'zlib'; -import {VERSION} from '../env/data.js'; -import transitionalDefaults from '../defaults/transitional.js'; -import AxiosError from '../core/AxiosError.js'; -import CanceledError from '../cancel/CanceledError.js'; -import platform from '../platform/index.js'; -import fromDataURI from '../helpers/fromDataURI.js'; -import stream from 'stream'; -import AxiosHeaders from '../core/AxiosHeaders.js'; -import AxiosTransformStream from '../helpers/AxiosTransformStream.js'; -import EventEmitter from 'events'; -import formDataToStream from "../helpers/formDataToStream.js"; -import readBlob from "../helpers/readBlob.js"; -import ZlibHeaderTransformStream from '../helpers/ZlibHeaderTransformStream.js'; -import callbackify from "../helpers/callbackify.js"; +var utils = require('./../utils'); +var settle = require('./../core/settle'); +var buildFullPath = require('../core/buildFullPath'); +var buildURL = require('./../helpers/buildURL'); +var http = require('http'); +var https = require('https'); +var httpFollow = require('follow-redirects').http; +var httpsFollow = require('follow-redirects').https; +var url = require('url'); +var zlib = require('zlib'); +var pkg = require('./../../package.json'); +var createError = require('../core/createError'); +var enhanceError = require('../core/enhanceError'); -const zlibOptions = { - flush: zlib.constants.Z_SYNC_FLUSH, - finishFlush: zlib.constants.Z_SYNC_FLUSH -}; - -const brotliOptions = { - flush: zlib.constants.BROTLI_OPERATION_FLUSH, - finishFlush: zlib.constants.BROTLI_OPERATION_FLUSH -} - -const isBrotliSupported = utils.isFunction(zlib.createBrotliDecompress); - -const {http: httpFollow, https: httpsFollow} = followRedirects; - -const isHttps = /https:?/; - -const supportedProtocols = platform.protocols.map(protocol => { - return protocol + ':'; -}); +var isHttps = /https:?/; /** - * If the proxy or config beforeRedirects functions are defined, call them with the options - * object. - * - * @param {Object} options - The options object that was passed to the request. - * - * @returns {Object} - */ -function dispatchBeforeRedirect(options, responseDetails) { - if (options.beforeRedirects.proxy) { - options.beforeRedirects.proxy(options); - } - if (options.beforeRedirects.config) { - options.beforeRedirects.config(options, responseDetails); - } -} - -/** - * If the proxy or config afterRedirects functions are defined, call them with the options * * @param {http.ClientRequestArgs} options - * @param {AxiosProxyConfig} configProxy configuration from Axios options object + * @param {AxiosProxyConfig} proxy * @param {string} location - * - * @returns {http.ClientRequestArgs} */ -function setProxy(options, configProxy, location) { - let proxy = configProxy; - if (!proxy && proxy !== false) { - const proxyUrl = getProxyForUrl(location); - if (proxyUrl) { - proxy = new URL(proxyUrl); - } - } - if (proxy) { - // Basic proxy authorization - if (proxy.username) { - proxy.auth = (proxy.username || '') + ':' + (proxy.password || ''); - } +function setProxy(options, proxy, location) { + options.hostname = proxy.host; + options.host = proxy.host; + options.port = proxy.port; + options.path = location; - if (proxy.auth) { - // Support proxy auth object form - if (proxy.auth.username || proxy.auth.password) { - proxy.auth = (proxy.auth.username || '') + ':' + (proxy.auth.password || ''); - } - const base64 = Buffer - .from(proxy.auth, 'utf8') - .toString('base64'); - options.headers['Proxy-Authorization'] = 'Basic ' + base64; - } - - options.headers.host = options.hostname + (options.port ? ':' + options.port : ''); - const proxyHost = proxy.hostname || proxy.host; - options.hostname = proxyHost; - // Replace 'host' since options is not a URL object - options.host = proxyHost; - options.port = proxy.port; - options.path = location; - if (proxy.protocol) { - options.protocol = proxy.protocol.includes(':') ? proxy.protocol : `${proxy.protocol}:`; - } + // Basic proxy authorization + if (proxy.auth) { + var base64 = Buffer.from(proxy.auth.username + ':' + proxy.auth.password, 'utf8').toString('base64'); + options.headers['Proxy-Authorization'] = 'Basic ' + base64; } - options.beforeRedirects.proxy = function beforeRedirect(redirectOptions) { - // Configure proxy for redirected request, passing the original config proxy to apply - // the exact same logic as if the redirected request was performed by axios directly. - setProxy(redirectOptions, configProxy, redirectOptions.href); + // If a proxy is used, any redirects must also pass through the proxy + options.beforeRedirect = function beforeRedirect(redirection) { + redirection.headers.host = redirection.host; + setProxy(redirection, proxy, redirection.href); }; } -const isHttpAdapterSupported = typeof process !== 'undefined' && utils.kindOf(process) === 'process'; - -// temporary hotfix - -const wrapAsync = (asyncExecutor) => { - return new Promise((resolve, reject) => { - let onDone; - let isDone; - - const done = (value, isRejected) => { - if (isDone) return; - isDone = true; - onDone && onDone(value, isRejected); - } - - const _resolve = (value) => { - done(value); - resolve(value); - }; - - const _reject = (reason) => { - done(reason, true); - reject(reason); - } - - asyncExecutor(_resolve, _reject, (onDoneHandler) => (onDone = onDoneHandler)).catch(_reject); - }) -}; - -const resolveFamily = ({address, family}) => { - if (!utils.isString(address)) { - throw TypeError('address must be a string'); - } - return ({ - address, - family: family || (address.indexOf('.') < 0 ? 6 : 4) - }); -} - -const buildAddressEntry = (address, family) => resolveFamily(utils.isObject(address) ? address : {address, family}); - /*eslint consistent-return:0*/ -export default isHttpAdapterSupported && function httpAdapter(config) { - return wrapAsync(async function dispatchHttpRequest(resolve, reject, onDone) { - let {data, lookup, family} = config; - const {responseType, responseEncoding} = config; - const method = config.method.toUpperCase(); - let isDone; - let rejected = false; - let req; - - if (lookup) { - const _lookup = callbackify(lookup, (value) => utils.isArray(value) ? value : [value]); - // hotfix to support opt.all option which is required for node 20.x - lookup = (hostname, opt, cb) => { - _lookup(hostname, opt, (err, arg0, arg1) => { - if (err) { - return cb(err); - } - - const addresses = utils.isArray(arg0) ? arg0.map(addr => buildAddressEntry(addr)) : [buildAddressEntry(arg0, arg1)]; - - opt.all ? cb(err, addresses) : cb(err, addresses[0].address, addresses[0].family); - }); - } - } - - // temporary internal emitter until the AxiosRequest class will be implemented - const emitter = new EventEmitter(); - - const onFinished = () => { - if (config.cancelToken) { - config.cancelToken.unsubscribe(abort); - } - - if (config.signal) { - config.signal.removeEventListener('abort', abort); - } - - emitter.removeAllListeners(); - } - - onDone((value, isRejected) => { - isDone = true; - if (isRejected) { - rejected = true; - onFinished(); - } - }); - - function abort(reason) { - emitter.emit('abort', !reason || reason.type ? new CanceledError(null, config, req) : reason); - } - - emitter.once('abort', reject); - - if (config.cancelToken || config.signal) { - config.cancelToken && config.cancelToken.subscribe(abort); - if (config.signal) { - config.signal.aborted ? abort() : config.signal.addEventListener('abort', abort); - } - } - - // Parse url - const fullPath = buildFullPath(config.baseURL, config.url); - const parsed = new URL(fullPath, 'http://localhost'); - const protocol = parsed.protocol || supportedProtocols[0]; - - if (protocol === 'data:') { - let convertedData; - - if (method !== 'GET') { - return settle(resolve, reject, { - status: 405, - statusText: 'method not allowed', - headers: {}, - config - }); - } - - try { - convertedData = fromDataURI(config.url, responseType === 'blob', { - Blob: config.env && config.env.Blob - }); - } catch (err) { - throw AxiosError.from(err, AxiosError.ERR_BAD_REQUEST, config); - } - - if (responseType === 'text') { - convertedData = convertedData.toString(responseEncoding); - - if (!responseEncoding || responseEncoding === 'utf8') { - convertedData = utils.stripBOM(convertedData); - } - } else if (responseType === 'stream') { - convertedData = stream.Readable.from(convertedData); - } - - return settle(resolve, reject, { - data: convertedData, - status: 200, - statusText: 'OK', - headers: new AxiosHeaders(), - config - }); - } - - if (supportedProtocols.indexOf(protocol) === -1) { - return reject(new AxiosError( - 'Unsupported protocol ' + protocol, - AxiosError.ERR_BAD_REQUEST, - config - )); - } - - const headers = AxiosHeaders.from(config.headers).normalize(); +module.exports = function httpAdapter(config) { + return new Promise(function dispatchHttpRequest(resolvePromise, rejectPromise) { + var resolve = function resolve(value) { + resolvePromise(value); + }; + var reject = function reject(value) { + rejectPromise(value); + }; + var data = config.data; + var headers = config.headers; // Set User-Agent (required by some servers) // See https://github.com/axios/axios/issues/69 - // User-Agent is specified; handle case where no UA header is desired - // Only set header if it hasn't been set in config - headers.set('User-Agent', 'axios/' + VERSION, false); - - const onDownloadProgress = config.onDownloadProgress; - const onUploadProgress = config.onUploadProgress; - const maxRate = config.maxRate; - let maxUploadRate = undefined; - let maxDownloadRate = undefined; - - // support for spec compliant FormData objects - if (utils.isSpecCompliantForm(data)) { - const userBoundary = headers.getContentType(/boundary=([-_\w\d]{10,70})/i); - - data = formDataToStream(data, (formHeaders) => { - headers.set(formHeaders); - }, { - tag: `axios-${VERSION}-boundary`, - boundary: userBoundary && userBoundary[1] || undefined - }); - // support for https://www.npmjs.com/package/form-data api - } else if (utils.isFormData(data) && utils.isFunction(data.getHeaders)) { - headers.set(data.getHeaders()); - - if (!headers.hasContentLength()) { - try { - const knownLength = await util.promisify(data.getLength).call(data); - Number.isFinite(knownLength) && knownLength >= 0 && headers.setContentLength(knownLength); - /*eslint no-empty:0*/ - } catch (e) { - } + if ('User-Agent' in headers || 'user-agent' in headers) { + // User-Agent is specified; handle case where no UA header is desired + if (!headers['User-Agent'] && !headers['user-agent']) { + delete headers['User-Agent']; + delete headers['user-agent']; } - } else if (utils.isBlob(data)) { - data.size && headers.setContentType(data.type || 'application/octet-stream'); - headers.setContentLength(data.size || 0); - data = stream.Readable.from(readBlob(data)); - } else if (data && !utils.isStream(data)) { + // Otherwise, use specified value + } else { + // Only set header if it hasn't been set in config + headers['User-Agent'] = 'axios/' + pkg.version; + } + + if (data && !utils.isStream(data)) { if (Buffer.isBuffer(data)) { // Nothing to do... } else if (utils.isArrayBuffer(data)) { @@ -318,314 +75,218 @@ export default isHttpAdapterSupported && function httpAdapter(config) { } else if (utils.isString(data)) { data = Buffer.from(data, 'utf-8'); } else { - return reject(new AxiosError( + return reject(createError( 'Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream', - AxiosError.ERR_BAD_REQUEST, config )); } // Add Content-Length header if data exists - headers.setContentLength(data.length, false); - - if (config.maxBodyLength > -1 && data.length > config.maxBodyLength) { - return reject(new AxiosError( - 'Request body larger than maxBodyLength limit', - AxiosError.ERR_BAD_REQUEST, - config - )); - } - } - - const contentLength = utils.toFiniteNumber(headers.getContentLength()); - - if (utils.isArray(maxRate)) { - maxUploadRate = maxRate[0]; - maxDownloadRate = maxRate[1]; - } else { - maxUploadRate = maxDownloadRate = maxRate; - } - - if (data && (onUploadProgress || maxUploadRate)) { - if (!utils.isStream(data)) { - data = stream.Readable.from(data, {objectMode: false}); - } - - data = stream.pipeline([data, new AxiosTransformStream({ - length: contentLength, - maxRate: utils.toFiniteNumber(maxUploadRate) - })], utils.noop); - - onUploadProgress && data.on('progress', progress => { - onUploadProgress(Object.assign(progress, { - upload: true - })); - }); + headers['Content-Length'] = data.length; } // HTTP basic authentication - let auth = undefined; + var auth = undefined; if (config.auth) { - const username = config.auth.username || ''; - const password = config.auth.password || ''; + var username = config.auth.username || ''; + var password = config.auth.password || ''; auth = username + ':' + password; } - if (!auth && parsed.username) { - const urlUsername = parsed.username; - const urlPassword = parsed.password; + // Parse url + var fullPath = buildFullPath(config.baseURL, config.url); + var parsed = url.parse(fullPath); + var protocol = parsed.protocol || 'http:'; + + if (!auth && parsed.auth) { + var urlAuth = parsed.auth.split(':'); + var urlUsername = urlAuth[0] || ''; + var urlPassword = urlAuth[1] || ''; auth = urlUsername + ':' + urlPassword; } - auth && headers.delete('authorization'); - - let path; - - try { - path = buildURL( - parsed.pathname + parsed.search, - config.params, - config.paramsSerializer - ).replace(/^\?/, ''); - } catch (err) { - const customErr = new Error(err.message); - customErr.config = config; - customErr.url = config.url; - customErr.exists = true; - return reject(customErr); + if (auth) { + delete headers.Authorization; } - headers.set( - 'Accept-Encoding', - 'gzip, compress, deflate' + (isBrotliSupported ? ', br' : ''), false - ); + var isHttpsRequest = isHttps.test(protocol); + var agent = isHttpsRequest ? config.httpsAgent : config.httpAgent; - const options = { - path, - method: method, - headers: headers.toJSON(), + var options = { + path: buildURL(parsed.path, config.params, config.paramsSerializer).replace(/^\?/, ''), + method: config.method.toUpperCase(), + headers: headers, + agent: agent, agents: { http: config.httpAgent, https: config.httpsAgent }, - auth, - protocol, - family, - beforeRedirect: dispatchBeforeRedirect, - beforeRedirects: {} + auth: auth }; - // cacheable-lookup integration hotfix - !utils.isUndefined(lookup) && (options.lookup = lookup); - if (config.socketPath) { options.socketPath = config.socketPath; } else { options.hostname = parsed.hostname; options.port = parsed.port; - setProxy(options, config.proxy, protocol + '//' + parsed.hostname + (parsed.port ? ':' + parsed.port : '') + options.path); } - let transport; - const isHttpsRequest = isHttps.test(options.protocol); - options.agent = isHttpsRequest ? config.httpsAgent : config.httpAgent; + var proxy = config.proxy; + if (!proxy && proxy !== false) { + var proxyEnv = protocol.slice(0, -1) + '_proxy'; + var proxyUrl = process.env[proxyEnv] || process.env[proxyEnv.toUpperCase()]; + if (proxyUrl) { + var parsedProxyUrl = url.parse(proxyUrl); + var noProxyEnv = process.env.no_proxy || process.env.NO_PROXY; + var shouldProxy = true; + + if (noProxyEnv) { + var noProxy = noProxyEnv.split(',').map(function trim(s) { + return s.trim(); + }); + + shouldProxy = !noProxy.some(function proxyMatch(proxyElement) { + if (!proxyElement) { + return false; + } + if (proxyElement === '*') { + return true; + } + if (proxyElement[0] === '.' && + parsed.hostname.substr(parsed.hostname.length - proxyElement.length) === proxyElement) { + return true; + } + + return parsed.hostname === proxyElement; + }); + } + + if (shouldProxy) { + proxy = { + host: parsedProxyUrl.hostname, + port: parsedProxyUrl.port, + protocol: parsedProxyUrl.protocol + }; + + if (parsedProxyUrl.auth) { + var proxyUrlAuth = parsedProxyUrl.auth.split(':'); + proxy.auth = { + username: proxyUrlAuth[0], + password: proxyUrlAuth[1] + }; + } + } + } + } + + if (proxy) { + options.headers.host = parsed.hostname + (parsed.port ? ':' + parsed.port : ''); + setProxy(options, proxy, protocol + '//' + parsed.hostname + (parsed.port ? ':' + parsed.port : '') + options.path); + } + + var transport; + var isHttpsProxy = isHttpsRequest && (proxy ? isHttps.test(proxy.protocol) : true); if (config.transport) { transport = config.transport; } else if (config.maxRedirects === 0) { - transport = isHttpsRequest ? https : http; + transport = isHttpsProxy ? https : http; } else { if (config.maxRedirects) { options.maxRedirects = config.maxRedirects; } - if (config.beforeRedirect) { - options.beforeRedirects.config = config.beforeRedirect; - } - transport = isHttpsRequest ? httpsFollow : httpFollow; + transport = isHttpsProxy ? httpsFollow : httpFollow; } if (config.maxBodyLength > -1) { options.maxBodyLength = config.maxBodyLength; - } else { - // follow-redirects does not skip comparison, so it should always succeed for axios -1 unlimited - options.maxBodyLength = Infinity; - } - - if (config.insecureHTTPParser) { - options.insecureHTTPParser = config.insecureHTTPParser; } // Create the request - req = transport.request(options, function handleResponse(res) { - if (req.destroyed) return; + var req = transport.request(options, function handleResponse(res) { + if (req.aborted) return; - const streams = [res]; - - const responseLength = +res.headers['content-length']; - - if (onDownloadProgress) { - const transformStream = new AxiosTransformStream({ - length: utils.toFiniteNumber(responseLength), - maxRate: utils.toFiniteNumber(maxDownloadRate) - }); - - onDownloadProgress && transformStream.on('progress', progress => { - onDownloadProgress(Object.assign(progress, { - download: true - })); - }); - - streams.push(transformStream); - } - - // decompress the response body transparently if required - let responseStream = res; + // uncompress the response body transparently if required + var stream = res; // return the last request in case of redirects - const lastRequest = res.req || req; + var lastRequest = res.req || req; - // if decompress disabled we should not decompress - if (config.decompress !== false && res.headers['content-encoding']) { - // if no content, but headers still say that it is encoded, - // remove the header not confuse downstream operations - if (method === 'HEAD' || res.statusCode === 204) { - delete res.headers['content-encoding']; - } - switch ((res.headers['content-encoding'] || '').toLowerCase()) { + // if no content, is HEAD request or decompress disabled we should not decompress + if (res.statusCode !== 204 && lastRequest.method !== 'HEAD' && config.decompress !== false) { + switch (res.headers['content-encoding']) { /*eslint default-case:0*/ case 'gzip': - case 'x-gzip': case 'compress': - case 'x-compress': - // add the unzipper to the body stream processing pipeline - streams.push(zlib.createUnzip(zlibOptions)); - - // remove the content-encoding in order to not confuse downstream operations - delete res.headers['content-encoding']; - break; case 'deflate': - streams.push(new ZlibHeaderTransformStream()); - - // add the unzipper to the body stream processing pipeline - streams.push(zlib.createUnzip(zlibOptions)); + // add the unzipper to the body stream processing pipeline + stream = stream.pipe(zlib.createUnzip()); // remove the content-encoding in order to not confuse downstream operations delete res.headers['content-encoding']; break; - case 'br': - if (isBrotliSupported) { - streams.push(zlib.createBrotliDecompress(brotliOptions)); - delete res.headers['content-encoding']; - } } } - responseStream = streams.length > 1 ? stream.pipeline(streams, utils.noop) : streams[0]; - - const offListeners = stream.finished(responseStream, () => { - offListeners(); - onFinished(); - }); - - const response = { + var response = { status: res.statusCode, statusText: res.statusMessage, - headers: new AxiosHeaders(res.headers), - config, + headers: res.headers, + config: config, request: lastRequest }; - if (responseType === 'stream') { - response.data = responseStream; + if (config.responseType === 'stream') { + response.data = stream; settle(resolve, reject, response); } else { - const responseBuffer = []; - let totalResponseBytes = 0; - - responseStream.on('data', function handleStreamData(chunk) { + var responseBuffer = []; + var totalResponseBytes = 0; + stream.on('data', function handleStreamData(chunk) { responseBuffer.push(chunk); totalResponseBytes += chunk.length; // make sure the content length is not over the maxContentLength if specified if (config.maxContentLength > -1 && totalResponseBytes > config.maxContentLength) { - // stream.destroy() emit aborted event before calling reject() on Node.js v16 - rejected = true; - responseStream.destroy(); - reject(new AxiosError('maxContentLength size of ' + config.maxContentLength + ' exceeded', - AxiosError.ERR_BAD_RESPONSE, config, lastRequest)); + stream.destroy(); + reject(createError('maxContentLength size of ' + config.maxContentLength + ' exceeded', + config, null, lastRequest)); } }); - responseStream.on('aborted', function handlerStreamAborted() { - if (rejected) { - return; - } - - const err = new AxiosError( - 'maxContentLength size of ' + config.maxContentLength + ' exceeded', - AxiosError.ERR_BAD_RESPONSE, - config, - lastRequest - ); - responseStream.destroy(err); - reject(err); + stream.on('error', function handleStreamError(err) { + if (req.aborted) return; + reject(enhanceError(err, config, null, lastRequest)); }); - responseStream.on('error', function handleStreamError(err) { - if (req.destroyed) return; - reject(AxiosError.from(err, null, config, lastRequest)); - }); - - responseStream.on('end', function handleStreamEnd() { - try { - let responseData = responseBuffer.length === 1 ? responseBuffer[0] : Buffer.concat(responseBuffer); - if (responseType !== 'arraybuffer') { - responseData = responseData.toString(responseEncoding); - if (!responseEncoding || responseEncoding === 'utf8') { - responseData = utils.stripBOM(responseData); - } + stream.on('end', function handleStreamEnd() { + var responseData = Buffer.concat(responseBuffer); + if (config.responseType !== 'arraybuffer') { + responseData = responseData.toString(config.responseEncoding); + if (!config.responseEncoding || config.responseEncoding === 'utf8') { + responseData = utils.stripBOM(responseData); } - response.data = responseData; - } catch (err) { - return reject(AxiosError.from(err, null, config, response.request, response)); } + + response.data = responseData; settle(resolve, reject, response); }); } - - emitter.once('abort', err => { - if (!responseStream.destroyed) { - responseStream.emit('error', err); - responseStream.destroy(); - } - }); - }); - - emitter.once('abort', err => { - reject(err); - req.destroy(err); }); // Handle errors req.on('error', function handleRequestError(err) { - // @todo remove - // if (req.aborted && err.code !== AxiosError.ERR_FR_TOO_MANY_REDIRECTS) return; - reject(AxiosError.from(err, null, config, req)); - }); - - // set tcp keep alive to prevent drop connection by peer - req.on('socket', function handleRequestSocket(socket) { - // default interval of sending ack packet is 1 minute - socket.setKeepAlive(true, 1000 * 60); + if (req.aborted && err.code !== 'ERR_FR_TOO_MANY_REDIRECTS') return; + reject(enhanceError(err, config, null, req)); }); // Handle request timeout if (config.timeout) { // This is forcing a int timeout to avoid problems if the `req` interface doesn't handle other types. - const timeout = parseInt(config.timeout, 10); + var timeout = parseInt(config.timeout, 10); - if (Number.isNaN(timeout)) { - reject(new AxiosError( + if (isNaN(timeout)) { + reject(createError( 'error trying to parse `config.timeout` to int', - AxiosError.ERR_BAD_OPTION_VALUE, config, + 'ERR_PARSE_TIMEOUT', req )); @@ -635,51 +296,36 @@ export default isHttpAdapterSupported && function httpAdapter(config) { // Sometime, the response will be very slow, and does not respond, the connect event will be block by event loop system. // And timer callback will be fired, and abort() will be invoked before connection, then get "socket hang up" and code ECONNRESET. // At this time, if we have a large number of request, nodejs will hang up some socket on background. and the number will up and up. - // And then these socket which be hang up will devouring CPU little by little. + // And then these socket which be hang up will devoring CPU little by little. // ClientRequest.setTimeout will be fired on the specify milliseconds, and can make sure that abort() will be fired after connect. req.setTimeout(timeout, function handleRequestTimeout() { - if (isDone) return; - let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded'; - const transitional = config.transitional || transitionalDefaults; - if (config.timeoutErrorMessage) { - timeoutErrorMessage = config.timeoutErrorMessage; - } - reject(new AxiosError( - timeoutErrorMessage, - transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED, + req.abort(); + reject(createError( + 'timeout of ' + timeout + 'ms exceeded', config, + config.transitional && config.transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED', req )); - abort(); }); } + if (config.cancelToken) { + // Handle cancellation + config.cancelToken.promise.then(function onCanceled(cancel) { + if (req.aborted) return; + + req.abort(); + reject(cancel); + }); + } // Send the request if (utils.isStream(data)) { - let ended = false; - let errored = false; - - data.on('end', () => { - ended = true; - }); - - data.once('error', err => { - errored = true; - req.destroy(err); - }); - - data.on('close', () => { - if (!ended && !errored) { - abort(new CanceledError('Request stream has been aborted', config, req)); - } - }); - - data.pipe(req); + data.on('error', function handleStreamError(err) { + reject(enhanceError(err, config, null, req)); + }).pipe(req); } else { req.end(data); } }); -} - -export const __setProxy = setProxy; +}; diff --git a/node_modules/axios/lib/adapters/xhr.js b/node_modules/axios/lib/adapters/xhr.js index 26126b2..a386dd2 100644 --- a/node_modules/axios/lib/adapters/xhr.js +++ b/node_modules/axios/lib/adapters/xhr.js @@ -1,89 +1,34 @@ 'use strict'; -import utils from './../utils.js'; -import settle from './../core/settle.js'; -import cookies from './../helpers/cookies.js'; -import buildURL from './../helpers/buildURL.js'; -import buildFullPath from '../core/buildFullPath.js'; -import isURLSameOrigin from './../helpers/isURLSameOrigin.js'; -import transitionalDefaults from '../defaults/transitional.js'; -import AxiosError from '../core/AxiosError.js'; -import CanceledError from '../cancel/CanceledError.js'; -import parseProtocol from '../helpers/parseProtocol.js'; -import platform from '../platform/index.js'; -import AxiosHeaders from '../core/AxiosHeaders.js'; -import speedometer from '../helpers/speedometer.js'; +var utils = require('./../utils'); +var settle = require('./../core/settle'); +var cookies = require('./../helpers/cookies'); +var buildURL = require('./../helpers/buildURL'); +var buildFullPath = require('../core/buildFullPath'); +var parseHeaders = require('./../helpers/parseHeaders'); +var isURLSameOrigin = require('./../helpers/isURLSameOrigin'); +var createError = require('../core/createError'); -function progressEventReducer(listener, isDownloadStream) { - let bytesNotified = 0; - const _speedometer = speedometer(50, 250); - - return e => { - const loaded = e.loaded; - const total = e.lengthComputable ? e.total : undefined; - const progressBytes = loaded - bytesNotified; - const rate = _speedometer(progressBytes); - const inRange = loaded <= total; - - bytesNotified = loaded; - - const data = { - loaded, - total, - progress: total ? (loaded / total) : undefined, - bytes: progressBytes, - rate: rate ? rate : undefined, - estimated: rate && total && inRange ? (total - loaded) / rate : undefined, - event: e - }; - - data[isDownloadStream ? 'download' : 'upload'] = true; - - listener(data); - }; -} - -const isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined'; - -export default isXHRAdapterSupported && function (config) { +module.exports = function xhrAdapter(config) { return new Promise(function dispatchXhrRequest(resolve, reject) { - let requestData = config.data; - const requestHeaders = AxiosHeaders.from(config.headers).normalize(); - let {responseType, withXSRFToken} = config; - let onCanceled; - function done() { - if (config.cancelToken) { - config.cancelToken.unsubscribe(onCanceled); - } - - if (config.signal) { - config.signal.removeEventListener('abort', onCanceled); - } - } - - let contentType; + var requestData = config.data; + var requestHeaders = config.headers; + var responseType = config.responseType; if (utils.isFormData(requestData)) { - if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) { - requestHeaders.setContentType(false); // Let the browser set it - } else if ((contentType = requestHeaders.getContentType()) !== false) { - // fix semicolon duplication issue for ReactNative FormData implementation - const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : []; - requestHeaders.setContentType([type || 'multipart/form-data', ...tokens].join('; ')); - } + delete requestHeaders['Content-Type']; // Let the browser set it } - let request = new XMLHttpRequest(); + var request = new XMLHttpRequest(); // HTTP basic authentication if (config.auth) { - const username = config.auth.username || ''; - const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : ''; - requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password)); + var username = config.auth.username || ''; + var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : ''; + requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password); } - const fullPath = buildFullPath(config.baseURL, config.url); - + var fullPath = buildFullPath(config.baseURL, config.url); request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true); // Set the request timeout in MS @@ -94,27 +39,19 @@ export default isXHRAdapterSupported && function (config) { return; } // Prepare the response - const responseHeaders = AxiosHeaders.from( - 'getAllResponseHeaders' in request && request.getAllResponseHeaders() - ); - const responseData = !responseType || responseType === 'text' || responseType === 'json' ? + var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null; + var responseData = !responseType || responseType === 'text' || responseType === 'json' ? request.responseText : request.response; - const response = { + var response = { data: responseData, status: request.status, statusText: request.statusText, headers: responseHeaders, - config, - request + config: config, + request: request }; - settle(function _resolve(value) { - resolve(value); - done(); - }, function _reject(err) { - reject(err); - done(); - }, response); + settle(resolve, reject, response); // Clean up request request = null; @@ -149,7 +86,7 @@ export default isXHRAdapterSupported && function (config) { return; } - reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request)); + reject(createError('Request aborted', config, 'ECONNABORTED', request)); // Clean up request request = null; @@ -159,7 +96,7 @@ export default isXHRAdapterSupported && function (config) { request.onerror = function handleError() { // Real errors are hidden from us by the browser // onerror should only fire if it's a network error - reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request)); + reject(createError('Network Error', config, null, request)); // Clean up request request = null; @@ -167,15 +104,14 @@ export default isXHRAdapterSupported && function (config) { // Handle timeout request.ontimeout = function handleTimeout() { - let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded'; - const transitional = config.transitional || transitionalDefaults; + var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded'; if (config.timeoutErrorMessage) { timeoutErrorMessage = config.timeoutErrorMessage; } - reject(new AxiosError( + reject(createError( timeoutErrorMessage, - transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED, config, + config.transitional && config.transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED', request)); // Clean up request @@ -185,26 +121,27 @@ export default isXHRAdapterSupported && function (config) { // Add xsrf header // This is only done if running in a standard browser environment. // Specifically not if we're in a web worker, or react-native. - if(platform.hasStandardBrowserEnv) { - withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(config)); + if (utils.isStandardBrowserEnv()) { + // Add xsrf header + var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ? + cookies.read(config.xsrfCookieName) : + undefined; - if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(fullPath))) { - // Add xsrf header - const xsrfValue = config.xsrfHeaderName && config.xsrfCookieName && cookies.read(config.xsrfCookieName); - - if (xsrfValue) { - requestHeaders.set(config.xsrfHeaderName, xsrfValue); - } + if (xsrfValue) { + requestHeaders[config.xsrfHeaderName] = xsrfValue; } } - // Remove Content-Type if data is undefined - requestData === undefined && requestHeaders.setContentType(null); - // Add headers to the request if ('setRequestHeader' in request) { - utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) { - request.setRequestHeader(key, val); + utils.forEach(requestHeaders, function setRequestHeader(val, key) { + if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') { + // Remove Content-Type if data is undefined + delete requestHeaders[key]; + } else { + // Otherwise add header to the request + request.setRequestHeader(key, val); + } }); } @@ -220,41 +157,33 @@ export default isXHRAdapterSupported && function (config) { // Handle progress if needed if (typeof config.onDownloadProgress === 'function') { - request.addEventListener('progress', progressEventReducer(config.onDownloadProgress, true)); + request.addEventListener('progress', config.onDownloadProgress); } // Not all browsers support upload events if (typeof config.onUploadProgress === 'function' && request.upload) { - request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress)); + request.upload.addEventListener('progress', config.onUploadProgress); } - if (config.cancelToken || config.signal) { + if (config.cancelToken) { // Handle cancellation - // eslint-disable-next-line func-names - onCanceled = cancel => { + config.cancelToken.promise.then(function onCanceled(cancel) { if (!request) { return; } - reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel); + request.abort(); + reject(cancel); + // Clean up request request = null; - }; - - config.cancelToken && config.cancelToken.subscribe(onCanceled); - if (config.signal) { - config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled); - } + }); } - const protocol = parseProtocol(fullPath); - - if (protocol && platform.protocols.indexOf(protocol) === -1) { - reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config)); - return; + if (!requestData) { + requestData = null; } - // Send the request - request.send(requestData || null); + request.send(requestData); }); -} +}; diff --git a/node_modules/axios/lib/axios.js b/node_modules/axios/lib/axios.js index 873f246..c6357b0 100644 --- a/node_modules/axios/lib/axios.js +++ b/node_modules/axios/lib/axios.js @@ -1,89 +1,56 @@ 'use strict'; -import utils from './utils.js'; -import bind from './helpers/bind.js'; -import Axios from './core/Axios.js'; -import mergeConfig from './core/mergeConfig.js'; -import defaults from './defaults/index.js'; -import formDataToJSON from './helpers/formDataToJSON.js'; -import CanceledError from './cancel/CanceledError.js'; -import CancelToken from './cancel/CancelToken.js'; -import isCancel from './cancel/isCancel.js'; -import {VERSION} from './env/data.js'; -import toFormData from './helpers/toFormData.js'; -import AxiosError from './core/AxiosError.js'; -import spread from './helpers/spread.js'; -import isAxiosError from './helpers/isAxiosError.js'; -import AxiosHeaders from "./core/AxiosHeaders.js"; -import adapters from './adapters/adapters.js'; -import HttpStatusCode from './helpers/HttpStatusCode.js'; +var utils = require('./utils'); +var bind = require('./helpers/bind'); +var Axios = require('./core/Axios'); +var mergeConfig = require('./core/mergeConfig'); +var defaults = require('./defaults'); /** * Create an instance of Axios * * @param {Object} defaultConfig The default config for the instance - * - * @returns {Axios} A new instance of Axios + * @return {Axios} A new instance of Axios */ function createInstance(defaultConfig) { - const context = new Axios(defaultConfig); - const instance = bind(Axios.prototype.request, context); + var context = new Axios(defaultConfig); + var instance = bind(Axios.prototype.request, context); // Copy axios.prototype to instance - utils.extend(instance, Axios.prototype, context, {allOwnKeys: true}); + utils.extend(instance, Axios.prototype, context); // Copy context to instance - utils.extend(instance, context, null, {allOwnKeys: true}); - - // Factory for creating new instances - instance.create = function create(instanceConfig) { - return createInstance(mergeConfig(defaultConfig, instanceConfig)); - }; + utils.extend(instance, context); return instance; } // Create the default instance to be exported -const axios = createInstance(defaults); +var axios = createInstance(defaults); // Expose Axios class to allow class inheritance axios.Axios = Axios; +// Factory for creating new instances +axios.create = function create(instanceConfig) { + return createInstance(mergeConfig(axios.defaults, instanceConfig)); +}; + // Expose Cancel & CancelToken -axios.CanceledError = CanceledError; -axios.CancelToken = CancelToken; -axios.isCancel = isCancel; -axios.VERSION = VERSION; -axios.toFormData = toFormData; - -// Expose AxiosError class -axios.AxiosError = AxiosError; - -// alias for CanceledError for backward compatibility -axios.Cancel = axios.CanceledError; +axios.Cancel = require('./cancel/Cancel'); +axios.CancelToken = require('./cancel/CancelToken'); +axios.isCancel = require('./cancel/isCancel'); // Expose all/spread axios.all = function all(promises) { return Promise.all(promises); }; - -axios.spread = spread; +axios.spread = require('./helpers/spread'); // Expose isAxiosError -axios.isAxiosError = isAxiosError; +axios.isAxiosError = require('./helpers/isAxiosError'); -// Expose mergeConfig -axios.mergeConfig = mergeConfig; +module.exports = axios; -axios.AxiosHeaders = AxiosHeaders; - -axios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing); - -axios.getAdapter = adapters.getAdapter; - -axios.HttpStatusCode = HttpStatusCode; - -axios.default = axios; - -// this module should only have a default export -export default axios +// Allow use of default import syntax in TypeScript +module.exports.default = axios; diff --git a/node_modules/axios/lib/cancel/CancelToken.js b/node_modules/axios/lib/cancel/CancelToken.js index 20d8f68..6b46e66 100644 --- a/node_modules/axios/lib/cancel/CancelToken.js +++ b/node_modules/axios/lib/cancel/CancelToken.js @@ -1,121 +1,57 @@ 'use strict'; -import CanceledError from './CanceledError.js'; +var Cancel = require('./Cancel'); /** * A `CancelToken` is an object that can be used to request cancellation of an operation. * + * @class * @param {Function} executor The executor function. - * - * @returns {CancelToken} */ -class CancelToken { - constructor(executor) { - if (typeof executor !== 'function') { - throw new TypeError('executor must be a function.'); - } - - let resolvePromise; - - this.promise = new Promise(function promiseExecutor(resolve) { - resolvePromise = resolve; - }); - - const token = this; - - // eslint-disable-next-line func-names - this.promise.then(cancel => { - if (!token._listeners) return; - - let i = token._listeners.length; - - while (i-- > 0) { - token._listeners[i](cancel); - } - token._listeners = null; - }); - - // eslint-disable-next-line func-names - this.promise.then = onfulfilled => { - let _resolve; - // eslint-disable-next-line func-names - const promise = new Promise(resolve => { - token.subscribe(resolve); - _resolve = resolve; - }).then(onfulfilled); - - promise.cancel = function reject() { - token.unsubscribe(_resolve); - }; - - return promise; - }; - - executor(function cancel(message, config, request) { - if (token.reason) { - // Cancellation has already been requested - return; - } - - token.reason = new CanceledError(message, config, request); - resolvePromise(token.reason); - }); +function CancelToken(executor) { + if (typeof executor !== 'function') { + throw new TypeError('executor must be a function.'); } - /** - * Throws a `CanceledError` if cancellation has been requested. - */ - throwIfRequested() { - if (this.reason) { - throw this.reason; - } - } + var resolvePromise; + this.promise = new Promise(function promiseExecutor(resolve) { + resolvePromise = resolve; + }); - /** - * Subscribe to the cancel signal - */ - - subscribe(listener) { - if (this.reason) { - listener(this.reason); + var token = this; + executor(function cancel(message) { + if (token.reason) { + // Cancellation has already been requested return; } - if (this._listeners) { - this._listeners.push(listener); - } else { - this._listeners = [listener]; - } - } - - /** - * Unsubscribe from the cancel signal - */ - - unsubscribe(listener) { - if (!this._listeners) { - return; - } - const index = this._listeners.indexOf(listener); - if (index !== -1) { - this._listeners.splice(index, 1); - } - } - - /** - * Returns an object that contains a new `CancelToken` and a function that, when called, - * cancels the `CancelToken`. - */ - static source() { - let cancel; - const token = new CancelToken(function executor(c) { - cancel = c; - }); - return { - token, - cancel - }; - } + token.reason = new Cancel(message); + resolvePromise(token.reason); + }); } -export default CancelToken; +/** + * Throws a `Cancel` if cancellation has been requested. + */ +CancelToken.prototype.throwIfRequested = function throwIfRequested() { + if (this.reason) { + throw this.reason; + } +}; + +/** + * Returns an object that contains a new `CancelToken` and a function that, when called, + * cancels the `CancelToken`. + */ +CancelToken.source = function source() { + var cancel; + var token = new CancelToken(function executor(c) { + cancel = c; + }); + return { + token: token, + cancel: cancel + }; +}; + +module.exports = CancelToken; diff --git a/node_modules/axios/lib/cancel/CanceledError.js b/node_modules/axios/lib/cancel/CanceledError.js deleted file mode 100644 index 880066e..0000000 --- a/node_modules/axios/lib/cancel/CanceledError.js +++ /dev/null @@ -1,25 +0,0 @@ -'use strict'; - -import AxiosError from '../core/AxiosError.js'; -import utils from '../utils.js'; - -/** - * A `CanceledError` is an object that is thrown when an operation is canceled. - * - * @param {string=} message The message. - * @param {Object=} config The config. - * @param {Object=} request The request. - * - * @returns {CanceledError} The created error. - */ -function CanceledError(message, config, request) { - // eslint-disable-next-line no-eq-null,eqeqeq - AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request); - this.name = 'CanceledError'; -} - -utils.inherits(CanceledError, AxiosError, { - __CANCEL__: true -}); - -export default CanceledError; diff --git a/node_modules/axios/lib/cancel/isCancel.js b/node_modules/axios/lib/cancel/isCancel.js index a444a12..051f3ae 100644 --- a/node_modules/axios/lib/cancel/isCancel.js +++ b/node_modules/axios/lib/cancel/isCancel.js @@ -1,5 +1,5 @@ 'use strict'; -export default function isCancel(value) { +module.exports = function isCancel(value) { return !!(value && value.__CANCEL__); -} +}; diff --git a/node_modules/axios/lib/core/Axios.js b/node_modules/axios/lib/core/Axios.js index 2713364..42ea75e 100644 --- a/node_modules/axios/lib/core/Axios.js +++ b/node_modules/axios/lib/core/Axios.js @@ -1,201 +1,134 @@ 'use strict'; -import utils from './../utils.js'; -import buildURL from '../helpers/buildURL.js'; -import InterceptorManager from './InterceptorManager.js'; -import dispatchRequest from './dispatchRequest.js'; -import mergeConfig from './mergeConfig.js'; -import buildFullPath from './buildFullPath.js'; -import validator from '../helpers/validator.js'; -import AxiosHeaders from './AxiosHeaders.js'; - -const validators = validator.validators; +var utils = require('./../utils'); +var buildURL = require('../helpers/buildURL'); +var InterceptorManager = require('./InterceptorManager'); +var dispatchRequest = require('./dispatchRequest'); +var mergeConfig = require('./mergeConfig'); +var validator = require('../helpers/validator'); +var validators = validator.validators; /** * Create a new instance of Axios * * @param {Object} instanceConfig The default config for the instance - * - * @return {Axios} A new instance of Axios */ -class Axios { - constructor(instanceConfig) { - this.defaults = instanceConfig; - this.interceptors = { - request: new InterceptorManager(), - response: new InterceptorManager() - }; +function Axios(instanceConfig) { + this.defaults = instanceConfig; + this.interceptors = { + request: new InterceptorManager(), + response: new InterceptorManager() + }; +} + +/** + * Dispatch a request + * + * @param {Object} config The config specific for this request (merged with this.defaults) + */ +Axios.prototype.request = function request(config) { + /*eslint no-param-reassign:0*/ + // Allow for axios('example/url'[, config]) a la fetch API + if (typeof config === 'string') { + config = arguments[1] || {}; + config.url = arguments[0]; + } else { + config = config || {}; } - /** - * Dispatch a request - * - * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults) - * @param {?Object} config - * - * @returns {Promise} The Promise to be fulfilled - */ - async request(configOrUrl, config) { - try { - return await this._request(configOrUrl, config); - } catch (err) { - if (err instanceof Error) { - let dummy; + config = mergeConfig(this.defaults, config); - Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error()); - - // slice off the Error: ... line - const stack = dummy.stack ? dummy.stack.replace(/^.+\n/, '') : ''; - - if (!err.stack) { - err.stack = stack; - // match without the 2 top stack lines - } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\n.+\n/, ''))) { - err.stack += '\n' + stack - } - } - - throw err; - } + // Set config.method + if (config.method) { + config.method = config.method.toLowerCase(); + } else if (this.defaults.method) { + config.method = this.defaults.method.toLowerCase(); + } else { + config.method = 'get'; } - _request(configOrUrl, config) { - /*eslint no-param-reassign:0*/ - // Allow for axios('example/url'[, config]) a la fetch API - if (typeof configOrUrl === 'string') { - config = config || {}; - config.url = configOrUrl; - } else { - config = configOrUrl || {}; + var transitional = config.transitional; + + if (transitional !== undefined) { + validator.assertOptions(transitional, { + silentJSONParsing: validators.transitional(validators.boolean, '1.0.0'), + forcedJSONParsing: validators.transitional(validators.boolean, '1.0.0'), + clarifyTimeoutError: validators.transitional(validators.boolean, '1.0.0') + }, false); + } + + // filter out skipped interceptors + var requestInterceptorChain = []; + var synchronousRequestInterceptors = true; + this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) { + if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) { + return; } - config = mergeConfig(this.defaults, config); + synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous; - const {transitional, paramsSerializer, headers} = config; + requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected); + }); - if (transitional !== undefined) { - validator.assertOptions(transitional, { - silentJSONParsing: validators.transitional(validators.boolean), - forcedJSONParsing: validators.transitional(validators.boolean), - clarifyTimeoutError: validators.transitional(validators.boolean) - }, false); - } + var responseInterceptorChain = []; + this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) { + responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected); + }); - if (paramsSerializer != null) { - if (utils.isFunction(paramsSerializer)) { - config.paramsSerializer = { - serialize: paramsSerializer - } - } else { - validator.assertOptions(paramsSerializer, { - encode: validators.function, - serialize: validators.function - }, true); - } - } + var promise; - // Set config.method - config.method = (config.method || this.defaults.method || 'get').toLowerCase(); + if (!synchronousRequestInterceptors) { + var chain = [dispatchRequest, undefined]; - // Flatten headers - let contextHeaders = headers && utils.merge( - headers.common, - headers[config.method] - ); + Array.prototype.unshift.apply(chain, requestInterceptorChain); + chain = chain.concat(responseInterceptorChain); - headers && utils.forEach( - ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], - (method) => { - delete headers[method]; - } - ); - - config.headers = AxiosHeaders.concat(contextHeaders, headers); - - // filter out skipped interceptors - const requestInterceptorChain = []; - let synchronousRequestInterceptors = true; - this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) { - if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) { - return; - } - - synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous; - - requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected); - }); - - const responseInterceptorChain = []; - this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) { - responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected); - }); - - let promise; - let i = 0; - let len; - - if (!synchronousRequestInterceptors) { - const chain = [dispatchRequest.bind(this), undefined]; - chain.unshift.apply(chain, requestInterceptorChain); - chain.push.apply(chain, responseInterceptorChain); - len = chain.length; - - promise = Promise.resolve(config); - - while (i < len) { - promise = promise.then(chain[i++], chain[i++]); - } - - return promise; - } - - len = requestInterceptorChain.length; - - let newConfig = config; - - i = 0; - - while (i < len) { - const onFulfilled = requestInterceptorChain[i++]; - const onRejected = requestInterceptorChain[i++]; - try { - newConfig = onFulfilled(newConfig); - } catch (error) { - onRejected.call(this, error); - break; - } - } - - try { - promise = dispatchRequest.call(this, newConfig); - } catch (error) { - return Promise.reject(error); - } - - i = 0; - len = responseInterceptorChain.length; - - while (i < len) { - promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]); + promise = Promise.resolve(config); + while (chain.length) { + promise = promise.then(chain.shift(), chain.shift()); } return promise; } - getUri(config) { - config = mergeConfig(this.defaults, config); - const fullPath = buildFullPath(config.baseURL, config.url); - return buildURL(fullPath, config.params, config.paramsSerializer); + + var newConfig = config; + while (requestInterceptorChain.length) { + var onFulfilled = requestInterceptorChain.shift(); + var onRejected = requestInterceptorChain.shift(); + try { + newConfig = onFulfilled(newConfig); + } catch (error) { + onRejected(error); + break; + } } -} + + try { + promise = dispatchRequest(newConfig); + } catch (error) { + return Promise.reject(error); + } + + while (responseInterceptorChain.length) { + promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift()); + } + + return promise; +}; + +Axios.prototype.getUri = function getUri(config) { + config = mergeConfig(this.defaults, config); + return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\?/, ''); +}; // Provide aliases for supported request methods utils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) { /*eslint func-names:0*/ Axios.prototype[method] = function(url, config) { return this.request(mergeConfig(config || {}, { - method, - url, + method: method, + url: url, data: (config || {}).data })); }; @@ -203,23 +136,13 @@ utils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { /*eslint func-names:0*/ - - function generateHTTPMethod(isForm) { - return function httpMethod(url, data, config) { - return this.request(mergeConfig(config || {}, { - method, - headers: isForm ? { - 'Content-Type': 'multipart/form-data' - } : {}, - url, - data - })); - }; - } - - Axios.prototype[method] = generateHTTPMethod(); - - Axios.prototype[method + 'Form'] = generateHTTPMethod(true); + Axios.prototype[method] = function(url, data, config) { + return this.request(mergeConfig(config || {}, { + method: method, + url: url, + data: data + })); + }; }); -export default Axios; +module.exports = Axios; diff --git a/node_modules/axios/lib/core/AxiosError.js b/node_modules/axios/lib/core/AxiosError.js deleted file mode 100644 index 7141a8c..0000000 --- a/node_modules/axios/lib/core/AxiosError.js +++ /dev/null @@ -1,100 +0,0 @@ -'use strict'; - -import utils from '../utils.js'; - -/** - * Create an Error with the specified message, config, error code, request and response. - * - * @param {string} message The error message. - * @param {string} [code] The error code (for example, 'ECONNABORTED'). - * @param {Object} [config] The config. - * @param {Object} [request] The request. - * @param {Object} [response] The response. - * - * @returns {Error} The created error. - */ -function AxiosError(message, code, config, request, response) { - Error.call(this); - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } else { - this.stack = (new Error()).stack; - } - - this.message = message; - this.name = 'AxiosError'; - code && (this.code = code); - config && (this.config = config); - request && (this.request = request); - response && (this.response = response); -} - -utils.inherits(AxiosError, Error, { - toJSON: function toJSON() { - return { - // Standard - message: this.message, - name: this.name, - // Microsoft - description: this.description, - number: this.number, - // Mozilla - fileName: this.fileName, - lineNumber: this.lineNumber, - columnNumber: this.columnNumber, - stack: this.stack, - // Axios - config: utils.toJSONObject(this.config), - code: this.code, - status: this.response && this.response.status ? this.response.status : null - }; - } -}); - -const prototype = AxiosError.prototype; -const descriptors = {}; - -[ - 'ERR_BAD_OPTION_VALUE', - 'ERR_BAD_OPTION', - 'ECONNABORTED', - 'ETIMEDOUT', - 'ERR_NETWORK', - 'ERR_FR_TOO_MANY_REDIRECTS', - 'ERR_DEPRECATED', - 'ERR_BAD_RESPONSE', - 'ERR_BAD_REQUEST', - 'ERR_CANCELED', - 'ERR_NOT_SUPPORT', - 'ERR_INVALID_URL' -// eslint-disable-next-line func-names -].forEach(code => { - descriptors[code] = {value: code}; -}); - -Object.defineProperties(AxiosError, descriptors); -Object.defineProperty(prototype, 'isAxiosError', {value: true}); - -// eslint-disable-next-line func-names -AxiosError.from = (error, code, config, request, response, customProps) => { - const axiosError = Object.create(prototype); - - utils.toFlatObject(error, axiosError, function filter(obj) { - return obj !== Error.prototype; - }, prop => { - return prop !== 'isAxiosError'; - }); - - AxiosError.call(axiosError, error.message, code, config, request, response); - - axiosError.cause = error; - - axiosError.name = error.name; - - customProps && Object.assign(axiosError, customProps); - - return axiosError; -}; - -export default AxiosError; diff --git a/node_modules/axios/lib/core/AxiosHeaders.js b/node_modules/axios/lib/core/AxiosHeaders.js deleted file mode 100644 index 558ad8f..0000000 --- a/node_modules/axios/lib/core/AxiosHeaders.js +++ /dev/null @@ -1,298 +0,0 @@ -'use strict'; - -import utils from '../utils.js'; -import parseHeaders from '../helpers/parseHeaders.js'; - -const $internals = Symbol('internals'); - -function normalizeHeader(header) { - return header && String(header).trim().toLowerCase(); -} - -function normalizeValue(value) { - if (value === false || value == null) { - return value; - } - - return utils.isArray(value) ? value.map(normalizeValue) : String(value); -} - -function parseTokens(str) { - const tokens = Object.create(null); - const tokensRE = /([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g; - let match; - - while ((match = tokensRE.exec(str))) { - tokens[match[1]] = match[2]; - } - - return tokens; -} - -const isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim()); - -function matchHeaderValue(context, value, header, filter, isHeaderNameFilter) { - if (utils.isFunction(filter)) { - return filter.call(this, value, header); - } - - if (isHeaderNameFilter) { - value = header; - } - - if (!utils.isString(value)) return; - - if (utils.isString(filter)) { - return value.indexOf(filter) !== -1; - } - - if (utils.isRegExp(filter)) { - return filter.test(value); - } -} - -function formatHeader(header) { - return header.trim() - .toLowerCase().replace(/([a-z\d])(\w*)/g, (w, char, str) => { - return char.toUpperCase() + str; - }); -} - -function buildAccessors(obj, header) { - const accessorName = utils.toCamelCase(' ' + header); - - ['get', 'set', 'has'].forEach(methodName => { - Object.defineProperty(obj, methodName + accessorName, { - value: function(arg1, arg2, arg3) { - return this[methodName].call(this, header, arg1, arg2, arg3); - }, - configurable: true - }); - }); -} - -class AxiosHeaders { - constructor(headers) { - headers && this.set(headers); - } - - set(header, valueOrRewrite, rewrite) { - const self = this; - - function setHeader(_value, _header, _rewrite) { - const lHeader = normalizeHeader(_header); - - if (!lHeader) { - throw new Error('header name must be a non-empty string'); - } - - const key = utils.findKey(self, lHeader); - - if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) { - self[key || _header] = normalizeValue(_value); - } - } - - const setHeaders = (headers, _rewrite) => - utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite)); - - if (utils.isPlainObject(header) || header instanceof this.constructor) { - setHeaders(header, valueOrRewrite) - } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) { - setHeaders(parseHeaders(header), valueOrRewrite); - } else { - header != null && setHeader(valueOrRewrite, header, rewrite); - } - - return this; - } - - get(header, parser) { - header = normalizeHeader(header); - - if (header) { - const key = utils.findKey(this, header); - - if (key) { - const value = this[key]; - - if (!parser) { - return value; - } - - if (parser === true) { - return parseTokens(value); - } - - if (utils.isFunction(parser)) { - return parser.call(this, value, key); - } - - if (utils.isRegExp(parser)) { - return parser.exec(value); - } - - throw new TypeError('parser must be boolean|regexp|function'); - } - } - } - - has(header, matcher) { - header = normalizeHeader(header); - - if (header) { - const key = utils.findKey(this, header); - - return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher))); - } - - return false; - } - - delete(header, matcher) { - const self = this; - let deleted = false; - - function deleteHeader(_header) { - _header = normalizeHeader(_header); - - if (_header) { - const key = utils.findKey(self, _header); - - if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) { - delete self[key]; - - deleted = true; - } - } - } - - if (utils.isArray(header)) { - header.forEach(deleteHeader); - } else { - deleteHeader(header); - } - - return deleted; - } - - clear(matcher) { - const keys = Object.keys(this); - let i = keys.length; - let deleted = false; - - while (i--) { - const key = keys[i]; - if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) { - delete this[key]; - deleted = true; - } - } - - return deleted; - } - - normalize(format) { - const self = this; - const headers = {}; - - utils.forEach(this, (value, header) => { - const key = utils.findKey(headers, header); - - if (key) { - self[key] = normalizeValue(value); - delete self[header]; - return; - } - - const normalized = format ? formatHeader(header) : String(header).trim(); - - if (normalized !== header) { - delete self[header]; - } - - self[normalized] = normalizeValue(value); - - headers[normalized] = true; - }); - - return this; - } - - concat(...targets) { - return this.constructor.concat(this, ...targets); - } - - toJSON(asStrings) { - const obj = Object.create(null); - - utils.forEach(this, (value, header) => { - value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value); - }); - - return obj; - } - - [Symbol.iterator]() { - return Object.entries(this.toJSON())[Symbol.iterator](); - } - - toString() { - return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\n'); - } - - get [Symbol.toStringTag]() { - return 'AxiosHeaders'; - } - - static from(thing) { - return thing instanceof this ? thing : new this(thing); - } - - static concat(first, ...targets) { - const computed = new this(first); - - targets.forEach((target) => computed.set(target)); - - return computed; - } - - static accessor(header) { - const internals = this[$internals] = (this[$internals] = { - accessors: {} - }); - - const accessors = internals.accessors; - const prototype = this.prototype; - - function defineAccessor(_header) { - const lHeader = normalizeHeader(_header); - - if (!accessors[lHeader]) { - buildAccessors(prototype, _header); - accessors[lHeader] = true; - } - } - - utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header); - - return this; - } -} - -AxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']); - -// reserved names hotfix -utils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => { - let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set` - return { - get: () => value, - set(headerValue) { - this[mapped] = headerValue; - } - } -}); - -utils.freezeMethods(AxiosHeaders); - -export default AxiosHeaders; diff --git a/node_modules/axios/lib/core/InterceptorManager.js b/node_modules/axios/lib/core/InterceptorManager.js index 6657a9d..900f448 100644 --- a/node_modules/axios/lib/core/InterceptorManager.js +++ b/node_modules/axios/lib/core/InterceptorManager.js @@ -1,71 +1,54 @@ 'use strict'; -import utils from './../utils.js'; +var utils = require('./../utils'); -class InterceptorManager { - constructor() { - this.handlers = []; - } - - /** - * Add a new interceptor to the stack - * - * @param {Function} fulfilled The function to handle `then` for a `Promise` - * @param {Function} rejected The function to handle `reject` for a `Promise` - * - * @return {Number} An ID used to remove interceptor later - */ - use(fulfilled, rejected, options) { - this.handlers.push({ - fulfilled, - rejected, - synchronous: options ? options.synchronous : false, - runWhen: options ? options.runWhen : null - }); - return this.handlers.length - 1; - } - - /** - * Remove an interceptor from the stack - * - * @param {Number} id The ID that was returned by `use` - * - * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise - */ - eject(id) { - if (this.handlers[id]) { - this.handlers[id] = null; - } - } - - /** - * Clear all interceptors from the stack - * - * @returns {void} - */ - clear() { - if (this.handlers) { - this.handlers = []; - } - } - - /** - * Iterate over all the registered interceptors - * - * This method is particularly useful for skipping over any - * interceptors that may have become `null` calling `eject`. - * - * @param {Function} fn The function to call for each interceptor - * - * @returns {void} - */ - forEach(fn) { - utils.forEach(this.handlers, function forEachHandler(h) { - if (h !== null) { - fn(h); - } - }); - } +function InterceptorManager() { + this.handlers = []; } -export default InterceptorManager; +/** + * Add a new interceptor to the stack + * + * @param {Function} fulfilled The function to handle `then` for a `Promise` + * @param {Function} rejected The function to handle `reject` for a `Promise` + * + * @return {Number} An ID used to remove interceptor later + */ +InterceptorManager.prototype.use = function use(fulfilled, rejected, options) { + this.handlers.push({ + fulfilled: fulfilled, + rejected: rejected, + synchronous: options ? options.synchronous : false, + runWhen: options ? options.runWhen : null + }); + return this.handlers.length - 1; +}; + +/** + * Remove an interceptor from the stack + * + * @param {Number} id The ID that was returned by `use` + */ +InterceptorManager.prototype.eject = function eject(id) { + if (this.handlers[id]) { + this.handlers[id] = null; + } +}; + +/** + * Iterate over all the registered interceptors + * + * This method is particularly useful for skipping over any + * interceptors that may have become `null` calling `eject`. + * + * @param {Function} fn The function to call for each interceptor + */ +InterceptorManager.prototype.forEach = function forEach(fn) { + utils.forEach(this.handlers, function forEachHandler(h) { + if (h !== null) { + fn(h); + } + }); +}; + +module.exports = InterceptorManager; diff --git a/node_modules/axios/lib/core/buildFullPath.js b/node_modules/axios/lib/core/buildFullPath.js index b60927c..00b2b05 100644 --- a/node_modules/axios/lib/core/buildFullPath.js +++ b/node_modules/axios/lib/core/buildFullPath.js @@ -1,7 +1,7 @@ 'use strict'; -import isAbsoluteURL from '../helpers/isAbsoluteURL.js'; -import combineURLs from '../helpers/combineURLs.js'; +var isAbsoluteURL = require('../helpers/isAbsoluteURL'); +var combineURLs = require('../helpers/combineURLs'); /** * Creates a new URL by combining the baseURL with the requestedURL, @@ -10,12 +10,11 @@ import combineURLs from '../helpers/combineURLs.js'; * * @param {string} baseURL The base URL * @param {string} requestedURL Absolute or relative URL to combine - * * @returns {string} The combined full path */ -export default function buildFullPath(baseURL, requestedURL) { +module.exports = function buildFullPath(baseURL, requestedURL) { if (baseURL && !isAbsoluteURL(requestedURL)) { return combineURLs(baseURL, requestedURL); } return requestedURL; -} +}; diff --git a/node_modules/axios/lib/core/dispatchRequest.js b/node_modules/axios/lib/core/dispatchRequest.js index 9e306aa..9ce3b96 100644 --- a/node_modules/axios/lib/core/dispatchRequest.js +++ b/node_modules/axios/lib/core/dispatchRequest.js @@ -1,52 +1,54 @@ 'use strict'; -import transformData from './transformData.js'; -import isCancel from '../cancel/isCancel.js'; -import defaults from '../defaults/index.js'; -import CanceledError from '../cancel/CanceledError.js'; -import AxiosHeaders from '../core/AxiosHeaders.js'; -import adapters from "../adapters/adapters.js"; +var utils = require('./../utils'); +var transformData = require('./transformData'); +var isCancel = require('../cancel/isCancel'); +var defaults = require('../defaults'); /** - * Throws a `CanceledError` if cancellation has been requested. - * - * @param {Object} config The config that is to be used for the request - * - * @returns {void} + * Throws a `Cancel` if cancellation has been requested. */ function throwIfCancellationRequested(config) { if (config.cancelToken) { config.cancelToken.throwIfRequested(); } - - if (config.signal && config.signal.aborted) { - throw new CanceledError(null, config); - } } /** * Dispatch a request to the server using the configured adapter. * * @param {object} config The config that is to be used for the request - * * @returns {Promise} The Promise to be fulfilled */ -export default function dispatchRequest(config) { +module.exports = function dispatchRequest(config) { throwIfCancellationRequested(config); - config.headers = AxiosHeaders.from(config.headers); + // Ensure headers exist + config.headers = config.headers || {}; // Transform request data config.data = transformData.call( config, + config.data, + config.headers, config.transformRequest ); - if (['post', 'put', 'patch'].indexOf(config.method) !== -1) { - config.headers.setContentType('application/x-www-form-urlencoded', false); - } + // Flatten headers + config.headers = utils.merge( + config.headers.common || {}, + config.headers[config.method] || {}, + config.headers + ); - const adapter = adapters.getAdapter(config.adapter || defaults.adapter); + utils.forEach( + ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], + function cleanHeaderConfig(method) { + delete config.headers[method]; + } + ); + + var adapter = config.adapter || defaults.adapter; return adapter(config).then(function onAdapterResolution(response) { throwIfCancellationRequested(config); @@ -54,12 +56,11 @@ export default function dispatchRequest(config) { // Transform response data response.data = transformData.call( config, - config.transformResponse, - response + response.data, + response.headers, + config.transformResponse ); - response.headers = AxiosHeaders.from(response.headers); - return response; }, function onAdapterRejection(reason) { if (!isCancel(reason)) { @@ -69,13 +70,13 @@ export default function dispatchRequest(config) { if (reason && reason.response) { reason.response.data = transformData.call( config, - config.transformResponse, - reason.response + reason.response.data, + reason.response.headers, + config.transformResponse ); - reason.response.headers = AxiosHeaders.from(reason.response.headers); } } return Promise.reject(reason); }); -} +}; diff --git a/node_modules/axios/lib/core/mergeConfig.js b/node_modules/axios/lib/core/mergeConfig.js index bbbf96d..5a2c10c 100644 --- a/node_modules/axios/lib/core/mergeConfig.js +++ b/node_modules/axios/lib/core/mergeConfig.js @@ -1,9 +1,6 @@ 'use strict'; -import utils from '../utils.js'; -import AxiosHeaders from "./AxiosHeaders.js"; - -const headersToObject = (thing) => thing instanceof AxiosHeaders ? thing.toJSON() : thing; +var utils = require('../utils'); /** * Config-specific merge-function which creates a new config-object @@ -11,17 +8,27 @@ const headersToObject = (thing) => thing instanceof AxiosHeaders ? thing.toJSON( * * @param {Object} config1 * @param {Object} config2 - * * @returns {Object} New object resulting from merging config2 to config1 */ -export default function mergeConfig(config1, config2) { +module.exports = function mergeConfig(config1, config2) { // eslint-disable-next-line no-param-reassign config2 = config2 || {}; - const config = {}; + var config = {}; - function getMergedValue(target, source, caseless) { + var valueFromConfig2Keys = ['url', 'method', 'data']; + var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params']; + var defaultToConfig2Keys = [ + 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer', + 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName', + 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress', + 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent', + 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding' + ]; + var directMergeKeys = ['validateStatus']; + + function getMergedValue(target, source) { if (utils.isPlainObject(target) && utils.isPlainObject(source)) { - return utils.merge.call({caseless}, target, source); + return utils.merge(target, source); } else if (utils.isPlainObject(source)) { return utils.merge({}, source); } else if (utils.isArray(source)) { @@ -30,77 +37,51 @@ export default function mergeConfig(config1, config2) { return source; } - // eslint-disable-next-line consistent-return - function mergeDeepProperties(a, b, caseless) { - if (!utils.isUndefined(b)) { - return getMergedValue(a, b, caseless); - } else if (!utils.isUndefined(a)) { - return getMergedValue(undefined, a, caseless); + function mergeDeepProperties(prop) { + if (!utils.isUndefined(config2[prop])) { + config[prop] = getMergedValue(config1[prop], config2[prop]); + } else if (!utils.isUndefined(config1[prop])) { + config[prop] = getMergedValue(undefined, config1[prop]); } } - // eslint-disable-next-line consistent-return - function valueFromConfig2(a, b) { - if (!utils.isUndefined(b)) { - return getMergedValue(undefined, b); + utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) { + if (!utils.isUndefined(config2[prop])) { + config[prop] = getMergedValue(undefined, config2[prop]); } - } - - // eslint-disable-next-line consistent-return - function defaultToConfig2(a, b) { - if (!utils.isUndefined(b)) { - return getMergedValue(undefined, b); - } else if (!utils.isUndefined(a)) { - return getMergedValue(undefined, a); - } - } - - // eslint-disable-next-line consistent-return - function mergeDirectKeys(a, b, prop) { - if (prop in config2) { - return getMergedValue(a, b); - } else if (prop in config1) { - return getMergedValue(undefined, a); - } - } - - const mergeMap = { - url: valueFromConfig2, - method: valueFromConfig2, - data: valueFromConfig2, - baseURL: defaultToConfig2, - transformRequest: defaultToConfig2, - transformResponse: defaultToConfig2, - paramsSerializer: defaultToConfig2, - timeout: defaultToConfig2, - timeoutMessage: defaultToConfig2, - withCredentials: defaultToConfig2, - withXSRFToken: defaultToConfig2, - adapter: defaultToConfig2, - responseType: defaultToConfig2, - xsrfCookieName: defaultToConfig2, - xsrfHeaderName: defaultToConfig2, - onUploadProgress: defaultToConfig2, - onDownloadProgress: defaultToConfig2, - decompress: defaultToConfig2, - maxContentLength: defaultToConfig2, - maxBodyLength: defaultToConfig2, - beforeRedirect: defaultToConfig2, - transport: defaultToConfig2, - httpAgent: defaultToConfig2, - httpsAgent: defaultToConfig2, - cancelToken: defaultToConfig2, - socketPath: defaultToConfig2, - responseEncoding: defaultToConfig2, - validateStatus: mergeDirectKeys, - headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true) - }; - - utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) { - const merge = mergeMap[prop] || mergeDeepProperties; - const configValue = merge(config1[prop], config2[prop], prop); - (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue); }); + utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties); + + utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) { + if (!utils.isUndefined(config2[prop])) { + config[prop] = getMergedValue(undefined, config2[prop]); + } else if (!utils.isUndefined(config1[prop])) { + config[prop] = getMergedValue(undefined, config1[prop]); + } + }); + + utils.forEach(directMergeKeys, function merge(prop) { + if (prop in config2) { + config[prop] = getMergedValue(config1[prop], config2[prop]); + } else if (prop in config1) { + config[prop] = getMergedValue(undefined, config1[prop]); + } + }); + + var axiosKeys = valueFromConfig2Keys + .concat(mergeDeepPropertiesKeys) + .concat(defaultToConfig2Keys) + .concat(directMergeKeys); + + var otherKeys = Object + .keys(config1) + .concat(Object.keys(config2)) + .filter(function filterAxiosKeys(key) { + return axiosKeys.indexOf(key) === -1; + }); + + utils.forEach(otherKeys, mergeDeepProperties); + return config; -} +}; diff --git a/node_modules/axios/lib/core/settle.js b/node_modules/axios/lib/core/settle.js index ac905c4..886adb0 100644 --- a/node_modules/axios/lib/core/settle.js +++ b/node_modules/axios/lib/core/settle.js @@ -1,6 +1,6 @@ 'use strict'; -import AxiosError from './AxiosError.js'; +var createError = require('./createError'); /** * Resolve or reject a Promise based on response status. @@ -8,20 +8,18 @@ import AxiosError from './AxiosError.js'; * @param {Function} resolve A function that resolves the promise. * @param {Function} reject A function that rejects the promise. * @param {object} response The response. - * - * @returns {object} The response. */ -export default function settle(resolve, reject, response) { - const validateStatus = response.config.validateStatus; +module.exports = function settle(resolve, reject, response) { + var validateStatus = response.config.validateStatus; if (!response.status || !validateStatus || validateStatus(response.status)) { resolve(response); } else { - reject(new AxiosError( + reject(createError( 'Request failed with status code ' + response.status, - [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4], response.config, + null, response.request, response )); } -} +}; diff --git a/node_modules/axios/lib/core/transformData.js b/node_modules/axios/lib/core/transformData.js index eeb5a8a..c584d12 100644 --- a/node_modules/axios/lib/core/transformData.js +++ b/node_modules/axios/lib/core/transformData.js @@ -1,28 +1,22 @@ 'use strict'; -import utils from './../utils.js'; -import defaults from '../defaults/index.js'; -import AxiosHeaders from '../core/AxiosHeaders.js'; +var utils = require('./../utils'); +var defaults = require('./../defaults'); /** * Transform the data for a request or a response * + * @param {Object|String} data The data to be transformed + * @param {Array} headers The headers for the request or response * @param {Array|Function} fns A single function or Array of functions - * @param {?Object} response The response object - * * @returns {*} The resulting transformed data */ -export default function transformData(fns, response) { - const config = this || defaults; - const context = response || config; - const headers = AxiosHeaders.from(context.headers); - let data = context.data; - +module.exports = function transformData(data, headers, fns) { + var context = this || defaults; + /*eslint no-param-reassign:0*/ utils.forEach(fns, function transform(fn) { - data = fn.call(config, data, headers.normalize(), response ? response.status : undefined); + data = fn.call(context, data, headers); }); - headers.normalize(); - return data; -} +}; diff --git a/node_modules/axios/lib/defaults/index.js b/node_modules/axios/lib/defaults/index.js deleted file mode 100644 index 774893a..0000000 --- a/node_modules/axios/lib/defaults/index.js +++ /dev/null @@ -1,156 +0,0 @@ -'use strict'; - -import utils from '../utils.js'; -import AxiosError from '../core/AxiosError.js'; -import transitionalDefaults from './transitional.js'; -import toFormData from '../helpers/toFormData.js'; -import toURLEncodedForm from '../helpers/toURLEncodedForm.js'; -import platform from '../platform/index.js'; -import formDataToJSON from '../helpers/formDataToJSON.js'; - -/** - * It takes a string, tries to parse it, and if it fails, it returns the stringified version - * of the input - * - * @param {any} rawValue - The value to be stringified. - * @param {Function} parser - A function that parses a string into a JavaScript object. - * @param {Function} encoder - A function that takes a value and returns a string. - * - * @returns {string} A stringified version of the rawValue. - */ -function stringifySafely(rawValue, parser, encoder) { - if (utils.isString(rawValue)) { - try { - (parser || JSON.parse)(rawValue); - return utils.trim(rawValue); - } catch (e) { - if (e.name !== 'SyntaxError') { - throw e; - } - } - } - - return (encoder || JSON.stringify)(rawValue); -} - -const defaults = { - - transitional: transitionalDefaults, - - adapter: ['xhr', 'http'], - - transformRequest: [function transformRequest(data, headers) { - const contentType = headers.getContentType() || ''; - const hasJSONContentType = contentType.indexOf('application/json') > -1; - const isObjectPayload = utils.isObject(data); - - if (isObjectPayload && utils.isHTMLForm(data)) { - data = new FormData(data); - } - - const isFormData = utils.isFormData(data); - - if (isFormData) { - return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data; - } - - if (utils.isArrayBuffer(data) || - utils.isBuffer(data) || - utils.isStream(data) || - utils.isFile(data) || - utils.isBlob(data) - ) { - return data; - } - if (utils.isArrayBufferView(data)) { - return data.buffer; - } - if (utils.isURLSearchParams(data)) { - headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false); - return data.toString(); - } - - let isFileList; - - if (isObjectPayload) { - if (contentType.indexOf('application/x-www-form-urlencoded') > -1) { - return toURLEncodedForm(data, this.formSerializer).toString(); - } - - if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) { - const _FormData = this.env && this.env.FormData; - - return toFormData( - isFileList ? {'files[]': data} : data, - _FormData && new _FormData(), - this.formSerializer - ); - } - } - - if (isObjectPayload || hasJSONContentType ) { - headers.setContentType('application/json', false); - return stringifySafely(data); - } - - return data; - }], - - transformResponse: [function transformResponse(data) { - const transitional = this.transitional || defaults.transitional; - const forcedJSONParsing = transitional && transitional.forcedJSONParsing; - const JSONRequested = this.responseType === 'json'; - - if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) { - const silentJSONParsing = transitional && transitional.silentJSONParsing; - const strictJSONParsing = !silentJSONParsing && JSONRequested; - - try { - return JSON.parse(data); - } catch (e) { - if (strictJSONParsing) { - if (e.name === 'SyntaxError') { - throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response); - } - throw e; - } - } - } - - return data; - }], - - /** - * A timeout in milliseconds to abort a request. If set to 0 (default) a - * timeout is not created. - */ - timeout: 0, - - xsrfCookieName: 'XSRF-TOKEN', - xsrfHeaderName: 'X-XSRF-TOKEN', - - maxContentLength: -1, - maxBodyLength: -1, - - env: { - FormData: platform.classes.FormData, - Blob: platform.classes.Blob - }, - - validateStatus: function validateStatus(status) { - return status >= 200 && status < 300; - }, - - headers: { - common: { - 'Accept': 'application/json, text/plain, */*', - 'Content-Type': undefined - } - } -}; - -utils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => { - defaults.headers[method] = {}; -}); - -export default defaults; diff --git a/node_modules/axios/lib/defaults/transitional.js b/node_modules/axios/lib/defaults/transitional.js deleted file mode 100644 index f891331..0000000 --- a/node_modules/axios/lib/defaults/transitional.js +++ /dev/null @@ -1,7 +0,0 @@ -'use strict'; - -export default { - silentJSONParsing: true, - forcedJSONParsing: true, - clarifyTimeoutError: false -}; diff --git a/node_modules/axios/lib/env/README.md b/node_modules/axios/lib/env/README.md deleted file mode 100644 index b41baff..0000000 --- a/node_modules/axios/lib/env/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# axios // env - -The `data.js` file is updated automatically when the package version is upgrading. Please do not edit it manually. diff --git a/node_modules/axios/lib/env/classes/FormData.js b/node_modules/axios/lib/env/classes/FormData.js deleted file mode 100644 index 862adb9..0000000 --- a/node_modules/axios/lib/env/classes/FormData.js +++ /dev/null @@ -1,2 +0,0 @@ -import _FormData from 'form-data'; -export default typeof FormData !== 'undefined' ? FormData : _FormData; diff --git a/node_modules/axios/lib/env/data.js b/node_modules/axios/lib/env/data.js deleted file mode 100644 index 7f15ca6..0000000 --- a/node_modules/axios/lib/env/data.js +++ /dev/null @@ -1 +0,0 @@ -export const VERSION = "1.6.7"; \ No newline at end of file diff --git a/node_modules/axios/lib/helpers/AxiosTransformStream.js b/node_modules/axios/lib/helpers/AxiosTransformStream.js deleted file mode 100644 index 8e8c6d4..0000000 --- a/node_modules/axios/lib/helpers/AxiosTransformStream.js +++ /dev/null @@ -1,191 +0,0 @@ -'use strict'; - -import stream from 'stream'; -import utils from '../utils.js'; -import throttle from './throttle.js'; -import speedometer from './speedometer.js'; - -const kInternals = Symbol('internals'); - -class AxiosTransformStream extends stream.Transform{ - constructor(options) { - options = utils.toFlatObject(options, { - maxRate: 0, - chunkSize: 64 * 1024, - minChunkSize: 100, - timeWindow: 500, - ticksRate: 2, - samplesCount: 15 - }, null, (prop, source) => { - return !utils.isUndefined(source[prop]); - }); - - super({ - readableHighWaterMark: options.chunkSize - }); - - const self = this; - - const internals = this[kInternals] = { - length: options.length, - timeWindow: options.timeWindow, - ticksRate: options.ticksRate, - chunkSize: options.chunkSize, - maxRate: options.maxRate, - minChunkSize: options.minChunkSize, - bytesSeen: 0, - isCaptured: false, - notifiedBytesLoaded: 0, - ts: Date.now(), - bytes: 0, - onReadCallback: null - }; - - const _speedometer = speedometer(internals.ticksRate * options.samplesCount, internals.timeWindow); - - this.on('newListener', event => { - if (event === 'progress') { - if (!internals.isCaptured) { - internals.isCaptured = true; - } - } - }); - - let bytesNotified = 0; - - internals.updateProgress = throttle(function throttledHandler() { - const totalBytes = internals.length; - const bytesTransferred = internals.bytesSeen; - const progressBytes = bytesTransferred - bytesNotified; - if (!progressBytes || self.destroyed) return; - - const rate = _speedometer(progressBytes); - - bytesNotified = bytesTransferred; - - process.nextTick(() => { - self.emit('progress', { - 'loaded': bytesTransferred, - 'total': totalBytes, - 'progress': totalBytes ? (bytesTransferred / totalBytes) : undefined, - 'bytes': progressBytes, - 'rate': rate ? rate : undefined, - 'estimated': rate && totalBytes && bytesTransferred <= totalBytes ? - (totalBytes - bytesTransferred) / rate : undefined - }); - }); - }, internals.ticksRate); - - const onFinish = () => { - internals.updateProgress(true); - }; - - this.once('end', onFinish); - this.once('error', onFinish); - } - - _read(size) { - const internals = this[kInternals]; - - if (internals.onReadCallback) { - internals.onReadCallback(); - } - - return super._read(size); - } - - _transform(chunk, encoding, callback) { - const self = this; - const internals = this[kInternals]; - const maxRate = internals.maxRate; - - const readableHighWaterMark = this.readableHighWaterMark; - - const timeWindow = internals.timeWindow; - - const divider = 1000 / timeWindow; - const bytesThreshold = (maxRate / divider); - const minChunkSize = internals.minChunkSize !== false ? Math.max(internals.minChunkSize, bytesThreshold * 0.01) : 0; - - function pushChunk(_chunk, _callback) { - const bytes = Buffer.byteLength(_chunk); - internals.bytesSeen += bytes; - internals.bytes += bytes; - - if (internals.isCaptured) { - internals.updateProgress(); - } - - if (self.push(_chunk)) { - process.nextTick(_callback); - } else { - internals.onReadCallback = () => { - internals.onReadCallback = null; - process.nextTick(_callback); - }; - } - } - - const transformChunk = (_chunk, _callback) => { - const chunkSize = Buffer.byteLength(_chunk); - let chunkRemainder = null; - let maxChunkSize = readableHighWaterMark; - let bytesLeft; - let passed = 0; - - if (maxRate) { - const now = Date.now(); - - if (!internals.ts || (passed = (now - internals.ts)) >= timeWindow) { - internals.ts = now; - bytesLeft = bytesThreshold - internals.bytes; - internals.bytes = bytesLeft < 0 ? -bytesLeft : 0; - passed = 0; - } - - bytesLeft = bytesThreshold - internals.bytes; - } - - if (maxRate) { - if (bytesLeft <= 0) { - // next time window - return setTimeout(() => { - _callback(null, _chunk); - }, timeWindow - passed); - } - - if (bytesLeft < maxChunkSize) { - maxChunkSize = bytesLeft; - } - } - - if (maxChunkSize && chunkSize > maxChunkSize && (chunkSize - maxChunkSize) > minChunkSize) { - chunkRemainder = _chunk.subarray(maxChunkSize); - _chunk = _chunk.subarray(0, maxChunkSize); - } - - pushChunk(_chunk, chunkRemainder ? () => { - process.nextTick(_callback, null, chunkRemainder); - } : _callback); - }; - - transformChunk(chunk, function transformNextChunk(err, _chunk) { - if (err) { - return callback(err); - } - - if (_chunk) { - transformChunk(_chunk, transformNextChunk); - } else { - callback(null); - } - }); - } - - setLength(length) { - this[kInternals].length = +length; - return this; - } -} - -export default AxiosTransformStream; diff --git a/node_modules/axios/lib/helpers/AxiosURLSearchParams.js b/node_modules/axios/lib/helpers/AxiosURLSearchParams.js deleted file mode 100644 index b9aa9f0..0000000 --- a/node_modules/axios/lib/helpers/AxiosURLSearchParams.js +++ /dev/null @@ -1,58 +0,0 @@ -'use strict'; - -import toFormData from './toFormData.js'; - -/** - * It encodes a string by replacing all characters that are not in the unreserved set with - * their percent-encoded equivalents - * - * @param {string} str - The string to encode. - * - * @returns {string} The encoded string. - */ -function encode(str) { - const charMap = { - '!': '%21', - "'": '%27', - '(': '%28', - ')': '%29', - '~': '%7E', - '%20': '+', - '%00': '\x00' - }; - return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) { - return charMap[match]; - }); -} - -/** - * It takes a params object and converts it to a FormData object - * - * @param {Object} params - The parameters to be converted to a FormData object. - * @param {Object} options - The options object passed to the Axios constructor. - * - * @returns {void} - */ -function AxiosURLSearchParams(params, options) { - this._pairs = []; - - params && toFormData(params, this, options); -} - -const prototype = AxiosURLSearchParams.prototype; - -prototype.append = function append(name, value) { - this._pairs.push([name, value]); -}; - -prototype.toString = function toString(encoder) { - const _encode = encoder ? function(value) { - return encoder.call(this, value, encode); - } : encode; - - return this._pairs.map(function each(pair) { - return _encode(pair[0]) + '=' + _encode(pair[1]); - }, '').join('&'); -}; - -export default AxiosURLSearchParams; diff --git a/node_modules/axios/lib/helpers/HttpStatusCode.js b/node_modules/axios/lib/helpers/HttpStatusCode.js deleted file mode 100644 index b3e7adc..0000000 --- a/node_modules/axios/lib/helpers/HttpStatusCode.js +++ /dev/null @@ -1,71 +0,0 @@ -const HttpStatusCode = { - Continue: 100, - SwitchingProtocols: 101, - Processing: 102, - EarlyHints: 103, - Ok: 200, - Created: 201, - Accepted: 202, - NonAuthoritativeInformation: 203, - NoContent: 204, - ResetContent: 205, - PartialContent: 206, - MultiStatus: 207, - AlreadyReported: 208, - ImUsed: 226, - MultipleChoices: 300, - MovedPermanently: 301, - Found: 302, - SeeOther: 303, - NotModified: 304, - UseProxy: 305, - Unused: 306, - TemporaryRedirect: 307, - PermanentRedirect: 308, - BadRequest: 400, - Unauthorized: 401, - PaymentRequired: 402, - Forbidden: 403, - NotFound: 404, - MethodNotAllowed: 405, - NotAcceptable: 406, - ProxyAuthenticationRequired: 407, - RequestTimeout: 408, - Conflict: 409, - Gone: 410, - LengthRequired: 411, - PreconditionFailed: 412, - PayloadTooLarge: 413, - UriTooLong: 414, - UnsupportedMediaType: 415, - RangeNotSatisfiable: 416, - ExpectationFailed: 417, - ImATeapot: 418, - MisdirectedRequest: 421, - UnprocessableEntity: 422, - Locked: 423, - FailedDependency: 424, - TooEarly: 425, - UpgradeRequired: 426, - PreconditionRequired: 428, - TooManyRequests: 429, - RequestHeaderFieldsTooLarge: 431, - UnavailableForLegalReasons: 451, - InternalServerError: 500, - NotImplemented: 501, - BadGateway: 502, - ServiceUnavailable: 503, - GatewayTimeout: 504, - HttpVersionNotSupported: 505, - VariantAlsoNegotiates: 506, - InsufficientStorage: 507, - LoopDetected: 508, - NotExtended: 510, - NetworkAuthenticationRequired: 511, -}; - -Object.entries(HttpStatusCode).forEach(([key, value]) => { - HttpStatusCode[value] = key; -}); - -export default HttpStatusCode; diff --git a/node_modules/axios/lib/helpers/ZlibHeaderTransformStream.js b/node_modules/axios/lib/helpers/ZlibHeaderTransformStream.js deleted file mode 100644 index d1791f0..0000000 --- a/node_modules/axios/lib/helpers/ZlibHeaderTransformStream.js +++ /dev/null @@ -1,28 +0,0 @@ -"use strict"; - -import stream from "stream"; - -class ZlibHeaderTransformStream extends stream.Transform { - __transform(chunk, encoding, callback) { - this.push(chunk); - callback(); - } - - _transform(chunk, encoding, callback) { - if (chunk.length !== 0) { - this._transform = this.__transform; - - // Add Default Compression headers if no zlib headers are present - if (chunk[0] !== 120) { // Hex: 78 - const header = Buffer.alloc(2); - header[0] = 120; // Hex: 78 - header[1] = 156; // Hex: 9C - this.push(header, encoding); - } - } - - this.__transform(chunk, encoding, callback); - } -} - -export default ZlibHeaderTransformStream; diff --git a/node_modules/axios/lib/helpers/bind.js b/node_modules/axios/lib/helpers/bind.js index b3aa83b..6147c60 100644 --- a/node_modules/axios/lib/helpers/bind.js +++ b/node_modules/axios/lib/helpers/bind.js @@ -1,7 +1,11 @@ 'use strict'; -export default function bind(fn, thisArg) { +module.exports = function bind(fn, thisArg) { return function wrap() { - return fn.apply(thisArg, arguments); + var args = new Array(arguments.length); + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i]; + } + return fn.apply(thisArg, args); }; -} +}; diff --git a/node_modules/axios/lib/helpers/buildURL.js b/node_modules/axios/lib/helpers/buildURL.js index d769fdf..31595c3 100644 --- a/node_modules/axios/lib/helpers/buildURL.js +++ b/node_modules/axios/lib/helpers/buildURL.js @@ -1,16 +1,7 @@ 'use strict'; -import utils from '../utils.js'; -import AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js'; +var utils = require('./../utils'); -/** - * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their - * URI encoded counterparts - * - * @param {string} val The value to be encoded. - * - * @returns {string} The encoded value. - */ function encode(val) { return encodeURIComponent(val). replace(/%3A/gi, ':'). @@ -26,38 +17,54 @@ function encode(val) { * * @param {string} url The base of the url (e.g., http://www.google.com) * @param {object} [params] The params to be appended - * @param {?object} options - * * @returns {string} The formatted url */ -export default function buildURL(url, params, options) { +module.exports = function buildURL(url, params, paramsSerializer) { /*eslint no-param-reassign:0*/ if (!params) { return url; } - - const _encode = options && options.encode || encode; - const serializeFn = options && options.serialize; - - let serializedParams; - - if (serializeFn) { - serializedParams = serializeFn(params, options); + var serializedParams; + if (paramsSerializer) { + serializedParams = paramsSerializer(params); + } else if (utils.isURLSearchParams(params)) { + serializedParams = params.toString(); } else { - serializedParams = utils.isURLSearchParams(params) ? - params.toString() : - new AxiosURLSearchParams(params, options).toString(_encode); + var parts = []; + + utils.forEach(params, function serialize(val, key) { + if (val === null || typeof val === 'undefined') { + return; + } + + if (utils.isArray(val)) { + key = key + '[]'; + } else { + val = [val]; + } + + utils.forEach(val, function parseValue(v) { + if (utils.isDate(v)) { + v = v.toISOString(); + } else if (utils.isObject(v)) { + v = JSON.stringify(v); + } + parts.push(encode(key) + '=' + encode(v)); + }); + }); + + serializedParams = parts.join('&'); } if (serializedParams) { - const hashmarkIndex = url.indexOf("#"); - + var hashmarkIndex = url.indexOf('#'); if (hashmarkIndex !== -1) { url = url.slice(0, hashmarkIndex); } + url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams; } return url; -} +}; diff --git a/node_modules/axios/lib/helpers/callbackify.js b/node_modules/axios/lib/helpers/callbackify.js deleted file mode 100644 index 4603bad..0000000 --- a/node_modules/axios/lib/helpers/callbackify.js +++ /dev/null @@ -1,16 +0,0 @@ -import utils from "../utils.js"; - -const callbackify = (fn, reducer) => { - return utils.isAsyncFn(fn) ? function (...args) { - const cb = args.pop(); - fn.apply(this, args).then((value) => { - try { - reducer ? cb(null, ...reducer(value)) : cb(null, value); - } catch (err) { - cb(err); - } - }, cb); - } : fn; -} - -export default callbackify; diff --git a/node_modules/axios/lib/helpers/combineURLs.js b/node_modules/axios/lib/helpers/combineURLs.js index 9f04f02..f1b58a5 100644 --- a/node_modules/axios/lib/helpers/combineURLs.js +++ b/node_modules/axios/lib/helpers/combineURLs.js @@ -5,11 +5,10 @@ * * @param {string} baseURL The base URL * @param {string} relativeURL The relative URL - * * @returns {string} The combined URL */ -export default function combineURLs(baseURL, relativeURL) { +module.exports = function combineURLs(baseURL, relativeURL) { return relativeURL - ? baseURL.replace(/\/?\/$/, '') + '/' + relativeURL.replace(/^\/+/, '') + ? baseURL.replace(/\/+$/, '') + '/' + relativeURL.replace(/^\/+/, '') : baseURL; -} +}; diff --git a/node_modules/axios/lib/helpers/cookies.js b/node_modules/axios/lib/helpers/cookies.js index d039ac4..5a8a666 100644 --- a/node_modules/axios/lib/helpers/cookies.js +++ b/node_modules/axios/lib/helpers/cookies.js @@ -1,42 +1,53 @@ -import utils from './../utils.js'; -import platform from '../platform/index.js'; +'use strict'; -export default platform.hasStandardBrowserEnv ? +var utils = require('./../utils'); + +module.exports = ( + utils.isStandardBrowserEnv() ? // Standard browser envs support document.cookie - { - write(name, value, expires, path, domain, secure) { - const cookie = [name + '=' + encodeURIComponent(value)]; + (function standardBrowserEnv() { + return { + write: function write(name, value, expires, path, domain, secure) { + var cookie = []; + cookie.push(name + '=' + encodeURIComponent(value)); - utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString()); + if (utils.isNumber(expires)) { + cookie.push('expires=' + new Date(expires).toGMTString()); + } - utils.isString(path) && cookie.push('path=' + path); + if (utils.isString(path)) { + cookie.push('path=' + path); + } - utils.isString(domain) && cookie.push('domain=' + domain); + if (utils.isString(domain)) { + cookie.push('domain=' + domain); + } - secure === true && cookie.push('secure'); + if (secure === true) { + cookie.push('secure'); + } - document.cookie = cookie.join('; '); - }, + document.cookie = cookie.join('; '); + }, - read(name) { - const match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)')); - return (match ? decodeURIComponent(match[3]) : null); - }, + read: function read(name) { + var match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)')); + return (match ? decodeURIComponent(match[3]) : null); + }, - remove(name) { - this.write(name, '', Date.now() - 86400000); - } - } - - : - - // Non-standard browser env (web workers, react-native) lack needed support. - { - write() {}, - read() { - return null; - }, - remove() {} - }; + remove: function remove(name) { + this.write(name, '', Date.now() - 86400000); + } + }; + })() : + // Non standard browser env (web workers, react-native) lack needed support. + (function nonStandardBrowserEnv() { + return { + write: function write() {}, + read: function read() { return null; }, + remove: function remove() {} + }; + })() +); diff --git a/node_modules/axios/lib/helpers/deprecatedMethod.js b/node_modules/axios/lib/helpers/deprecatedMethod.js index 9e8fae6..ed40965 100644 --- a/node_modules/axios/lib/helpers/deprecatedMethod.js +++ b/node_modules/axios/lib/helpers/deprecatedMethod.js @@ -9,10 +9,8 @@ * @param {string} method The name of the deprecated method * @param {string} [instead] The alternate method to use if applicable * @param {string} [docs] The documentation URL to get further details - * - * @returns {void} */ -export default function deprecatedMethod(method, instead, docs) { +module.exports = function deprecatedMethod(method, instead, docs) { try { console.warn( 'DEPRECATED method `' + method + '`.' + @@ -23,4 +21,4 @@ export default function deprecatedMethod(method, instead, docs) { console.warn('For more information about usage see ' + docs); } } catch (e) { /* Ignore */ } -} +}; diff --git a/node_modules/axios/lib/helpers/formDataToJSON.js b/node_modules/axios/lib/helpers/formDataToJSON.js deleted file mode 100644 index 906ce60..0000000 --- a/node_modules/axios/lib/helpers/formDataToJSON.js +++ /dev/null @@ -1,95 +0,0 @@ -'use strict'; - -import utils from '../utils.js'; - -/** - * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z'] - * - * @param {string} name - The name of the property to get. - * - * @returns An array of strings. - */ -function parsePropPath(name) { - // foo[x][y][z] - // foo.x.y.z - // foo-x-y-z - // foo x y z - return utils.matchAll(/\w+|\[(\w*)]/g, name).map(match => { - return match[0] === '[]' ? '' : match[1] || match[0]; - }); -} - -/** - * Convert an array to an object. - * - * @param {Array} arr - The array to convert to an object. - * - * @returns An object with the same keys and values as the array. - */ -function arrayToObject(arr) { - const obj = {}; - const keys = Object.keys(arr); - let i; - const len = keys.length; - let key; - for (i = 0; i < len; i++) { - key = keys[i]; - obj[key] = arr[key]; - } - return obj; -} - -/** - * It takes a FormData object and returns a JavaScript object - * - * @param {string} formData The FormData object to convert to JSON. - * - * @returns {Object | null} The converted object. - */ -function formDataToJSON(formData) { - function buildPath(path, value, target, index) { - let name = path[index++]; - - if (name === '__proto__') return true; - - const isNumericKey = Number.isFinite(+name); - const isLast = index >= path.length; - name = !name && utils.isArray(target) ? target.length : name; - - if (isLast) { - if (utils.hasOwnProp(target, name)) { - target[name] = [target[name], value]; - } else { - target[name] = value; - } - - return !isNumericKey; - } - - if (!target[name] || !utils.isObject(target[name])) { - target[name] = []; - } - - const result = buildPath(path, value, target[name], index); - - if (result && utils.isArray(target[name])) { - target[name] = arrayToObject(target[name]); - } - - return !isNumericKey; - } - - if (utils.isFormData(formData) && utils.isFunction(formData.entries)) { - const obj = {}; - - utils.forEachEntry(formData, (name, value) => { - buildPath(parsePropPath(name), value, obj, 0); - }); - - return obj; - } - - return null; -} - -export default formDataToJSON; diff --git a/node_modules/axios/lib/helpers/formDataToStream.js b/node_modules/axios/lib/helpers/formDataToStream.js deleted file mode 100644 index 9187e73..0000000 --- a/node_modules/axios/lib/helpers/formDataToStream.js +++ /dev/null @@ -1,111 +0,0 @@ -import {TextEncoder} from 'util'; -import {Readable} from 'stream'; -import utils from "../utils.js"; -import readBlob from "./readBlob.js"; - -const BOUNDARY_ALPHABET = utils.ALPHABET.ALPHA_DIGIT + '-_'; - -const textEncoder = new TextEncoder(); - -const CRLF = '\r\n'; -const CRLF_BYTES = textEncoder.encode(CRLF); -const CRLF_BYTES_COUNT = 2; - -class FormDataPart { - constructor(name, value) { - const {escapeName} = this.constructor; - const isStringValue = utils.isString(value); - - let headers = `Content-Disposition: form-data; name="${escapeName(name)}"${ - !isStringValue && value.name ? `; filename="${escapeName(value.name)}"` : '' - }${CRLF}`; - - if (isStringValue) { - value = textEncoder.encode(String(value).replace(/\r?\n|\r\n?/g, CRLF)); - } else { - headers += `Content-Type: ${value.type || "application/octet-stream"}${CRLF}` - } - - this.headers = textEncoder.encode(headers + CRLF); - - this.contentLength = isStringValue ? value.byteLength : value.size; - - this.size = this.headers.byteLength + this.contentLength + CRLF_BYTES_COUNT; - - this.name = name; - this.value = value; - } - - async *encode(){ - yield this.headers; - - const {value} = this; - - if(utils.isTypedArray(value)) { - yield value; - } else { - yield* readBlob(value); - } - - yield CRLF_BYTES; - } - - static escapeName(name) { - return String(name).replace(/[\r\n"]/g, (match) => ({ - '\r' : '%0D', - '\n' : '%0A', - '"' : '%22', - }[match])); - } -} - -const formDataToStream = (form, headersHandler, options) => { - const { - tag = 'form-data-boundary', - size = 25, - boundary = tag + '-' + utils.generateString(size, BOUNDARY_ALPHABET) - } = options || {}; - - if(!utils.isFormData(form)) { - throw TypeError('FormData instance required'); - } - - if (boundary.length < 1 || boundary.length > 70) { - throw Error('boundary must be 10-70 characters long') - } - - const boundaryBytes = textEncoder.encode('--' + boundary + CRLF); - const footerBytes = textEncoder.encode('--' + boundary + '--' + CRLF + CRLF); - let contentLength = footerBytes.byteLength; - - const parts = Array.from(form.entries()).map(([name, value]) => { - const part = new FormDataPart(name, value); - contentLength += part.size; - return part; - }); - - contentLength += boundaryBytes.byteLength * parts.length; - - contentLength = utils.toFiniteNumber(contentLength); - - const computedHeaders = { - 'Content-Type': `multipart/form-data; boundary=${boundary}` - } - - if (Number.isFinite(contentLength)) { - computedHeaders['Content-Length'] = contentLength; - } - - headersHandler && headersHandler(computedHeaders); - - return Readable.from((async function *() { - for(const part of parts) { - yield boundaryBytes; - yield* part.encode(); - } - - yield footerBytes; - })()); -}; - -export default formDataToStream; diff --git a/node_modules/axios/lib/helpers/fromDataURI.js b/node_modules/axios/lib/helpers/fromDataURI.js deleted file mode 100644 index eb71d3f..0000000 --- a/node_modules/axios/lib/helpers/fromDataURI.js +++ /dev/null @@ -1,53 +0,0 @@ -'use strict'; - -import AxiosError from '../core/AxiosError.js'; -import parseProtocol from './parseProtocol.js'; -import platform from '../platform/index.js'; - -const DATA_URL_PATTERN = /^(?:([^;]+);)?(?:[^;]+;)?(base64|),([\s\S]*)$/; - -/** - * Parse data uri to a Buffer or Blob - * - * @param {String} uri - * @param {?Boolean} asBlob - * @param {?Object} options - * @param {?Function} options.Blob - * - * @returns {Buffer|Blob} - */ -export default function fromDataURI(uri, asBlob, options) { - const _Blob = options && options.Blob || platform.classes.Blob; - const protocol = parseProtocol(uri); - - if (asBlob === undefined && _Blob) { - asBlob = true; - } - - if (protocol === 'data') { - uri = protocol.length ? uri.slice(protocol.length + 1) : uri; - - const match = DATA_URL_PATTERN.exec(uri); - - if (!match) { - throw new AxiosError('Invalid URL', AxiosError.ERR_INVALID_URL); - } - - const mime = match[1]; - const isBase64 = match[2]; - const body = match[3]; - const buffer = Buffer.from(decodeURIComponent(body), isBase64 ? 'base64' : 'utf8'); - - if (asBlob) { - if (!_Blob) { - throw new AxiosError('Blob is not supported', AxiosError.ERR_NOT_SUPPORT); - } - - return new _Blob([buffer], {type: mime}); - } - - return buffer; - } - - throw new AxiosError('Unsupported protocol ' + protocol, AxiosError.ERR_NOT_SUPPORT); -} diff --git a/node_modules/axios/lib/helpers/isAbsoluteURL.js b/node_modules/axios/lib/helpers/isAbsoluteURL.js index 4747a45..d33e992 100644 --- a/node_modules/axios/lib/helpers/isAbsoluteURL.js +++ b/node_modules/axios/lib/helpers/isAbsoluteURL.js @@ -4,12 +4,11 @@ * Determines whether the specified URL is absolute * * @param {string} url The URL to test - * * @returns {boolean} True if the specified URL is absolute, otherwise false */ -export default function isAbsoluteURL(url) { +module.exports = function isAbsoluteURL(url) { // A URL is considered absolute if it begins with "://" or "//" (protocol-relative URL). // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed // by any combination of letters, digits, plus, period, or hyphen. - return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url); -} + return /^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(url); +}; diff --git a/node_modules/axios/lib/helpers/isAxiosError.js b/node_modules/axios/lib/helpers/isAxiosError.js index da6cd63..29ff41a 100644 --- a/node_modules/axios/lib/helpers/isAxiosError.js +++ b/node_modules/axios/lib/helpers/isAxiosError.js @@ -1,14 +1,11 @@ 'use strict'; -import utils from './../utils.js'; - /** * Determines whether the payload is an error thrown by Axios * * @param {*} payload The value to test - * * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false */ -export default function isAxiosError(payload) { - return utils.isObject(payload) && (payload.isAxiosError === true); -} +module.exports = function isAxiosError(payload) { + return (typeof payload === 'object') && (payload.isAxiosError === true); +}; diff --git a/node_modules/axios/lib/helpers/isURLSameOrigin.js b/node_modules/axios/lib/helpers/isURLSameOrigin.js index a8678a4..f1d89ad 100644 --- a/node_modules/axios/lib/helpers/isURLSameOrigin.js +++ b/node_modules/axios/lib/helpers/isURLSameOrigin.js @@ -1,67 +1,68 @@ 'use strict'; -import utils from './../utils.js'; -import platform from '../platform/index.js'; +var utils = require('./../utils'); -export default platform.hasStandardBrowserEnv ? +module.exports = ( + utils.isStandardBrowserEnv() ? -// Standard browser envs have full support of the APIs needed to test -// whether the request URL is of the same origin as current location. - (function standardBrowserEnv() { - const msie = /(msie|trident)/i.test(navigator.userAgent); - const urlParsingNode = document.createElement('a'); - let originURL; + // Standard browser envs have full support of the APIs needed to test + // whether the request URL is of the same origin as current location. + (function standardBrowserEnv() { + var msie = /(msie|trident)/i.test(navigator.userAgent); + var urlParsingNode = document.createElement('a'); + var originURL; - /** - * Parse a URL to discover its components + /** + * Parse a URL to discover it's components * * @param {String} url The URL to be parsed * @returns {Object} */ - function resolveURL(url) { - let href = url; + function resolveURL(url) { + var href = url; - if (msie) { + if (msie) { // IE needs attribute set twice to normalize properties + urlParsingNode.setAttribute('href', href); + href = urlParsingNode.href; + } + urlParsingNode.setAttribute('href', href); - href = urlParsingNode.href; + + // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils + return { + href: urlParsingNode.href, + protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '', + host: urlParsingNode.host, + search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '', + hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '', + hostname: urlParsingNode.hostname, + port: urlParsingNode.port, + pathname: (urlParsingNode.pathname.charAt(0) === '/') ? + urlParsingNode.pathname : + '/' + urlParsingNode.pathname + }; } - urlParsingNode.setAttribute('href', href); + originURL = resolveURL(window.location.href); - // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils - return { - href: urlParsingNode.href, - protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '', - host: urlParsingNode.host, - search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '', - hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '', - hostname: urlParsingNode.hostname, - port: urlParsingNode.port, - pathname: (urlParsingNode.pathname.charAt(0) === '/') ? - urlParsingNode.pathname : - '/' + urlParsingNode.pathname - }; - } - - originURL = resolveURL(window.location.href); - - /** + /** * Determine if a URL shares the same origin as the current location * * @param {String} requestURL The URL to test * @returns {boolean} True if URL shares the same origin, otherwise false */ - return function isURLSameOrigin(requestURL) { - const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL; - return (parsed.protocol === originURL.protocol && - parsed.host === originURL.host); - }; - })() : + return function isURLSameOrigin(requestURL) { + var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL; + return (parsed.protocol === originURL.protocol && + parsed.host === originURL.host); + }; + })() : // Non standard browser envs (web workers, react-native) lack needed support. - (function nonStandardBrowserEnv() { - return function isURLSameOrigin() { - return true; - }; - })(); + (function nonStandardBrowserEnv() { + return function isURLSameOrigin() { + return true; + }; + })() +); diff --git a/node_modules/axios/lib/helpers/null.js b/node_modules/axios/lib/helpers/null.js deleted file mode 100644 index b9f82c4..0000000 --- a/node_modules/axios/lib/helpers/null.js +++ /dev/null @@ -1,2 +0,0 @@ -// eslint-disable-next-line strict -export default null; diff --git a/node_modules/axios/lib/helpers/parseHeaders.js b/node_modules/axios/lib/helpers/parseHeaders.js index 50af948..8af2cc7 100644 --- a/node_modules/axios/lib/helpers/parseHeaders.js +++ b/node_modules/axios/lib/helpers/parseHeaders.js @@ -1,15 +1,15 @@ 'use strict'; -import utils from './../utils.js'; +var utils = require('./../utils'); -// RawAxiosHeaders whose duplicates are ignored by node +// Headers whose duplicates are ignored by node // c.f. https://nodejs.org/api/http.html#http_message_headers -const ignoreDuplicateOf = utils.toObjectSet([ +var ignoreDuplicateOf = [ 'age', 'authorization', 'content-length', 'content-type', 'etag', 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since', 'last-modified', 'location', 'max-forwards', 'proxy-authorization', 'referer', 'retry-after', 'user-agent' -]); +]; /** * Parse headers into an object @@ -21,33 +21,31 @@ const ignoreDuplicateOf = utils.toObjectSet([ * Transfer-Encoding: chunked * ``` * - * @param {String} rawHeaders Headers needing to be parsed - * + * @param {String} headers Headers needing to be parsed * @returns {Object} Headers parsed into an object */ -export default rawHeaders => { - const parsed = {}; - let key; - let val; - let i; +module.exports = function parseHeaders(headers) { + var parsed = {}; + var key; + var val; + var i; - rawHeaders && rawHeaders.split('\n').forEach(function parser(line) { + if (!headers) { return parsed; } + + utils.forEach(headers.split('\n'), function parser(line) { i = line.indexOf(':'); - key = line.substring(0, i).trim().toLowerCase(); - val = line.substring(i + 1).trim(); + key = utils.trim(line.substr(0, i)).toLowerCase(); + val = utils.trim(line.substr(i + 1)); - if (!key || (parsed[key] && ignoreDuplicateOf[key])) { - return; - } - - if (key === 'set-cookie') { - if (parsed[key]) { - parsed[key].push(val); - } else { - parsed[key] = [val]; + if (key) { + if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) { + return; + } + if (key === 'set-cookie') { + parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]); + } else { + parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val; } - } else { - parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val; } }); diff --git a/node_modules/axios/lib/helpers/parseProtocol.js b/node_modules/axios/lib/helpers/parseProtocol.js deleted file mode 100644 index 586ec96..0000000 --- a/node_modules/axios/lib/helpers/parseProtocol.js +++ /dev/null @@ -1,6 +0,0 @@ -'use strict'; - -export default function parseProtocol(url) { - const match = /^([-+\w]{1,25})(:?\/\/|:)/.exec(url); - return match && match[1] || ''; -} diff --git a/node_modules/axios/lib/helpers/readBlob.js b/node_modules/axios/lib/helpers/readBlob.js deleted file mode 100644 index 6de748e..0000000 --- a/node_modules/axios/lib/helpers/readBlob.js +++ /dev/null @@ -1,15 +0,0 @@ -const {asyncIterator} = Symbol; - -const readBlob = async function* (blob) { - if (blob.stream) { - yield* blob.stream() - } else if (blob.arrayBuffer) { - yield await blob.arrayBuffer() - } else if (blob[asyncIterator]) { - yield* blob[asyncIterator](); - } else { - yield blob; - } -} - -export default readBlob; diff --git a/node_modules/axios/lib/helpers/speedometer.js b/node_modules/axios/lib/helpers/speedometer.js deleted file mode 100644 index 3b3c666..0000000 --- a/node_modules/axios/lib/helpers/speedometer.js +++ /dev/null @@ -1,55 +0,0 @@ -'use strict'; - -/** - * Calculate data maxRate - * @param {Number} [samplesCount= 10] - * @param {Number} [min= 1000] - * @returns {Function} - */ -function speedometer(samplesCount, min) { - samplesCount = samplesCount || 10; - const bytes = new Array(samplesCount); - const timestamps = new Array(samplesCount); - let head = 0; - let tail = 0; - let firstSampleTS; - - min = min !== undefined ? min : 1000; - - return function push(chunkLength) { - const now = Date.now(); - - const startedAt = timestamps[tail]; - - if (!firstSampleTS) { - firstSampleTS = now; - } - - bytes[head] = chunkLength; - timestamps[head] = now; - - let i = tail; - let bytesCount = 0; - - while (i !== head) { - bytesCount += bytes[i++]; - i = i % samplesCount; - } - - head = (head + 1) % samplesCount; - - if (head === tail) { - tail = (tail + 1) % samplesCount; - } - - if (now - firstSampleTS < min) { - return; - } - - const passed = startedAt && now - startedAt; - - return passed ? Math.round(bytesCount * 1000 / passed) : undefined; - }; -} - -export default speedometer; diff --git a/node_modules/axios/lib/helpers/spread.js b/node_modules/axios/lib/helpers/spread.js index 13479cb..25e3cdd 100644 --- a/node_modules/axios/lib/helpers/spread.js +++ b/node_modules/axios/lib/helpers/spread.js @@ -18,11 +18,10 @@ * ``` * * @param {Function} callback - * * @returns {Function} */ -export default function spread(callback) { +module.exports = function spread(callback) { return function wrap(arr) { return callback.apply(null, arr); }; -} +}; diff --git a/node_modules/axios/lib/helpers/throttle.js b/node_modules/axios/lib/helpers/throttle.js deleted file mode 100644 index 6969df1..0000000 --- a/node_modules/axios/lib/helpers/throttle.js +++ /dev/null @@ -1,33 +0,0 @@ -'use strict'; - -/** - * Throttle decorator - * @param {Function} fn - * @param {Number} freq - * @return {Function} - */ -function throttle(fn, freq) { - let timestamp = 0; - const threshold = 1000 / freq; - let timer = null; - return function throttled(force, args) { - const now = Date.now(); - if (force || now - timestamp > threshold) { - if (timer) { - clearTimeout(timer); - timer = null; - } - timestamp = now; - return fn.apply(null, args); - } - if (!timer) { - timer = setTimeout(() => { - timer = null; - timestamp = Date.now(); - return fn.apply(null, args); - }, threshold - (now - timestamp)); - } - }; -} - -export default throttle; diff --git a/node_modules/axios/lib/helpers/toFormData.js b/node_modules/axios/lib/helpers/toFormData.js deleted file mode 100644 index a41e966..0000000 --- a/node_modules/axios/lib/helpers/toFormData.js +++ /dev/null @@ -1,219 +0,0 @@ -'use strict'; - -import utils from '../utils.js'; -import AxiosError from '../core/AxiosError.js'; -// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored -import PlatformFormData from '../platform/node/classes/FormData.js'; - -/** - * Determines if the given thing is a array or js object. - * - * @param {string} thing - The object or array to be visited. - * - * @returns {boolean} - */ -function isVisitable(thing) { - return utils.isPlainObject(thing) || utils.isArray(thing); -} - -/** - * It removes the brackets from the end of a string - * - * @param {string} key - The key of the parameter. - * - * @returns {string} the key without the brackets. - */ -function removeBrackets(key) { - return utils.endsWith(key, '[]') ? key.slice(0, -2) : key; -} - -/** - * It takes a path, a key, and a boolean, and returns a string - * - * @param {string} path - The path to the current key. - * @param {string} key - The key of the current object being iterated over. - * @param {string} dots - If true, the key will be rendered with dots instead of brackets. - * - * @returns {string} The path to the current key. - */ -function renderKey(path, key, dots) { - if (!path) return key; - return path.concat(key).map(function each(token, i) { - // eslint-disable-next-line no-param-reassign - token = removeBrackets(token); - return !dots && i ? '[' + token + ']' : token; - }).join(dots ? '.' : ''); -} - -/** - * If the array is an array and none of its elements are visitable, then it's a flat array. - * - * @param {Array} arr - The array to check - * - * @returns {boolean} - */ -function isFlatArray(arr) { - return utils.isArray(arr) && !arr.some(isVisitable); -} - -const predicates = utils.toFlatObject(utils, {}, null, function filter(prop) { - return /^is[A-Z]/.test(prop); -}); - -/** - * Convert a data object to FormData - * - * @param {Object} obj - * @param {?Object} [formData] - * @param {?Object} [options] - * @param {Function} [options.visitor] - * @param {Boolean} [options.metaTokens = true] - * @param {Boolean} [options.dots = false] - * @param {?Boolean} [options.indexes = false] - * - * @returns {Object} - **/ - -/** - * It converts an object into a FormData object - * - * @param {Object} obj - The object to convert to form data. - * @param {string} formData - The FormData object to append to. - * @param {Object} options - * - * @returns - */ -function toFormData(obj, formData, options) { - if (!utils.isObject(obj)) { - throw new TypeError('target must be an object'); - } - - // eslint-disable-next-line no-param-reassign - formData = formData || new (PlatformFormData || FormData)(); - - // eslint-disable-next-line no-param-reassign - options = utils.toFlatObject(options, { - metaTokens: true, - dots: false, - indexes: false - }, false, function defined(option, source) { - // eslint-disable-next-line no-eq-null,eqeqeq - return !utils.isUndefined(source[option]); - }); - - const metaTokens = options.metaTokens; - // eslint-disable-next-line no-use-before-define - const visitor = options.visitor || defaultVisitor; - const dots = options.dots; - const indexes = options.indexes; - const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob; - const useBlob = _Blob && utils.isSpecCompliantForm(formData); - - if (!utils.isFunction(visitor)) { - throw new TypeError('visitor must be a function'); - } - - function convertValue(value) { - if (value === null) return ''; - - if (utils.isDate(value)) { - return value.toISOString(); - } - - if (!useBlob && utils.isBlob(value)) { - throw new AxiosError('Blob is not supported. Use a Buffer instead.'); - } - - if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) { - return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value); - } - - return value; - } - - /** - * Default visitor. - * - * @param {*} value - * @param {String|Number} key - * @param {Array} path - * @this {FormData} - * - * @returns {boolean} return true to visit the each prop of the value recursively - */ - function defaultVisitor(value, key, path) { - let arr = value; - - if (value && !path && typeof value === 'object') { - if (utils.endsWith(key, '{}')) { - // eslint-disable-next-line no-param-reassign - key = metaTokens ? key : key.slice(0, -2); - // eslint-disable-next-line no-param-reassign - value = JSON.stringify(value); - } else if ( - (utils.isArray(value) && isFlatArray(value)) || - ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value)) - )) { - // eslint-disable-next-line no-param-reassign - key = removeBrackets(key); - - arr.forEach(function each(el, index) { - !(utils.isUndefined(el) || el === null) && formData.append( - // eslint-disable-next-line no-nested-ternary - indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'), - convertValue(el) - ); - }); - return false; - } - } - - if (isVisitable(value)) { - return true; - } - - formData.append(renderKey(path, key, dots), convertValue(value)); - - return false; - } - - const stack = []; - - const exposedHelpers = Object.assign(predicates, { - defaultVisitor, - convertValue, - isVisitable - }); - - function build(value, path) { - if (utils.isUndefined(value)) return; - - if (stack.indexOf(value) !== -1) { - throw Error('Circular reference detected in ' + path.join('.')); - } - - stack.push(value); - - utils.forEach(value, function each(el, key) { - const result = !(utils.isUndefined(el) || el === null) && visitor.call( - formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers - ); - - if (result === true) { - build(el, path ? path.concat(key) : [key]); - } - }); - - stack.pop(); - } - - if (!utils.isObject(obj)) { - throw new TypeError('data must be an object'); - } - - build(obj); - - return formData; -} - -export default toFormData; diff --git a/node_modules/axios/lib/helpers/toURLEncodedForm.js b/node_modules/axios/lib/helpers/toURLEncodedForm.js deleted file mode 100644 index 988a38a..0000000 --- a/node_modules/axios/lib/helpers/toURLEncodedForm.js +++ /dev/null @@ -1,18 +0,0 @@ -'use strict'; - -import utils from '../utils.js'; -import toFormData from './toFormData.js'; -import platform from '../platform/index.js'; - -export default function toURLEncodedForm(data, options) { - return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({ - visitor: function(value, key, path, helpers) { - if (platform.isNode && utils.isBuffer(value)) { - this.append(key, value.toString('base64')); - return false; - } - - return helpers.defaultVisitor.apply(this, arguments); - } - }, options)); -} diff --git a/node_modules/axios/lib/helpers/validator.js b/node_modules/axios/lib/helpers/validator.js index 14b4696..7f1bc7d 100644 --- a/node_modules/axios/lib/helpers/validator.js +++ b/node_modules/axios/lib/helpers/validator.js @@ -1,43 +1,59 @@ 'use strict'; -import {VERSION} from '../env/data.js'; -import AxiosError from '../core/AxiosError.js'; +var pkg = require('./../../package.json'); -const validators = {}; +var validators = {}; // eslint-disable-next-line func-names -['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => { +['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) { validators[type] = function validator(thing) { return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type; }; }); -const deprecatedWarnings = {}; +var deprecatedWarnings = {}; +var currentVerArr = pkg.version.split('.'); + +/** + * Compare package versions + * @param {string} version + * @param {string?} thanVersion + * @returns {boolean} + */ +function isOlderVersion(version, thanVersion) { + var pkgVersionArr = thanVersion ? thanVersion.split('.') : currentVerArr; + var destVer = version.split('.'); + for (var i = 0; i < 3; i++) { + if (pkgVersionArr[i] > destVer[i]) { + return true; + } else if (pkgVersionArr[i] < destVer[i]) { + return false; + } + } + return false; +} /** * Transitional option validator - * - * @param {function|boolean?} validator - set to false if the transitional option has been removed - * @param {string?} version - deprecated version / removed since version - * @param {string?} message - some message with additional info - * + * @param {function|boolean?} validator + * @param {string?} version + * @param {string} message * @returns {function} */ validators.transitional = function transitional(validator, version, message) { + var isDeprecated = version && isOlderVersion(version); + function formatMessage(opt, desc) { - return '[Axios v' + VERSION + '] Transitional option \'' + opt + '\'' + desc + (message ? '. ' + message : ''); + return '[Axios v' + pkg.version + '] Transitional option \'' + opt + '\'' + desc + (message ? '. ' + message : ''); } // eslint-disable-next-line func-names - return (value, opt, opts) => { + return function(value, opt, opts) { if (validator === false) { - throw new AxiosError( - formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')), - AxiosError.ERR_DEPRECATED - ); + throw new Error(formatMessage(opt, ' has been removed in ' + version)); } - if (version && !deprecatedWarnings[opt]) { + if (isDeprecated && !deprecatedWarnings[opt]) { deprecatedWarnings[opt] = true; // eslint-disable-next-line no-console console.warn( @@ -54,38 +70,36 @@ validators.transitional = function transitional(validator, version, message) { /** * Assert object's properties type - * * @param {object} options * @param {object} schema * @param {boolean?} allowUnknown - * - * @returns {object} */ function assertOptions(options, schema, allowUnknown) { if (typeof options !== 'object') { - throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE); + throw new TypeError('options must be an object'); } - const keys = Object.keys(options); - let i = keys.length; + var keys = Object.keys(options); + var i = keys.length; while (i-- > 0) { - const opt = keys[i]; - const validator = schema[opt]; + var opt = keys[i]; + var validator = schema[opt]; if (validator) { - const value = options[opt]; - const result = value === undefined || validator(value, opt, options); + var value = options[opt]; + var result = value === undefined || validator(value, opt, options); if (result !== true) { - throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE); + throw new TypeError('option ' + opt + ' must be ' + result); } continue; } if (allowUnknown !== true) { - throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION); + throw Error('Unknown option ' + opt); } } } -export default { - assertOptions, - validators +module.exports = { + isOlderVersion: isOlderVersion, + assertOptions: assertOptions, + validators: validators }; diff --git a/node_modules/axios/lib/platform/browser/classes/Blob.js b/node_modules/axios/lib/platform/browser/classes/Blob.js deleted file mode 100644 index 6c506c4..0000000 --- a/node_modules/axios/lib/platform/browser/classes/Blob.js +++ /dev/null @@ -1,3 +0,0 @@ -'use strict' - -export default typeof Blob !== 'undefined' ? Blob : null diff --git a/node_modules/axios/lib/platform/browser/classes/FormData.js b/node_modules/axios/lib/platform/browser/classes/FormData.js deleted file mode 100644 index f36d31b..0000000 --- a/node_modules/axios/lib/platform/browser/classes/FormData.js +++ /dev/null @@ -1,3 +0,0 @@ -'use strict'; - -export default typeof FormData !== 'undefined' ? FormData : null; diff --git a/node_modules/axios/lib/platform/browser/classes/URLSearchParams.js b/node_modules/axios/lib/platform/browser/classes/URLSearchParams.js deleted file mode 100644 index b7dae95..0000000 --- a/node_modules/axios/lib/platform/browser/classes/URLSearchParams.js +++ /dev/null @@ -1,4 +0,0 @@ -'use strict'; - -import AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js'; -export default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams; diff --git a/node_modules/axios/lib/platform/browser/index.js b/node_modules/axios/lib/platform/browser/index.js deleted file mode 100644 index 08c206f..0000000 --- a/node_modules/axios/lib/platform/browser/index.js +++ /dev/null @@ -1,13 +0,0 @@ -import URLSearchParams from './classes/URLSearchParams.js' -import FormData from './classes/FormData.js' -import Blob from './classes/Blob.js' - -export default { - isBrowser: true, - classes: { - URLSearchParams, - FormData, - Blob - }, - protocols: ['http', 'https', 'file', 'blob', 'url', 'data'] -}; diff --git a/node_modules/axios/lib/platform/common/utils.js b/node_modules/axios/lib/platform/common/utils.js deleted file mode 100644 index 56fe79a..0000000 --- a/node_modules/axios/lib/platform/common/utils.js +++ /dev/null @@ -1,47 +0,0 @@ -const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined'; - -/** - * Determine if we're running in a standard browser environment - * - * This allows axios to run in a web worker, and react-native. - * Both environments support XMLHttpRequest, but not fully standard globals. - * - * web workers: - * typeof window -> undefined - * typeof document -> undefined - * - * react-native: - * navigator.product -> 'ReactNative' - * nativescript - * navigator.product -> 'NativeScript' or 'NS' - * - * @returns {boolean} - */ -const hasStandardBrowserEnv = ( - (product) => { - return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0 - })(typeof navigator !== 'undefined' && navigator.product); - -/** - * Determine if we're running in a standard browser webWorker environment - * - * Although the `isStandardBrowserEnv` method indicates that - * `allows axios to run in a web worker`, the WebWorker will still be - * filtered out due to its judgment standard - * `typeof window !== 'undefined' && typeof document !== 'undefined'`. - * This leads to a problem when axios post `FormData` in webWorker - */ -const hasStandardBrowserWebWorkerEnv = (() => { - return ( - typeof WorkerGlobalScope !== 'undefined' && - // eslint-disable-next-line no-undef - self instanceof WorkerGlobalScope && - typeof self.importScripts === 'function' - ); -})(); - -export { - hasBrowserEnv, - hasStandardBrowserWebWorkerEnv, - hasStandardBrowserEnv -} diff --git a/node_modules/axios/lib/platform/index.js b/node_modules/axios/lib/platform/index.js deleted file mode 100644 index 860ba21..0000000 --- a/node_modules/axios/lib/platform/index.js +++ /dev/null @@ -1,7 +0,0 @@ -import platform from './node/index.js'; -import * as utils from './common/utils.js'; - -export default { - ...utils, - ...platform -} diff --git a/node_modules/axios/lib/platform/node/classes/FormData.js b/node_modules/axios/lib/platform/node/classes/FormData.js deleted file mode 100644 index b07f947..0000000 --- a/node_modules/axios/lib/platform/node/classes/FormData.js +++ /dev/null @@ -1,3 +0,0 @@ -import FormData from 'form-data'; - -export default FormData; diff --git a/node_modules/axios/lib/platform/node/classes/URLSearchParams.js b/node_modules/axios/lib/platform/node/classes/URLSearchParams.js deleted file mode 100644 index fba5842..0000000 --- a/node_modules/axios/lib/platform/node/classes/URLSearchParams.js +++ /dev/null @@ -1,4 +0,0 @@ -'use strict'; - -import url from 'url'; -export default url.URLSearchParams; diff --git a/node_modules/axios/lib/platform/node/index.js b/node_modules/axios/lib/platform/node/index.js deleted file mode 100644 index aef514a..0000000 --- a/node_modules/axios/lib/platform/node/index.js +++ /dev/null @@ -1,12 +0,0 @@ -import URLSearchParams from './classes/URLSearchParams.js' -import FormData from './classes/FormData.js' - -export default { - isNode: true, - classes: { - URLSearchParams, - FormData, - Blob: typeof Blob !== 'undefined' && Blob || null - }, - protocols: [ 'http', 'https', 'file', 'data' ] -}; diff --git a/node_modules/axios/lib/utils.js b/node_modules/axios/lib/utils.js index a386b77..5d966f4 100644 --- a/node_modules/axios/lib/utils.js +++ b/node_modules/axios/lib/utils.js @@ -1,77 +1,74 @@ 'use strict'; -import bind from './helpers/bind.js'; +var bind = require('./helpers/bind'); // utils is a library of generic helper functions non-specific to axios -const {toString} = Object.prototype; -const {getPrototypeOf} = Object; - -const kindOf = (cache => thing => { - const str = toString.call(thing); - return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase()); -})(Object.create(null)); - -const kindOfTest = (type) => { - type = type.toLowerCase(); - return (thing) => kindOf(thing) === type -} - -const typeOfTest = type => thing => typeof thing === type; +var toString = Object.prototype.toString; /** * Determine if a value is an Array * * @param {Object} val The value to test - * * @returns {boolean} True if value is an Array, otherwise false */ -const {isArray} = Array; +function isArray(val) { + return toString.call(val) === '[object Array]'; +} /** * Determine if a value is undefined * - * @param {*} val The value to test - * + * @param {Object} val The value to test * @returns {boolean} True if the value is undefined, otherwise false */ -const isUndefined = typeOfTest('undefined'); +function isUndefined(val) { + return typeof val === 'undefined'; +} /** * Determine if a value is a Buffer * - * @param {*} val The value to test - * + * @param {Object} val The value to test * @returns {boolean} True if value is a Buffer, otherwise false */ function isBuffer(val) { return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor) - && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val); + && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val); } /** * Determine if a value is an ArrayBuffer * - * @param {*} val The value to test - * + * @param {Object} val The value to test * @returns {boolean} True if value is an ArrayBuffer, otherwise false */ -const isArrayBuffer = kindOfTest('ArrayBuffer'); +function isArrayBuffer(val) { + return toString.call(val) === '[object ArrayBuffer]'; +} +/** + * Determine if a value is a FormData + * + * @param {Object} val The value to test + * @returns {boolean} True if value is an FormData, otherwise false + */ +function isFormData(val) { + return (typeof FormData !== 'undefined') && (val instanceof FormData); +} /** * Determine if a value is a view on an ArrayBuffer * - * @param {*} val The value to test - * + * @param {Object} val The value to test * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false */ function isArrayBufferView(val) { - let result; + var result; if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) { result = ArrayBuffer.isView(val); } else { - result = (val) && (val.buffer) && (isArrayBuffer(val.buffer)); + result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer); } return result; } @@ -79,145 +76,144 @@ function isArrayBufferView(val) { /** * Determine if a value is a String * - * @param {*} val The value to test - * + * @param {Object} val The value to test * @returns {boolean} True if value is a String, otherwise false */ -const isString = typeOfTest('string'); - -/** - * Determine if a value is a Function - * - * @param {*} val The value to test - * @returns {boolean} True if value is a Function, otherwise false - */ -const isFunction = typeOfTest('function'); +function isString(val) { + return typeof val === 'string'; +} /** * Determine if a value is a Number * - * @param {*} val The value to test - * + * @param {Object} val The value to test * @returns {boolean} True if value is a Number, otherwise false */ -const isNumber = typeOfTest('number'); +function isNumber(val) { + return typeof val === 'number'; +} /** * Determine if a value is an Object * - * @param {*} thing The value to test - * + * @param {Object} val The value to test * @returns {boolean} True if value is an Object, otherwise false */ -const isObject = (thing) => thing !== null && typeof thing === 'object'; - -/** - * Determine if a value is a Boolean - * - * @param {*} thing The value to test - * @returns {boolean} True if value is a Boolean, otherwise false - */ -const isBoolean = thing => thing === true || thing === false; +function isObject(val) { + return val !== null && typeof val === 'object'; +} /** * Determine if a value is a plain Object * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a plain Object, otherwise false + * @param {Object} val The value to test + * @return {boolean} True if value is a plain Object, otherwise false */ -const isPlainObject = (val) => { - if (kindOf(val) !== 'object') { +function isPlainObject(val) { + if (toString.call(val) !== '[object Object]') { return false; } - const prototype = getPrototypeOf(val); - return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val); + var prototype = Object.getPrototypeOf(val); + return prototype === null || prototype === Object.prototype; } /** * Determine if a value is a Date * - * @param {*} val The value to test - * + * @param {Object} val The value to test * @returns {boolean} True if value is a Date, otherwise false */ -const isDate = kindOfTest('Date'); +function isDate(val) { + return toString.call(val) === '[object Date]'; +} /** * Determine if a value is a File * - * @param {*} val The value to test - * + * @param {Object} val The value to test * @returns {boolean} True if value is a File, otherwise false */ -const isFile = kindOfTest('File'); +function isFile(val) { + return toString.call(val) === '[object File]'; +} /** * Determine if a value is a Blob * - * @param {*} val The value to test - * + * @param {Object} val The value to test * @returns {boolean} True if value is a Blob, otherwise false */ -const isBlob = kindOfTest('Blob'); +function isBlob(val) { + return toString.call(val) === '[object Blob]'; +} /** - * Determine if a value is a FileList + * Determine if a value is a Function * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a File, otherwise false + * @param {Object} val The value to test + * @returns {boolean} True if value is a Function, otherwise false */ -const isFileList = kindOfTest('FileList'); +function isFunction(val) { + return toString.call(val) === '[object Function]'; +} /** * Determine if a value is a Stream * - * @param {*} val The value to test - * + * @param {Object} val The value to test * @returns {boolean} True if value is a Stream, otherwise false */ -const isStream = (val) => isObject(val) && isFunction(val.pipe); - -/** - * Determine if a value is a FormData - * - * @param {*} thing The value to test - * - * @returns {boolean} True if value is an FormData, otherwise false - */ -const isFormData = (thing) => { - let kind; - return thing && ( - (typeof FormData === 'function' && thing instanceof FormData) || ( - isFunction(thing.append) && ( - (kind = kindOf(thing)) === 'formdata' || - // detect form-data instance - (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]') - ) - ) - ) +function isStream(val) { + return isObject(val) && isFunction(val.pipe); } /** * Determine if a value is a URLSearchParams object * - * @param {*} val The value to test - * + * @param {Object} val The value to test * @returns {boolean} True if value is a URLSearchParams object, otherwise false */ -const isURLSearchParams = kindOfTest('URLSearchParams'); +function isURLSearchParams(val) { + return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams; +} /** * Trim excess whitespace off the beginning and end of a string * * @param {String} str The String to trim - * * @returns {String} The String freed of excess whitespace */ -const trim = (str) => str.trim ? - str.trim() : str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''); +function trim(str) { + return str.trim ? str.trim() : str.replace(/^\s+|\s+$/g, ''); +} + +/** + * Determine if we're running in a standard browser environment + * + * This allows axios to run in a web worker, and react-native. + * Both environments support XMLHttpRequest, but not fully standard globals. + * + * web workers: + * typeof window -> undefined + * typeof document -> undefined + * + * react-native: + * navigator.product -> 'ReactNative' + * nativescript + * navigator.product -> 'NativeScript' or 'NS' + */ +function isStandardBrowserEnv() { + if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' || + navigator.product === 'NativeScript' || + navigator.product === 'NS')) { + return false; + } + return ( + typeof window !== 'undefined' && + typeof document !== 'undefined' + ); +} /** * Iterate over an Array or an Object invoking a function for each item. @@ -230,19 +226,13 @@ const trim = (str) => str.trim ? * * @param {Object|Array} obj The object to iterate * @param {Function} fn The callback to invoke for each item - * - * @param {Boolean} [allOwnKeys = false] - * @returns {any} */ -function forEach(obj, fn, {allOwnKeys = false} = {}) { +function forEach(obj, fn) { // Don't bother if no value provided if (obj === null || typeof obj === 'undefined') { return; } - let i; - let l; - // Force an array if not already something iterable if (typeof obj !== 'object') { /*eslint no-param-reassign:0*/ @@ -251,44 +241,19 @@ function forEach(obj, fn, {allOwnKeys = false} = {}) { if (isArray(obj)) { // Iterate over array values - for (i = 0, l = obj.length; i < l; i++) { + for (var i = 0, l = obj.length; i < l; i++) { fn.call(null, obj[i], i, obj); } } else { // Iterate over object keys - const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj); - const len = keys.length; - let key; - - for (i = 0; i < len; i++) { - key = keys[i]; - fn.call(null, obj[key], key, obj); + for (var key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) { + fn.call(null, obj[key], key, obj); + } } } } -function findKey(obj, key) { - key = key.toLowerCase(); - const keys = Object.keys(obj); - let i = keys.length; - let _key; - while (i-- > 0) { - _key = keys[i]; - if (key === _key.toLowerCase()) { - return _key; - } - } - return null; -} - -const _global = (() => { - /*eslint no-undef:0*/ - if (typeof globalThis !== "undefined") return globalThis; - return typeof self !== "undefined" ? self : (typeof window !== 'undefined' ? window : global) -})(); - -const isContextDefined = (context) => !isUndefined(context) && context !== _global; - /** * Accepts varargs expecting each argument to be an object, then * immutably merges the properties of each object and returns result. @@ -304,27 +269,24 @@ const isContextDefined = (context) => !isUndefined(context) && context !== _glob * ``` * * @param {Object} obj1 Object to merge - * * @returns {Object} Result of all merge properties */ function merge(/* obj1, obj2, obj3, ... */) { - const {caseless} = isContextDefined(this) && this || {}; - const result = {}; - const assignValue = (val, key) => { - const targetKey = caseless && findKey(result, key) || key; - if (isPlainObject(result[targetKey]) && isPlainObject(val)) { - result[targetKey] = merge(result[targetKey], val); + var result = {}; + function assignValue(val, key) { + if (isPlainObject(result[key]) && isPlainObject(val)) { + result[key] = merge(result[key], val); } else if (isPlainObject(val)) { - result[targetKey] = merge({}, val); + result[key] = merge({}, val); } else if (isArray(val)) { - result[targetKey] = val.slice(); + result[key] = val.slice(); } else { - result[targetKey] = val; + result[key] = val; } } - for (let i = 0, l = arguments.length; i < l; i++) { - arguments[i] && forEach(arguments[i], assignValue); + for (var i = 0, l = arguments.length; i < l; i++) { + forEach(arguments[i], assignValue); } return result; } @@ -335,18 +297,16 @@ function merge(/* obj1, obj2, obj3, ... */) { * @param {Object} a The object to be extended * @param {Object} b The object to copy properties from * @param {Object} thisArg The object to bind function to - * - * @param {Boolean} [allOwnKeys] - * @returns {Object} The resulting value of object a + * @return {Object} The resulting value of object a */ -const extend = (a, b, thisArg, {allOwnKeys}= {}) => { - forEach(b, (val, key) => { - if (thisArg && isFunction(val)) { +function extend(a, b, thisArg) { + forEach(b, function assignValue(val, key) { + if (thisArg && typeof val === 'function') { a[key] = bind(val, thisArg); } else { a[key] = val; } - }, {allOwnKeys}); + }); return a; } @@ -354,370 +314,36 @@ const extend = (a, b, thisArg, {allOwnKeys}= {}) => { * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM) * * @param {string} content with BOM - * - * @returns {string} content value without BOM + * @return {string} content value without BOM */ -const stripBOM = (content) => { +function stripBOM(content) { if (content.charCodeAt(0) === 0xFEFF) { content = content.slice(1); } return content; } -/** - * Inherit the prototype methods from one constructor into another - * @param {function} constructor - * @param {function} superConstructor - * @param {object} [props] - * @param {object} [descriptors] - * - * @returns {void} - */ -const inherits = (constructor, superConstructor, props, descriptors) => { - constructor.prototype = Object.create(superConstructor.prototype, descriptors); - constructor.prototype.constructor = constructor; - Object.defineProperty(constructor, 'super', { - value: superConstructor.prototype - }); - props && Object.assign(constructor.prototype, props); -} - -/** - * Resolve object with deep prototype chain to a flat object - * @param {Object} sourceObj source object - * @param {Object} [destObj] - * @param {Function|Boolean} [filter] - * @param {Function} [propFilter] - * - * @returns {Object} - */ -const toFlatObject = (sourceObj, destObj, filter, propFilter) => { - let props; - let i; - let prop; - const merged = {}; - - destObj = destObj || {}; - // eslint-disable-next-line no-eq-null,eqeqeq - if (sourceObj == null) return destObj; - - do { - props = Object.getOwnPropertyNames(sourceObj); - i = props.length; - while (i-- > 0) { - prop = props[i]; - if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) { - destObj[prop] = sourceObj[prop]; - merged[prop] = true; - } - } - sourceObj = filter !== false && getPrototypeOf(sourceObj); - } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype); - - return destObj; -} - -/** - * Determines whether a string ends with the characters of a specified string - * - * @param {String} str - * @param {String} searchString - * @param {Number} [position= 0] - * - * @returns {boolean} - */ -const endsWith = (str, searchString, position) => { - str = String(str); - if (position === undefined || position > str.length) { - position = str.length; - } - position -= searchString.length; - const lastIndex = str.indexOf(searchString, position); - return lastIndex !== -1 && lastIndex === position; -} - - -/** - * Returns new array from array like object or null if failed - * - * @param {*} [thing] - * - * @returns {?Array} - */ -const toArray = (thing) => { - if (!thing) return null; - if (isArray(thing)) return thing; - let i = thing.length; - if (!isNumber(i)) return null; - const arr = new Array(i); - while (i-- > 0) { - arr[i] = thing[i]; - } - return arr; -} - -/** - * Checking if the Uint8Array exists and if it does, it returns a function that checks if the - * thing passed in is an instance of Uint8Array - * - * @param {TypedArray} - * - * @returns {Array} - */ -// eslint-disable-next-line func-names -const isTypedArray = (TypedArray => { - // eslint-disable-next-line func-names - return thing => { - return TypedArray && thing instanceof TypedArray; - }; -})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array)); - -/** - * For each entry in the object, call the function with the key and value. - * - * @param {Object} obj - The object to iterate over. - * @param {Function} fn - The function to call for each entry. - * - * @returns {void} - */ -const forEachEntry = (obj, fn) => { - const generator = obj && obj[Symbol.iterator]; - - const iterator = generator.call(obj); - - let result; - - while ((result = iterator.next()) && !result.done) { - const pair = result.value; - fn.call(obj, pair[0], pair[1]); - } -} - -/** - * It takes a regular expression and a string, and returns an array of all the matches - * - * @param {string} regExp - The regular expression to match against. - * @param {string} str - The string to search. - * - * @returns {Array} - */ -const matchAll = (regExp, str) => { - let matches; - const arr = []; - - while ((matches = regExp.exec(str)) !== null) { - arr.push(matches); - } - - return arr; -} - -/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */ -const isHTMLForm = kindOfTest('HTMLFormElement'); - -const toCamelCase = str => { - return str.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g, - function replacer(m, p1, p2) { - return p1.toUpperCase() + p2; - } - ); -}; - -/* Creating a function that will check if an object has a property. */ -const hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype); - -/** - * Determine if a value is a RegExp object - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a RegExp object, otherwise false - */ -const isRegExp = kindOfTest('RegExp'); - -const reduceDescriptors = (obj, reducer) => { - const descriptors = Object.getOwnPropertyDescriptors(obj); - const reducedDescriptors = {}; - - forEach(descriptors, (descriptor, name) => { - let ret; - if ((ret = reducer(descriptor, name, obj)) !== false) { - reducedDescriptors[name] = ret || descriptor; - } - }); - - Object.defineProperties(obj, reducedDescriptors); -} - -/** - * Makes all methods read-only - * @param {Object} obj - */ - -const freezeMethods = (obj) => { - reduceDescriptors(obj, (descriptor, name) => { - // skip restricted props in strict mode - if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) { - return false; - } - - const value = obj[name]; - - if (!isFunction(value)) return; - - descriptor.enumerable = false; - - if ('writable' in descriptor) { - descriptor.writable = false; - return; - } - - if (!descriptor.set) { - descriptor.set = () => { - throw Error('Can not rewrite read-only method \'' + name + '\''); - }; - } - }); -} - -const toObjectSet = (arrayOrString, delimiter) => { - const obj = {}; - - const define = (arr) => { - arr.forEach(value => { - obj[value] = true; - }); - } - - isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter)); - - return obj; -} - -const noop = () => {} - -const toFiniteNumber = (value, defaultValue) => { - value = +value; - return Number.isFinite(value) ? value : defaultValue; -} - -const ALPHA = 'abcdefghijklmnopqrstuvwxyz' - -const DIGIT = '0123456789'; - -const ALPHABET = { - DIGIT, - ALPHA, - ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT -} - -const generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => { - let str = ''; - const {length} = alphabet; - while (size--) { - str += alphabet[Math.random() * length|0] - } - - return str; -} - -/** - * If the thing is a FormData object, return true, otherwise return false. - * - * @param {unknown} thing - The thing to check. - * - * @returns {boolean} - */ -function isSpecCompliantForm(thing) { - return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]); -} - -const toJSONObject = (obj) => { - const stack = new Array(10); - - const visit = (source, i) => { - - if (isObject(source)) { - if (stack.indexOf(source) >= 0) { - return; - } - - if(!('toJSON' in source)) { - stack[i] = source; - const target = isArray(source) ? [] : {}; - - forEach(source, (value, key) => { - const reducedValue = visit(value, i + 1); - !isUndefined(reducedValue) && (target[key] = reducedValue); - }); - - stack[i] = undefined; - - return target; - } - } - - return source; - } - - return visit(obj, 0); -} - -const isAsyncFn = kindOfTest('AsyncFunction'); - -const isThenable = (thing) => - thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch); - -export default { - isArray, - isArrayBuffer, - isBuffer, - isFormData, - isArrayBufferView, - isString, - isNumber, - isBoolean, - isObject, - isPlainObject, - isUndefined, - isDate, - isFile, - isBlob, - isRegExp, - isFunction, - isStream, - isURLSearchParams, - isTypedArray, - isFileList, - forEach, - merge, - extend, - trim, - stripBOM, - inherits, - toFlatObject, - kindOf, - kindOfTest, - endsWith, - toArray, - forEachEntry, - matchAll, - isHTMLForm, - hasOwnProperty, - hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection - reduceDescriptors, - freezeMethods, - toObjectSet, - toCamelCase, - noop, - toFiniteNumber, - findKey, - global: _global, - isContextDefined, - ALPHABET, - generateString, - isSpecCompliantForm, - toJSONObject, - isAsyncFn, - isThenable +module.exports = { + isArray: isArray, + isArrayBuffer: isArrayBuffer, + isBuffer: isBuffer, + isFormData: isFormData, + isArrayBufferView: isArrayBufferView, + isString: isString, + isNumber: isNumber, + isObject: isObject, + isPlainObject: isPlainObject, + isUndefined: isUndefined, + isDate: isDate, + isFile: isFile, + isBlob: isBlob, + isFunction: isFunction, + isStream: isStream, + isURLSearchParams: isURLSearchParams, + isStandardBrowserEnv: isStandardBrowserEnv, + forEach: forEach, + merge: merge, + extend: extend, + trim: trim, + stripBOM: stripBOM }; diff --git a/node_modules/axios/package.json b/node_modules/axios/package.json index cf185bd..7c895b3 100644 --- a/node_modules/axios/package.json +++ b/node_modules/axios/package.json @@ -1,66 +1,18 @@ { "name": "axios", - "version": "1.6.7", + "version": "0.21.4", "description": "Promise based HTTP client for the browser and node.js", "main": "index.js", - "exports": { - ".": { - "types": { - "require": "./index.d.cts", - "default": "./index.d.ts" - }, - "browser": { - "require": "./dist/browser/axios.cjs", - "default": "./index.js" - }, - "default": { - "require": "./dist/node/axios.cjs", - "default": "./index.js" - } - }, - "./lib/adapters/http.js": "./lib/adapters/http.js", - "./lib/adapters/xhr.js": "./lib/adapters/xhr.js", - "./unsafe/*": "./lib/*", - "./unsafe/core/settle.js": "./lib/core/settle.js", - "./unsafe/core/buildFullPath.js": "./lib/core/buildFullPath.js", - "./unsafe/helpers/isAbsoluteURL.js": "./lib/helpers/isAbsoluteURL.js", - "./unsafe/helpers/buildURL.js": "./lib/helpers/buildURL.js", - "./unsafe/helpers/combineURLs.js": "./lib/helpers/combineURLs.js", - "./unsafe/adapters/http.js": "./lib/adapters/http.js", - "./unsafe/adapters/xhr.js": "./lib/adapters/xhr.js", - "./unsafe/utils.js": "./lib/utils.js", - "./package.json": "./package.json" - }, - "type": "module", - "types": "index.d.ts", "scripts": { - "test": "npm run test:eslint && npm run test:mocha && npm run test:karma && npm run test:dtslint && npm run test:exports", - "test:eslint": "node bin/ssl_hotfix.js eslint lib/**/*.js", - "test:dtslint": "dtslint --localTs node_modules/typescript/lib", - "test:mocha": "node bin/ssl_hotfix.js mocha test/unit/**/*.js --timeout 30000 --exit", - "test:exports": "node bin/ssl_hotfix.js mocha test/module/test.js --timeout 30000 --exit", - "test:karma": "node bin/ssl_hotfix.js cross-env LISTEN_ADDR=:: karma start karma.conf.cjs --single-run", - "test:karma:firefox": "node bin/ssl_hotfix.js cross-env LISTEN_ADDR=:: Browsers=Firefox karma start karma.conf.cjs --single-run", - "test:karma:server": "node bin/ssl_hotfix.js cross-env karma start karma.conf.cjs", - "test:build:version": "node ./bin/check-build-version.js", + "test": "grunt test", "start": "node ./sandbox/server.js", - "preversion": "gulp version", - "version": "npm run build && git add dist && git add package.json", - "prepublishOnly": "npm run test:build:version", - "postpublish": "git push && git push --tags", - "build": "gulp clear && cross-env NODE_ENV=production rollup -c -m", + "build": "NODE_ENV=production grunt build", + "preversion": "npm test", + "version": "npm run build && grunt version && git add -A dist && git add CHANGELOG.md bower.json package.json", + "postversion": "git push && git push --tags", "examples": "node ./examples/server.js", "coveralls": "cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js", - "fix": "eslint --fix lib/**/*.js", - "prepare": "husky install && npm run prepare:hooks", - "prepare:hooks": "npx husky set .husky/commit-msg \"npx commitlint --edit $1\"", - "release:dry": "release-it --dry-run --no-npm", - "release:info": "release-it --release-version", - "release:beta:no-npm": "release-it --preRelease=beta --no-npm", - "release:beta": "release-it --preRelease=beta", - "release:no-npm": "release-it --no-npm", - "release:changelog:fix": "node ./bin/injectContributorsList.js && git add CHANGELOG.md", - "release": "release-it" + "fix": "eslint --fix lib/**/*.js" }, "repository": { "type": "git", @@ -80,139 +32,53 @@ }, "homepage": "https://axios-http.com", "devDependencies": { - "@babel/core": "^7.18.2", - "@babel/preset-env": "^7.18.2", - "@commitlint/cli": "^17.3.0", - "@commitlint/config-conventional": "^17.3.0", - "@release-it/conventional-changelog": "^5.1.1", - "@rollup/plugin-babel": "^5.3.1", - "@rollup/plugin-commonjs": "^15.1.0", - "@rollup/plugin-json": "^4.1.0", - "@rollup/plugin-multi-entry": "^4.0.0", - "@rollup/plugin-node-resolve": "^9.0.0", - "abortcontroller-polyfill": "^1.7.3", - "auto-changelog": "^2.4.0", - "body-parser": "^1.20.0", - "chalk": "^5.2.0", - "coveralls": "^3.1.1", - "cross-env": "^7.0.3", - "dev-null": "^0.1.1", - "dtslint": "^4.2.1", - "es6-promise": "^4.2.8", - "eslint": "^8.17.0", - "express": "^4.18.1", - "formdata-node": "^5.0.0", - "formidable": "^2.0.1", - "fs-extra": "^10.1.0", - "get-stream": "^3.0.0", - "gulp": "^4.0.2", - "gzip-size": "^7.0.0", - "handlebars": "^4.7.7", - "husky": "^8.0.2", - "istanbul-instrumenter-loader": "^3.0.1", + "coveralls": "^3.0.0", + "es6-promise": "^4.2.4", + "grunt": "^1.3.0", + "grunt-banner": "^0.6.0", + "grunt-cli": "^1.2.0", + "grunt-contrib-clean": "^1.1.0", + "grunt-contrib-watch": "^1.0.0", + "grunt-eslint": "^23.0.0", + "grunt-karma": "^4.0.0", + "grunt-mocha-test": "^0.13.3", + "grunt-ts": "^6.0.0-beta.19", + "grunt-webpack": "^4.0.2", + "istanbul-instrumenter-loader": "^1.0.0", "jasmine-core": "^2.4.1", - "karma": "^6.3.17", - "karma-chrome-launcher": "^3.1.1", - "karma-firefox-launcher": "^2.1.2", + "karma": "^6.3.2", + "karma-chrome-launcher": "^3.1.0", + "karma-firefox-launcher": "^2.1.0", "karma-jasmine": "^1.1.1", "karma-jasmine-ajax": "^0.1.13", - "karma-rollup-preprocessor": "^7.0.8", "karma-safari-launcher": "^1.0.0", "karma-sauce-launcher": "^4.3.6", "karma-sinon": "^1.0.5", "karma-sourcemap-loader": "^0.3.8", - "memoizee": "^0.4.15", - "minimist": "^1.2.7", - "mocha": "^10.0.0", - "multer": "^1.4.4", - "pretty-bytes": "^6.0.0", - "release-it": "^15.5.1", - "rollup": "^2.67.0", - "rollup-plugin-auto-external": "^2.0.0", - "rollup-plugin-bundle-size": "^1.0.3", - "rollup-plugin-terser": "^7.0.2", + "karma-webpack": "^4.0.2", + "load-grunt-tasks": "^3.5.2", + "minimist": "^1.2.0", + "mocha": "^8.2.1", "sinon": "^4.5.0", - "stream-throttle": "^0.1.3", - "string-replace-async": "^3.0.2", "terser-webpack-plugin": "^4.2.3", - "typescript": "^4.8.4" + "typescript": "^4.0.5", + "url-search-params": "^0.10.0", + "webpack": "^4.44.2", + "webpack-dev-server": "^3.11.0" }, "browser": { - "./lib/adapters/http.js": "./lib/helpers/null.js", - "./lib/platform/node/index.js": "./lib/platform/browser/index.js", - "./lib/platform/node/classes/FormData.js": "./lib/helpers/null.js" + "./lib/adapters/http.js": "./lib/adapters/xhr.js" }, "jsdelivr": "dist/axios.min.js", "unpkg": "dist/axios.min.js", "typings": "./index.d.ts", "dependencies": { - "follow-redirects": "^1.15.4", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" + "follow-redirects": "^1.14.0" }, "bundlesize": [ { "path": "./dist/axios.min.js", "threshold": "5kB" } - ], - "contributors": [ - "Matt Zabriskie (https://github.com/mzabriskie)", - "Nick Uraltsev (https://github.com/nickuraltsev)", - "Jay (https://github.com/jasonsaayman)", - "Dmitriy Mozgovoy (https://github.com/DigitalBrainJS)", - "Emily Morehouse (https://github.com/emilyemorehouse)", - "Rubén Norte (https://github.com/rubennorte)", - "Justin Beckwith (https://github.com/JustinBeckwith)", - "Martti Laine (https://github.com/codeclown)", - "Xianming Zhong (https://github.com/chinesedfan)", - "Rikki Gibson (https://github.com/RikkiGibson)", - "Remco Haszing (https://github.com/remcohaszing)", - "Yasu Flores (https://github.com/yasuf)", - "Ben Carp (https://github.com/carpben)" - ], - "sideEffects": false, - "release-it": { - "git": { - "commitMessage": "chore(release): v${version}", - "push": true, - "commit": true, - "tag": true, - "requireCommits": false, - "requireCleanWorkingDir": false - }, - "github": { - "release": true, - "draft": true - }, - "npm": { - "publish": false, - "ignoreVersion": false - }, - "plugins": { - "@release-it/conventional-changelog": { - "preset": "angular", - "infile": "CHANGELOG.md", - "header": "# Changelog" - } - }, - "hooks": { - "before:init": "npm test", - "after:bump": "gulp version --bump ${version} && npm run build && npm run test:build:version && git add ./dist && git add ./package-lock.json", - "before:release": "npm run release:changelog:fix", - "after:release": "echo Successfully released ${name} v${version} to ${repo.repository}." - } - }, - "commitlint": { - "rules": { - "header-max-length": [ - 2, - "always", - 130 - ] - }, - "extends": [ - "@commitlint/config-conventional" - ] - } -} \ No newline at end of file + ] +} diff --git a/node_modules/combined-stream/License b/node_modules/combined-stream/License deleted file mode 100644 index 4804b7a..0000000 --- a/node_modules/combined-stream/License +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2011 Debuggable Limited - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/combined-stream/Readme.md b/node_modules/combined-stream/Readme.md deleted file mode 100644 index 9e367b5..0000000 --- a/node_modules/combined-stream/Readme.md +++ /dev/null @@ -1,138 +0,0 @@ -# combined-stream - -A stream that emits multiple other streams one after another. - -**NB** Currently `combined-stream` works with streams version 1 only. There is ongoing effort to switch this library to streams version 2. Any help is welcome. :) Meanwhile you can explore other libraries that provide streams2 support with more or less compatibility with `combined-stream`. - -- [combined-stream2](https://www.npmjs.com/package/combined-stream2): A drop-in streams2-compatible replacement for the combined-stream module. - -- [multistream](https://www.npmjs.com/package/multistream): A stream that emits multiple other streams one after another. - -## Installation - -``` bash -npm install combined-stream -``` - -## Usage - -Here is a simple example that shows how you can use combined-stream to combine -two files into one: - -``` javascript -var CombinedStream = require('combined-stream'); -var fs = require('fs'); - -var combinedStream = CombinedStream.create(); -combinedStream.append(fs.createReadStream('file1.txt')); -combinedStream.append(fs.createReadStream('file2.txt')); - -combinedStream.pipe(fs.createWriteStream('combined.txt')); -``` - -While the example above works great, it will pause all source streams until -they are needed. If you don't want that to happen, you can set `pauseStreams` -to `false`: - -``` javascript -var CombinedStream = require('combined-stream'); -var fs = require('fs'); - -var combinedStream = CombinedStream.create({pauseStreams: false}); -combinedStream.append(fs.createReadStream('file1.txt')); -combinedStream.append(fs.createReadStream('file2.txt')); - -combinedStream.pipe(fs.createWriteStream('combined.txt')); -``` - -However, what if you don't have all the source streams yet, or you don't want -to allocate the resources (file descriptors, memory, etc.) for them right away? -Well, in that case you can simply provide a callback that supplies the stream -by calling a `next()` function: - -``` javascript -var CombinedStream = require('combined-stream'); -var fs = require('fs'); - -var combinedStream = CombinedStream.create(); -combinedStream.append(function(next) { - next(fs.createReadStream('file1.txt')); -}); -combinedStream.append(function(next) { - next(fs.createReadStream('file2.txt')); -}); - -combinedStream.pipe(fs.createWriteStream('combined.txt')); -``` - -## API - -### CombinedStream.create([options]) - -Returns a new combined stream object. Available options are: - -* `maxDataSize` -* `pauseStreams` - -The effect of those options is described below. - -### combinedStream.pauseStreams = `true` - -Whether to apply back pressure to the underlaying streams. If set to `false`, -the underlaying streams will never be paused. If set to `true`, the -underlaying streams will be paused right after being appended, as well as when -`delayedStream.pipe()` wants to throttle. - -### combinedStream.maxDataSize = `2 * 1024 * 1024` - -The maximum amount of bytes (or characters) to buffer for all source streams. -If this value is exceeded, `combinedStream` emits an `'error'` event. - -### combinedStream.dataSize = `0` - -The amount of bytes (or characters) currently buffered by `combinedStream`. - -### combinedStream.append(stream) - -Appends the given `stream` to the combinedStream object. If `pauseStreams` is -set to `true, this stream will also be paused right away. - -`streams` can also be a function that takes one parameter called `next`. `next` -is a function that must be invoked in order to provide the `next` stream, see -example above. - -Regardless of how the `stream` is appended, combined-stream always attaches an -`'error'` listener to it, so you don't have to do that manually. - -Special case: `stream` can also be a String or Buffer. - -### combinedStream.write(data) - -You should not call this, `combinedStream` takes care of piping the appended -streams into itself for you. - -### combinedStream.resume() - -Causes `combinedStream` to start drain the streams it manages. The function is -idempotent, and also emits a `'resume'` event each time which usually goes to -the stream that is currently being drained. - -### combinedStream.pause(); - -If `combinedStream.pauseStreams` is set to `false`, this does nothing. -Otherwise a `'pause'` event is emitted, this goes to the stream that is -currently being drained, so you can use it to apply back pressure. - -### combinedStream.end(); - -Sets `combinedStream.writable` to false, emits an `'end'` event, and removes -all streams from the queue. - -### combinedStream.destroy(); - -Same as `combinedStream.end()`, except it emits a `'close'` event instead of -`'end'`. - -## License - -combined-stream is licensed under the MIT license. diff --git a/node_modules/combined-stream/lib/combined_stream.js b/node_modules/combined-stream/lib/combined_stream.js deleted file mode 100644 index 125f097..0000000 --- a/node_modules/combined-stream/lib/combined_stream.js +++ /dev/null @@ -1,208 +0,0 @@ -var util = require('util'); -var Stream = require('stream').Stream; -var DelayedStream = require('delayed-stream'); - -module.exports = CombinedStream; -function CombinedStream() { - this.writable = false; - this.readable = true; - this.dataSize = 0; - this.maxDataSize = 2 * 1024 * 1024; - this.pauseStreams = true; - - this._released = false; - this._streams = []; - this._currentStream = null; - this._insideLoop = false; - this._pendingNext = false; -} -util.inherits(CombinedStream, Stream); - -CombinedStream.create = function(options) { - var combinedStream = new this(); - - options = options || {}; - for (var option in options) { - combinedStream[option] = options[option]; - } - - return combinedStream; -}; - -CombinedStream.isStreamLike = function(stream) { - return (typeof stream !== 'function') - && (typeof stream !== 'string') - && (typeof stream !== 'boolean') - && (typeof stream !== 'number') - && (!Buffer.isBuffer(stream)); -}; - -CombinedStream.prototype.append = function(stream) { - var isStreamLike = CombinedStream.isStreamLike(stream); - - if (isStreamLike) { - if (!(stream instanceof DelayedStream)) { - var newStream = DelayedStream.create(stream, { - maxDataSize: Infinity, - pauseStream: this.pauseStreams, - }); - stream.on('data', this._checkDataSize.bind(this)); - stream = newStream; - } - - this._handleErrors(stream); - - if (this.pauseStreams) { - stream.pause(); - } - } - - this._streams.push(stream); - return this; -}; - -CombinedStream.prototype.pipe = function(dest, options) { - Stream.prototype.pipe.call(this, dest, options); - this.resume(); - return dest; -}; - -CombinedStream.prototype._getNext = function() { - this._currentStream = null; - - if (this._insideLoop) { - this._pendingNext = true; - return; // defer call - } - - this._insideLoop = true; - try { - do { - this._pendingNext = false; - this._realGetNext(); - } while (this._pendingNext); - } finally { - this._insideLoop = false; - } -}; - -CombinedStream.prototype._realGetNext = function() { - var stream = this._streams.shift(); - - - if (typeof stream == 'undefined') { - this.end(); - return; - } - - if (typeof stream !== 'function') { - this._pipeNext(stream); - return; - } - - var getStream = stream; - getStream(function(stream) { - var isStreamLike = CombinedStream.isStreamLike(stream); - if (isStreamLike) { - stream.on('data', this._checkDataSize.bind(this)); - this._handleErrors(stream); - } - - this._pipeNext(stream); - }.bind(this)); -}; - -CombinedStream.prototype._pipeNext = function(stream) { - this._currentStream = stream; - - var isStreamLike = CombinedStream.isStreamLike(stream); - if (isStreamLike) { - stream.on('end', this._getNext.bind(this)); - stream.pipe(this, {end: false}); - return; - } - - var value = stream; - this.write(value); - this._getNext(); -}; - -CombinedStream.prototype._handleErrors = function(stream) { - var self = this; - stream.on('error', function(err) { - self._emitError(err); - }); -}; - -CombinedStream.prototype.write = function(data) { - this.emit('data', data); -}; - -CombinedStream.prototype.pause = function() { - if (!this.pauseStreams) { - return; - } - - if(this.pauseStreams && this._currentStream && typeof(this._currentStream.pause) == 'function') this._currentStream.pause(); - this.emit('pause'); -}; - -CombinedStream.prototype.resume = function() { - if (!this._released) { - this._released = true; - this.writable = true; - this._getNext(); - } - - if(this.pauseStreams && this._currentStream && typeof(this._currentStream.resume) == 'function') this._currentStream.resume(); - this.emit('resume'); -}; - -CombinedStream.prototype.end = function() { - this._reset(); - this.emit('end'); -}; - -CombinedStream.prototype.destroy = function() { - this._reset(); - this.emit('close'); -}; - -CombinedStream.prototype._reset = function() { - this.writable = false; - this._streams = []; - this._currentStream = null; -}; - -CombinedStream.prototype._checkDataSize = function() { - this._updateDataSize(); - if (this.dataSize <= this.maxDataSize) { - return; - } - - var message = - 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.'; - this._emitError(new Error(message)); -}; - -CombinedStream.prototype._updateDataSize = function() { - this.dataSize = 0; - - var self = this; - this._streams.forEach(function(stream) { - if (!stream.dataSize) { - return; - } - - self.dataSize += stream.dataSize; - }); - - if (this._currentStream && this._currentStream.dataSize) { - this.dataSize += this._currentStream.dataSize; - } -}; - -CombinedStream.prototype._emitError = function(err) { - this._reset(); - this.emit('error', err); -}; diff --git a/node_modules/combined-stream/package.json b/node_modules/combined-stream/package.json deleted file mode 100644 index 6982b6d..0000000 --- a/node_modules/combined-stream/package.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "author": "Felix Geisendörfer (http://debuggable.com/)", - "name": "combined-stream", - "description": "A stream that emits multiple other streams one after another.", - "version": "1.0.8", - "homepage": "https://github.com/felixge/node-combined-stream", - "repository": { - "type": "git", - "url": "git://github.com/felixge/node-combined-stream.git" - }, - "main": "./lib/combined_stream", - "scripts": { - "test": "node test/run.js" - }, - "engines": { - "node": ">= 0.8" - }, - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "devDependencies": { - "far": "~0.0.7" - }, - "license": "MIT" -} diff --git a/node_modules/combined-stream/yarn.lock b/node_modules/combined-stream/yarn.lock deleted file mode 100644 index 7edf418..0000000 --- a/node_modules/combined-stream/yarn.lock +++ /dev/null @@ -1,17 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - -far@~0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/far/-/far-0.0.7.tgz#01c1fd362bcd26ce9cf161af3938aa34619f79a7" - dependencies: - oop "0.0.3" - -oop@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/oop/-/oop-0.0.3.tgz#70fa405a5650891a194fdc82ca68dad6dabf4401" diff --git a/node_modules/delayed-stream/.npmignore b/node_modules/delayed-stream/.npmignore deleted file mode 100644 index 9daeafb..0000000 --- a/node_modules/delayed-stream/.npmignore +++ /dev/null @@ -1 +0,0 @@ -test diff --git a/node_modules/delayed-stream/License b/node_modules/delayed-stream/License deleted file mode 100644 index 4804b7a..0000000 --- a/node_modules/delayed-stream/License +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2011 Debuggable Limited - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/delayed-stream/Makefile b/node_modules/delayed-stream/Makefile deleted file mode 100644 index b4ff85a..0000000 --- a/node_modules/delayed-stream/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -SHELL := /bin/bash - -test: - @./test/run.js - -.PHONY: test - diff --git a/node_modules/delayed-stream/Readme.md b/node_modules/delayed-stream/Readme.md deleted file mode 100644 index aca36f9..0000000 --- a/node_modules/delayed-stream/Readme.md +++ /dev/null @@ -1,141 +0,0 @@ -# delayed-stream - -Buffers events from a stream until you are ready to handle them. - -## Installation - -``` bash -npm install delayed-stream -``` - -## Usage - -The following example shows how to write a http echo server that delays its -response by 1000 ms. - -``` javascript -var DelayedStream = require('delayed-stream'); -var http = require('http'); - -http.createServer(function(req, res) { - var delayed = DelayedStream.create(req); - - setTimeout(function() { - res.writeHead(200); - delayed.pipe(res); - }, 1000); -}); -``` - -If you are not using `Stream#pipe`, you can also manually release the buffered -events by calling `delayedStream.resume()`: - -``` javascript -var delayed = DelayedStream.create(req); - -setTimeout(function() { - // Emit all buffered events and resume underlaying source - delayed.resume(); -}, 1000); -``` - -## Implementation - -In order to use this meta stream properly, here are a few things you should -know about the implementation. - -### Event Buffering / Proxying - -All events of the `source` stream are hijacked by overwriting the `source.emit` -method. Until node implements a catch-all event listener, this is the only way. - -However, delayed-stream still continues to emit all events it captures on the -`source`, regardless of whether you have released the delayed stream yet or -not. - -Upon creation, delayed-stream captures all `source` events and stores them in -an internal event buffer. Once `delayedStream.release()` is called, all -buffered events are emitted on the `delayedStream`, and the event buffer is -cleared. After that, delayed-stream merely acts as a proxy for the underlaying -source. - -### Error handling - -Error events on `source` are buffered / proxied just like any other events. -However, `delayedStream.create` attaches a no-op `'error'` listener to the -`source`. This way you only have to handle errors on the `delayedStream` -object, rather than in two places. - -### Buffer limits - -delayed-stream provides a `maxDataSize` property that can be used to limit -the amount of data being buffered. In order to protect you from bad `source` -streams that don't react to `source.pause()`, this feature is enabled by -default. - -## API - -### DelayedStream.create(source, [options]) - -Returns a new `delayedStream`. Available options are: - -* `pauseStream` -* `maxDataSize` - -The description for those properties can be found below. - -### delayedStream.source - -The `source` stream managed by this object. This is useful if you are -passing your `delayedStream` around, and you still want to access properties -on the `source` object. - -### delayedStream.pauseStream = true - -Whether to pause the underlaying `source` when calling -`DelayedStream.create()`. Modifying this property afterwards has no effect. - -### delayedStream.maxDataSize = 1024 * 1024 - -The amount of data to buffer before emitting an `error`. - -If the underlaying source is emitting `Buffer` objects, the `maxDataSize` -refers to bytes. - -If the underlaying source is emitting JavaScript strings, the size refers to -characters. - -If you know what you are doing, you can set this property to `Infinity` to -disable this feature. You can also modify this property during runtime. - -### delayedStream.dataSize = 0 - -The amount of data buffered so far. - -### delayedStream.readable - -An ECMA5 getter that returns the value of `source.readable`. - -### delayedStream.resume() - -If the `delayedStream` has not been released so far, `delayedStream.release()` -is called. - -In either case, `source.resume()` is called. - -### delayedStream.pause() - -Calls `source.pause()`. - -### delayedStream.pipe(dest) - -Calls `delayedStream.resume()` and then proxies the arguments to `source.pipe`. - -### delayedStream.release() - -Emits and clears all events that have been buffered up so far. This does not -resume the underlaying source, use `delayedStream.resume()` instead. - -## License - -delayed-stream is licensed under the MIT license. diff --git a/node_modules/delayed-stream/lib/delayed_stream.js b/node_modules/delayed-stream/lib/delayed_stream.js deleted file mode 100644 index b38fc85..0000000 --- a/node_modules/delayed-stream/lib/delayed_stream.js +++ /dev/null @@ -1,107 +0,0 @@ -var Stream = require('stream').Stream; -var util = require('util'); - -module.exports = DelayedStream; -function DelayedStream() { - this.source = null; - this.dataSize = 0; - this.maxDataSize = 1024 * 1024; - this.pauseStream = true; - - this._maxDataSizeExceeded = false; - this._released = false; - this._bufferedEvents = []; -} -util.inherits(DelayedStream, Stream); - -DelayedStream.create = function(source, options) { - var delayedStream = new this(); - - options = options || {}; - for (var option in options) { - delayedStream[option] = options[option]; - } - - delayedStream.source = source; - - var realEmit = source.emit; - source.emit = function() { - delayedStream._handleEmit(arguments); - return realEmit.apply(source, arguments); - }; - - source.on('error', function() {}); - if (delayedStream.pauseStream) { - source.pause(); - } - - return delayedStream; -}; - -Object.defineProperty(DelayedStream.prototype, 'readable', { - configurable: true, - enumerable: true, - get: function() { - return this.source.readable; - } -}); - -DelayedStream.prototype.setEncoding = function() { - return this.source.setEncoding.apply(this.source, arguments); -}; - -DelayedStream.prototype.resume = function() { - if (!this._released) { - this.release(); - } - - this.source.resume(); -}; - -DelayedStream.prototype.pause = function() { - this.source.pause(); -}; - -DelayedStream.prototype.release = function() { - this._released = true; - - this._bufferedEvents.forEach(function(args) { - this.emit.apply(this, args); - }.bind(this)); - this._bufferedEvents = []; -}; - -DelayedStream.prototype.pipe = function() { - var r = Stream.prototype.pipe.apply(this, arguments); - this.resume(); - return r; -}; - -DelayedStream.prototype._handleEmit = function(args) { - if (this._released) { - this.emit.apply(this, args); - return; - } - - if (args[0] === 'data') { - this.dataSize += args[1].length; - this._checkIfMaxDataSizeExceeded(); - } - - this._bufferedEvents.push(args); -}; - -DelayedStream.prototype._checkIfMaxDataSizeExceeded = function() { - if (this._maxDataSizeExceeded) { - return; - } - - if (this.dataSize <= this.maxDataSize) { - return; - } - - this._maxDataSizeExceeded = true; - var message = - 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.' - this.emit('error', new Error(message)); -}; diff --git a/node_modules/delayed-stream/package.json b/node_modules/delayed-stream/package.json deleted file mode 100644 index eea3291..0000000 --- a/node_modules/delayed-stream/package.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "author": "Felix Geisendörfer (http://debuggable.com/)", - "contributors": [ - "Mike Atkins " - ], - "name": "delayed-stream", - "description": "Buffers events from a stream until you are ready to handle them.", - "license": "MIT", - "version": "1.0.0", - "homepage": "https://github.com/felixge/node-delayed-stream", - "repository": { - "type": "git", - "url": "git://github.com/felixge/node-delayed-stream.git" - }, - "main": "./lib/delayed_stream", - "engines": { - "node": ">=0.4.0" - }, - "scripts": { - "test": "make test" - }, - "dependencies": {}, - "devDependencies": { - "fake": "0.2.0", - "far": "0.0.1" - } -} diff --git a/node_modules/follow-redirects/index.js b/node_modules/follow-redirects/index.js index f58b933..c649cab 100644 --- a/node_modules/follow-redirects/index.js +++ b/node_modules/follow-redirects/index.js @@ -461,7 +461,7 @@ RedirectableRequest.prototype._processResponse = function (response) { redirectUrl.protocol !== "https:" || redirectUrl.host !== currentHost && !isSubdomain(redirectUrl.host, currentHost)) { - removeMatchingHeaders(/^(?:authorization|cookie)$/i, this._options.headers); + removeMatchingHeaders(/^(?:(?:proxy-)?authorization|cookie)$/i, this._options.headers); } // Evaluate the beforeRedirect callback diff --git a/node_modules/follow-redirects/package.json b/node_modules/follow-redirects/package.json index 9b87663..149943b 100644 --- a/node_modules/follow-redirects/package.json +++ b/node_modules/follow-redirects/package.json @@ -1,6 +1,6 @@ { "name": "follow-redirects", - "version": "1.15.5", + "version": "1.15.6", "description": "HTTP and HTTPS modules that follow redirects.", "license": "MIT", "main": "index.js", diff --git a/node_modules/form-data/License b/node_modules/form-data/License deleted file mode 100644 index c7ff12a..0000000 --- a/node_modules/form-data/License +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2012 Felix Geisendörfer (felix@debuggable.com) and contributors - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. diff --git a/node_modules/form-data/README.md.bak b/node_modules/form-data/README.md.bak deleted file mode 100644 index 298a1a2..0000000 --- a/node_modules/form-data/README.md.bak +++ /dev/null @@ -1,358 +0,0 @@ -# Form-Data [![NPM Module](https://img.shields.io/npm/v/form-data.svg)](https://www.npmjs.com/package/form-data) [![Join the chat at https://gitter.im/form-data/form-data](http://form-data.github.io/images/gitterbadge.svg)](https://gitter.im/form-data/form-data) - -A library to create readable ```"multipart/form-data"``` streams. Can be used to submit forms and file uploads to other web applications. - -The API of this library is inspired by the [XMLHttpRequest-2 FormData Interface][xhr2-fd]. - -[xhr2-fd]: http://dev.w3.org/2006/webapi/XMLHttpRequest-2/Overview.html#the-formdata-interface - -[![Linux Build](https://img.shields.io/travis/form-data/form-data/v4.0.0.svg?label=linux:6.x-12.x)](https://travis-ci.org/form-data/form-data) -[![MacOS Build](https://img.shields.io/travis/form-data/form-data/v4.0.0.svg?label=macos:6.x-12.x)](https://travis-ci.org/form-data/form-data) -[![Windows Build](https://img.shields.io/travis/form-data/form-data/v4.0.0.svg?label=windows:6.x-12.x)](https://travis-ci.org/form-data/form-data) - -[![Coverage Status](https://img.shields.io/coveralls/form-data/form-data/v4.0.0.svg?label=code+coverage)](https://coveralls.io/github/form-data/form-data?branch=master) -[![Dependency Status](https://img.shields.io/david/form-data/form-data.svg)](https://david-dm.org/form-data/form-data) - -## Install - -``` -npm install --save form-data -``` - -## Usage - -In this example we are constructing a form with 3 fields that contain a string, -a buffer and a file stream. - -``` javascript -var FormData = require('form-data'); -var fs = require('fs'); - -var form = new FormData(); -form.append('my_field', 'my value'); -form.append('my_buffer', new Buffer(10)); -form.append('my_file', fs.createReadStream('/foo/bar.jpg')); -``` - -Also you can use http-response stream: - -``` javascript -var FormData = require('form-data'); -var http = require('http'); - -var form = new FormData(); - -http.request('http://nodejs.org/images/logo.png', function(response) { - form.append('my_field', 'my value'); - form.append('my_buffer', new Buffer(10)); - form.append('my_logo', response); -}); -``` - -Or @mikeal's [request](https://github.com/request/request) stream: - -``` javascript -var FormData = require('form-data'); -var request = require('request'); - -var form = new FormData(); - -form.append('my_field', 'my value'); -form.append('my_buffer', new Buffer(10)); -form.append('my_logo', request('http://nodejs.org/images/logo.png')); -``` - -In order to submit this form to a web application, call ```submit(url, [callback])``` method: - -``` javascript -form.submit('http://example.org/', function(err, res) { - // res – response object (http.IncomingMessage) // - res.resume(); -}); - -``` - -For more advanced request manipulations ```submit()``` method returns ```http.ClientRequest``` object, or you can choose from one of the alternative submission methods. - -### Custom options - -You can provide custom options, such as `maxDataSize`: - -``` javascript -var FormData = require('form-data'); - -var form = new FormData({ maxDataSize: 20971520 }); -form.append('my_field', 'my value'); -form.append('my_buffer', /* something big */); -``` - -List of available options could be found in [combined-stream](https://github.com/felixge/node-combined-stream/blob/master/lib/combined_stream.js#L7-L15) - -### Alternative submission methods - -You can use node's http client interface: - -``` javascript -var http = require('http'); - -var request = http.request({ - method: 'post', - host: 'example.org', - path: '/upload', - headers: form.getHeaders() -}); - -form.pipe(request); - -request.on('response', function(res) { - console.log(res.statusCode); -}); -``` - -Or if you would prefer the `'Content-Length'` header to be set for you: - -``` javascript -form.submit('example.org/upload', function(err, res) { - console.log(res.statusCode); -}); -``` - -To use custom headers and pre-known length in parts: - -``` javascript -var CRLF = '\r\n'; -var form = new FormData(); - -var options = { - header: CRLF + '--' + form.getBoundary() + CRLF + 'X-Custom-Header: 123' + CRLF + CRLF, - knownLength: 1 -}; - -form.append('my_buffer', buffer, options); - -form.submit('http://example.com/', function(err, res) { - if (err) throw err; - console.log('Done'); -}); -``` - -Form-Data can recognize and fetch all the required information from common types of streams (```fs.readStream```, ```http.response``` and ```mikeal's request```), for some other types of streams you'd need to provide "file"-related information manually: - -``` javascript -someModule.stream(function(err, stdout, stderr) { - if (err) throw err; - - var form = new FormData(); - - form.append('file', stdout, { - filename: 'unicycle.jpg', // ... or: - filepath: 'photos/toys/unicycle.jpg', - contentType: 'image/jpeg', - knownLength: 19806 - }); - - form.submit('http://example.com/', function(err, res) { - if (err) throw err; - console.log('Done'); - }); -}); -``` - -The `filepath` property overrides `filename` and may contain a relative path. This is typically used when uploading [multiple files from a directory](https://wicg.github.io/entries-api/#dom-htmlinputelement-webkitdirectory). - -For edge cases, like POST request to URL with query string or to pass HTTP auth credentials, object can be passed to `form.submit()` as first parameter: - -``` javascript -form.submit({ - host: 'example.com', - path: '/probably.php?extra=params', - auth: 'username:password' -}, function(err, res) { - console.log(res.statusCode); -}); -``` - -In case you need to also send custom HTTP headers with the POST request, you can use the `headers` key in first parameter of `form.submit()`: - -``` javascript -form.submit({ - host: 'example.com', - path: '/surelynot.php', - headers: {'x-test-header': 'test-header-value'} -}, function(err, res) { - console.log(res.statusCode); -}); -``` - -### Methods - -- [_Void_ append( **String** _field_, **Mixed** _value_ [, **Mixed** _options_] )](https://github.com/form-data/form-data#void-append-string-field-mixed-value--mixed-options-). -- [_Headers_ getHeaders( [**Headers** _userHeaders_] )](https://github.com/form-data/form-data#array-getheaders-array-userheaders-) -- [_String_ getBoundary()](https://github.com/form-data/form-data#string-getboundary) -- [_Void_ setBoundary()](https://github.com/form-data/form-data#void-setboundary) -- [_Buffer_ getBuffer()](https://github.com/form-data/form-data#buffer-getbuffer) -- [_Integer_ getLengthSync()](https://github.com/form-data/form-data#integer-getlengthsync) -- [_Integer_ getLength( **function** _callback_ )](https://github.com/form-data/form-data#integer-getlength-function-callback-) -- [_Boolean_ hasKnownLength()](https://github.com/form-data/form-data#boolean-hasknownlength) -- [_Request_ submit( _params_, **function** _callback_ )](https://github.com/form-data/form-data#request-submit-params-function-callback-) -- [_String_ toString()](https://github.com/form-data/form-data#string-tostring) - -#### _Void_ append( **String** _field_, **Mixed** _value_ [, **Mixed** _options_] ) -Append data to the form. You can submit about any format (string, integer, boolean, buffer, etc.). However, Arrays are not supported and need to be turned into strings by the user. -```javascript -var form = new FormData(); -form.append( 'my_string', 'my value' ); -form.append( 'my_integer', 1 ); -form.append( 'my_boolean', true ); -form.append( 'my_buffer', new Buffer(10) ); -form.append( 'my_array_as_json', JSON.stringify( ['bird','cute'] ) ) -``` - -You may provide a string for options, or an object. -```javascript -// Set filename by providing a string for options -form.append( 'my_file', fs.createReadStream('/foo/bar.jpg'), 'bar.jpg' ); - -// provide an object. -form.append( 'my_file', fs.createReadStream('/foo/bar.jpg'), {filename: 'bar.jpg', contentType: 'image/jpeg', knownLength: 19806} ); -``` - -#### _Headers_ getHeaders( [**Headers** _userHeaders_] ) -This method adds the correct `content-type` header to the provided array of `userHeaders`. - -#### _String_ getBoundary() -Return the boundary of the formData. By default, the boundary consists of 26 `-` followed by 24 numbers -for example: -```javascript ---------------------------515890814546601021194782 -``` - -#### _Void_ setBoundary(String _boundary_) -Set the boundary string, overriding the default behavior described above. - -_Note: The boundary must be unique and may not appear in the data._ - -#### _Buffer_ getBuffer() -Return the full formdata request package, as a Buffer. You can insert this Buffer in e.g. Axios to send multipart data. -```javascript -var form = new FormData(); -form.append( 'my_buffer', Buffer.from([0x4a,0x42,0x20,0x52,0x6f,0x63,0x6b,0x73]) ); -form.append( 'my_file', fs.readFileSync('/foo/bar.jpg') ); - -axios.post( 'https://example.com/path/to/api', - form.getBuffer(), - form.getHeaders() - ) -``` -**Note:** Because the output is of type Buffer, you can only append types that are accepted by Buffer: *string, Buffer, ArrayBuffer, Array, or Array-like Object*. A ReadStream for example will result in an error. - -#### _Integer_ getLengthSync() -Same as `getLength` but synchronous. - -_Note: getLengthSync __doesn't__ calculate streams length._ - -#### _Integer_ getLength( **function** _callback_ ) -Returns the `Content-Length` async. The callback is used to handle errors and continue once the length has been calculated -```javascript -this.getLength(function(err, length) { - if (err) { - this._error(err); - return; - } - - // add content length - request.setHeader('Content-Length', length); - - ... -}.bind(this)); -``` - -#### _Boolean_ hasKnownLength() -Checks if the length of added values is known. - -#### _Request_ submit( _params_, **function** _callback_ ) -Submit the form to a web application. -```javascript -var form = new FormData(); -form.append( 'my_string', 'Hello World' ); - -form.submit( 'http://example.com/', function(err, res) { - // res – response object (http.IncomingMessage) // - res.resume(); -} ); -``` - -#### _String_ toString() -Returns the form data as a string. Don't use this if you are sending files or buffers, use `getBuffer()` instead. - -### Integration with other libraries - -#### Request - -Form submission using [request](https://github.com/request/request): - -```javascript -var formData = { - my_field: 'my_value', - my_file: fs.createReadStream(__dirname + '/unicycle.jpg'), -}; - -request.post({url:'http://service.com/upload', formData: formData}, function(err, httpResponse, body) { - if (err) { - return console.error('upload failed:', err); - } - console.log('Upload successful! Server responded with:', body); -}); -``` - -For more details see [request readme](https://github.com/request/request#multipartform-data-multipart-form-uploads). - -#### node-fetch - -You can also submit a form using [node-fetch](https://github.com/bitinn/node-fetch): - -```javascript -var form = new FormData(); - -form.append('a', 1); - -fetch('http://example.com', { method: 'POST', body: form }) - .then(function(res) { - return res.json(); - }).then(function(json) { - console.log(json); - }); -``` - -#### axios - -In Node.js you can post a file using [axios](https://github.com/axios/axios): -```javascript -const form = new FormData(); -const stream = fs.createReadStream(PATH_TO_FILE); - -form.append('image', stream); - -// In Node.js environment you need to set boundary in the header field 'Content-Type' by calling method `getHeaders` -const formHeaders = form.getHeaders(); - -axios.post('http://example.com', form, { - headers: { - ...formHeaders, - }, -}) -.then(response => response) -.catch(error => error) -``` - -## Notes - -- ```getLengthSync()``` method DOESN'T calculate length for streams, use ```knownLength``` options as workaround. -- ```getLength(cb)``` will send an error as first parameter of callback if stream length cannot be calculated (e.g. send in custom streams w/o using ```knownLength```). -- ```submit``` will not add `content-length` if form length is unknown or not calculable. -- Starting version `2.x` FormData has dropped support for `node@0.10.x`. -- Starting version `3.x` FormData has dropped support for `node@4.x`. - -## License - -Form-Data is released under the [MIT](License) license. diff --git a/node_modules/form-data/Readme.md b/node_modules/form-data/Readme.md deleted file mode 100644 index 298a1a2..0000000 --- a/node_modules/form-data/Readme.md +++ /dev/null @@ -1,358 +0,0 @@ -# Form-Data [![NPM Module](https://img.shields.io/npm/v/form-data.svg)](https://www.npmjs.com/package/form-data) [![Join the chat at https://gitter.im/form-data/form-data](http://form-data.github.io/images/gitterbadge.svg)](https://gitter.im/form-data/form-data) - -A library to create readable ```"multipart/form-data"``` streams. Can be used to submit forms and file uploads to other web applications. - -The API of this library is inspired by the [XMLHttpRequest-2 FormData Interface][xhr2-fd]. - -[xhr2-fd]: http://dev.w3.org/2006/webapi/XMLHttpRequest-2/Overview.html#the-formdata-interface - -[![Linux Build](https://img.shields.io/travis/form-data/form-data/v4.0.0.svg?label=linux:6.x-12.x)](https://travis-ci.org/form-data/form-data) -[![MacOS Build](https://img.shields.io/travis/form-data/form-data/v4.0.0.svg?label=macos:6.x-12.x)](https://travis-ci.org/form-data/form-data) -[![Windows Build](https://img.shields.io/travis/form-data/form-data/v4.0.0.svg?label=windows:6.x-12.x)](https://travis-ci.org/form-data/form-data) - -[![Coverage Status](https://img.shields.io/coveralls/form-data/form-data/v4.0.0.svg?label=code+coverage)](https://coveralls.io/github/form-data/form-data?branch=master) -[![Dependency Status](https://img.shields.io/david/form-data/form-data.svg)](https://david-dm.org/form-data/form-data) - -## Install - -``` -npm install --save form-data -``` - -## Usage - -In this example we are constructing a form with 3 fields that contain a string, -a buffer and a file stream. - -``` javascript -var FormData = require('form-data'); -var fs = require('fs'); - -var form = new FormData(); -form.append('my_field', 'my value'); -form.append('my_buffer', new Buffer(10)); -form.append('my_file', fs.createReadStream('/foo/bar.jpg')); -``` - -Also you can use http-response stream: - -``` javascript -var FormData = require('form-data'); -var http = require('http'); - -var form = new FormData(); - -http.request('http://nodejs.org/images/logo.png', function(response) { - form.append('my_field', 'my value'); - form.append('my_buffer', new Buffer(10)); - form.append('my_logo', response); -}); -``` - -Or @mikeal's [request](https://github.com/request/request) stream: - -``` javascript -var FormData = require('form-data'); -var request = require('request'); - -var form = new FormData(); - -form.append('my_field', 'my value'); -form.append('my_buffer', new Buffer(10)); -form.append('my_logo', request('http://nodejs.org/images/logo.png')); -``` - -In order to submit this form to a web application, call ```submit(url, [callback])``` method: - -``` javascript -form.submit('http://example.org/', function(err, res) { - // res – response object (http.IncomingMessage) // - res.resume(); -}); - -``` - -For more advanced request manipulations ```submit()``` method returns ```http.ClientRequest``` object, or you can choose from one of the alternative submission methods. - -### Custom options - -You can provide custom options, such as `maxDataSize`: - -``` javascript -var FormData = require('form-data'); - -var form = new FormData({ maxDataSize: 20971520 }); -form.append('my_field', 'my value'); -form.append('my_buffer', /* something big */); -``` - -List of available options could be found in [combined-stream](https://github.com/felixge/node-combined-stream/blob/master/lib/combined_stream.js#L7-L15) - -### Alternative submission methods - -You can use node's http client interface: - -``` javascript -var http = require('http'); - -var request = http.request({ - method: 'post', - host: 'example.org', - path: '/upload', - headers: form.getHeaders() -}); - -form.pipe(request); - -request.on('response', function(res) { - console.log(res.statusCode); -}); -``` - -Or if you would prefer the `'Content-Length'` header to be set for you: - -``` javascript -form.submit('example.org/upload', function(err, res) { - console.log(res.statusCode); -}); -``` - -To use custom headers and pre-known length in parts: - -``` javascript -var CRLF = '\r\n'; -var form = new FormData(); - -var options = { - header: CRLF + '--' + form.getBoundary() + CRLF + 'X-Custom-Header: 123' + CRLF + CRLF, - knownLength: 1 -}; - -form.append('my_buffer', buffer, options); - -form.submit('http://example.com/', function(err, res) { - if (err) throw err; - console.log('Done'); -}); -``` - -Form-Data can recognize and fetch all the required information from common types of streams (```fs.readStream```, ```http.response``` and ```mikeal's request```), for some other types of streams you'd need to provide "file"-related information manually: - -``` javascript -someModule.stream(function(err, stdout, stderr) { - if (err) throw err; - - var form = new FormData(); - - form.append('file', stdout, { - filename: 'unicycle.jpg', // ... or: - filepath: 'photos/toys/unicycle.jpg', - contentType: 'image/jpeg', - knownLength: 19806 - }); - - form.submit('http://example.com/', function(err, res) { - if (err) throw err; - console.log('Done'); - }); -}); -``` - -The `filepath` property overrides `filename` and may contain a relative path. This is typically used when uploading [multiple files from a directory](https://wicg.github.io/entries-api/#dom-htmlinputelement-webkitdirectory). - -For edge cases, like POST request to URL with query string or to pass HTTP auth credentials, object can be passed to `form.submit()` as first parameter: - -``` javascript -form.submit({ - host: 'example.com', - path: '/probably.php?extra=params', - auth: 'username:password' -}, function(err, res) { - console.log(res.statusCode); -}); -``` - -In case you need to also send custom HTTP headers with the POST request, you can use the `headers` key in first parameter of `form.submit()`: - -``` javascript -form.submit({ - host: 'example.com', - path: '/surelynot.php', - headers: {'x-test-header': 'test-header-value'} -}, function(err, res) { - console.log(res.statusCode); -}); -``` - -### Methods - -- [_Void_ append( **String** _field_, **Mixed** _value_ [, **Mixed** _options_] )](https://github.com/form-data/form-data#void-append-string-field-mixed-value--mixed-options-). -- [_Headers_ getHeaders( [**Headers** _userHeaders_] )](https://github.com/form-data/form-data#array-getheaders-array-userheaders-) -- [_String_ getBoundary()](https://github.com/form-data/form-data#string-getboundary) -- [_Void_ setBoundary()](https://github.com/form-data/form-data#void-setboundary) -- [_Buffer_ getBuffer()](https://github.com/form-data/form-data#buffer-getbuffer) -- [_Integer_ getLengthSync()](https://github.com/form-data/form-data#integer-getlengthsync) -- [_Integer_ getLength( **function** _callback_ )](https://github.com/form-data/form-data#integer-getlength-function-callback-) -- [_Boolean_ hasKnownLength()](https://github.com/form-data/form-data#boolean-hasknownlength) -- [_Request_ submit( _params_, **function** _callback_ )](https://github.com/form-data/form-data#request-submit-params-function-callback-) -- [_String_ toString()](https://github.com/form-data/form-data#string-tostring) - -#### _Void_ append( **String** _field_, **Mixed** _value_ [, **Mixed** _options_] ) -Append data to the form. You can submit about any format (string, integer, boolean, buffer, etc.). However, Arrays are not supported and need to be turned into strings by the user. -```javascript -var form = new FormData(); -form.append( 'my_string', 'my value' ); -form.append( 'my_integer', 1 ); -form.append( 'my_boolean', true ); -form.append( 'my_buffer', new Buffer(10) ); -form.append( 'my_array_as_json', JSON.stringify( ['bird','cute'] ) ) -``` - -You may provide a string for options, or an object. -```javascript -// Set filename by providing a string for options -form.append( 'my_file', fs.createReadStream('/foo/bar.jpg'), 'bar.jpg' ); - -// provide an object. -form.append( 'my_file', fs.createReadStream('/foo/bar.jpg'), {filename: 'bar.jpg', contentType: 'image/jpeg', knownLength: 19806} ); -``` - -#### _Headers_ getHeaders( [**Headers** _userHeaders_] ) -This method adds the correct `content-type` header to the provided array of `userHeaders`. - -#### _String_ getBoundary() -Return the boundary of the formData. By default, the boundary consists of 26 `-` followed by 24 numbers -for example: -```javascript ---------------------------515890814546601021194782 -``` - -#### _Void_ setBoundary(String _boundary_) -Set the boundary string, overriding the default behavior described above. - -_Note: The boundary must be unique and may not appear in the data._ - -#### _Buffer_ getBuffer() -Return the full formdata request package, as a Buffer. You can insert this Buffer in e.g. Axios to send multipart data. -```javascript -var form = new FormData(); -form.append( 'my_buffer', Buffer.from([0x4a,0x42,0x20,0x52,0x6f,0x63,0x6b,0x73]) ); -form.append( 'my_file', fs.readFileSync('/foo/bar.jpg') ); - -axios.post( 'https://example.com/path/to/api', - form.getBuffer(), - form.getHeaders() - ) -``` -**Note:** Because the output is of type Buffer, you can only append types that are accepted by Buffer: *string, Buffer, ArrayBuffer, Array, or Array-like Object*. A ReadStream for example will result in an error. - -#### _Integer_ getLengthSync() -Same as `getLength` but synchronous. - -_Note: getLengthSync __doesn't__ calculate streams length._ - -#### _Integer_ getLength( **function** _callback_ ) -Returns the `Content-Length` async. The callback is used to handle errors and continue once the length has been calculated -```javascript -this.getLength(function(err, length) { - if (err) { - this._error(err); - return; - } - - // add content length - request.setHeader('Content-Length', length); - - ... -}.bind(this)); -``` - -#### _Boolean_ hasKnownLength() -Checks if the length of added values is known. - -#### _Request_ submit( _params_, **function** _callback_ ) -Submit the form to a web application. -```javascript -var form = new FormData(); -form.append( 'my_string', 'Hello World' ); - -form.submit( 'http://example.com/', function(err, res) { - // res – response object (http.IncomingMessage) // - res.resume(); -} ); -``` - -#### _String_ toString() -Returns the form data as a string. Don't use this if you are sending files or buffers, use `getBuffer()` instead. - -### Integration with other libraries - -#### Request - -Form submission using [request](https://github.com/request/request): - -```javascript -var formData = { - my_field: 'my_value', - my_file: fs.createReadStream(__dirname + '/unicycle.jpg'), -}; - -request.post({url:'http://service.com/upload', formData: formData}, function(err, httpResponse, body) { - if (err) { - return console.error('upload failed:', err); - } - console.log('Upload successful! Server responded with:', body); -}); -``` - -For more details see [request readme](https://github.com/request/request#multipartform-data-multipart-form-uploads). - -#### node-fetch - -You can also submit a form using [node-fetch](https://github.com/bitinn/node-fetch): - -```javascript -var form = new FormData(); - -form.append('a', 1); - -fetch('http://example.com', { method: 'POST', body: form }) - .then(function(res) { - return res.json(); - }).then(function(json) { - console.log(json); - }); -``` - -#### axios - -In Node.js you can post a file using [axios](https://github.com/axios/axios): -```javascript -const form = new FormData(); -const stream = fs.createReadStream(PATH_TO_FILE); - -form.append('image', stream); - -// In Node.js environment you need to set boundary in the header field 'Content-Type' by calling method `getHeaders` -const formHeaders = form.getHeaders(); - -axios.post('http://example.com', form, { - headers: { - ...formHeaders, - }, -}) -.then(response => response) -.catch(error => error) -``` - -## Notes - -- ```getLengthSync()``` method DOESN'T calculate length for streams, use ```knownLength``` options as workaround. -- ```getLength(cb)``` will send an error as first parameter of callback if stream length cannot be calculated (e.g. send in custom streams w/o using ```knownLength```). -- ```submit``` will not add `content-length` if form length is unknown or not calculable. -- Starting version `2.x` FormData has dropped support for `node@0.10.x`. -- Starting version `3.x` FormData has dropped support for `node@4.x`. - -## License - -Form-Data is released under the [MIT](License) license. diff --git a/node_modules/form-data/index.d.ts b/node_modules/form-data/index.d.ts deleted file mode 100644 index 295e9e9..0000000 --- a/node_modules/form-data/index.d.ts +++ /dev/null @@ -1,62 +0,0 @@ -// Definitions by: Carlos Ballesteros Velasco -// Leon Yu -// BendingBender -// Maple Miao - -/// -import * as stream from 'stream'; -import * as http from 'http'; - -export = FormData; - -// Extracted because @types/node doesn't export interfaces. -interface ReadableOptions { - highWaterMark?: number; - encoding?: string; - objectMode?: boolean; - read?(this: stream.Readable, size: number): void; - destroy?(this: stream.Readable, error: Error | null, callback: (error: Error | null) => void): void; - autoDestroy?: boolean; -} - -interface Options extends ReadableOptions { - writable?: boolean; - readable?: boolean; - dataSize?: number; - maxDataSize?: number; - pauseStreams?: boolean; -} - -declare class FormData extends stream.Readable { - constructor(options?: Options); - append(key: string, value: any, options?: FormData.AppendOptions | string): void; - getHeaders(userHeaders?: FormData.Headers): FormData.Headers; - submit( - params: string | FormData.SubmitOptions, - callback?: (error: Error | null, response: http.IncomingMessage) => void - ): http.ClientRequest; - getBuffer(): Buffer; - setBoundary(boundary: string): void; - getBoundary(): string; - getLength(callback: (err: Error | null, length: number) => void): void; - getLengthSync(): number; - hasKnownLength(): boolean; -} - -declare namespace FormData { - interface Headers { - [key: string]: any; - } - - interface AppendOptions { - header?: string | Headers; - knownLength?: number; - filename?: string; - filepath?: string; - contentType?: string; - } - - interface SubmitOptions extends http.RequestOptions { - protocol?: 'https:' | 'http:'; - } -} diff --git a/node_modules/form-data/lib/browser.js b/node_modules/form-data/lib/browser.js deleted file mode 100644 index 09e7c70..0000000 --- a/node_modules/form-data/lib/browser.js +++ /dev/null @@ -1,2 +0,0 @@ -/* eslint-env browser */ -module.exports = typeof self == 'object' ? self.FormData : window.FormData; diff --git a/node_modules/form-data/lib/form_data.js b/node_modules/form-data/lib/form_data.js deleted file mode 100644 index 18dc819..0000000 --- a/node_modules/form-data/lib/form_data.js +++ /dev/null @@ -1,501 +0,0 @@ -var CombinedStream = require('combined-stream'); -var util = require('util'); -var path = require('path'); -var http = require('http'); -var https = require('https'); -var parseUrl = require('url').parse; -var fs = require('fs'); -var Stream = require('stream').Stream; -var mime = require('mime-types'); -var asynckit = require('asynckit'); -var populate = require('./populate.js'); - -// Public API -module.exports = FormData; - -// make it a Stream -util.inherits(FormData, CombinedStream); - -/** - * Create readable "multipart/form-data" streams. - * Can be used to submit forms - * and file uploads to other web applications. - * - * @constructor - * @param {Object} options - Properties to be added/overriden for FormData and CombinedStream - */ -function FormData(options) { - if (!(this instanceof FormData)) { - return new FormData(options); - } - - this._overheadLength = 0; - this._valueLength = 0; - this._valuesToMeasure = []; - - CombinedStream.call(this); - - options = options || {}; - for (var option in options) { - this[option] = options[option]; - } -} - -FormData.LINE_BREAK = '\r\n'; -FormData.DEFAULT_CONTENT_TYPE = 'application/octet-stream'; - -FormData.prototype.append = function(field, value, options) { - - options = options || {}; - - // allow filename as single option - if (typeof options == 'string') { - options = {filename: options}; - } - - var append = CombinedStream.prototype.append.bind(this); - - // all that streamy business can't handle numbers - if (typeof value == 'number') { - value = '' + value; - } - - // https://github.com/felixge/node-form-data/issues/38 - if (util.isArray(value)) { - // Please convert your array into string - // the way web server expects it - this._error(new Error('Arrays are not supported.')); - return; - } - - var header = this._multiPartHeader(field, value, options); - var footer = this._multiPartFooter(); - - append(header); - append(value); - append(footer); - - // pass along options.knownLength - this._trackLength(header, value, options); -}; - -FormData.prototype._trackLength = function(header, value, options) { - var valueLength = 0; - - // used w/ getLengthSync(), when length is known. - // e.g. for streaming directly from a remote server, - // w/ a known file a size, and not wanting to wait for - // incoming file to finish to get its size. - if (options.knownLength != null) { - valueLength += +options.knownLength; - } else if (Buffer.isBuffer(value)) { - valueLength = value.length; - } else if (typeof value === 'string') { - valueLength = Buffer.byteLength(value); - } - - this._valueLength += valueLength; - - // @check why add CRLF? does this account for custom/multiple CRLFs? - this._overheadLength += - Buffer.byteLength(header) + - FormData.LINE_BREAK.length; - - // empty or either doesn't have path or not an http response or not a stream - if (!value || ( !value.path && !(value.readable && value.hasOwnProperty('httpVersion')) && !(value instanceof Stream))) { - return; - } - - // no need to bother with the length - if (!options.knownLength) { - this._valuesToMeasure.push(value); - } -}; - -FormData.prototype._lengthRetriever = function(value, callback) { - - if (value.hasOwnProperty('fd')) { - - // take read range into a account - // `end` = Infinity –> read file till the end - // - // TODO: Looks like there is bug in Node fs.createReadStream - // it doesn't respect `end` options without `start` options - // Fix it when node fixes it. - // https://github.com/joyent/node/issues/7819 - if (value.end != undefined && value.end != Infinity && value.start != undefined) { - - // when end specified - // no need to calculate range - // inclusive, starts with 0 - callback(null, value.end + 1 - (value.start ? value.start : 0)); - - // not that fast snoopy - } else { - // still need to fetch file size from fs - fs.stat(value.path, function(err, stat) { - - var fileSize; - - if (err) { - callback(err); - return; - } - - // update final size based on the range options - fileSize = stat.size - (value.start ? value.start : 0); - callback(null, fileSize); - }); - } - - // or http response - } else if (value.hasOwnProperty('httpVersion')) { - callback(null, +value.headers['content-length']); - - // or request stream http://github.com/mikeal/request - } else if (value.hasOwnProperty('httpModule')) { - // wait till response come back - value.on('response', function(response) { - value.pause(); - callback(null, +response.headers['content-length']); - }); - value.resume(); - - // something else - } else { - callback('Unknown stream'); - } -}; - -FormData.prototype._multiPartHeader = function(field, value, options) { - // custom header specified (as string)? - // it becomes responsible for boundary - // (e.g. to handle extra CRLFs on .NET servers) - if (typeof options.header == 'string') { - return options.header; - } - - var contentDisposition = this._getContentDisposition(value, options); - var contentType = this._getContentType(value, options); - - var contents = ''; - var headers = { - // add custom disposition as third element or keep it two elements if not - 'Content-Disposition': ['form-data', 'name="' + field + '"'].concat(contentDisposition || []), - // if no content type. allow it to be empty array - 'Content-Type': [].concat(contentType || []) - }; - - // allow custom headers. - if (typeof options.header == 'object') { - populate(headers, options.header); - } - - var header; - for (var prop in headers) { - if (!headers.hasOwnProperty(prop)) continue; - header = headers[prop]; - - // skip nullish headers. - if (header == null) { - continue; - } - - // convert all headers to arrays. - if (!Array.isArray(header)) { - header = [header]; - } - - // add non-empty headers. - if (header.length) { - contents += prop + ': ' + header.join('; ') + FormData.LINE_BREAK; - } - } - - return '--' + this.getBoundary() + FormData.LINE_BREAK + contents + FormData.LINE_BREAK; -}; - -FormData.prototype._getContentDisposition = function(value, options) { - - var filename - , contentDisposition - ; - - if (typeof options.filepath === 'string') { - // custom filepath for relative paths - filename = path.normalize(options.filepath).replace(/\\/g, '/'); - } else if (options.filename || value.name || value.path) { - // custom filename take precedence - // formidable and the browser add a name property - // fs- and request- streams have path property - filename = path.basename(options.filename || value.name || value.path); - } else if (value.readable && value.hasOwnProperty('httpVersion')) { - // or try http response - filename = path.basename(value.client._httpMessage.path || ''); - } - - if (filename) { - contentDisposition = 'filename="' + filename + '"'; - } - - return contentDisposition; -}; - -FormData.prototype._getContentType = function(value, options) { - - // use custom content-type above all - var contentType = options.contentType; - - // or try `name` from formidable, browser - if (!contentType && value.name) { - contentType = mime.lookup(value.name); - } - - // or try `path` from fs-, request- streams - if (!contentType && value.path) { - contentType = mime.lookup(value.path); - } - - // or if it's http-reponse - if (!contentType && value.readable && value.hasOwnProperty('httpVersion')) { - contentType = value.headers['content-type']; - } - - // or guess it from the filepath or filename - if (!contentType && (options.filepath || options.filename)) { - contentType = mime.lookup(options.filepath || options.filename); - } - - // fallback to the default content type if `value` is not simple value - if (!contentType && typeof value == 'object') { - contentType = FormData.DEFAULT_CONTENT_TYPE; - } - - return contentType; -}; - -FormData.prototype._multiPartFooter = function() { - return function(next) { - var footer = FormData.LINE_BREAK; - - var lastPart = (this._streams.length === 0); - if (lastPart) { - footer += this._lastBoundary(); - } - - next(footer); - }.bind(this); -}; - -FormData.prototype._lastBoundary = function() { - return '--' + this.getBoundary() + '--' + FormData.LINE_BREAK; -}; - -FormData.prototype.getHeaders = function(userHeaders) { - var header; - var formHeaders = { - 'content-type': 'multipart/form-data; boundary=' + this.getBoundary() - }; - - for (header in userHeaders) { - if (userHeaders.hasOwnProperty(header)) { - formHeaders[header.toLowerCase()] = userHeaders[header]; - } - } - - return formHeaders; -}; - -FormData.prototype.setBoundary = function(boundary) { - this._boundary = boundary; -}; - -FormData.prototype.getBoundary = function() { - if (!this._boundary) { - this._generateBoundary(); - } - - return this._boundary; -}; - -FormData.prototype.getBuffer = function() { - var dataBuffer = new Buffer.alloc( 0 ); - var boundary = this.getBoundary(); - - // Create the form content. Add Line breaks to the end of data. - for (var i = 0, len = this._streams.length; i < len; i++) { - if (typeof this._streams[i] !== 'function') { - - // Add content to the buffer. - if(Buffer.isBuffer(this._streams[i])) { - dataBuffer = Buffer.concat( [dataBuffer, this._streams[i]]); - }else { - dataBuffer = Buffer.concat( [dataBuffer, Buffer.from(this._streams[i])]); - } - - // Add break after content. - if (typeof this._streams[i] !== 'string' || this._streams[i].substring( 2, boundary.length + 2 ) !== boundary) { - dataBuffer = Buffer.concat( [dataBuffer, Buffer.from(FormData.LINE_BREAK)] ); - } - } - } - - // Add the footer and return the Buffer object. - return Buffer.concat( [dataBuffer, Buffer.from(this._lastBoundary())] ); -}; - -FormData.prototype._generateBoundary = function() { - // This generates a 50 character boundary similar to those used by Firefox. - // They are optimized for boyer-moore parsing. - var boundary = '--------------------------'; - for (var i = 0; i < 24; i++) { - boundary += Math.floor(Math.random() * 10).toString(16); - } - - this._boundary = boundary; -}; - -// Note: getLengthSync DOESN'T calculate streams length -// As workaround one can calculate file size manually -// and add it as knownLength option -FormData.prototype.getLengthSync = function() { - var knownLength = this._overheadLength + this._valueLength; - - // Don't get confused, there are 3 "internal" streams for each keyval pair - // so it basically checks if there is any value added to the form - if (this._streams.length) { - knownLength += this._lastBoundary().length; - } - - // https://github.com/form-data/form-data/issues/40 - if (!this.hasKnownLength()) { - // Some async length retrievers are present - // therefore synchronous length calculation is false. - // Please use getLength(callback) to get proper length - this._error(new Error('Cannot calculate proper length in synchronous way.')); - } - - return knownLength; -}; - -// Public API to check if length of added values is known -// https://github.com/form-data/form-data/issues/196 -// https://github.com/form-data/form-data/issues/262 -FormData.prototype.hasKnownLength = function() { - var hasKnownLength = true; - - if (this._valuesToMeasure.length) { - hasKnownLength = false; - } - - return hasKnownLength; -}; - -FormData.prototype.getLength = function(cb) { - var knownLength = this._overheadLength + this._valueLength; - - if (this._streams.length) { - knownLength += this._lastBoundary().length; - } - - if (!this._valuesToMeasure.length) { - process.nextTick(cb.bind(this, null, knownLength)); - return; - } - - asynckit.parallel(this._valuesToMeasure, this._lengthRetriever, function(err, values) { - if (err) { - cb(err); - return; - } - - values.forEach(function(length) { - knownLength += length; - }); - - cb(null, knownLength); - }); -}; - -FormData.prototype.submit = function(params, cb) { - var request - , options - , defaults = {method: 'post'} - ; - - // parse provided url if it's string - // or treat it as options object - if (typeof params == 'string') { - - params = parseUrl(params); - options = populate({ - port: params.port, - path: params.pathname, - host: params.hostname, - protocol: params.protocol - }, defaults); - - // use custom params - } else { - - options = populate(params, defaults); - // if no port provided use default one - if (!options.port) { - options.port = options.protocol == 'https:' ? 443 : 80; - } - } - - // put that good code in getHeaders to some use - options.headers = this.getHeaders(params.headers); - - // https if specified, fallback to http in any other case - if (options.protocol == 'https:') { - request = https.request(options); - } else { - request = http.request(options); - } - - // get content length and fire away - this.getLength(function(err, length) { - if (err && err !== 'Unknown stream') { - this._error(err); - return; - } - - // add content length - if (length) { - request.setHeader('Content-Length', length); - } - - this.pipe(request); - if (cb) { - var onResponse; - - var callback = function (error, responce) { - request.removeListener('error', callback); - request.removeListener('response', onResponse); - - return cb.call(this, error, responce); - }; - - onResponse = callback.bind(this, null); - - request.on('error', callback); - request.on('response', onResponse); - } - }.bind(this)); - - return request; -}; - -FormData.prototype._error = function(err) { - if (!this.error) { - this.error = err; - this.pause(); - this.emit('error', err); - } -}; - -FormData.prototype.toString = function () { - return '[object FormData]'; -}; diff --git a/node_modules/form-data/lib/populate.js b/node_modules/form-data/lib/populate.js deleted file mode 100644 index 4d35738..0000000 --- a/node_modules/form-data/lib/populate.js +++ /dev/null @@ -1,10 +0,0 @@ -// populates missing values -module.exports = function(dst, src) { - - Object.keys(src).forEach(function(prop) - { - dst[prop] = dst[prop] || src[prop]; - }); - - return dst; -}; diff --git a/node_modules/form-data/package.json b/node_modules/form-data/package.json deleted file mode 100644 index 0f20240..0000000 --- a/node_modules/form-data/package.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "author": "Felix Geisendörfer (http://debuggable.com/)", - "name": "form-data", - "description": "A library to create readable \"multipart/form-data\" streams. Can be used to submit forms and file uploads to other web applications.", - "version": "4.0.0", - "repository": { - "type": "git", - "url": "git://github.com/form-data/form-data.git" - }, - "main": "./lib/form_data", - "browser": "./lib/browser", - "typings": "./index.d.ts", - "scripts": { - "pretest": "rimraf coverage test/tmp", - "test": "istanbul cover test/run.js", - "posttest": "istanbul report lcov text", - "lint": "eslint lib/*.js test/*.js test/integration/*.js", - "report": "istanbul report lcov text", - "ci-lint": "is-node-modern 8 && npm run lint || is-node-not-modern 8", - "ci-test": "npm run test && npm run browser && npm run report", - "predebug": "rimraf coverage test/tmp", - "debug": "verbose=1 ./test/run.js", - "browser": "browserify -t browserify-istanbul test/run-browser.js | obake --coverage", - "check": "istanbul check-coverage coverage/coverage*.json", - "files": "pkgfiles --sort=name", - "get-version": "node -e \"console.log(require('./package.json').version)\"", - "update-readme": "sed -i.bak 's/\\/master\\.svg/\\/v'$(npm --silent run get-version)'.svg/g' README.md", - "restore-readme": "mv README.md.bak README.md", - "prepublish": "in-publish && npm run update-readme || not-in-publish", - "postpublish": "npm run restore-readme" - }, - "pre-commit": [ - "lint", - "ci-test", - "check" - ], - "engines": { - "node": ">= 6" - }, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "devDependencies": { - "@types/node": "^12.0.10", - "browserify": "^13.1.1", - "browserify-istanbul": "^2.0.0", - "coveralls": "^3.0.4", - "cross-spawn": "^6.0.5", - "eslint": "^6.0.1", - "fake": "^0.2.2", - "far": "^0.0.7", - "formidable": "^1.0.17", - "in-publish": "^2.0.0", - "is-node-modern": "^1.0.0", - "istanbul": "^0.4.5", - "obake": "^0.1.2", - "puppeteer": "^1.19.0", - "pkgfiles": "^2.3.0", - "pre-commit": "^1.1.3", - "request": "^2.88.0", - "rimraf": "^2.7.1", - "tape": "^4.6.2", - "typescript": "^3.5.2" - }, - "license": "MIT" -} diff --git a/node_modules/multer/README.md b/node_modules/multer/README.md index 7f5d080..32c2cc3 100644 --- a/node_modules/multer/README.md +++ b/node_modules/multer/README.md @@ -9,12 +9,10 @@ on top of [busboy](https://github.com/mscdex/busboy) for maximum efficiency. This README is also available in other languages: -- [Español](https://github.com/expressjs/multer/blob/master/doc/README-es.md) (Spanish) - [简体中文](https://github.com/expressjs/multer/blob/master/doc/README-zh-cn.md) (Chinese) - [한국어](https://github.com/expressjs/multer/blob/master/doc/README-ko.md) (Korean) - [Русский язык](https://github.com/expressjs/multer/blob/master/doc/README-ru.md) (Russian) -- [Việt Nam](https://github.com/expressjs/multer/blob/master/doc/README-vi.md) (Vietnam) -- [Português](https://github.com/expressjs/multer/blob/master/doc/README-pt-br.md) (Portuguese Brazil) +- [Português](https://github.com/expressjs/multer/blob/master/doc/README-pt-br.md) (Português Brazil) ## Installation diff --git a/node_modules/multer/lib/make-middleware.js b/node_modules/multer/lib/make-middleware.js index 6627cf4..d22042e 100644 --- a/node_modules/multer/lib/make-middleware.js +++ b/node_modules/multer/lib/make-middleware.js @@ -1,6 +1,7 @@ var is = require('type-is') var Busboy = require('busboy') var extend = require('xtend') +var onFinished = require('on-finished') var appendField = require('append-field') var Counter = require('./counter') @@ -8,6 +9,10 @@ var MulterError = require('./multer-error') var FileAppender = require('./file-appender') var removeUploadedFiles = require('./remove-uploaded-files') +function drainStream (stream) { + stream.on('readable', stream.read.bind(stream)) +} + function makeMiddleware (setup) { return function multerMiddleware (req, res, next) { if (!is(req, ['multipart'])) return next() @@ -25,7 +30,7 @@ function makeMiddleware (setup) { var busboy try { - busboy = Busboy({ headers: req.headers, limits: limits, preservePath: preservePath }) + busboy = new Busboy({ headers: req.headers, limits: limits, preservePath: preservePath }) } catch (err) { return next(err) } @@ -40,9 +45,12 @@ function makeMiddleware (setup) { function done (err) { if (isDone) return isDone = true + req.unpipe(busboy) + drainStream(req) busboy.removeAllListeners() - next(err) + + onFinished(req, function () { next(err) }) } function indicateDone () { @@ -72,9 +80,8 @@ function makeMiddleware (setup) { } // handle text field data - busboy.on('field', function (fieldname, value, { nameTruncated, valueTruncated }) { - if (fieldname == null) return abortWithCode('MISSING_FIELD_NAME') - if (nameTruncated) return abortWithCode('LIMIT_FIELD_KEY') + busboy.on('field', function (fieldname, value, fieldnameTruncated, valueTruncated) { + if (fieldnameTruncated) return abortWithCode('LIMIT_FIELD_KEY') if (valueTruncated) return abortWithCode('LIMIT_FIELD_VALUE', fieldname) // Work around bug in Busboy (https://github.com/mscdex/busboy/issues/6) @@ -86,7 +93,7 @@ function makeMiddleware (setup) { }) // handle files - busboy.on('file', function (fieldname, fileStream, { filename, encoding, mimeType }) { + busboy.on('file', function (fieldname, fileStream, filename, encoding, mimetype) { // don't attach to the files object, if there is no file if (!filename) return fileStream.resume() @@ -99,7 +106,7 @@ function makeMiddleware (setup) { fieldname: fieldname, originalname: filename, encoding: encoding, - mimetype: mimeType + mimetype: mimetype } var placeholder = appender.insertPlaceholder(file) @@ -161,7 +168,7 @@ function makeMiddleware (setup) { busboy.on('partsLimit', function () { abortWithCode('LIMIT_PART_COUNT') }) busboy.on('filesLimit', function () { abortWithCode('LIMIT_FILE_COUNT') }) busboy.on('fieldsLimit', function () { abortWithCode('LIMIT_FIELD_COUNT') }) - busboy.on('close', function () { + busboy.on('finish', function () { readFinished = true indicateDone() }) diff --git a/node_modules/multer/lib/multer-error.js b/node_modules/multer/lib/multer-error.js index d56b00e..4c91d29 100644 --- a/node_modules/multer/lib/multer-error.js +++ b/node_modules/multer/lib/multer-error.js @@ -7,8 +7,7 @@ var errorMessages = { LIMIT_FIELD_KEY: 'Field name too long', LIMIT_FIELD_VALUE: 'Field value too long', LIMIT_FIELD_COUNT: 'Too many fields', - LIMIT_UNEXPECTED_FILE: 'Unexpected field', - MISSING_FIELD_NAME: 'Field name missing' + LIMIT_UNEXPECTED_FILE: 'Unexpected field' } function MulterError (code, field) { diff --git a/node_modules/multer/package.json b/node_modules/multer/package.json index 8545a73..da0c5ba 100644 --- a/node_modules/multer/package.json +++ b/node_modules/multer/package.json @@ -1,7 +1,7 @@ { "name": "multer", "description": "Middleware for handling `multipart/form-data`.", - "version": "1.4.5-lts.1", + "version": "1.4.3", "contributors": [ "Hage Yaapa (http://www.hacksparrow.com)", "Jaret Pfluger ", @@ -20,10 +20,11 @@ ], "dependencies": { "append-field": "^1.0.0", - "busboy": "^1.0.0", + "busboy": "^0.2.11", "concat-stream": "^1.5.2", "mkdirp": "^0.5.4", "object-assign": "^4.1.1", + "on-finished": "^2.3.0", "type-is": "^1.6.4", "xtend": "^4.0.0" }, @@ -38,7 +39,7 @@ "testdata-w3c-json-form": "^1.0.0" }, "engines": { - "node": ">= 6.0.0" + "node": ">= 0.10.0" }, "files": [ "LICENSE", diff --git a/node_modules/proxy-from-env/.eslintrc b/node_modules/proxy-from-env/.eslintrc deleted file mode 100644 index a51449b..0000000 --- a/node_modules/proxy-from-env/.eslintrc +++ /dev/null @@ -1,29 +0,0 @@ -{ - "env": { - "node": true - }, - "rules": { - "array-bracket-spacing": [2, "never"], - "block-scoped-var": 2, - "brace-style": [2, "1tbs"], - "camelcase": 1, - "computed-property-spacing": [2, "never"], - "curly": 2, - "eol-last": 2, - "eqeqeq": [2, "smart"], - "max-depth": [1, 3], - "max-len": [1, 80], - "max-statements": [1, 15], - "new-cap": 1, - "no-extend-native": 2, - "no-mixed-spaces-and-tabs": 2, - "no-trailing-spaces": 2, - "no-unused-vars": 1, - "no-use-before-define": [2, "nofunc"], - "object-curly-spacing": [2, "never"], - "quotes": [2, "single", "avoid-escape"], - "semi": [2, "always"], - "keyword-spacing": [2, {"before": true, "after": true}], - "space-unary-ops": 2 - } -} diff --git a/node_modules/proxy-from-env/.travis.yml b/node_modules/proxy-from-env/.travis.yml deleted file mode 100644 index 64a05f9..0000000 --- a/node_modules/proxy-from-env/.travis.yml +++ /dev/null @@ -1,10 +0,0 @@ -language: node_js -node_js: - - node - - lts/* -script: - - npm run lint - # test-coverage will also run the tests, but does not print helpful output upon test failure. - # So we also run the tests separately. - - npm run test - - npm run test-coverage && cat coverage/lcov.info | ./node_modules/.bin/coveralls && rm -rf coverage diff --git a/node_modules/proxy-from-env/LICENSE b/node_modules/proxy-from-env/LICENSE deleted file mode 100644 index 8f25097..0000000 --- a/node_modules/proxy-from-env/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -The MIT License - -Copyright (C) 2016-2018 Rob Wu - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/proxy-from-env/README.md b/node_modules/proxy-from-env/README.md deleted file mode 100644 index e82520c..0000000 --- a/node_modules/proxy-from-env/README.md +++ /dev/null @@ -1,131 +0,0 @@ -# proxy-from-env - -[![Build Status](https://travis-ci.org/Rob--W/proxy-from-env.svg?branch=master)](https://travis-ci.org/Rob--W/proxy-from-env) -[![Coverage Status](https://coveralls.io/repos/github/Rob--W/proxy-from-env/badge.svg?branch=master)](https://coveralls.io/github/Rob--W/proxy-from-env?branch=master) - -`proxy-from-env` is a Node.js package that exports a function (`getProxyForUrl`) -that takes an input URL (a string or -[`url.parse`](https://nodejs.org/docs/latest/api/url.html#url_url_parsing)'s -return value) and returns the desired proxy URL (also a string) based on -standard proxy environment variables. If no proxy is set, an empty string is -returned. - -It is your responsibility to actually proxy the request using the given URL. - -Installation: - -```sh -npm install proxy-from-env -``` - -## Example -This example shows how the data for a URL can be fetched via the -[`http` module](https://nodejs.org/api/http.html), in a proxy-aware way. - -```javascript -var http = require('http'); -var parseUrl = require('url').parse; -var getProxyForUrl = require('proxy-from-env').getProxyForUrl; - -var some_url = 'http://example.com/something'; - -// // Example, if there is a proxy server at 10.0.0.1:1234, then setting the -// // http_proxy environment variable causes the request to go through a proxy. -// process.env.http_proxy = 'http://10.0.0.1:1234'; -// -// // But if the host to be proxied is listed in NO_PROXY, then the request is -// // not proxied (but a direct request is made). -// process.env.no_proxy = 'example.com'; - -var proxy_url = getProxyForUrl(some_url); // <-- Our magic. -if (proxy_url) { - // Should be proxied through proxy_url. - var parsed_some_url = parseUrl(some_url); - var parsed_proxy_url = parseUrl(proxy_url); - // A HTTP proxy is quite simple. It is similar to a normal request, except the - // path is an absolute URL, and the proxied URL's host is put in the header - // instead of the server's actual host. - httpOptions = { - protocol: parsed_proxy_url.protocol, - hostname: parsed_proxy_url.hostname, - port: parsed_proxy_url.port, - path: parsed_some_url.href, - headers: { - Host: parsed_some_url.host, // = host name + optional port. - }, - }; -} else { - // Direct request. - httpOptions = some_url; -} -http.get(httpOptions, function(res) { - var responses = []; - res.on('data', function(chunk) { responses.push(chunk); }); - res.on('end', function() { console.log(responses.join('')); }); -}); - -``` - -## Environment variables -The environment variables can be specified in lowercase or uppercase, with the -lowercase name having precedence over the uppercase variant. A variable that is -not set has the same meaning as a variable that is set but has no value. - -### NO\_PROXY - -`NO_PROXY` is a list of host names (optionally with a port). If the input URL -matches any of the entries in `NO_PROXY`, then the input URL should be fetched -by a direct request (i.e. without a proxy). - -Matching follows the following rules: - -- `NO_PROXY=*` disables all proxies. -- Space and commas may be used to separate the entries in the `NO_PROXY` list. -- If `NO_PROXY` does not contain any entries, then proxies are never disabled. -- If a port is added after the host name, then the ports must match. If the URL - does not have an explicit port name, the protocol's default port is used. -- Generally, the proxy is only disabled if the host name is an exact match for - an entry in the `NO_PROXY` list. The only exceptions are entries that start - with a dot or with a wildcard; then the proxy is disabled if the host name - ends with the entry. - -See `test.js` for examples of what should match and what does not. - -### \*\_PROXY - -The environment variable used for the proxy depends on the protocol of the URL. -For example, `https://example.com` uses the "https" protocol, and therefore the -proxy to be used is `HTTPS_PROXY` (_NOT_ `HTTP_PROXY`, which is _only_ used for -http:-URLs). - -The library is not limited to http(s), other schemes such as -`FTP_PROXY` (ftp:), -`WSS_PROXY` (wss:), -`WS_PROXY` (ws:) -are also supported. - -If present, `ALL_PROXY` is used as fallback if there is no other match. - - -## External resources -The exact way of parsing the environment variables is not codified in any -standard. This library is designed to be compatible with formats as expected by -existing software. -The following resources were used to determine the desired behavior: - -- cURL: - https://curl.haxx.se/docs/manpage.html#ENVIRONMENT - https://github.com/curl/curl/blob/4af40b3646d3b09f68e419f7ca866ff395d1f897/lib/url.c#L4446-L4514 - https://github.com/curl/curl/blob/4af40b3646d3b09f68e419f7ca866ff395d1f897/lib/url.c#L4608-L4638 - -- wget: - https://www.gnu.org/software/wget/manual/wget.html#Proxies - http://git.savannah.gnu.org/cgit/wget.git/tree/src/init.c?id=636a5f9a1c508aa39e35a3a8e9e54520a284d93d#n383 - http://git.savannah.gnu.org/cgit/wget.git/tree/src/retr.c?id=93c1517c4071c4288ba5a4b038e7634e4c6b5482#n1278 - -- W3: - https://www.w3.org/Daemon/User/Proxies/ProxyClients.html - -- Python's urllib: - https://github.com/python/cpython/blob/936135bb97fe04223aa30ca6e98eac8f3ed6b349/Lib/urllib/request.py#L755-L782 - https://github.com/python/cpython/blob/936135bb97fe04223aa30ca6e98eac8f3ed6b349/Lib/urllib/request.py#L2444-L2479 diff --git a/node_modules/proxy-from-env/index.js b/node_modules/proxy-from-env/index.js deleted file mode 100644 index df75004..0000000 --- a/node_modules/proxy-from-env/index.js +++ /dev/null @@ -1,108 +0,0 @@ -'use strict'; - -var parseUrl = require('url').parse; - -var DEFAULT_PORTS = { - ftp: 21, - gopher: 70, - http: 80, - https: 443, - ws: 80, - wss: 443, -}; - -var stringEndsWith = String.prototype.endsWith || function(s) { - return s.length <= this.length && - this.indexOf(s, this.length - s.length) !== -1; -}; - -/** - * @param {string|object} url - The URL, or the result from url.parse. - * @return {string} The URL of the proxy that should handle the request to the - * given URL. If no proxy is set, this will be an empty string. - */ -function getProxyForUrl(url) { - var parsedUrl = typeof url === 'string' ? parseUrl(url) : url || {}; - var proto = parsedUrl.protocol; - var hostname = parsedUrl.host; - var port = parsedUrl.port; - if (typeof hostname !== 'string' || !hostname || typeof proto !== 'string') { - return ''; // Don't proxy URLs without a valid scheme or host. - } - - proto = proto.split(':', 1)[0]; - // Stripping ports in this way instead of using parsedUrl.hostname to make - // sure that the brackets around IPv6 addresses are kept. - hostname = hostname.replace(/:\d*$/, ''); - port = parseInt(port) || DEFAULT_PORTS[proto] || 0; - if (!shouldProxy(hostname, port)) { - return ''; // Don't proxy URLs that match NO_PROXY. - } - - var proxy = - getEnv('npm_config_' + proto + '_proxy') || - getEnv(proto + '_proxy') || - getEnv('npm_config_proxy') || - getEnv('all_proxy'); - if (proxy && proxy.indexOf('://') === -1) { - // Missing scheme in proxy, default to the requested URL's scheme. - proxy = proto + '://' + proxy; - } - return proxy; -} - -/** - * Determines whether a given URL should be proxied. - * - * @param {string} hostname - The host name of the URL. - * @param {number} port - The effective port of the URL. - * @returns {boolean} Whether the given URL should be proxied. - * @private - */ -function shouldProxy(hostname, port) { - var NO_PROXY = - (getEnv('npm_config_no_proxy') || getEnv('no_proxy')).toLowerCase(); - if (!NO_PROXY) { - return true; // Always proxy if NO_PROXY is not set. - } - if (NO_PROXY === '*') { - return false; // Never proxy if wildcard is set. - } - - return NO_PROXY.split(/[,\s]/).every(function(proxy) { - if (!proxy) { - return true; // Skip zero-length hosts. - } - var parsedProxy = proxy.match(/^(.+):(\d+)$/); - var parsedProxyHostname = parsedProxy ? parsedProxy[1] : proxy; - var parsedProxyPort = parsedProxy ? parseInt(parsedProxy[2]) : 0; - if (parsedProxyPort && parsedProxyPort !== port) { - return true; // Skip if ports don't match. - } - - if (!/^[.*]/.test(parsedProxyHostname)) { - // No wildcards, so stop proxying if there is an exact match. - return hostname !== parsedProxyHostname; - } - - if (parsedProxyHostname.charAt(0) === '*') { - // Remove leading wildcard. - parsedProxyHostname = parsedProxyHostname.slice(1); - } - // Stop proxying if the hostname ends with the no_proxy host. - return !stringEndsWith.call(hostname, parsedProxyHostname); - }); -} - -/** - * Get the value for an environment variable. - * - * @param {string} key - The name of the environment variable. - * @return {string} The value of the environment variable. - * @private - */ -function getEnv(key) { - return process.env[key.toLowerCase()] || process.env[key.toUpperCase()] || ''; -} - -exports.getProxyForUrl = getProxyForUrl; diff --git a/node_modules/proxy-from-env/package.json b/node_modules/proxy-from-env/package.json deleted file mode 100644 index be2b845..0000000 --- a/node_modules/proxy-from-env/package.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "name": "proxy-from-env", - "version": "1.1.0", - "description": "Offers getProxyForUrl to get the proxy URL for a URL, respecting the *_PROXY (e.g. HTTP_PROXY) and NO_PROXY environment variables.", - "main": "index.js", - "scripts": { - "lint": "eslint *.js", - "test": "mocha ./test.js --reporter spec", - "test-coverage": "istanbul cover ./node_modules/.bin/_mocha -- --reporter spec" - }, - "repository": { - "type": "git", - "url": "https://github.com/Rob--W/proxy-from-env.git" - }, - "keywords": [ - "proxy", - "http_proxy", - "https_proxy", - "no_proxy", - "environment" - ], - "author": "Rob Wu (https://robwu.nl/)", - "license": "MIT", - "bugs": { - "url": "https://github.com/Rob--W/proxy-from-env/issues" - }, - "homepage": "https://github.com/Rob--W/proxy-from-env#readme", - "devDependencies": { - "coveralls": "^3.0.9", - "eslint": "^6.8.0", - "istanbul": "^0.4.5", - "mocha": "^7.1.0" - } -} diff --git a/node_modules/proxy-from-env/test.js b/node_modules/proxy-from-env/test.js deleted file mode 100644 index abf6542..0000000 --- a/node_modules/proxy-from-env/test.js +++ /dev/null @@ -1,483 +0,0 @@ -/* eslint max-statements:0 */ -'use strict'; - -var assert = require('assert'); -var parseUrl = require('url').parse; - -var getProxyForUrl = require('./').getProxyForUrl; - -// Runs the callback with process.env temporarily set to env. -function runWithEnv(env, callback) { - var originalEnv = process.env; - process.env = env; - try { - callback(); - } finally { - process.env = originalEnv; - } -} - -// Defines a test case that checks whether getProxyForUrl(input) === expected. -function testProxyUrl(env, expected, input) { - assert(typeof env === 'object' && env !== null); - // Copy object to make sure that the in param does not get modified between - // the call of this function and the use of it below. - env = JSON.parse(JSON.stringify(env)); - - var title = 'getProxyForUrl(' + JSON.stringify(input) + ')' + - ' === ' + JSON.stringify(expected); - - // Save call stack for later use. - var stack = {}; - Error.captureStackTrace(stack, testProxyUrl); - // Only use the last stack frame because that shows where this function is - // called, and that is sufficient for our purpose. No need to flood the logs - // with an uninteresting stack trace. - stack = stack.stack.split('\n', 2)[1]; - - it(title, function() { - var actual; - runWithEnv(env, function() { - actual = getProxyForUrl(input); - }); - if (expected === actual) { - return; // Good! - } - try { - assert.strictEqual(expected, actual); // Create a formatted error message. - // Should not happen because previously we determined expected !== actual. - throw new Error('assert.strictEqual passed. This is impossible!'); - } catch (e) { - // Use the original stack trace, so we can see a helpful line number. - e.stack = e.message + stack; - throw e; - } - }); -} - -describe('getProxyForUrl', function() { - describe('No proxy variables', function() { - var env = {}; - testProxyUrl(env, '', 'http://example.com'); - testProxyUrl(env, '', 'https://example.com'); - testProxyUrl(env, '', 'ftp://example.com'); - }); - - describe('Invalid URLs', function() { - var env = {}; - env.ALL_PROXY = 'http://unexpected.proxy'; - testProxyUrl(env, '', 'bogus'); - testProxyUrl(env, '', '//example.com'); - testProxyUrl(env, '', '://example.com'); - testProxyUrl(env, '', '://'); - testProxyUrl(env, '', '/path'); - testProxyUrl(env, '', ''); - testProxyUrl(env, '', 'http:'); - testProxyUrl(env, '', 'http:/'); - testProxyUrl(env, '', 'http://'); - testProxyUrl(env, '', 'prototype://'); - testProxyUrl(env, '', 'hasOwnProperty://'); - testProxyUrl(env, '', '__proto__://'); - testProxyUrl(env, '', undefined); - testProxyUrl(env, '', null); - testProxyUrl(env, '', {}); - testProxyUrl(env, '', {host: 'x', protocol: 1}); - testProxyUrl(env, '', {host: 1, protocol: 'x'}); - }); - - describe('http_proxy and HTTP_PROXY', function() { - var env = {}; - env.HTTP_PROXY = 'http://http-proxy'; - - testProxyUrl(env, '', 'https://example'); - testProxyUrl(env, 'http://http-proxy', 'http://example'); - testProxyUrl(env, 'http://http-proxy', parseUrl('http://example')); - - // eslint-disable-next-line camelcase - env.http_proxy = 'http://priority'; - testProxyUrl(env, 'http://priority', 'http://example'); - }); - - describe('http_proxy with non-sensical value', function() { - var env = {}; - // Crazy values should be passed as-is. It is the responsibility of the - // one who launches the application that the value makes sense. - // TODO: Should we be stricter and perform validation? - env.HTTP_PROXY = 'Crazy \n!() { ::// }'; - testProxyUrl(env, 'Crazy \n!() { ::// }', 'http://wow'); - - // The implementation assumes that the HTTP_PROXY environment variable is - // somewhat reasonable, and if the scheme is missing, it is added. - // Garbage in, garbage out some would say... - env.HTTP_PROXY = 'crazy without colon slash slash'; - testProxyUrl(env, 'http://crazy without colon slash slash', 'http://wow'); - }); - - describe('https_proxy and HTTPS_PROXY', function() { - var env = {}; - // Assert that there is no fall back to http_proxy - env.HTTP_PROXY = 'http://unexpected.proxy'; - testProxyUrl(env, '', 'https://example'); - - env.HTTPS_PROXY = 'http://https-proxy'; - testProxyUrl(env, 'http://https-proxy', 'https://example'); - - // eslint-disable-next-line camelcase - env.https_proxy = 'http://priority'; - testProxyUrl(env, 'http://priority', 'https://example'); - }); - - describe('ftp_proxy', function() { - var env = {}; - // Something else than http_proxy / https, as a sanity check. - env.FTP_PROXY = 'http://ftp-proxy'; - - testProxyUrl(env, 'http://ftp-proxy', 'ftp://example'); - testProxyUrl(env, '', 'ftps://example'); - }); - - describe('all_proxy', function() { - var env = {}; - env.ALL_PROXY = 'http://catch-all'; - testProxyUrl(env, 'http://catch-all', 'https://example'); - - // eslint-disable-next-line camelcase - env.all_proxy = 'http://priority'; - testProxyUrl(env, 'http://priority', 'https://example'); - }); - - describe('all_proxy without scheme', function() { - var env = {}; - env.ALL_PROXY = 'noscheme'; - testProxyUrl(env, 'http://noscheme', 'http://example'); - testProxyUrl(env, 'https://noscheme', 'https://example'); - - // The module does not impose restrictions on the scheme. - testProxyUrl(env, 'bogus-scheme://noscheme', 'bogus-scheme://example'); - - // But the URL should still be valid. - testProxyUrl(env, '', 'bogus'); - }); - - describe('no_proxy empty', function() { - var env = {}; - env.HTTPS_PROXY = 'http://proxy'; - - // NO_PROXY set but empty. - env.NO_PROXY = ''; - testProxyUrl(env, 'http://proxy', 'https://example'); - - // No entries in NO_PROXY (comma). - env.NO_PROXY = ','; - testProxyUrl(env, 'http://proxy', 'https://example'); - - // No entries in NO_PROXY (whitespace). - env.NO_PROXY = ' '; - testProxyUrl(env, 'http://proxy', 'https://example'); - - // No entries in NO_PROXY (multiple whitespace / commas). - env.NO_PROXY = ',\t,,,\n, ,\r'; - testProxyUrl(env, 'http://proxy', 'https://example'); - }); - - describe('no_proxy=example (single host)', function() { - var env = {}; - env.HTTP_PROXY = 'http://proxy'; - - env.NO_PROXY = 'example'; - testProxyUrl(env, '', 'http://example'); - testProxyUrl(env, '', 'http://example:80'); - testProxyUrl(env, '', 'http://example:0'); - testProxyUrl(env, '', 'http://example:1337'); - testProxyUrl(env, 'http://proxy', 'http://sub.example'); - testProxyUrl(env, 'http://proxy', 'http://prefexample'); - testProxyUrl(env, 'http://proxy', 'http://example.no'); - testProxyUrl(env, 'http://proxy', 'http://a.b.example'); - testProxyUrl(env, 'http://proxy', 'http://host/example'); - }); - - describe('no_proxy=sub.example (subdomain)', function() { - var env = {}; - env.HTTP_PROXY = 'http://proxy'; - - env.NO_PROXY = 'sub.example'; - testProxyUrl(env, 'http://proxy', 'http://example'); - testProxyUrl(env, 'http://proxy', 'http://example:80'); - testProxyUrl(env, 'http://proxy', 'http://example:0'); - testProxyUrl(env, 'http://proxy', 'http://example:1337'); - testProxyUrl(env, '', 'http://sub.example'); - testProxyUrl(env, 'http://proxy', 'http://no.sub.example'); - testProxyUrl(env, 'http://proxy', 'http://sub-example'); - testProxyUrl(env, 'http://proxy', 'http://example.sub'); - }); - - describe('no_proxy=example:80 (host + port)', function() { - var env = {}; - env.HTTP_PROXY = 'http://proxy'; - - env.NO_PROXY = 'example:80'; - testProxyUrl(env, '', 'http://example'); - testProxyUrl(env, '', 'http://example:80'); - testProxyUrl(env, '', 'http://example:0'); - testProxyUrl(env, 'http://proxy', 'http://example:1337'); - testProxyUrl(env, 'http://proxy', 'http://sub.example'); - testProxyUrl(env, 'http://proxy', 'http://prefexample'); - testProxyUrl(env, 'http://proxy', 'http://example.no'); - testProxyUrl(env, 'http://proxy', 'http://a.b.example'); - }); - - describe('no_proxy=.example (host suffix)', function() { - var env = {}; - env.HTTP_PROXY = 'http://proxy'; - - env.NO_PROXY = '.example'; - testProxyUrl(env, 'http://proxy', 'http://example'); - testProxyUrl(env, 'http://proxy', 'http://example:80'); - testProxyUrl(env, 'http://proxy', 'http://example:1337'); - testProxyUrl(env, '', 'http://sub.example'); - testProxyUrl(env, '', 'http://sub.example:80'); - testProxyUrl(env, '', 'http://sub.example:1337'); - testProxyUrl(env, 'http://proxy', 'http://prefexample'); - testProxyUrl(env, 'http://proxy', 'http://example.no'); - testProxyUrl(env, '', 'http://a.b.example'); - }); - - describe('no_proxy=*', function() { - var env = {}; - env.HTTP_PROXY = 'http://proxy'; - env.NO_PROXY = '*'; - testProxyUrl(env, '', 'http://example.com'); - }); - - describe('no_proxy=*.example (host suffix with *.)', function() { - var env = {}; - env.HTTP_PROXY = 'http://proxy'; - - env.NO_PROXY = '*.example'; - testProxyUrl(env, 'http://proxy', 'http://example'); - testProxyUrl(env, 'http://proxy', 'http://example:80'); - testProxyUrl(env, 'http://proxy', 'http://example:1337'); - testProxyUrl(env, '', 'http://sub.example'); - testProxyUrl(env, '', 'http://sub.example:80'); - testProxyUrl(env, '', 'http://sub.example:1337'); - testProxyUrl(env, 'http://proxy', 'http://prefexample'); - testProxyUrl(env, 'http://proxy', 'http://example.no'); - testProxyUrl(env, '', 'http://a.b.example'); - }); - - describe('no_proxy=*example (substring suffix)', function() { - var env = {}; - env.HTTP_PROXY = 'http://proxy'; - - env.NO_PROXY = '*example'; - testProxyUrl(env, '', 'http://example'); - testProxyUrl(env, '', 'http://example:80'); - testProxyUrl(env, '', 'http://example:1337'); - testProxyUrl(env, '', 'http://sub.example'); - testProxyUrl(env, '', 'http://sub.example:80'); - testProxyUrl(env, '', 'http://sub.example:1337'); - testProxyUrl(env, '', 'http://prefexample'); - testProxyUrl(env, '', 'http://a.b.example'); - testProxyUrl(env, 'http://proxy', 'http://example.no'); - testProxyUrl(env, 'http://proxy', 'http://host/example'); - }); - - describe('no_proxy=.*example (arbitrary wildcards are NOT supported)', - function() { - var env = {}; - env.HTTP_PROXY = 'http://proxy'; - - env.NO_PROXY = '.*example'; - testProxyUrl(env, 'http://proxy', 'http://example'); - testProxyUrl(env, 'http://proxy', 'http://sub.example'); - testProxyUrl(env, 'http://proxy', 'http://sub.example'); - testProxyUrl(env, 'http://proxy', 'http://prefexample'); - testProxyUrl(env, 'http://proxy', 'http://x.prefexample'); - testProxyUrl(env, 'http://proxy', 'http://a.b.example'); - }); - - describe('no_proxy=[::1],[::2]:80,10.0.0.1,10.0.0.2:80 (IP addresses)', - function() { - var env = {}; - env.HTTP_PROXY = 'http://proxy'; - - env.NO_PROXY = '[::1],[::2]:80,10.0.0.1,10.0.0.2:80'; - testProxyUrl(env, '', 'http://[::1]/'); - testProxyUrl(env, '', 'http://[::1]:80/'); - testProxyUrl(env, '', 'http://[::1]:1337/'); - - testProxyUrl(env, '', 'http://[::2]/'); - testProxyUrl(env, '', 'http://[::2]:80/'); - testProxyUrl(env, 'http://proxy', 'http://[::2]:1337/'); - - testProxyUrl(env, '', 'http://10.0.0.1/'); - testProxyUrl(env, '', 'http://10.0.0.1:80/'); - testProxyUrl(env, '', 'http://10.0.0.1:1337/'); - - testProxyUrl(env, '', 'http://10.0.0.2/'); - testProxyUrl(env, '', 'http://10.0.0.2:80/'); - testProxyUrl(env, 'http://proxy', 'http://10.0.0.2:1337/'); - }); - - describe('no_proxy=127.0.0.1/32 (CIDR is NOT supported)', function() { - var env = {}; - env.HTTP_PROXY = 'http://proxy'; - - env.NO_PROXY = '127.0.0.1/32'; - testProxyUrl(env, 'http://proxy', 'http://127.0.0.1'); - testProxyUrl(env, 'http://proxy', 'http://127.0.0.1/32'); - }); - - describe('no_proxy=127.0.0.1 does NOT match localhost', function() { - var env = {}; - env.HTTP_PROXY = 'http://proxy'; - - env.NO_PROXY = '127.0.0.1'; - testProxyUrl(env, '', 'http://127.0.0.1'); - // We're not performing DNS queries, so this shouldn't match. - testProxyUrl(env, 'http://proxy', 'http://localhost'); - }); - - describe('no_proxy with protocols that have a default port', function() { - var env = {}; - env.WS_PROXY = 'http://ws'; - env.WSS_PROXY = 'http://wss'; - env.HTTP_PROXY = 'http://http'; - env.HTTPS_PROXY = 'http://https'; - env.GOPHER_PROXY = 'http://gopher'; - env.FTP_PROXY = 'http://ftp'; - env.ALL_PROXY = 'http://all'; - - env.NO_PROXY = 'xxx:21,xxx:70,xxx:80,xxx:443'; - - testProxyUrl(env, '', 'http://xxx'); - testProxyUrl(env, '', 'http://xxx:80'); - testProxyUrl(env, 'http://http', 'http://xxx:1337'); - - testProxyUrl(env, '', 'ws://xxx'); - testProxyUrl(env, '', 'ws://xxx:80'); - testProxyUrl(env, 'http://ws', 'ws://xxx:1337'); - - testProxyUrl(env, '', 'https://xxx'); - testProxyUrl(env, '', 'https://xxx:443'); - testProxyUrl(env, 'http://https', 'https://xxx:1337'); - - testProxyUrl(env, '', 'wss://xxx'); - testProxyUrl(env, '', 'wss://xxx:443'); - testProxyUrl(env, 'http://wss', 'wss://xxx:1337'); - - testProxyUrl(env, '', 'gopher://xxx'); - testProxyUrl(env, '', 'gopher://xxx:70'); - testProxyUrl(env, 'http://gopher', 'gopher://xxx:1337'); - - testProxyUrl(env, '', 'ftp://xxx'); - testProxyUrl(env, '', 'ftp://xxx:21'); - testProxyUrl(env, 'http://ftp', 'ftp://xxx:1337'); - }); - - describe('no_proxy should not be case-sensitive', function() { - var env = {}; - env.HTTP_PROXY = 'http://proxy'; - env.NO_PROXY = 'XXX,YYY,ZzZ'; - - testProxyUrl(env, '', 'http://xxx'); - testProxyUrl(env, '', 'http://XXX'); - testProxyUrl(env, '', 'http://yyy'); - testProxyUrl(env, '', 'http://YYY'); - testProxyUrl(env, '', 'http://ZzZ'); - testProxyUrl(env, '', 'http://zZz'); - }); - - describe('NPM proxy configuration', function() { - describe('npm_config_http_proxy should work', function() { - var env = {}; - // eslint-disable-next-line camelcase - env.npm_config_http_proxy = 'http://http-proxy'; - - testProxyUrl(env, '', 'https://example'); - testProxyUrl(env, 'http://http-proxy', 'http://example'); - - // eslint-disable-next-line camelcase - env.npm_config_http_proxy = 'http://priority'; - testProxyUrl(env, 'http://priority', 'http://example'); - }); - // eslint-disable-next-line max-len - describe('npm_config_http_proxy should take precedence over HTTP_PROXY and npm_config_proxy', function() { - var env = {}; - // eslint-disable-next-line camelcase - env.npm_config_http_proxy = 'http://http-proxy'; - // eslint-disable-next-line camelcase - env.npm_config_proxy = 'http://unexpected-proxy'; - env.HTTP_PROXY = 'http://unexpected-proxy'; - - testProxyUrl(env, 'http://http-proxy', 'http://example'); - }); - describe('npm_config_https_proxy should work', function() { - var env = {}; - // eslint-disable-next-line camelcase - env.npm_config_http_proxy = 'http://unexpected.proxy'; - testProxyUrl(env, '', 'https://example'); - - // eslint-disable-next-line camelcase - env.npm_config_https_proxy = 'http://https-proxy'; - testProxyUrl(env, 'http://https-proxy', 'https://example'); - - // eslint-disable-next-line camelcase - env.npm_config_https_proxy = 'http://priority'; - testProxyUrl(env, 'http://priority', 'https://example'); - }); - // eslint-disable-next-line max-len - describe('npm_config_https_proxy should take precedence over HTTPS_PROXY and npm_config_proxy', function() { - var env = {}; - // eslint-disable-next-line camelcase - env.npm_config_https_proxy = 'http://https-proxy'; - // eslint-disable-next-line camelcase - env.npm_config_proxy = 'http://unexpected-proxy'; - env.HTTPS_PROXY = 'http://unexpected-proxy'; - - testProxyUrl(env, 'http://https-proxy', 'https://example'); - }); - describe('npm_config_proxy should work', function() { - var env = {}; - // eslint-disable-next-line camelcase - env.npm_config_proxy = 'http://http-proxy'; - testProxyUrl(env, 'http://http-proxy', 'http://example'); - testProxyUrl(env, 'http://http-proxy', 'https://example'); - - // eslint-disable-next-line camelcase - env.npm_config_proxy = 'http://priority'; - testProxyUrl(env, 'http://priority', 'http://example'); - testProxyUrl(env, 'http://priority', 'https://example'); - }); - // eslint-disable-next-line max-len - describe('HTTP_PROXY and HTTPS_PROXY should take precedence over npm_config_proxy', function() { - var env = {}; - env.HTTP_PROXY = 'http://http-proxy'; - env.HTTPS_PROXY = 'http://https-proxy'; - // eslint-disable-next-line camelcase - env.npm_config_proxy = 'http://unexpected-proxy'; - testProxyUrl(env, 'http://http-proxy', 'http://example'); - testProxyUrl(env, 'http://https-proxy', 'https://example'); - }); - describe('npm_config_no_proxy should work', function() { - var env = {}; - env.HTTP_PROXY = 'http://proxy'; - // eslint-disable-next-line camelcase - env.npm_config_no_proxy = 'example'; - - testProxyUrl(env, '', 'http://example'); - testProxyUrl(env, 'http://proxy', 'http://otherwebsite'); - }); - // eslint-disable-next-line max-len - describe('npm_config_no_proxy should take precedence over NO_PROXY', function() { - var env = {}; - env.HTTP_PROXY = 'http://proxy'; - env.NO_PROXY = 'otherwebsite'; - // eslint-disable-next-line camelcase - env.npm_config_no_proxy = 'example'; - - testProxyUrl(env, '', 'http://example'); - testProxyUrl(env, 'http://proxy', 'http://otherwebsite'); - }); - }); -}); diff --git a/package-lock.json b/package-lock.json index 607361e..d274b5b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,23 +9,61 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "axios": "^1.6.7", + "axios": "^0.21.4", + "bcrypt": "^5.1.1", "bcryptjs": "^2.4.3", "body-parser": "^1.20.2", "busboy": "^1.6.0", + "content-type": "^1.0.5", "cors": "^2.8.5", "dotenv": "^16.3.1", "express": "^4.18.2", + "express-fileupload": "^1.5.0", + "express-validator": "^7.0.1", "jsonwebtoken": "^9.0.0", "mongodb": "^5.6.0", "mongoose": "^7.3.0", - "multer": "^1.4.5-lts.1", + "morgan": "^1.10.0", + "multer": "^1.4.3", "natural": "^6.10.0", "nodemailer": "^6.9.3", "nodemon": "^3.0.3", "path": "^0.12.7" } }, + "node_modules/@mapbox/node-pre-gyp": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", + "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==", + "dependencies": { + "detect-libc": "^2.0.0", + "https-proxy-agent": "^5.0.0", + "make-dir": "^3.1.0", + "node-fetch": "^2.6.7", + "nopt": "^5.0.0", + "npmlog": "^5.0.1", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.11" + }, + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/@types/node": { "version": "20.11.24", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.24.tgz", @@ -83,6 +121,46 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agent-base/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/agent-base/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -111,24 +189,47 @@ "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==" }, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" + }, + "node_modules/are-we-there-yet": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/are-we-there-yet/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, "node_modules/axios": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz", - "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==", + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", "dependencies": { - "follow-redirects": "^1.15.4", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" + "follow-redirects": "^1.14.0" } }, "node_modules/balanced-match": { @@ -136,6 +237,35 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, + "node_modules/basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/basic-auth/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/bcrypt": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.1.1.tgz", + "integrity": "sha512-AGBHOG5hPYZ5Xl9KXzU5iKq9516yEmvCKDg3ecP5kX2aB6UqTeXZxk2ELnDgDm6BQSMlLt9rDB4LoSMx0rYwww==", + "hasInstallScript": true, + "dependencies": { + "@mapbox/node-pre-gyp": "^1.0.11", + "node-addon-api": "^5.0.0" + }, + "engines": { + "node": ">= 10.0.0" + } + }, "node_modules/bcryptjs": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz", @@ -270,15 +400,20 @@ "fsevents": "~2.3.2" } }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", "engines": { - "node": ">= 0.8" + "node": ">=10" + } + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "bin": { + "color-support": "bin.js" } }, "node_modules/concat-map": { @@ -300,6 +435,11 @@ "typedarray": "^0.0.6" } }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" + }, "node_modules/content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", @@ -373,13 +513,10 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/delayed-stream": { + "node_modules/delegates": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "engines": { - "node": ">=0.4.0" - } + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" }, "node_modules/depd": { "version": "2.0.0", @@ -398,6 +535,55 @@ "npm": "1.2.8000 || >= 1.4.16" } }, + "node_modules/detect-libc": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", + "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/dicer": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz", + "integrity": "sha512-FDvbtnq7dzlPz0wyYlOExifDEZcu8h+rErEXgfxqmLfRfC/kJidEFh4+effJRO3P0xmfqyPbSMG0LveNRfTKVg==", + "dependencies": { + "readable-stream": "1.1.x", + "streamsearch": "0.1.2" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/dicer/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + }, + "node_modules/dicer/node_modules/readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/dicer/node_modules/streamsearch": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", + "integrity": "sha512-jos8u++JKm0ARcSUTAZXOVC0mSox7Bhn6sBgty73P1f3JGf7yG2clTbBNHUdde/kdvP2FESam+vM6l8jBrNxHA==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/dicer/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" + }, "node_modules/dotenv": { "version": "16.3.1", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", @@ -422,6 +608,11 @@ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, "node_modules/encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", @@ -503,6 +694,29 @@ "node": ">= 0.10.0" } }, + "node_modules/express-fileupload": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/express-fileupload/-/express-fileupload-1.5.0.tgz", + "integrity": "sha512-jSW3w9evqM37VWkEPkL2Ck5wUo2a8qa03MH+Ou/0ZSTpNlQFBvSLjU12k2nYcHhaMPv4JVvv6+Ac1OuLgUZb7w==", + "dependencies": { + "busboy": "^1.6.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/express-validator": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/express-validator/-/express-validator-7.0.1.tgz", + "integrity": "sha512-oB+z9QOzQIE8FnlINqyIFA8eIckahC6qc8KtqLdLJcU3/phVyuhXH3bA4qzcrhme+1RYaCSwrq+TlZ/kAKIARA==", + "dependencies": { + "lodash": "^4.17.21", + "validator": "^13.9.0" + }, + "engines": { + "node": ">= 8.0.0" + } + }, "node_modules/express/node_modules/body-parser": { "version": "1.20.1", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", @@ -569,9 +783,9 @@ } }, "node_modules/follow-redirects": { - "version": "1.15.5", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", - "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", "funding": [ { "type": "individual", @@ -587,19 +801,6 @@ } } }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -616,6 +817,33 @@ "node": ">= 0.6" } }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -637,6 +865,25 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/gauge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/get-intrinsic": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", @@ -655,6 +902,25 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", @@ -718,6 +984,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" + }, "node_modules/hasown": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.1.tgz", @@ -744,6 +1015,39 @@ "node": ">= 0.8" } }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/https-proxy-agent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, "node_modules/iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -760,6 +1064,15 @@ "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==" }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", @@ -804,6 +1117,14 @@ "node": ">=0.10.0" } }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -896,6 +1217,28 @@ "node": ">=10" } }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -972,6 +1315,37 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/mkdirp": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", @@ -1050,6 +1424,32 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, + "node_modules/morgan": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", + "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", + "dependencies": { + "basic-auth": "~2.0.1", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-finished": "~2.3.0", + "on-headers": "~1.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/morgan/node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/mpath": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", @@ -1096,22 +1496,57 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/multer": { - "version": "1.4.5-lts.1", - "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.1.tgz", - "integrity": "sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.3.tgz", + "integrity": "sha512-np0YLKncuZoTzufbkM6wEKp68EhWJXcU6fq6QqrSwkckd2LlMgd1UqhUJLj6NS/5sZ8dE8LYDWslsltJznnXlg==", + "deprecated": "Multer 1.x is affected by CVE-2022-24434. This is fixed in v1.4.4-lts.1 which drops support for versions of Node.js before 6. Please upgrade to at least Node.js 6 and version 1.4.4-lts.1 of Multer. If you need support for older versions of Node.js, we are open to accepting patches that would fix the CVE on the main 1.x release line, whilst maintaining compatibility with Node.js 0.10.", "dependencies": { "append-field": "^1.0.0", - "busboy": "^1.0.0", + "busboy": "^0.2.11", "concat-stream": "^1.5.2", "mkdirp": "^0.5.4", "object-assign": "^4.1.1", + "on-finished": "^2.3.0", "type-is": "^1.6.4", "xtend": "^4.0.0" }, "engines": { - "node": ">= 6.0.0" + "node": ">= 0.10.0" } }, + "node_modules/multer/node_modules/busboy": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.2.14.tgz", + "integrity": "sha512-InWFDomvlkEj+xWLBfU3AvnbVYqeTWmQopiW0tWWEy5yehYm2YkGEc59sUmw/4ty5Zj/b0WHGs1LgecuBSBGrg==", + "dependencies": { + "dicer": "0.2.5", + "readable-stream": "1.1.x" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/multer/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + }, + "node_modules/multer/node_modules/readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/multer/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" + }, "node_modules/natural": { "version": "6.10.0", "resolved": "https://registry.npmjs.org/natural/-/natural-6.10.0.tgz", @@ -1138,6 +1573,49 @@ "node": ">= 0.6" } }, + "node_modules/node-addon-api": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", + "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==" + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-fetch/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/node-fetch/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/node-fetch/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/nodemailer": { "version": "6.9.3", "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.3.tgz", @@ -1216,6 +1694,17 @@ "node": ">=0.10.0" } }, + "node_modules/npmlog": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "dependencies": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + } + }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -1243,6 +1732,22 @@ "node": ">= 0.8" } }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -1260,6 +1765,14 @@ "util": "^0.10.3" } }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", @@ -1301,11 +1814,6 @@ "node": ">= 0.10" } }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, "node_modules/pstree.remy": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", @@ -1385,6 +1893,20 @@ "node": ">=8.10.0" } }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -1485,6 +2007,11 @@ "node": ">= 0.8.0" } }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, "node_modules/set-function-length": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.1.tgz", @@ -1528,6 +2055,11 @@ "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.1.tgz", "integrity": "sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==" }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, "node_modules/simple-update-notifier": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", @@ -1612,6 +2144,30 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -1631,6 +2187,33 @@ "node": ">=0.2.6" } }, + "node_modules/tar": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz", + "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -1738,6 +2321,14 @@ "node": ">= 0.4.0" } }, + "node_modules/validator": { + "version": "13.11.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.11.0.tgz", + "integrity": "sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==", + "engines": { + "node": ">= 0.10" + } + }, "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -1766,6 +2357,14 @@ "node": ">=12" } }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, "node_modules/wordnet-db": { "version": "3.1.14", "resolved": "https://registry.npmjs.org/wordnet-db/-/wordnet-db-3.1.14.tgz", @@ -1774,6 +2373,11 @@ "node": ">=0.6.0" } }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", diff --git a/package.json b/package.json index e7f3bfb..877a7e8 100644 --- a/package.json +++ b/package.json @@ -10,17 +10,22 @@ "author": "", "license": "ISC", "dependencies": { - "axios": "^1.6.7", + "axios": "^0.21.4", + "bcrypt": "^5.1.1", "bcryptjs": "^2.4.3", "body-parser": "^1.20.2", "busboy": "^1.6.0", + "content-type": "^1.0.5", "cors": "^2.8.5", "dotenv": "^16.3.1", "express": "^4.18.2", + "express-fileupload": "^1.5.0", + "express-validator": "^7.0.1", "jsonwebtoken": "^9.0.0", "mongodb": "^5.6.0", "mongoose": "^7.3.0", - "multer": "^1.4.5-lts.1", + "morgan": "^1.10.0", + "multer": "^1.4.3", "natural": "^6.10.0", "nodemailer": "^6.9.3", "nodemon": "^3.0.3", diff --git a/routes/admin.route.js b/routes/admin.route.js index 7c35784..6cfd8de 100644 --- a/routes/admin.route.js +++ b/routes/admin.route.js @@ -21,7 +21,7 @@ var upload = multer({ module.exports = (app) => { - app.post('/admin/register',adminController.createAdmin); + // app.post('/admin/register',adminController.createAdmin); app.post('/admin/login', authController.signIn); app.get('/admin/getUserList', [authJwt.verifyToken, adminCheck.isAdmin], adminController.getList); app.put('/admin/updateProfile', [authJwt.verifyToken, adminCheck.isAdmin], adminController.update) diff --git a/routes/album.route.js b/routes/album.route.js index ab5d455..4c8a32a 100644 --- a/routes/album.route.js +++ b/routes/album.route.js @@ -23,5 +23,10 @@ module.exports = (app) => { app.delete('/deletealbum/:id', [authJwt.verifyToken, adminCheck.isAdmin], albumController.deleteAlbum); app.put('/changealbumStatus/:id', upload.single('image'), [authJwt.verifyToken, adminCheck.isAdmin], albumController.changeAlbumStatus); app.get('/getalbums', [authJwt.verifyToken, adminCheck.isAdmin], albumController.getAlbums); + app.get('/allAlbums', [authJwt.verifyToken, adminCheck.isAdmin], albumController.allAlbums); + + app.get('/getsubcategories/:subcategoryId', [authJwt.verifyToken, adminCheck.isAdmin], albumController.getsubcategories); app.delete('/deletMany',albumController.deletMany) + + }; diff --git a/routes/artist.route.js b/routes/artist.route.js index f58a085..aecf854 100644 --- a/routes/artist.route.js +++ b/routes/artist.route.js @@ -5,13 +5,17 @@ const multer = require('multer'); var fileStorageEngine = multer.diskStorage({ destination: (req, file, cb) => { - cb(null, './uploads'); + cb(null, './uploads'); }, filename: (req, file, cb) => { - cb(null, "[image]-" + file.originalname); + // Generate a unique filename + const uniqueSuffix = Date.now() + '-' + Math.round(Math.random() * 1e9); + const extension = file.originalname.split('.').pop(); + cb(null, 'image-' + uniqueSuffix + '.' + extension); } }); +// Create multer instance with disk storage engine var upload = multer({ storage: fileStorageEngine }); @@ -19,9 +23,10 @@ var upload = multer({ module.exports = (app) => { app.post('/createartist', upload.single('image'),[authJwt.verifyToken, adminCheck.isAdmin], ArtistController.createArtist); app.put('/updateartist/:id', upload.single('image'),[authJwt.verifyToken, adminCheck.isAdmin], ArtistController.updateArtist); - app.delete('/deleteartist/:id', upload.single('image'),[authJwt.verifyToken, adminCheck.isAdmin], ArtistController.deleteArtist); - app.put('/changeartiststatus/:id', upload.single('image'),[authJwt.verifyToken, adminCheck.isAdmin], ArtistController.changeArtistStatus); + app.delete('/deleteartist/:id',[authJwt.verifyToken, adminCheck.isAdmin], ArtistController.deleteArtist); + app.put('/changeartiststatus/:id',[authJwt.verifyToken, adminCheck.isAdmin], ArtistController.changeArtistStatus); app.get('/getArtistById/:id',[authJwt.verifyToken, adminCheck.isAdmin],ArtistController.getArtistById) app.get('/getAllArtist',[authJwt.verifyToken, adminCheck.isAdmin],ArtistController.getAllArtist) + app.get('/allArtist',[authJwt.verifyToken, adminCheck.isAdmin],ArtistController.allArtist) }; diff --git a/routes/auth.route.js b/routes/auth.route.js index 6d4c882..b5e5eac 100644 --- a/routes/auth.route.js +++ b/routes/auth.route.js @@ -6,7 +6,13 @@ const authJwt = require('../middlewares/authjwt'); module.exports = (app) => { - app.post('/register',[authMid.fieldCheck,authMid.uniqueEmail] ,authController.signUp); - app.post('/login',[authMid.fieldCheck,authMid.userCheckEmail],authController.signIn); - app.post('/verifyotp',[authJwt.verifyToken],authController.verifyOtp); + // app.post('/register',[authMid.fieldCheck,authMid.uniqueEmail] ,authController.signUp); + app.post('/register' ,authController.signUp); + // app.post('/login',[authMid.fieldCheck,authMid.userCheckEmail],authController.signIn); + app.post('/login',authController.signIn); + app.post('/verifyotp',authController.verifyOtp); + app.post('/resendotp',authController.resendOTP); + app.post('/forgotPassword',authController.forgotPassword) + app.post('/resetPassword',authController.resetPassword) + } \ No newline at end of file diff --git a/routes/categories.route.js b/routes/categories.route.js index 99a728a..73b72b5 100644 --- a/routes/categories.route.js +++ b/routes/categories.route.js @@ -3,6 +3,7 @@ const adminCheck = require('../middlewares/Admin'); const authJwt = require('../middlewares/authjwt'); const multer = require('multer'); +const maxSize = 5 * 1024 * 1024; var fileStorageEngine = multer.diskStorage({ destination: (req, file, cb) => { @@ -10,18 +11,20 @@ var fileStorageEngine = multer.diskStorage({ }, filename: (req, file, cb) => { cb(null, "[image]-" + file.originalname); + console.log(file.originalname,"hiii"); } }); var upload = multer({ - storage: fileStorageEngine + storage: fileStorageEngine, + limits: { fileSize: maxSize } }); module.exports = (app) => { app.post('/createcategories', upload.single('image'), [authJwt.verifyToken, adminCheck.isAdmin], categoriesController.createCategories); app.put('/updatecategories/:id', upload.single('image'), [authJwt.verifyToken, adminCheck.isAdmin], categoriesController.updateCategories); - app.delete('/deletecategories/:id', upload.single('image'), [authJwt.verifyToken, adminCheck.isAdmin], categoriesController.deleteCategories); - app.put('/changecategorystatus/:id', upload.single('image'), [authJwt.verifyToken, adminCheck.isAdmin], categoriesController.changeCategoryStatus); + app.delete('/deletecategories/:id', [authJwt.verifyToken, adminCheck.isAdmin], categoriesController.deleteCategories); + app.put('/changecategorystatus/:id', [authJwt.verifyToken, adminCheck.isAdmin], categoriesController.changeCategoryStatus); app.get('/getcategories', [authJwt.verifyToken, adminCheck.isAdmin], categoriesController.getCategories); app.get('/getcategoriesPage', [authJwt.verifyToken, adminCheck.isAdmin], categoriesController.getcategoriesPage); diff --git a/routes/language.route.js b/routes/language.route.js index 0f88bcd..854cf0b 100644 --- a/routes/language.route.js +++ b/routes/language.route.js @@ -9,6 +9,7 @@ module.exports = (app) => { app.get('/getLanguage', [authJwt.verifyToken, adminCheck.isAdmin],languageController.getLanguage); app.delete('/deletelanguage/:id', [authJwt.verifyToken, adminCheck.isAdmin],languageController.deleteLanguage); app.put('/changelanguageStatus/:id',[authJwt.verifyToken, adminCheck.isAdmin], languageController.changeLanguageStatus); + app.get('/getAllLanguage',[authJwt.verifyToken, adminCheck.isAdmin],languageController.getAllLanguage) } diff --git a/routes/notification.route.js b/routes/notification.route.js index f809192..c276685 100644 --- a/routes/notification.route.js +++ b/routes/notification.route.js @@ -1,10 +1,10 @@ const notificationController = require('../controllers/notification.controller') -// console.log('hhhhhhhhhhhhhhhhhhhhhh') module.exports = (app) => { app.post('/notification',notificationController.createNotification); app.get('/getNotifications',notificationController.getNotifications); app.delete('/deleteNotification/:id',notificationController.deleteNotification); app.get('/getNotificationId/:id',notificationController.getNotificationId); + app.delete('/deleteAllNotifications',notificationController.deleteAllNotifications) } \ No newline at end of file diff --git a/routes/song.route.js b/routes/song.route.js index 64a91e2..88b3104 100644 --- a/routes/song.route.js +++ b/routes/song.route.js @@ -1,14 +1,15 @@ -const songController = require('../controllers/song.controller'); +const express = require('express'); const multer = require('multer'); -const adminCheck = require('../middlewares/Admin'); +const path = require('path'); const authJwt = require('../middlewares/authjwt'); +const adminCheck = require('../middlewares/Admin'); +const songController = require('../controllers/song.controller'); + +const router = express.Router(); -// Multer configuration for file upload const storage = multer.diskStorage({ destination: function (req, file, cb) { - if (file.fieldname === 'coverArtImage') { - cb(null, './uploads'); - } else if (file.fieldname === 'musicFile') { + if (file.fieldname === 'coverArtImage' || file.fieldname === 'musicFile') { cb(null, './uploads'); } }, @@ -20,12 +21,13 @@ const storage = multer.diskStorage({ const upload = multer({ storage: storage }); module.exports = (app) => { - // Use upload.fields() middleware to handle multiple file uploads with specific field names - app.post('/createsong', upload.fields([{ name: 'coverArtImage', maxCount: 1 },[authJwt.verifyToken, adminCheck.isAdmin], { name: 'musicFile', maxCount: 1 }]), songController.createSong); - app.put('/updatesong/:id', upload.fields([{ name: 'coverArtImage', maxCount: 1 },[authJwt.verifyToken, adminCheck.isAdmin], { name: 'musicFile', maxCount: 1 }]), songController.updateSong); // Correct route path - app.delete('/deletesong/:id',[authJwt.verifyToken, adminCheck.isAdmin], songController.deleteSong); // No need for file upload middleware here - app.get('/getsong/:id', [authJwt.verifyToken, adminCheck.isAdmin],songController.getSong); // Added ":id" parameter to the route - app.put('/changesongstatus/:id', upload.fields([{ name: 'coverArtImage', maxCount: 1 },[authJwt.verifyToken, adminCheck.isAdmin], { name: 'musicFile', maxCount: 1 }]), songController.changeSongStatus); + app.use(router); - app.get('/getAllSongs', [authJwt.verifyToken, adminCheck.isAdmin],songController.getAllSongs); -}; + router.post('/createsong', [authJwt.verifyToken, adminCheck.isAdmin], upload.fields([{ name: 'coverArtImage', maxCount: 1 }, { name: 'musicFile', maxCount: 1 }]), songController.createSong); + router.put('/updatesong/:_id', [authJwt.verifyToken, adminCheck.isAdmin], upload.fields([{ name: 'coverArtImage', maxCount: 1 }, { name: 'musicFile', maxCount: 1 }]), songController.updateSong); + router.put('/updatesong/:id', [authJwt.verifyToken, adminCheck.isAdmin], upload.fields([{ name: 'coverArtImage', maxCount: 1 }, { name: 'musicFile', maxCount: 1 }]), songController.updateSong); + router.delete('/deletesong/:id', [authJwt.verifyToken, adminCheck.isAdmin], songController.deleteSong); + router.get('/getsong/:id', songController.getSong); + router.put('/changesongstatus/:id', [authJwt.verifyToken, adminCheck.isAdmin], songController.changeSongStatus); + router.get('/getAllSongs', [authJwt.verifyToken], songController.getAllSongs); +} diff --git a/routes/subcategories.route.js b/routes/subcategories.route.js index 657edae..4b9f608 100644 --- a/routes/subcategories.route.js +++ b/routes/subcategories.route.js @@ -22,7 +22,7 @@ module.exports = (app) => { app.delete('/deleteSubCategories/:id', upload.single('image'), [authJwt.verifyToken, adminCheck.isAdmin], SubCategoriesController.deleteSubCategories); app.get('/getSubCategories', [authJwt.verifyToken, adminCheck.isAdmin], SubCategoriesController.getSubCategories); app.put('/changeSubCategoryStatus/:id', upload.single('image'), [authJwt.verifyToken, adminCheck.isAdmin], SubCategoriesController.changeSubCategoryStatus); - app.get('/getSubCategoriesfromCategory/:CategoriesId', [authJwt.verifyToken, adminCheck.isAdmin], SubCategoriesController.getSubCategoriesfromCategory); + app.get('/getCategories/:CategoriesId', [authJwt.verifyToken, adminCheck.isAdmin], SubCategoriesController.getCategories); app.delete('/deleteMany', SubCategoriesController.deleteMany) }; diff --git a/routes/user.route.js b/routes/user.route.js index 8eb32ad..0679b8a 100644 --- a/routes/user.route.js +++ b/routes/user.route.js @@ -8,10 +8,13 @@ const idChecker = require('../middlewares/idchecker'); module.exports = (app) => { - app.post('/google/registration/login',[ reqBody.emailCheck],userController.createGoogle); + + app.post('/userRegister',userController.userRegister) + // app.post('/verifyOTP',userController.verifyOTP); + app.post('/google/registration/login',userController.createGoogle); app.post('/facebook/registration/login',[reqBody.emailCheck],userController.createFacebook); app.put('/updateUser/:id',[idChecker.idCheck,authJwt.verifyToken,isAdminOrUser.AdminOrOwner],userController.update); - app.put('/forgetPassword',[reqBody.userCheckEmail],userController.passUpCreate); + app.put('/forgetPassword1',[reqBody.userCheckEmail],userController.passUpCreate); app.delete('/deleteUser/:id',[idChecker.idCheck,authJwt.verifyToken,isAdminOrUser.AdminOrOwner],userController.deleteUser); app.get('/userPlaylist',[authJwt.verifyToken],userController.getUserPlaylist); app.put('/favriotesong/:id',[authJwt.verifyToken,idChecker.idCheck],userController.favrioteSong); @@ -23,4 +26,10 @@ module.exports = (app) => { app.get('/ranking',[authJwt.verifyToken],userController.ranking); app.put('/changeuserstatus/:id',[authJwt.verifyToken,idChecker.idCheck],userController.changeUserStatus); + app.get('/usergetAllSongs',[authJwt.verifyToken],userController.usergetAllSongs) + app.get('/newRelease',[authJwt.verifyToken],userController.newRelease) + app.get('/musicCategories',userController.homeData) + app.get('/artistData',[authJwt.verifyToken],userController.artistData) + + } diff --git a/server.js b/server.js index 6f033bd..f2ec85d 100644 --- a/server.js +++ b/server.js @@ -5,23 +5,44 @@ const dbConfig = require('./configs/db.config'); const multer = require('multer'); const cors = require('cors'); const path = require('path'); +const fs = require('fs'); +const morgan = require ('morgan'); const app = express(); +const bodyParser = require('body-parser'); +app.use(bodyParser.json()); +app.use(bodyParser.urlencoded({ extended: true })); +app.use(morgan('dev')); + +const URL = "mongodb://localhost:27017/7-fife"; + +// app.use( +// cors({ +// // allowedHeaders: ["Content-Type", "token", "authorization"], +// // exposedHeaders: ["token", "authorization"], +// origin: "*", +// // methods: "GET,HEAD,PUT,PATCH,POST,DELETE", +// // preflightContinue: false, +// // }) +// ); app.use(cors()); -// Middleware to parse JSON bodies app.use(express.json()); +app.use(express.urlencoded({ extended: true, limit: '1000mb' })); -// Middleware to set the base URL app.use((req, res, next) => { const baseUrl = `${req.protocol}://${req.get('host')}`; req.baseUrl = baseUrl; next(); }); -const connectDb = async (req, res) => { + +const connectDb = async () => { try { - await mongoose.connect(dbConfig.URI); + await mongoose.connect(URL, { + useNewUrlParser: true, + useUnifiedTopology: true, + }); console.log('MongoDB is connected'); } catch (err) { console.error('Error inside db connection:', err.message); @@ -29,30 +50,10 @@ const connectDb = async (req, res) => { }; connectDb(); - -app.listen(serverConfig.PORT, "192.168.0.239", () => { - console.log(`Application started on port number: ${serverConfig.PORT}`); -}); - - -// Configure Multer for handling file uploads - -// const storage = multer.diskStorage({ -// destination: (req, file, cb) => { -// cb(null, "uploads/"); -// }, -// filename: (req, file, cb) => { -// const uniqueSuffix = Date.now() + "-" + Math.round(Math.random() * 1e9); -// const extension = file.originalname.split(".").pop(); -// cb(null, file.fieldname + "-" + uniqueSuffix + "." + extension); -// }, -// }); - -// const upload = multer({ storage: storage }); -app.use('/uploads', express.static(path.join(__dirname, 'uploads'))); -var filestorageEngine = multer.diskStorage({ +// app.get('/login', (req, res) => res.send('Hello World!')) +const storage = multer.diskStorage({ destination: (req, file, cb) => { - cb(null, './uploads'); + cb(null, "uploads/"); }, filename: (req, file, cb) => { const uniqueSuffix = Date.now() + "-" + Math.round(Math.random() * 1e9); @@ -61,8 +62,38 @@ var filestorageEngine = multer.diskStorage({ }, }); -var upload = multer({ - storage: filestorageEngine +const upload = multer({ + storage: storage, + limits: { + fileSize: 5000000 // 1MB file size limit + } +}); + +// app.use(upload.any()); // Apply Multer middleware for handling file uploads + +app.post('/upload', upload.single('image'), (req, res) => { + const name = req.body.name; + const password = req.body.password; + const imageUrl = req.file ? req.file.path : null; + res.json({ name, password, imageUrl }); +}); + +app.post('/jsondata', (req, res) => { + const jsonData = req.body; + res.json(jsonData); +}); + +app.use("/uploads", express.static(path.join(__dirname, "uploads"))); + +app.use((error, req, res, next) => { + let message = "Unexpected error"; + if (error && error.field) { + message = `Unexpected field: ${error.field}`; + } else if (error && error.message) { + message = error.message; + } + console.error(message); + return res.status(500).send(message); }); // Require routes @@ -88,3 +119,6 @@ require('./routes/categories.route')(app); require('./routes/subcategories.route')(app); require('./routes/importsong.route')(app); +app.listen(serverConfig.PORT, "192.168.0.239", () => { + console.log(`Application started on port number: ${serverConfig.PORT}`); +}); diff --git a/uploads/1665729691641.JPEG b/uploads/1665729691641.JPEG new file mode 100644 index 0000000000000000000000000000000000000000..bd3cb6af59afa1eff72b17191753ede72796e412 GIT binary patch literal 28763 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 wnluwke%|Pt86tSEJ{tGWy`F z1-x#5i4_O20$Bh#T*x9IaDiHB2trUS)c3wcL;jiME@U9hA_S2$pUFwzA;G^n$8R#U#fJbI*hi2&1|saDOA=QVzo9vo(d! z=Ho^1Qljxqs=!J=_mIDq?K}K12u$7yqri7gF2mGyWC2Qm51K^WITOpBI~oAZR1z&X z9FzX@;ewhfP%5&1Y$zpny> z-*-YC+=^<@*5|2nnxS~!CA9{kHA-xrLRCABVlBqBQ{~NjMx$TLFatU^Z#6d2b(S2G zLg(MmRoi(C6^l@)_86#mtoM>vyNPl#5sM#5Q@$2vsS~02UB5fiB!smQrzJrXwU$$* zrj&H7G86`(eItx_wKnB@3AWW%2{;yMTxZaXM~Bfn<#SAl=GXi0qjE{Ab%$(DA?v}z zzc#@iX9ppzY={_yO@9^$B&Mtz6PuXY$+%%x0_yB2qTcmq=ac+mVr@1LHL<6h{;7sNTUf+5&m1ARONR-^yOiJiHh-5AUlLJ}}3_s^5AdsU6 z$iR(*X=`9@p;3UMSu1#~0AuLu_D{gz>jMa3FG5uqBgiA%!-8iT->jh=NHdBcidCH^ z2Qt&5dZ{EEEgO|dCSy^oP7pQ_a85)!=e&&!i;ymVd#6gYKDF7XZJ2G!#n>lCQ7QC< z003}u03JopnVJFQ#sg*CKXBe-A;H->DzB1MDQbex@}|96yjwO6K^~&nE}KR3T@HzF z89<^&f=aTHgi#j}gm3~S*_TQt>PSU(Zv1E)2JGzX1RsULL@kO|0POV+ofX~t@eKFa zFks*Y9EqA@@#u^{_%}`e7pVbW#~A_8Na5}W_}K+OOTG&$s$sxxX503URGLx5B=Up- z@en}{83BlKOhcLbU0p_4GwLEu4mX^}zZL~P|Da@|30w|4=>m8F6ZAqlc&IHGF$F+` z6E)Yj1&RYMA^GeNj@J>Q@pJ$)L3k92J;Rb%0Pp`QIvu9w0Ko-u0N&}(QcgVIv1Ya% zW_W0QTJ}MLUH%b?-nFmX-1rr9f8>Qs2$l(vIMctjG}rktGo#uGJgOOmCcHSd7;gI+ zho&21ML6qA7o?FZx@n|b2=OlA!9lf82g%zE{Rd;GP^dtw!(2YU_%s;Lmao5r5MTkG zv;9*x;Qr3|=g;Y;si`wMB78X8!>p#Chmolss?_h_3U3;)pF$~Dv$BpCrE4X8u7<4y zlV{z(HCx>Ib|W=*&R`#{={VOlh^Fl;ulDZ1+@yI_+MY6}%aNB6m-y~Y_!!G9M5!f!;}z)pcA z>sMp6MoYDiV{sO)>wZI9iL2xSN6M<@;ON0r_)68W&9-FPuv-<*qN1OR&(khdj_UqG zWVcFgCtl8XCvdK8+Ba3aUmf4DEJq%fM5RB!=Y3PYs`{Jp3;rX6 zP08Ot_p`WqrW1DZn&IdF7z%Q!?=O5KKm*fEEC3PlII0WaG$W1Mz~Bp<|(h3Oco@c_;~Coe0l>NC1>VhzIOK=T33|1Kl{v@Bjb+ literal 0 HcmV?d00001 diff --git a/uploads/google.png b/uploads/google.png new file mode 100644 index 0000000000000000000000000000000000000000..03c180704fe698405bd80b535096abb7efce8948 GIT binary patch literal 26396 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 z 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

V#?z5ANzWLODHt+a`Oo2giRI(TGt@(G3dMya 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 BQ1}1< literal 0 HcmV?d00001 diff --git a/uploads/job_d.jpg b/uploads/job_d.jpg new file mode 100644 index 0000000000000000000000000000000000000000..36b907f5c4ebb67c8e194bd236a58dc3a0c47028 GIT binary patch literal 2853795 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�f7j8%ukk_cp`KrccTl>3(*%Fp_6o)|Qg9PkE)#SMx9=~W|%}+d1o#fBUYwMr8 z-axDUjD$g<^Nr-kYVen})%5+@FO}h-wqF4O*dH~Y?mc^LKktwOZJ+8cb4HETRi@p0 zb81T$dHMFaUw%Pmx~^8Yv~ojy!l3#qtY6Y5*3~knN`2%<~Npxd9^4Q9(vgijBpS%Lt^NN{} zqiq7;%s^IN1*3jF>ZvJ&<;kGN;>Dp2QJ&t)5SeKzDLW|7k;kEcia6D!6(==1^9DRq z!XH2`uTK~S)-83WX1CJRwzHdn7!kS-@`U5bim%CE>Z|GJ3tYo1zYHb`Jed{`f+cGtKp)ODQehEn|1*LeAH z)KKozOE(|G^!!KW`fZdhUHn=GweM`zBzbvBcj{oo4F+988PT_4%Gp+;om0~~(k6AC zU9=?jNB$}eusbO(Q!bAa%AZnRSlE2QZ28%; zLbI0}jqk|OED=%zk+yIKJgO||cO}aEIM>O~9Yir>SGn}hqG-{E5Lw0ZeR%;+cvmBa zZ+O}L4Rbfj)engata-{qR1vz^^o%m*LeBhgt%mQbuosr2(w$qr#0;kNL%A085=c>B zVK{CJY*ThKIc2)|Q?%2Zru**J6}wmqf(t;k_*MQWaJlIv z9&*D71jRTNY3O?7aNw8HOLt4N2z$E?L|Q6VLGLQWn?!3IDw<#aOZJIV;Y}y@&Pr5X zn~Zc~ilJIw1$1Dy{iS{b)0pVMul=H#6pxT4A(Igg5yV$;nk`!8x>=FOTr^5B8cb4%OAtO2;TXCbv%H0@XMxlz+Z%?1dM&^C$NESE#IBb2tW-F{cgb`yb@g z_@)~DG=YXTy&HYGdbqU#LlXZ0vfdJeYqGTn(&L=nai&v;pXoC{IW9jZN8l{KMyq+B z=SO{6SuLOrKHcOI7rcEKq*I~72RwR{o*m|~_#JoBvP!c^T``0EaY#-Bqt8%?*un+L z4~s&>^-L3MXm{7gM$<;7?(NY>-z0};${I+ABT`i-YU1V%KdfX`lw2=fj{H)M(BXd7 z4YJsZ34D6tgDj{gFgfp(N7MpRN!9UO9G;&q! z^~q;P?3Si+qz-f&^dpoj`o(|d+4oJ3eV|CJY!U*NZ&p-n=~qWcP{lq2mz#-5s!j9X zFh$0Xnob`Xqc2M_^k4B>A0h`2hm$#3?1MC5Mw8gaC;nq&)pn2Cg@yMMKqr_{@oRJU zh>mxVC)$XY{;QeY&(ibM6C?~gX8EW@d&&|H3g3tQ@_2Tfn&He&gO#c+Op`x4K?-pJ zA)-^Qj&A}J@48O{m1jGT_G-*Fm=nb{kI2iu55oIsl^^8Tp2VBco~w5Vo#2!_LVF`# zCk-4iQT(c`^XL$x|M^{7FdwT7565=J@<@l3*xpkCY(Rx}CRJvG@gSOXFScXvB z?11RIC;EQfYQlzQLzCo@kq@fi9TzUstWVDSX(yZA(*Fdm^s=bO?ui%F3CNK|?!UuR z^P(rm*rUa+yKwK>9{ot0a(?=tpT?DC#)o%mCLW9<{F*xNb#~o_4chb%qJa^9J;kZT z9kE)Uo^bECOzF7^B_%xgO3+kL4ychnZvl~OTt%{vtaK}EBm#HWmhB;8cDBE4uX@68 z{ZohwNj$_xo@HHapxnb>zK?U6OYi#}5Ow>}42)OmMyFSNwN#INMquJ1YtLx9QDG&n z;x;~WT&vKPnn&aL(mIqe5jVc9cYlOk390rp*|4yU z9BDN=bOerVBG-z(4QYW&I#+Abm#TAn@R^eIxEt^dB{#nbe1k>nmk8Et>r3v=J$Qgq zSL}$YA;axPh~L-H3$IHq>f2MTB=U+I%TIYB{Tr{LgE3Z(&Nq&euJ$|Xy4Gsfw!Nmg zKSVpKB4K@)p*Jj!r#06OrooyrK$5&0vxC_Oi6T$`Nonn^=AX(iD8X?F{Z>G?+;IYQ)gV?wRwe#%Ja z6{u(4YNe{ZtIZqTVs-JM%dFp}Iy5sjzpQ9pwo$$s_>p}=rgb53?;1yC^*PGj$M!m9 z8cmNL#X#&K70K`TMoYY}Y}g!vd~eFotOih@T=O3@Y_OiHSxW}+3pfSI{@7cyynIal@nl>Fv0@n;N0)W=siRrIjxI7$1iztS@=6Xh7tYdM()%c+{nl+*kJM#<*2p)pJN zxGywLQk>H)X_K$``_B=p5Q@vzoPQOsgySV&xjz2kIT(-&IiLjp+s3FnYAU z=aPAJX_y!v|E}BzzE9GSp#T$`WVHrzR!EIu91#o9;d~B@9ej=)3{p0+4I0i$6i4bj zB@GP^?Vtpv?uq-F=a|r8LzVgr!WAkr%3M*nNYj1DxRnzjbcekq-FS}H(x9`g4^jV{fhKw%a%0RMz3#y2?kx{ zCGgTlbwldzBQTb*znkL_d}ENj2YRzswsin!B=`ks;m_G%rhOTY*&B6@YBbuON0kCB^@`Htu8;}*ack}7-Bgb7)=h1Hp#L4I!^dmOc6wW4UW|4oD($+V$b{Vy7pc^ z{N;z|l@n#b!DT24hW#wHmsy^vIa^xTAn)=)D%_0H%3^>@ahYqbnM2<1+ASQXXVi8p z!(J**Nu8d0U8lx8O^em%&JN>T?t7zOQgBuujG3EDT3OPYf!0dDo4NC&CH_OPX|Ib7 z-w8V$M|L>tufspz%ahz#)4$)nx+vt-q55VtFj^J6(+LF91VTrna((s_yC~Nzvv$C) zuC}#Mr=*H!ziM}hls+E28hKJfHZ?j#I~ZE(tb^n%@vhoKp8;b3bxo6pqyB%^~l zC=K)O7o0o8Bc58wcX$R4=m-m+PbBYAE>OltZI_#DMBvq9f>&>G238;{t|j%bP2iQ* zLjAyD<<}~p-aS2sL)yX{J#j5;ZF#;c+u}~HHIZK)^@5C@g)Sd4exV~)@GHU|3-@>P zmI!W&L{P9*+LYIb7--w~)9EFF`v9MQq0&#)IB0KJJy{$Bt^0S0aO#Z2v7(2!Lpcve zw^kg=)B5<>Mc!l@48HdflQ4YT4JvLM(wDdwqXQ&WX;L>Wc*F@St<~P^&ZE<5ev?tr z+hts4HRElYS3CxoYc*N{S9HX3L zkJlFkUrXgc7Pp$(2eLB7UBHpyZ1I5t20LgM)o-WXP?MXCYpYMuW3$jj;&es0SCugG z0<8Yq-OiQwTi?=~Y(SC~Qv}V}-5z1`2hD)tZXx4BVH7v_Y@B4iX0mz(W(;(jn&3KzYR`&xk+n5_}xr=ual91T75pTfEV|?ods^F zXRi()u@c%j1fH+Sk6s)Y^CAB;VtcXm=0x6dZFs$PF?{yDVBb=gweXF*tyeg`MHfl0 zt*G}!YEr%{$VUoal24G`=vbC5_M|b+D*4JVG@L)f_il7O2)PwcC9J_BKN$2HsDi~} ze-s{=^kfyVZ)qDHe-U0||7lHOikDx!aI)zR90J2W!6D$9I2`e5jB%ZgcHh%@SRy-zc* zLha02ksqcnV0IdeUJ`e8iw(w=q{kBjRwm2Pzgxsb%da4P6$DfpaG7lP=*;s`rqByF zNdeVKE-RGh^4><%+PUzfN7i8zyALSJ&?#@(c zxD-7yWZWi~Fq z7~u_oJ|JhuFG61#S%yXwX=?|!^r^}hj}N%3jH0T4P7Gi3erydRT}$ZrF%t((EExP) z{N6if0iG8sF?L=;D$x;SZ--WoHYdEHZ`^>Pw@+4tYkVL6Hm-6VHZTH{d;G}U3;A4G z8CD~dYRN*5jHuE*UEAO+i%5Nfw!dqaEv(w+qaV95!=AN&g5vS%QB_nT|LcGtufVik zm_IZ1dFQUto1^X@=9#h_BR3wTpT&wq4CQ#hd*zBk+(2=!3<}cE3}9&A;*=-3Tk6<1 z6r!pS{<|Y_>|0Zq3>Xz=Yn)4%=gkc5xJ{K1o75=ZqldLroAeW>H(=XD3gL3Khcy{B zn(4w6~o}pB5TzYwSf0 zVsG>oGf(AVyu|lP?-dYEILpk$Cb@r=W*K(b)jikpJ8-6abPQkM+omwC$zhGK#N z#;H~(pyhmb92VmEzFYZS zw(Px-5Qem5+@NmUt&(0NTcnkTOkM(Qde<$@?>b8kPTs@UCH1sxvS z4iLulI7~&GmJL$%`?v&T_BXY?6AJo)O`VHN#t&Tc>A=ygx43H)R>bx6rj~rGqNjxz zm|#Wl{eAhO4b}mvO#f)%+ep1`<Pz2^2T~SPQ>=$OQTsIvh2%B!BBLqVQTl&9^vbzm#YPg+K7dzv>_@lR-n$^ zMV8Aw=ec5w#&@PGZvbeLsK)p(uBPrDr3z8k^@~%(FW$hbw(c3j+WgmH@OO;x{Hf8+ z8#d`l?Hz>!b1okBrn61Hn;7n5*Q5d_unr$@b3U&WRNvDH{v#wflt+wF6VwxzW;-`L zAW{xFyv6|cuV!Lh0jJV^lX zj_fY}z=!g&Hc%V2c+BBWDzAZ(QHwo7r7xey?%r$}b$mZU%&mNEyWN&p z=ZZ0AvQ<<4gbVc9U*WhcA=?v|Ix>rtxyj$1K=I~@a)Yjd9s{*weGv8-Df1!X>f%e; z>j<2HzSv5Wu2P!!)H~)764TW`06i5uuA6l2(Suja+_6uQDx<}=mP0G@c}~8CNnSKu z+hd^DB~Cp1FNoS{DO`R|yI-FrH`biUwQ#$b{%p=vk>d2Rh_Jp7?S-l-|TWOI%(n3w?Uxp;(IVyo5py~5A%Q=OmZ$g` zQ-{PikcUSB!#li{dIPi3mrc5bH4O$AZ`C#C7+A?;-`MtjOw=mMNI*N^`vb_U(x5cd zrAu+U)G}39(^R^6Z5sTja*Wg{tIiHQI`lm<4<0`+v9Q=+`VLkk-%3vJgfvtRxkubv zA2oBTN_dy(kw`~}V4c3XQT{|1r!iMiSvRtCa6~9Y*;9i^%SUj{YBgm7OfUM_^@s?m z)#BWDt<1aQoumlOSh=rUjDE81##`Kk+WnVjL~Wf9jl^J@wq!w{w1lSL@! z4dn%i8+@5EIN~ zOzea=!9M0r^1tA*@4m+UNky8$Uo-)}>7U{3aZ41TYB0S*&8}_viu^qHO$B5oUys#LbjZxby}9%>WBb$$8`wJ53mek)nOzFmFUP*T z`Oz<0q-p1Hk63yI4A!l z`TH$73iLDdH6mCfpk*tIyJfGcC5P{-#ei1yJ_{Bx{j>0{Go=O3`je zr_O5vu1}~{j<#1i_HH}Hd>XNDeTvLZbtgj2rE5d}JW>|8`z^VNAx-={5U#*9xn`a+ z?%dL1dcw0;F{}FC-iPzKr@UOCnpbf7LxRGf+Ou=3fjq(``a%LVjbIU{Douy3IbWlO ze5D?CW|gysT6d%JQvI6GpBc>F96Ca&HFC%(73N`|!6ofrg;!7Mj-z~?F0c(w5RhyO zccdj{=m*fDqiJhnj9S@>t~*|#+H7GBFNfgx6R)vx7`#*7-hWG4f{GG}&O6m<$HD*3 zw)~ZmHKlPAvxm>=*wyXuOaY5cu}FTvBsxq~XfSyBuirNG!pmU(d(t%z5hB zhGccbyWo9cxLg{qUzgVcB7{q(j?~_8Wb9WLyn0&~DO*`Ch(cKzzIbRlkdlY_30Ok& z0V!$l!8J>cV_4y*`@Q7d?5BBh7IC23s_MoWTc;wMuVK;>Qo%_ZDhK=sg$qu3oNZ1! z^rgt!gZhXUWOU0lFDaw+}!1ChXwg1Rrz7@0uyk8yaGn!1cde5 zt9z}W3u-BR3Vt7YfKc0?uuQdU3)!EW{1|iPk7Ns_1!^aixUw^mL+9c=l~r1znsKWH zui$Q*ug#YTeMYEh7B|0R-*mgexr3#p*vfyV~+1HnMF5O> zm&b*rF&I9l;huyP7md}>64ytc0vz6-2_qf!hRO01tc>^=Cwg{8u`h$SRUyWxfWzrm zrw%K$SEt_vm5*|6Sr1~r4zwVOUvw$u;Bl=1qTRCHNdnwfq>O~WyUk67=A*3OXgx|$ z=V|9UnwnA5SZgI8gW-K$rzkNzuR6gBl6#1Xz%#XbWUyXC&ftw!)mtF)SN>zVxG_8~ z-HIUdq1K8zx7E#14|4&%I&Q8+so9BFl`{uqzeCgz%E+FY=TcXq_a}h98 z6Nv9=om>RTIGi~t)!u+9u*nSw{$-w%{KC6k~r*gI&Of~JT9 zsx3w}{>hW%SADs@V5L1#BHD)XHNQqAC-p^{Lxkaajt4l6eLCQ*5=i}_%4@E(w_y#o zRVi{>A+j|r(Fqc_+^$}NkReXAUEc{(hX z_#13b%n^f}lPt`Twa*c&!RWIKGu@SxT)BO?e*2z(Foz;6z2G?d`~*_=9AfTV<#ah~ z(d7{{JEUhmHiobKpJC4fF11LZAUR%ydaRwK^{HG6n6cp)!|ZAiK)nCeCs)6~Sp%(a z0TTmD507Gv{EV-BZqZdOlf|jeP=*Omkq3th1Fm_5H)1aVH~q2i4by;ie9qU(^F6S@ zRof)}kAN&|)Q}@46Z-TE8ng5~UM4h*{HOHq=QCPGwaya+Z|y?bl?rJ8yD#pBI$k#( zL(I|}C+E?*yDgVsdUL2>zD^2XeDj+Kay{Ug5HiTsFgR-NlW!u-hAD)&*rlrzlk;&- z3sq}${@j&Noc8_EgLRYJXMy9L*T;f0%0Dnji4^a6Ir-Q4JOU1??=?zrHT253w_c0U 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≫`}5Ih_T=!(Gu*Oj@#3yVGxAkWhdY^W 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%0Ax!{v0;iq2Y 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

s8KFVT(Pr28?svdZ^ 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

>^^ks^#>_$&=-iYScFevF1O(4as%LJ`Mv7NjuK| zEGAeLW^>lU7+s*QyBsz^5V_s`=o<37!ddE7KqO+C=WB*vchd(~C3543zdnEQMfeLB zV~RlTnOn-Wl63Pgonp8HX_{=^o*g{WBPbWaO&9LkY!f%?fms=xRQRl;_(zTMmLO7* zGs*gW!B#5Nj6n_8{tIN2AJ9dSuGd!GrutMwh{5Z>RVYrzw#5twJgmY78^*F%Y-OG_ zVP0CfCc^TrcpuTQNH|KVc>OI6;c9}YFHuC=nTO|!A97mB}T_{Ad~ekDBi z!ezFOW^QkSrAoXcIeeq0Riz96PQlocW^f03e*be#)|(-9NxnbO!2^+U_c$Z+)*nk@ zC#;G#bLqySQUOsj$VAPoI_Rey`B_P!i5{cxFgJ&N%agmT^co5VHgAnfR$2}|du4qn z5UUz#oZtaYBb(p@0sk5+hJuOa<8d7zsE=}DpFfxw25p+&*E{@$3>D1|6`X>)6n*?S z#-r`_1})(sAHl?sAK%$tABsDoCpGs?u54G_4#!Djn(z6%&-qj=MYl`R$sXUOUc$42RX=!a$f#=69Nv6%eGm;>x zB+<}9?anLw3j=SN)$+S$RU-`Z3pK&2kJwho0llgRT{-x$Ah9sPadD%%(aAv(WE{Ce zbuOD#5#}}ib-)sGtEu?yC-;*3*0NIgYqv~TMY@s_3~yF5)fU^e5-B3o-9!2A{M;W4 zd$JjGc25aJD?j~zM{X+bzfzWWQ#zO!VS1ws@6^)GI%kdAo#UUS7J+Z`YMTmNRElD2gSlD#T|OBWw!~XS@!jYbhDaN*f{G75FV&lBqu@Ki4mUr+f8k>Aa z_8^eN>3pX$tL3%${2chOta<05mg__g{qhnNZeJLbhP|0GN}i``=mYWN&W&d`Kg`@a z_`eXhf?(rcERi&Ub-%Q59-0H08qKn8M?(4dK4tK}F!4AC=?II+hRI0&g&?-urrnl; zHXKZV4m#yN`o#Z(7eLJnBsF6HpJ{BAAUeVZn`ka?hx}S zu;}j~FBqG~8=GcG3x6>!^=O11$o{f^Xsi@`pAHguLh;p{BMiv-w(TDjqnqtG#M{rD zf#DUrly-&f4^S`PQpsVGSqBD$owody!~K`VR$BU+fO9l9HFZn^lJ9#4-|uvy;E@tc zN3x{ws|y)(m5D7QD?bqlFl1Q0YG7Q@F;Z_WhgZrgpw*P7$GLr&pJl)_cPvsJrz><& zF^uadC7Lc@dMQ%adIn7YXQV<>g7a|T$M~jQ9j%Bfgy5}40IA4OFrY{E(MRtM&~0!l z9#x|DAAvLE^V>CkdFfS2*n2@bzv6x)ElB@35t+d6c6MV%^wMUWh%mTq-uwshg@Th+ zcVY}|{N!<2QsOFdpY;lOE;Bi~Co{x@8V9Chxetn?a|!_W%a!|F`#BTpyKt20<8wGe z?x!zYhl!NB`q6Y^+uAU6WUEumEkn@Zp*p8-m^4ZCoS>lBc}{^2`7*d zo2aFrzUQ^V+=DjedJ`Oqku>xkYeK6rg`^+R+qdzD^=3#(+aDVMm%!VtxUFEO{Bt2` zHTVfdF-a`LSwJ$0rG^Q7PFRQ4X~3M1TzeXRa;S{meMKe~>I$y><iV~2fsvZ|^x<~;U^0xec%T89d6P@)Snx>krFqw%9h_@TsvpD3LwFb`WYv9b~GVtl02t zg)ET2y?dkcwx;omi^KbWQzu$Nk|IS!siWl%j?L&PD$xOwGJ{q6{}DxPl+Dt~t}uty zr0Lj~{dO2?V5ziHzGYO_wTv~f1Cm0aSQW486S~ zy@W-R!c-f>W=qnGFC8c5fm2CyMzWW~E=BnWXb_SM_q>?qD1R9ASJ05wJHw3V=g(bS zx=^gfP)mj_SHF?tBh!QQI(G*|ask8LHuUN21k?;^R($uV^+0Qb&w&?)sPU<6!NRUy zb&D15p2sl6PVUNANU9r5bX8aGQQad!ae4?`os%LmD|2Q5GrAmRCFBF#5=IPJSjbw; z+7Ii~aHD@KzQU`X&qTB$ROzvy&oK?VULWlIs$8n{CS0DJvPQY2?)`ERqkPf57CL_X zHMicwzuM{a6ays0ei=qFNdT6ymM15yTsn_bM97^(0tIzC%V^Yj1>YFzxBB!D&ST8J z&6>xWC)>ShH?7yJzE}4^GUMH2MKUM);32k~m_+w3?EU#bpeN3(n0LJ%J8U&)JMi=m z1Rw-Yz$CMY+~j-)QGz?V)~`k6-T_{wWmDEydDpFPA(}ZCpyuDljg)7VvezQ`71XxF zqf>BsR#2Mu$^mzsWt>Z?a1QxG6VPLh*AMK(JEdPs#DS6V(wMrFtCCwomi@EO zCV9k)ECHZ&J@ZV;b~Z|9r>LFlG*bi7f7F zg|Zx(avhdo-d)yZ<)i|XiUojkYvXeSp=UMxYD+K;>uD=w8<}uAy_h9_WDxunsBaMV zD`@?Ho5C6K$-5wR!DD<`=MK; z`x96Sq(JfFi1Is?&4y=y4xFJCk-afCnYAp@ouF3vE21}T^L59NnnedjtwCIDFuT(3 zLyf&XH3AyyMy@HjmU&aPBfffu1nmc-b?a?&@+WnhoE|==T z$`8X2)Jz{<_+N5UVE01(5p{+&@E>5YsJb0Es$)OiM zg=`&&84WdWx1UH7RejSm{)AfCxzQ?i-gJk?EGOrz3lj~N-BBZXvcJu3du{qLXW)iB z$x0b+J25(ESuC|L^sHoA0j-T_tteh7Xv)i_-V=uwC|=NFaJ>Amen?!h{YD$fR1-< z44b0d6dy41v=rQ#nXsGV`26ZHe$A5K;N$WV=oP6EqCGvSX=4*yLjNx=!26&k%w2mZ ziJ{j|p;k%I#dFNMBG4D};xHGZ0*&^mUWI80UCa5oOOwYAE-MtPt8cNTXzZ@29Cxfb^8?a;7uigsEc?sL9m z)ehP%tCqruzU=CuYyfx2%$nI<;IXggxd(dTkO03gyWrZXoQ7Y&o+GxEz4{y?2VsWC zoofFbZKCArIz1am*k?#)T`J7^@T<653f50#nxo6Raf=RmJ>Kjv#8rG{&W)zxuZ-_@HWvZ*_qMt`Le}_ko$Td`CY)v4q ziF$NdR$-5^Y$wRQN4Z`xIOb3mP@p_~ez;-qqgmCNE=Fo{F4ty?{j_YI@8{F2i5jF_ z8=F37!eiMKOwk9P|^x`uEFXbv|_t}an%J|!mWd-yl!`-6LVu->|@r)k5wf_j53C*H1sGlM0< z{``u8<&6495_ zvFPc4dcyXh{apoRTnSu@){M=}o0JA5zO0S&!8C)PD&x;DwyS(}N2h=6qsO>)M5LXS zf6j#RXi0wBHl)+!dlr%6`~+h&l^+!%Wfd%bV6Kia6JCsdj7MFXS9_|Zg?$vsVq5X6 zZK_q2Gm?Fub-Y^P?0J{s^Ynr)>G`y>gF28+oXZs$jKO=@`v>(~MK?+xIA_W;NHSV# z%_j=Q4Xhv14QGGnsA3%;i|i+7OK5jA{YCMDyHbqGlUwE|!^acmw2$S~ruWpwF&*&F zOhvi3RZjaZ1a6tVzkM&J^^Ko=5GI>Ye6OtasRm^V)yfxAjj&TUNB2S+aDchbNG}i7 zy;2`Edv0el^JHLgbZQg3;>tsGoXT9TckUEL)kUD+x!LsQSTH59Fb|p`)u1b6`TmA| zn$l!>f2GE%DYLXYJZ|aqC(_X`gr+)MC6%~MiJ52B2K9!1uuQH zfXr(+uLSXa+>dwSiv|RX7&kuGc|jkYd!Zxjg^^r&+en~zONQoDb5dZ)^iS(vm&klB zTTvj0-*3_9gNarSQYQaBJ%^AIZ4SzSBoEHy+!?atGt_TbXO%aAhvNj1IaNdbEAYHs zisc)pdw@~nSEhO6ehN@>_nN{z~Xu3?ij+#&>N7o70k zC{dScm#)MIRo(CWP_t94%ys#R=n_)^)v=9nsY)#q*1j^(Xjb2b8m0Lsa$jCeM@f+QzTus;-==p_ z*-x(aY1hrwm|yn)^4Ui26TB0YX+C!>B=K+Mq(pDqckDpHBvG-c$rF-@cg6CdQOelL zt#}`urd#V3Ci$rzH*0yE23+m481(wMGDUPf`L0)8~RUDma zdQqA&istJDNTFa(j)|}UnpvrBoFaS{{+)&dW5p{FZoa5l6-uizUVWhOoiev(R27Z3QUU{ITACTUbCNAK} zeQmU-ZGnHcKQmJ5ZRB{I_^!a^ug}7SV?|GWDQfsidmK& zL6!Qhz=&RNh_&fHr(BRz74N?;F%zc5AFUvTmK6(6ONTL-_fUTQfSjNk<^wagGxteMp~ z$we1ndF2ot-u|;-xXP~F__JMe{4&SrZ=+D8%C^gHkaNuukSt&uGT)fZ~;kA`e|y(ujg z;ty~gl%GXQgfWyiAF8EtZ+qgHorQGW#!-T){lUWcLr72AS(*B17gE5!9F$IH zfphz~R->T#5JWgyPN7YZGtD^>5)VB_@6G_9o7*tnO%nfOGV-*w)>!GyY+O_&JA3#`Q+&I+Z z_x1z~9aDVa724<5!LgBbLphLA7;c7PJ)(G>C(MV^(6jp4uU2v52uar=3_Tk7?U;WR zkbmuFoKL-ZDw=Pk3evVLq`y8+u$57glt91WjPjU7sZ;(&7E$;KnRMKG^x_didE!Y5 zy7$Z635Ch>AHw;*%H*xVH*-3e{OHm3h#B09+HpbhbO^t_{&arq%tx5z+<>j)vVYkf zUjc7`Y(Zy`w3*nC+U)*q-Mhk~(4Q%D^m|+X_djV`=BermxxA*tAVvYw@y=_%sF7;r zkYa98Nqt6qYj<CNxbsyZOI4TUkU+#t59aFy3n9V#f2hw+2yS|=8^T?*p zyg0Zx$EZ>8g#@9L^3Cgre~HKYgFtcZ0ueR8!9MO6u+{YI&XOkIL61P-D;r`)^wz_e z0`#zD0i0Mks0AZcDtd}LP^-(i{Onl zwKfe)tC=j18?zO4UiG**H=iCIOaX@^02)55>2BRJq%sADLy`|CORqbNYcii_?G92x z!q*K0#DSqDo~VvDFH%Ua`}|3yRL8>ERY^Uqe!-bfd{{{Tfx!}jySHS@vt}GUoie-X zgzUDDg2v7DB{UB)@;;svphFuR7efk#A1CH|vMKcuk@2q?Q{66QhVsfgoXE46IT}E9 ztU0+TYL2f1ifm`K8OWzV1f@c#ZUrxKFyQAHcbic#7!hn$pRI4M~rD@kK>uEnxiR?kj{%6=g0$j3ri=ZN1+t^lYkZ*NMQ57Xx} zWV1=Zch3W|k(iJ|nv>U6UjBq5|7tNeI)>aUgd2?r=SHFw#6Q1dHL=C7qWw7DzpX|6 z@jrcp)A`)%nE5d^C&J&AO}No7I5gllA~x;s=@GK-$z~4_*?ZPAncvwRNmhuA_IR!1 z*}47N^PM9$qNzJ6YC}aTndU1NAoVCJDJc5hB8}o!P!C*>H8?3h&8@J$M`?WiM`{k= zF{w5jm;JtfopH6c(S3f+nEza@*>t|W3B1zXGFWzY_hY+e=gCE-5{DaFF6`isPT|m_ zuOJ>lKAi4v1W=AT+-Yp_z*X_!z=4wVS4DHPr zeeuC?!V!8#ukKGo%-Q(oS>L=9-?jqY(qPd>zsKP}&Z0d6g~I1Ny3E$Uo1E`l3lTB> zkXu)DHz=f>B>phV#XUN)wP_*s0hUDsg}X*Ew0Xf;uer@(9xAayynt^*V(|Qcp{VJH zhS(}H=~i%d0@Rf($LCpk*Wu6WKdDx~aqFKct@Yu0_}QBG-Y*Pn>s6?fQ{}d2(mjxg z@$Osq&>fYHw{I=AHn=a8By%sH%@szCWM-F%Jp@@aBGRXmX?2b35;Af;30s&lnAJ?- z#O5mU3}55Ek6KRBXGmiwDAA;;9VZAooAGaS6%M}ldFu9aP{*)uXrZ#_%t>Yg;Lf2( zFYxtX6Q!?)nd4&rCzhhFC8u9WxixQ*e&jdq*)mMc<<*zauf0!#Mz-o5_l3*LZF$V) zF#Y|b)l}K&iz#;-V&u2I3YF8h%!DLa_{Igqv_RvdM2bs%ae+IXzfZyr4iJbd2zsB; zvSoFqUtGxU7J(*tV$a+c0YbG6P7F-fJN~4}IX~z3^Sd)+Z55z!V%8RtgYS*9H5;s~ z!L0xjaoyZJiNLBj@s6Io{SK%(g~%TB=}w`m#BS4atKd8X??1Gf%?}jcjGP{RtCREt zEYf9U#gL{exEZxqCJl*TRV%l?%Wka9lmtVh+u91L$7zmKG3^JGxAiDTO>VFYYPuG0 z`c0SYqrMJFI=7`fSP2G7HO>hQ1@E?S6LFOmh>oG)e{*FL9EPvv>_8m%u_t$Vm+!E= zuyHHb-x@8xb~|lfbpMWk&!tBE=-12=mG)hP5~a=dG42)!N|ayv3K5wqx=q%0KdV@U}0>Pk8+sQot=v&N}|czbNfAGnz|L@^Hs;YKL#oS^6FT5 zGxpB|;X4}N-X@Xqhl&*VsQ7Qc^BT8^^vF$54tgIckVbNUzVrP##;cK8cvh=K>rHdO zzVkK9o0|1c0!B{!y;p?BjO3uMa*`p#=tt9P#&&JTGYjZ&o4Mrrc!BMN)5&eC8B5N( zwx4elB!B0}PN8nz^4pT=Os0tcmQhv(lays-HDX2RXg@w3ad&D7JO#Zn(p8Y_5;Wo@ zY$|Ly+f&076fq2hp@#BfZLP}j>du6(t^SDU+5_%wCKAoX(V&ztfbGw<$9!2NFaiwW8(K8Q#ziq{<6khR-uy!+mPld}8PQ7S%# zN9L%x8RO43=H4NL=UQ}}GtU&+ZEW^pTcTwX(p;Mk`b2#rFy`VD&2F;nVmAXjXH53Q zzqCEf1Uu|&goytp4Ooc%G#+Jnt8?TCEYaC6w&{kxizbe|^-!+z-r6}HI@v-cPu%r_nvBAkX9I;Th67MTxywr zH+IX>&i7}nI0Of&UIWC^JSS|bb9YQ#`I}E~%>N@I`4-UJa#+6nJm%;5S;>9vOz)YR zL#ey7c0YM9{2er*4pT?tU*Sn#foHg?2iA?aB78n(K-gMrE-3)!est=5Il_!nrbbY zB$gp);_20Bvxcl8#9tq%)xB=um|iyjH*ISsy7&2+(#PN26HQCksTYxs`cs&(b-v9u zF>O*vQGLE;_^TPiZCtgsRGh}QdkjkEmT9>4j~O&)arYFO=4Ra(*AgYkJyH`cBU5=0 z{m9lcXO`|LT1jKkYAS@Zfk>$~c&T!35cACYb=rE?tyRm#W4>>PI}X|SKaN#z znU;MpW4EF4^7m7jYF@Spny0DTfPb-*pwaJ|&rcFePiH+kkesV~Pb!*!ya>9Pz`=gs zjA_J-%E9Bz>zLTw>1@s$OuE_W&$`OlN$1=Z=kWM^yKVOF;_rwVpTq$cZg&gX;HDAn z=JZU`+}xo=f#UiUsRM^q?YPDrRP_^)=uv3I)SYfr8ZVE7H-(@^^%IF?8?*ct3F9NZ zCW8Q4k`K%IF~-y%c?TfJ*p0kQ=f8 zag5RGvnJ6AC4)e!oM=MlcK{*kb8~O79hz*hTPzOW2_z!aOcFnkdp=KJ;nXnG($U(j zqh@R4z{q6}+V{E%Dr9ku9?D7kd%YdtCC4Q|iXm&-TwLH)=uQfX_+ARKtv2YH%y8K@ zu^PSG|Gh#+(7e&KL_1&oY*Ou%hY7?2R0vc?C524HSR8o--~@E%jqk08OM`XT^wS%* zDk=g@ll7GbcUiG#a6Ty0L4%=Sd8y*HZrz8($EFz+tj>BK5#R&7KITN_($_FHlmkY1 zLCSwLSDDwkW+r5&{>b$Y>Txh`#fte}*A+?|Ahm0a2ylHE6f4PSeKI_aV}FsOi`5^D zjpaGr!RaEPZ`9~6e<3SkeuVoExwsh)9Tc@UH~jn=fr7^SY)8ybc*ADD#T4r_rp}en z$2=22akzZ22vPWY!7HoOGqYvdv+~jQdo#cepJR$F=Ho2sgvi&M0V{Kaf&Is^_Du@TOIZ6ic6u%(I6vJ zb|s6Z+05of=)H$W;^lX|;!o}tCADKD+{Q9yd`Hj;G zZL=%Ak3VhTDk1OMZWNk}qlsFdyxr&{23rMw8UT=f*YXvvK81>VmXW+KSe@jU=D^yV z%6-L#tT>a($*!iuM=a~@Na2-q_c^RHu|maLW_FJX5%M_-;B>C`E-Q|4UU z4-KE6>FB58--`uAGqq+Afy0FJx#>H2k%>bm?-t#Ic<=qEmosjj~XNfvr*jG z8*5C$XPYSlw8Ya}44u`tcOt(z1|!NP%Cp+C8K|I^230sZr+qQwGY8NQ=W@b^!nnBF(7n(YV-wE`Y;Opd=ERGGr@wX<8{tATZtwu#%R>NiHC#p>arV_~of z1>t%}xfOv0=BBi3mNdPkFQ*Q4%;Pg90P=8?3n{sd|6gRBWn%5hN5BLkp2{#&JJFrs ziYFbVQibN2k~QCEe)Z>`DZa()u?e8 zFz(i5&1y`E2u3e|(QA;2hn4-0q^}H!vU}cM69WWk6kJq7kdST`M5IGHML}9X8mU!5 zP+D4Qk!~KOb48Fw8iWN_T4HH-+2lRH|NDVY%YEN-&dixJXU@!ZS+*F?@!3B4y3?Bn zj(`P9F5ekYhj}qHQoCvRQu#LG@li>a+Q`b0rqLlK{qXUf&f=7kdX$nV<81!lWL$vZ zrOG&Vg=-80A+5i-5;zdIOD_QM*@2Kr3+i@}qEg=rg^lU>lM0k8b7Lc&5dmax{86m0 z_!xZ#6NB0r5tnP7z1D@&m)@@??_qWe6g+4D11wK3twxLE>j}&imn*xGy~-bw_Z4#U z;NdqAPu+uk`ZY-HC&fck6te?R3s)}~kPGqkuP}PjfRx~-C`gW-8oQ3L#*`vpbOqvA z)am2}i>Y{;rq!)sep}bgrL98OC-i=gfoJb?|!7A5fq22qHdTE_K)5}$W8-x*UF z{s8bzw;w!ud+@J9z4XE>q|MYK@lMHL? zVy*}?c*S1FIPzf6K=JuZV@qZxk1sbwW6OcHyHq~7!x*MB@|IdVfR8Vg?w1B;MXT<` zH!kcU=^vMM+*MG-VX$#GZkR5qamiyvsfl6yVWL3@QlVr^8~|*2?PVobx}OUkV63O+ zI5KE2y$Dn9w84!!V}&@ zlJkw-*+zaqkp2N=B#*{%tedm-+c4uf9T~eCnTP*_35PhjR;QNf6t9LdNpEh&DNiQ2 zV(QUXN>EO;sgJgj6|FZk9&$dqaH^JiOUxkBF|>BEB4c8gM{ItD|6$b4qHZO(f+zY{ z9Kk z%2%qULe=rIY~Mf|-Z(DSMU0^JFJB>eM&S9_P^e{-=s`XO1oXC>`Q^a3-YaZQ zjH!)XsKDnlkgp)Oer`6ORqhgRWQgqOh0z3F?Sr{OE_{o{So^b+TU6bo!E- zf!DRB3;t;50_Hv{nKx@00MzQO(E$@cJ{K7I2`637pE_|= zeH=itJu%8b7W-lL`>p7SPe5XiLnndtXjVTV=xcq4#dO95`xL+MZ~0f5CPHmelFJ0X zFY4*m`M+gRylk%0JmwOU}dS7aaYf-M{2tEb%m;pmM z{f{ET;-dK6x{iS*chD2F{c@oM)&}(jjcq86;BG{;`}xX;j+$Pji#G><(`-Vhf|VAL!tSA zTFM#Z^4w;-H782}-Z0{Iv1xC0w?l@q&<1P2#tO1^rBe6FtrWf~Th1A0bEMb9yX&lK z*GBvkQ%L3JJ?Z-fW_4)mKya~O5>^+tW2rcu7{F`M4 z%}SHmq1Eq2L<-eW2B$S5(MvP^d}r3m*i{Zej)s3mZgng!+^V(sE(Y503?ugsAZuk0 zE=rv0EZ=zQ2W`eAXXv6j{@r)3XStK0Dgu#*xg;%MB#LCdC;Q4juUcrR$Y?5&H~Q?T ze}p*CmeFGN$kPMvC#7DsmC|ZmX#b!^*&h(ldB6Zwd!&#=4*Mhs_%^q0%t}TIlFABp zi6wOmyG?XH!FH+-&>?n1<7|l-y9yh%EIny)9VRSp=Dz-5#~3TyH?<(#9#T`tleS~) zs-pFr>^qLT5#l?u+ExF}*4MS|6*}jr4=}0gH$8vyOxW>>`P`=_$O$`f{6#L+dZV3& ze;G8;me$p* zI?E}9OEERe_E9uWwZ&0gh?~6=ELvv0WH^X&HL2W+aNDOd%0w@4liHl#Xk)qS4E{cy z`(1NyUNoKeSDw-*n7~GT>(s?ErK|Z~!Y2wkg+(a0I%$H}@234{UJhjlIn2SHMeVc4 zAChJUH%^U&;N@(1zNCY_wf&0J{*Cw>8wRNoi@y8KqvLr$y@j7csV7!TT`jJ=E-@Ee zmb+4&NPVDVg4>jJy~ChmLr~Uqe4oZtMdr(x*fwXZzHZ>AaTHO3WEFA6z@ldCvPf>f0k^N{*504Ay3O zE(Tg^s(x{-x@eQA;S(*cz>ncMHKRIsE@Tc~?e==SiuADOaMY{YpC z>tEeAi*}x?95`21ZS!Dv`rT#ggZ%@Q64?>6)1EV(@yQi^ik#2VHFuCl@YC*1WmqQSABhVoC1c1O@6}# zg6WMq=AOv5zYC8$miv((T(@5GyEHe9YFvFbwmIaP(J0*|zU`vSDa#ZpC%39J^}rf& zw={t^4lal4;y3kE;&vv}FQ!X!zCmCkQw)izOf-&DlPO_-ECu@5Ih|qd4U6TEqAE;U zt_&g*8>c1}oJLvztyo=5lkdKl{)^8IkH21XQ*fnuA;dn%*JE=@Y*_tfElbvmmUv;d zbicy)3_3M)#qv`%%>J{68r$VY=Q)=;the;-*^PTcAX8@VjT-=r+PN=pLJ>KStMYEq z=(BLQF~9m459+AsYdVreq!OKEIG*RjF8-*m?UAXpW@u9wl#I-`$5ejBMOKq34zqUPQrke~Cc>}GuoP9;xStV2G;DFcbxiSvIzeQNjf+&96Xi$= z1;kKs`Ug(Q@dN&m&4IDGv6|WEY1cbWoa*R!Io6(*0tmk#tqZV=4=rBo8YSNngN+QX z7ApE7&AvseO|eh>%^-T{=q@_xRALsRP^{=-8PJBQT5&7AtJEUU?b8jBxCe$7fO?4W zBT*Ic6@Kj;PmP~^Vh;Le`R73a(S-d1$ZEY2=waD>M*o*On6dKll1~(<&>zT!2(Yq? zCh|DKWn{&D`gx!4yh_tupdA5#TSKA-iZjutV?J|Tzgj6SCUstKA0y%|2J5vm?A~bx zz^{F57kOnd8FBI$F6$IDnevFL{>vuWJPKi%t?3^bG#=Ud$uvHT*KQ5)`J5=QOGm z@Oofa{WFAY`8;fL%<%Im_f<|zb>x>y$b!@PrL=c{88ex_Nyaj!0rUgcESBC&ToY4H z0(wp0mRp|s5+94yW+5{BmOR$3hJQ*W^G@f6LKa<7i{7AtkM0SeP>cyI`g{j9?&j6q z<;{9vV5mS3jKn;7!1~)oeWs)S(YLpn zuE?jl5gmlV^NMBb1(hn2!A8lQQ`biMiF`UiyFN*Wn%SGOPMdny{d2Dhu+{_Y+Kx;M zr4`hH5BHNg8gT>T*N<-TJp`?Fg)d~%@7L7PbVXh)%5I@ZNNGph!k0qVpuhQ>d@npV zv*+6nbRDm~Z-*+nI@qpd+!_`!0B4S6M)kYQv52tl5z8e@dqZKPm31Oqh!H9$!)~9 z!@4%w4h4-dZ#VH0mmL^cyGjK(>cJJbcIaN3`x{vy(A zp8(iNhbs4WOaRc7+k^VbMt3V|0OQ+XWYKfQF06AwL$4{!$+1UMWzZijVewq+(dme7 zVp-aUr@@=EsPFW-x<*CU3j-s`pf$n>sYZ?@upGm3&mg=f$OTv>(F&%F0bPGp-*Z2@E2s1K#d@e7!k?7>iAG0uUY5} zQXxg`v~jMZots|pY*714(U7ctb_RK7H~Dv7ePr&5K>QlZP8xh0_UPRio~@e~{Kq8+=gl?cqgX{aGYFt6T&{1UN9cj09%wx%timq@kR zc6AfFP4~B}i95bN5uR*Q(|rc9#J{7ZuoA7$AnR}KC5+A>C9o68S$HSht@hg)547hBE1$hJ_9~qA6Zql6)^f6s%wa!n2H&#v?mW!Hk6; zN~{i=0|}vojJ0?Q2e}!0+RXMcatGFC9~YV?mTFEpNn!=jySB4mBb@vay?Bj?kqkl1 zHCQ?e36h|L_cpv_W6`BaH@b3B$Ni%CM!YJK^8zL4NGl3~#M(XZs9iq!pRhJ3g6ZT& zq8mGS*MF3gK@Ql$@(OX@dqm*#m#9%NwJ_q38joIbiJE@(Uy9xPT#v~giNAFU8*KAQ zx#T1Snl$49K!eZKq6<(|vVGCowN&fds#49PZ@;;@8 zcJG2)aXBCebxvy=~dzMKLod!)7&JW zrH$4Dn6tGL0?)EOs9e1D;cC*K+j5jhqt*!?61mA!MC7fjYnq?5pp^4 z#g8Od^BIJTyd~n6-~~RLe)vbYbUL2$2XTZen1|6~(?4twS=M`ihI5)l==ZG#A`jtM z^VWQ#+J^5dSQQb5zu{hFbHYT)XRRhx6K&Ykl8C~44%{p6)`2}A7<6ZZ(eV2HyNil9k!?5}ZUTJK#56&PwaL_^4M^;8IDgH+6(<6vrqR_t%$q1rh`~ycU zdhuX_>y0Qpcx6Cj#?b{vw6huE3_%x#j!8-b|L8F?4d$d`cKL?dy$Sf}2uAF}Aq-ZE zL@V}s5W|*%l3StVGl)0k8M*X6!x==7d~m(%KJj1kJvPJ?Dn2PLQqgJQKcy}yvNXX)}{|tK#Jd) z;qF5-!e@}zuJ}0!)p7Nl--0L{di3YB7ZsuB7UG$=DuTd9F1NwJKswMI_%=mN*vVZo z{(Ah*8DuUZW{p6*Xv-q60}uLfa+kU{7HF?} zi@9h`P{TZLs6K(^{B%(x{IpWCy}sV}e*K2=G(u&+>r})lqU_#@GMi#(Bx*iR!+8tHCf#*|6+0(8fF)vR- zO*i1E5CrK?YE24>9zKYoRo5=*og z`$n|M_I$k>`o=M!++hpa51+$;WEN@T403xXZsf?Em$H+F1Lm|3!@NCSg)f{z{397N zg?Hb3em;txg`NN;8d*L{5xH{81_%3ngBSF}HY+}n)4ERi2;>BQ(IyMM0^~}4u#X^q zhc6y|IfLA%%w&fhqucBgZp4Icu>F=xV5+A4**HR!?cvj~t!osIqtEA#JciPT9;L0o zM;kGIR7BGasZ+Eg2xhJ!PI$>Xdcwd$>JOJ!1{8buSnq6U;%I=U*7`rMRf+bzJs8sC4{x@6jOGJagB6m z5FnoGVRzP1Xz%X&gH%r<{76bbgTpJ(_zZ&Lpm-x1s0eA;-jm#*_!D?m@6$%2-RHms z?;la+l#j^Qa=^uqb`xLthEzkh{$MY)!M6;FBT;Ka7VJP1K|6G2kF}|7)C;!Kv4MZ5 z^uc<@Wt9m3-xNy!3MZq-V6PLONFcLhwK`!3eh9~IVX=?|maiF``LHKTSqzbt=S$o!=j#(hbr5 z3D$)T>OXWEJ|BLhBTj*!wrkaaDZ_UsZSYjsdEVkFVt$XIfED62y>IE&-P9lv;D^HS zbvBe2vjJ=e? zGf2xJaBISF_lK_y_d@@jU+zP!ueN!$^}G7#gS9iQLi*Em+nwA_44BtCueh-u6K69` zZ#MYhE{0*32HmeW3U-IoP`fw8=NXg>5nR@;?fU5oMRf4lt3Ub4G+3c$4k!KQ@V$j!vy8=#KNm(;b(1T(IpuFq2qtkS1w zP(JLyrH-i2AZi%Gow?V{VBn?kyIxixGC?+u^-|q|Rgpv4Y;)I=D6g8AYcJa3>ZU0( zd_laLk`{xc{L8POX$&C!?`DQ)BSISBvya8tWdMFfm@>hVjl&J5y7WBO3J!o&^ zJ>o%;(G4(_`;sKYz%B92TX$?-8Lb@g+ypWBAo3wF12WR;P#=sHvHN%r+q?6~71|WK z^j3cv;do!jARzb)cnkE1f3_9d`!C!L4@(uhPq=hAz?wP+EKGPzoAx)U@eC413@w3A z&ftK7n31Cea;#KvwDXUI2SLoSa3t!(Aw2E|B5QNuBX(&JZJt4%v@EYmt%X|WStCeO zBS~X}6Q$wsL|Fa|(SPka{4Zs8g`^T{@qHS0B1Z1&Ujvceoq%d~&t9C~%**6vc~jow z+0UQpl`6eJ4hOuI?z!GPxso6_ed`<^k>c#nMXxv8q%>GSZ~xpzXe+6 zGl)AWQ;*z;^}3!dcs|c1pOir6L#~}ck_l%J!&gB^c-5tWQ1%F>*$Q1vnkLJC#xLN(o!xB{1Jf}zP|0iK*MdiV1c|t<$06Kc2d@*_%}A>Uk#K`4v0DcXe%0YUgA~~WQzK8+qmWLtmqrM* zWci5`C=x_Bf@sjpfgsi*TC2)W*h;oPhaXq>~(a&{{S@ zgdKNOAU9wgW1!47+ z*q2@+sRia+a| z#v~^QK+YgkAh5Q13!ay1KoIdx|5L((Fl-jls0f?4DeIbmn3LnhCd(y1ENmyhr;Uk~ zBc?ke6Mb+BKly;>CZ)2axTNiotJxG4{_d$vXdw=Xe?9>tl5G8+fmfmDfj)IWMo|#n z1T#=B0xKwSWX7>`JQ}(EkUTa9t%d7J$y9G4-Xc5WPrQE(kwnWP4`KT)nPhuhCUC)x z2+D0$BzYD+&&x*{AfFd{dX7AZ>v^GT4*RdElX_EfyctfkM>JmoN2vkQeeB>n*z_61 zha(FyVfJ3=hrHN*O4u2MCM>iV_Z&(Q^ms!--Y$Zj$PrFufd8R<}4oo$ z&XcCcKdGM@{tAbGLC2^yp1@jefN%nKc(B+ECFGDzim_^&k2lJR`MVmg$KcqU?$^wx zGlJ-oRLXaC$5~nu4L);$;QzfN`)0?`Ey*yaf5Ac6nDvN-gb_?7K!R?9XNtr8cMod{R92#0^9f z%1HZYN@>s;Bt({bz&$cD>Bt109!krw89Ug+=Pu|d~ok9M5P^u6SPh5*9&=9@Q zW%FnPIA|4|D{{3Vf<^3q25IuBdvF&FvsvTqC(6QClzL7*_`%$NT@EC4&~7Ur5Aoyx zg#Nmj%2Uwe+m3*QT*!kAqReq-1R;l5g!qGYe%(c$JRJ9Gq*#4txJ)i>r2t6>FT?D} zjUReX@`zw&@~+(IlFoeq?c0W(mV&SHgP}Z?(j(9AHCIzqyMas-PgYZ#Ka-L7Ud?-$ z0$B1@1HWVC}O9 zW|QDCiICMJ+oOF#Y-)N<+z9>i;PhlHC%&Wez!<2cOL*!!{2!8%P!E&=t0l*2|Fk2I z#F-@6!e92hJgia%ga3HkidAcU1T&}VJ^qjU=?s#Kff>bO7p^N5Q%2`TK<@0% z&im?}yPn&7AlHZ;{Om}M1A5;0F%82{Ps*3vDFYAgQKI0uMlgvWSyqZyqV%Q+LFXI4 zhVx<}0}AAFJ4)^K*dOqk%W#57)&#}X?)HcMIrK4yA*JsBe{Tgmw}9YA?7S1{Hl}QJ z$0WXltv{{Z)+6L} zs(`eTSlR>HU2RyQ^bn=z$%=o`gaz~@&0-0p$>!HK3GHo2{2c#<><6-CVWhYwJ;L|} z_`V1jWY7xOyce>2w#i?T?dVs?gAva*SBFA-FS>!IE3on!dU*C`Vctc+Won^Yo502xBiGQ$&!y!*@qQ8Ulcz8;!!Wq zc=D!U=}q0d8_R9gMjvPiNE5-tfSbI&OVL{i^+yrWUtR=-qEDXw{=O_5yJ~UR9pUH2 z(K~KqcLKFLfjjO{ijUDj7?Amy0Dq0~3q)AZ&PMz^(Z(OMuFJNR^Dr)8E&876SoH)* z$B}5Kfb2VzQi9_m5&nhXfhPKqN9u8*3*Z#kh!bd2XteY#h_1Y6#r&L=h;-ehz!q9} zLWnwuz;V^-gzlUA%HOOStLj>RE@FVx@O`=BmIgv$ zIo+o)ZgFg{NKioJz}Rq5t+6A~A)?H{vBEbe3UKdi)x}2s(jFkH#i!_wQ*S0u2-if&9FyG9%C**IeOg-v(DB;pAvOk7p7#QR-%$=vRiuEU+Z5yUX}OF zOBtgWw%)mTF!TY6?%8_|3BXHiTMG44pk;pGizsyq?KNF1o?~c7Y zcMOaW(PCobG@HW7=Y4lanwv_^w{OY;!Uj-xTni`zWh*aj$H*oJ*;Hl!dB_6wMhRMY zTmVpbJK^Sau5upZb(j5`xct0|0{JY`v-(ATPCxly5fWg~e%QriekzO@-Oi7EozELaS4?^}F)%y!p%VBR~ z(uzb8jauC|sePQ0Wto#4eSBlX@%#n)7ZOG(=baz_GYE{_$K4FZy!96T5nTcU#Iejv`s;F75BK`+SJ~# z(u=oW?M$LOJhB?T`Il^EB0FGbnI5_Z#^Xsex3n{TMjNv z%LN|IB7VY^an-Tbg1bX@OonTT%IJ#cZ1-RvIqpV}SBS*Y|I>c^L+ObidCq7pUBMzb z)*i;oMYl4hvoGAb?Y><#1!_x%Ev+xa~DH1=(>l?~gMw(l2jd4C3c z7tf;>1>FWish>A0aF<)j-d($=9*oOrbxMY4eHe~3ta+2UwOz2eW8!Y>V$&6>tkF@` zUX9Y(Omoj)*vw(m@aQ4?9=dRdL$-f>U3;!+&N+Gcs`~z=uNHk5mBVV)?vN7g&0aE| zScpG9FU2fhR$bqXZLAse*I*R{CMM1)x^ef zMzYWNk>tXsMPWv(JJS?l$+g6fekP784x1dZi?^~d?^B!rzTd6UK$hOL{%en*=)PJSl_)#J8`llL6+daYaH>T3WBku=n6ueH~d1%p-fkm0^ySlqW)C@NoQidI( z&V>%SLnoN`E8cgwrBCQIT})Be*!E1>l^U=6`B&E(DRk}2wF^~Al3^9u6_)MiFkfgJ zC7APaa$gutsE2T`>k#U{OkSjtn2Y_a?WkJb)rySqd#L=YXm7c6JlTBY)tp3l0MxZ;pPekT}4gIZLnXkT6vQbDXPjkMs@pf4N`E z|Mnc!X+e96UbsKnA^H8X*GsHgm5QuFlGgN{3Gb^n z);prL&8H@B_fuP17hb7kgG2`Wx~cL#)$7S5&0_hI!>5+@mc_-%KDw#{miRJg*h<|v z&wBZ_eRQ-#OoP^?!*HgwpC(GtKHom(Y1i&W7&|c+KVO{AE>A0=I-f6$=% z)*3Pg#gx)e6nrH1bedx(4U3l!%am?8F;=P+s1IM&kuK#=o7J>gDh^rSCzcC(OPBi} zmKo0Z;U}qU{CmU=f&xy*Rb(2jG1z=mo4+k>knO90lHIFxD6(nhCkB`6K7X9#jXE_N z_Az8n&e?M-Y5Ds=W!(4EdI3g5GOcdvs_M5AEpE0m}H;M;jJ*aUXfCnbIi@o^^p%hM=rUvI=1Y&@vqp!sZ5DE zrhZIgv{fN_!Y`@N^Q*}wp18GnQBp5QjxKFpd=9r+_)kH(?;Psfqe!<(ca(w9#V6mH z%A5r&`1o`E3^K9UIexC_de+Vy4PA=dr1gB1Y)YBNTMtIQ(RT8p8{6;&V_-FPu({G|IM1{7 z))f)U{VdVg$*$FCC1*f4HHR#pIl%=1OfXX_w9-3|eRET}GHA7R|4ZJS!TXg))A;V7 zBzRMVbd(?0wee}*RtRPNTYw*B?LDyT=7VnN4A(jo%pKEV-+MF66<`%6#wQb>#-s#0 zb4j&)GDJ4knDfZKr~b2(!p*bu(I}HbZTV9;@TyQ}4(Dc+-y4I3>&-J({+^F5^2e3m zvhEoK`G4D$m!r_gmRhJ*uxY4^4j8WN;zpl{rE}>wC`R4<^_p%R zk4QCt!gC#VpNbm@19A-Y_eRC8MBz1a&*Mn{1L@U*%IoH{t1Y12sw7d$px!4cqx9*| z_L(0PM%5}kKmLp#0F9TizU7(5L9VoW!V05-tDE{^$CNa$e%V8Hk;in!T`Pg-UYv_A zHARRQ$Je-6UD*A|+nA!d6<#78COxuRuwODXHv*tSvY$=GPGZkk>E0zuU}+eCga@WVD7x7D$`Jv}yX zRwOUPmgNfF)o@25YLqrZ(-@0FzjSJN2`f&I^3%F1JQ^A(tIxd^AyUSO*I%XA8wZ5h zYG_ooi!kJaYeOryLLG_5nd{wpmi$M31Z;zecE5af-5}=-BC|F2y7?lguUKdn*b!m3eLm&9{^)lr;bww?2@2bzVKQaDi6uu3=ENO|VJhw2|AgP&S z(Xs84BYySENx;+e<-)R29Py_^c~JJ%xh7|;7+=uv9QWuw$E-U$S4 z;&)TH@WyVXgYJ}p@#Rg158+shAr`R0rS4|#=%rBqNKM2100`c11IAa4f?MU1v$rnN zEw=(ftkJ7EtcQ<*nvyF%aOyjMNXBkAoQOfVJJ?zh@D`a)Ki`!qj2-1R=Zo-oFv>^zGDj>yb&*O=sg%eNA{Q{+Blx;x6-SP zxXhZt`p&F+!-m)!GSZBLgA7c2=*D8pUNfA4J8}#9+#-mbb@DPZcVeDmk08uy?Sa#fP47rIixe8Rs<}w_ z>sD2PnYIrc!bBz~;&P1hM;%tsUC$B@&E0AzSbdp%%(U~l9XV*e()oW${2ua?E&4Zt z(|eZloW*99q`@IWTH&($-OE}|GEPqndbZA+k$9sYxu2-oI^J;}y;|7sHG? zzXdqN3DRL2Jgiy`C){IW5^Ub`2tBW`znVb%i~(s;=JcyMK1bB>(pwSv4Q7#OZJmT? zPq}g9zt?4*zwPWPl)TuPFg70dO6}Ty>7$;IHgHRwmUgO3!CUEq!)j7mX=mT2 zVULzr&Xa+r>f4zM>PvlD!2=K}h;~gJZ_TRrRaa$)uvm(#)#29^@8LxKLGCNhZJu!0 z$~~_&6xF-A@f2~%C*lvaw~6T;tM6^L3mt|6=Zt6fopXR+>nMF8{x(o)%`Dd3T5>%1C7E$8J$x-;mR`h8$TaKi@^3j8iA*cH zi=W>NNu+yfhc_iuWvb`0xdPM9=+m~|dS|ukWia4AgJ+W~orTxvR z7TOIm4&XNBDS_hKaM8{D*6;TALuQLHeZ_M!YvoCwK8yZ}sj-y*w&GO!Yh1;mJ0PY> z*;GAWrnf9CStX7xuzR}$5nD}*qYMD9PN2dM3nlCze7AME!VGbDXeU zq9171u8Y#6K7Hz{?V13vnfpF@c_KDb`&Own6jRy)#(byiQnL_mB#TBCzc~lWRyER= z>5Hq5X$+XupUah-VDhfcyCh@xA*=5GZCgUI#=F1@)oQah!!)ADN4$=Dy57bP2QqAS zJP#B9`>;Q7f4FV>_lqXZC#Ux7dlkcMBGtbP)dea)iFo&Q_p(P!!SFW{ljuSCnDk=;@ zqF*nMF|uyexoYhAjg6>H{1495+c~$W z{mM6clh37WOvKCzZ+`NLUbM~m<}9{HoBZE>J@XU|kAEx1Y087Fzr0pnP;0*p3=z8b z1Lak#Q^|#+iraObyrAg5So$gl>fyiHWA(T9!STBD=%{V|q*=Q2vaaLr%c?1ylO%p| zbz;y%)`|`s+R0lnv3P*$3BnxKCeb+h?*SrKYc?zhu)s zs5{PE?pn~Mi1deZ(R+*Nh4+-P{*~&wdhfUNb!nB<=ZWlLOZo!Ar6~bl-MU?hn?_SN zsBndsRzZD(Fd7@Hzq0Ef#+=zL`Mow{*>?aD}A8@yyhW)aJrA+h+ ziH6h~u^-%E^UR7KEVsPdWu;|dDZ8Pm2lt%`eY$xId#mj415g4Ny;Zjq-G4PHRq#*q zZT|v9lYLcHk@rY=k0uM9V!n>vmz}I>y+&-}X-LPz1b9oQD5Y?a+7s<>FcVX2(4#fkl90jv%w5jipp%1-S&B0#VT#(^3vR`k zxi-!9!`@%FSt>1k*JrpA9x4>+vAq|_tZwTyUMQ~ZbcHrztsF`5-@o$k2&0JF+N)3H zP1N}0+P7Hd-L`TPo%Y&Ar{-fx^ah?2kk#0X zupJX{{U&SZ3%A4}w%ShG76*A^%fK>Chjh1s)Ae4d4(Cs)8fY9 z0Z=&qj=6;ZstgF=#-@vs?Lp8RzjgrMJ%cz3DRo=@r$p1+6WNq{_dTyvsNR2ej|XjL zLjK<04H+TY-exO;6_W*4B1y2#_NS~7P`jOia9vh-(xr%B1C_j`vA=d9%Dn$c_8ME` zI*7Mh_982L+gj`i@Ch3MxE4WUKs5f;rq=VgD;4fSFpn*3A!2YLwM@4p#Fj3#GkGi$ zk6U*``oJ8Yo{tCjgt~UTn{Yig)?#A(MES2wk*f!ZyUfL1>ahU4~T|irZ{*{EE z^-4r^Fe`Ewj=E#h{Ytc-U^D&$Oh;&j$R)iAa<<7jY?o{nRxx*^XS|Ls$yAZgSf9hy zCYZ#diMtE_&4A~9&nBaK6RF(`ZkRrj?`b(6BVQQJd;REbKAwn&U8A^Te7Vux~5>U>nq zlGO)fC2^^Wh5Q5FBjfE0TY^7rAoFf|s?HoEU*5T5cN05i)tVLbjO@1X997k@IrEaH zbZ5mBD7OE6=*Ikgl56e8k>07z1Q+}#B_%DM_ZVr<)W3B9ec$0Da&3&$+MEdFKm9=|4x3hv`2@8SR(Y`#FThK_BIZ+{WV< zhPf=h<8xbez!Rw;KZx_-vVSA;K!58#sA9L)5(~)c%+B z{{U<3XZJqW>3>g#e{UQdKJVN6AE*0&bM3r|(AWs{a!z1kMl75e|taE;O%tn zH_etg#0xG;cTBQZe%?CeDZ<>((->qYecx#Esq-*Ol7_gQpWu}8_Ps2Lid(gdck81b2{l0y*O-?>Dx>8@$XC+?8EZFQhXwkWV?Vn)RV3M0GHuc zP$0_%B*(egXG$O3)Ep~J{%^%eJ73-S#8T`UNydRlZTMeltlGlRZR`_VRZ4s8`*~Cd zwcX(3mitCZP3<>znF!b&CMq9OTTcr5D%vhtGaCr zLyp}(8>l%%kdCKoZk1hWHh?j@ge&F0v)YY-U~7z&mcE_++xb?HNOz*8OLzBpHhNyN z;1`$qXNjVdewypz8cvK-I(puW50`W+B>4C6zm4c<02~iqYF7FYrMscD*B=Ea%yoRWzUfhRB)3;|bMsKDZSeQKZ&@HV;J0b{b}3yg_@ zdI9M@By;S?DP?Y&ejR^0i;Je2YmIp+LK#hLTYby#tybrF4|0x~Cj0z%>U%|0lZVI2 zNU;1h`5o#pbkiAAnNq#{bf1>`Qsmn8;pn9n9f94QzC=-RB47PT8yHzwm?3v{;9De}Wcw;x~!Ac+%4|8~E25 z2dLN&xXoxO3CpV`at2fwi6C^jw9iV_;?m{`4B`$7fhv=Jn>~M(XgP5`DDg_6qB(Y{ zFZ@q!>h~Bl*-6{oZ=D7n(A|ngb=#zTd}_ECe7JY1Lq>F)ZD&dc(oNB8#{-Pj!D_Za zEwUC#3CYkUh?JRQTh?tX=IuLm-6m+3-1qpF_|X}MCtf4Fg^`1Wu6s=anjvk0d+1`T&Dn)a~0+c2@vfpNYCrZe98J%@> zmPPY}`H|L=b20##jocv}K%4JvFE^R@b)w)MgSo|PO*KeJ4K$xEU5%f9Ng$BMY22k5jbi4@ zs~wSN%CcNq=MUbX&YSy)?n;}))Fx@S1mu<<9~k%OO+LYM5hU{M-{6U4)@I{9E_7vP zXmMZRoJpo3J}Pe-+UCDg{XuBySts1X535HGYRT1ROZjhYT^i8`s7?ku)eNqq?(14D za4lEjiYd_7Z6w-t>OE^GAr<-d@lNXR`F=fV&waemvvm`rdD2{MZlOoGu^JpgUP~h_qBlquKG%AN~%nF7PJkz zUN2g;$YEBiDAgUymM^K~b)d0vNbXQWeFV1ga&)xP34e17sa|_-quhnJoAmNa8c&@d zk)CL(OQJqrJx-g@<=WtI-P)zI3oKZj>VEq#*|#tv{NsD#z`Bat=;Wy`#ov6%+rUSs2e7aV?rzu5v6CS z3!g*f!-8s|>J3Z31ur)=rMkeY9CB3(nL2qY{RQF z4xg1k+G3z*h(xO|l4%H@e}!n>asL1nOgX4@Rf|p8v98M00BL^xs-lM9)e=pXcP3|C zXas{2dwbty9>se0+o!Qi$rTx7JO+gdbXdC=*83W2g${Z{{U=@;aRXHFQAtKZFEbmB z`d_tW#iWAZaV_$YkPA4fp}#||qr*)rR)8s&W*H8prHGlG{{W=K%5u1L_G*H9g+c72 zx$I6;L?Z2kW0CJh_P$gBsbjCK@6A(8ktJ+cnUZ-VPR=M45t9mQpK%$ofrYx}otwg+ zKP8m&Kaakbii~qYRZze%N*iBoKb_d9Ljq+;+3RO+o%ATV!Erk%Q7=8dZ@X_AT+}PY zJ5=umnE4?u?fCdn?*Yjl4frM#-TZ2-+Qg3)Cbs!h2tL9`P|;hay{+d<6IwSlC&OQz z0Jv*l_VH4AQd*5vB=r6s`VG#)-1`!q{{U|)askYtH}dxP)ZXpe9llCRE(4jyJCvHz z{X!3dl8b;bmYk2OQkz>Rd>=F>ns@7}%kiS0PWsj5JW@V$zR};cL`&tJapI>+LHBNZ zVF~BAZ+&L490rE*$C^|4R)qjGgeA`p<)9i?KsJG+Wy>HwNlDYc12Y zR+kX$-YF@4<4wBnKyfCGmbv5AP?~#B@u~Vl_6qCGN%=GI?-ddp=+dP2{Hk&))$G$= z3Rbl*vJ$5b*{LW6gWOb=TJ_ZTDNoB=cllIc=FMKzrTqQ3ip$+_%w6)$yf@_~X@Pqyci@zRT~ghO_n;d{>KUO=ZyE)}lGG8#k~UIws0Lx0RjnQ9g(iM| z@7q#`2N-0hS~^^pQncMi0#KDW)ka?4 zt(UkFAfY^czAXTknjC6y5}w}Isis9nGg4dI%C4JS^ue!(kFIJOij}Qas8aXe z!}zt9A6N!J*3C66{deS(5*wy;UE`=S^JcZ#RlaG}A8LQlysk#+3pR+0m};~uC}z5G48)B!SI7|kjC zuO{)Ot0qg(iavV8ax=k5TiSn(A*~DnZq-!{G}G|>Dg^YHrZM28`1GE&5Oz8~xY-Hq z+VlsJFWrvxrD>)`ae{=Pk8e%Jdla76_*1?~Q0>^U9?@8_oR~C_0P}xE6@0DZTLNhq z#;Q)1^Y(^lwa5nQ<6+>W@}fim8gm?@y-4}r;Yk3*$?U^mDIoUuU#%v~O=zc1v!}Y$ z7XXXCooN{0r1<-O6&AQPM=l-8OMBi+=uIXPqh0JY!huD4V793n`A z8?fv({ObPzc!U1{)vNcgwaEVfU;cl6=QfSDW$zE|qTkEE!7zX3tAEj)73QSlX~yd4 zWd(z8QW`z0*74P07P#zqr*^BhV9fX}8e?VxCT_rS40SUvNT46W+RZzNL8;dn=$2G( z5-=QbzZXz!X?oAJ{ZtMP&)LHTQUqqET3oOb>YL{f8Gy!4Jt??HxHtn`&W5|djZ!PW z4K`CLIY^lfJK@EK{{T{|b+A-L%yPNLVUKC}1qO{d`6C%ijF1e&J}SzyjVGqzSZ(}x zjI-H6#1w&87Gr-_P0MJ;Ga4~jALG~|TO6zfi6?C;Epr)xG|x>#>#QU};*Rbx0w5C#PBzOJNj>FE z_j_TnLs{=o((2sGlE#8Ay6l8ZY(3`!s2l*&h7Tzxqo zOUBGZ@2wWd03UO|WO8wq^-9(;S1 z66{7%n0lC(*#!Hso>AnJjPYaYl*%O$be0R;HmDmulL7P3=b*_=bw-OX7a3%nu_QJb zaoNf}^^(Tfi4(&quW@eGpyKG$92TP9G8^#HAzF&F#`@m zC!G(~YZqqi)#<1%pa5pZpCwzE32eC$ac<+1-F-&Eafl>D7SH! ze2y^~#w&kBY2s8^5iU;wmv>>2*#LKJcC5iWV#J`OlZ$YDMo>xbtgr_lYR=nfSM1d; zc#LDoSg@u_-r;01jHM7U$V=9u48DgdO*r~1V9khEizX!GjoCpN$Q3fia@5)?>9`(; zCU=~`c?fa!7z##4Tb5$@<;KYhk$*1=$bP)txU^B*;i6o0;!_)PNK{zD3@&|EgHvJy zdeyZgGuA2P>A6vs2fnLC``Z5iQEmMqnQ|uM5l8}+BaJw3Ij}*;&#^&a%6(X_B!m;k zBNc_qEN1@zofh49PgHdXpfzFv+(Y=fhz{8wk8*!Yj3Q)U5MpBSVCBJvCqqeQflun$ zngG%c+G&%>R&SF(9`&!KBZ?}s6OJRu;ub*&u_bNTxN7qPwCu?h67PVsH|>Cvd|;CD zqmWw6QPnJHIF5UP6=bw-am&3?F`09Xa+4?1jLt?P@+W=#Dg}hT^{1a7B@pyy<$#dd zU^v;Au3WT-)H+{EL&Lyo_P=+AXpE}pz!^C(<(09t=ZxfNS+qmam~N+sG#QB;<26Y= zAWII!0@yGUl&KDjj#4f%v$R{aAP=R4>)dk^UoDyxPw`_E%_a>#h087=33-Le&AUwR zRN5#U678JKxt`8!rgO%R@=O=oI}6cWxI}7VT;f# zEaK79;ecVvVlz|Z{^pwY_8>BhV|=|Q794YvBM@QNUf9#N5$%wu_r%9RjP+gkus8fkFq~!VT$PDq%l48tV#8KZ7zB$2wA5oXWv_N#fo;abgw5 z9yT7e261r_$2_XzDjiht*l!%wRtOoH4@^mmi((@B7LRo#kRke>22R*&H(~(RiztJ! zi8^HDDJDb2!>VgR1PA^QA2MH2mie;KAn`ck;Ga`+8@{C0Qd3-S18YUAE-o){_ixN{ z$Wc_K6baTcv_^yKXCWEEF~sRU`a>~t2m_Ix=oQbkM711azN*Zr{y0|tnd!uq^td-M zZ*hDy*KL%{A4N=JMaacDMzQ@3()oE#wF^iDNEPxkuFaW2x%7M#Rmq$}Z((!CEdjB| zEV9b|2AjRtNRo06L7)^2Ni(8=VP8Y?R^uOVZR!&#m(>P0(aD~bu9I*3usVt2&Ex8d zk7Fq<)r_^iP4VEF8D`Ev;@hdcWz3RTolZ?IYf5aE%P)?LIQmE=P9`QLy}}^ z7dp^Afvs_HW^yyrIfiN7C)`}fm9@CqT(XBFHx5|5va)?x`0HA_=P&*dtB~SMHduv_ zGRd-M*6g(&;XZi0prja&Q`vnU8=NCJ*O9v4n&E?$44*o6G_+3v>xxdlY-{6sMYj( zo+vHTvEkdp87qhuTtRZgh_@fMVj-qcl*G(cZ%w6%0o-!|xD!@%T;^r#+F#KznOVg$ z6O)!u8HnUYJh9lA?N{4=qDyq$xz9Q{%2*7PS+jAroym+mMOPT(WCk+M?lA&J(nDIb zgVSj~>uJVLT(XI(i-#hI<)6uATl!8$P9iv%nx-kl&ndGthbCF>1}NJDoa&GUu-y3Q zw1^y}y7FXL%PuZMlg2W)SG{P0KA=E%<0Yb6W7W_Y(-iVi$;xs@ATq{rWXA9uv2+_9 zdsIog-Eb`dqLtJdWzC@=H@DXu{Z_6|E3P1nWSpTvoN&h@g{P;LY3{U^k;{*!ZI)Ls^&CuKA58QtUbx3sNdB&%nhA#B`)2f_(F3Y<*BsQGOa^|e zmxSfXu=3-J#>OGnYF^P}=1m;6Uz?5kOiNP%SQVOT+PhAal^LX*cRIM2Tu|d9>E&Zp zGRrBA(id7S5AL+c=cAGdG|bmFg%b>O#$O~@cQnbB$S}djibfo9z4Ci^tE;5ad6oc= z@K|ec+jTRHyd=K!w-kuwCU~Bp$-^QsEV^UrGJ9REA8UrVTObx9I|h6*R*b~)Q9^j} zh*Ar1;yGgJ1TxIstd<{3bb%3*NO*1CK#K#*316Cy|NwGDalG`ZS+)Eprd)JLDm5ju1=(|cGY`LDH78m@pz~hw{{W|JXZ`0bpZvI&(~%^;7<=g5P`h)uj7d^jzrU^-)TSS2Fr97yke_rr*AVkT0fxJ!j6otvLmR zhxq)LgpsD;<3fb-qT7o-&~d<}FHgCpfya^(^&YI79MqBJ*S_B(rp|>bZr@_xj;^(U zB)Omi5_n3oSJ|zzTP3q67-TC|AV9?wrvBdB)(c&G5a46YkAhS2_UqD?0pxqJu8L3N z{5P!v^r91g&-q@mDiMJi^!Bpa}c=G(O6p5RJ;)+P#A^6)$ zo2X0`B=z_FZ_`Sh#M55>R8k+r>Ecmnw21+o#$olMm92>mC{U!{J-7U*H+#BqpQ2QT zHGI#?8pB=E;^J}0sx(xB-fw>wtv2+~cc{8j-sq!g=jFN(@Q&8EYcvCOH^zBH_XL#u zALePXOA^|Gr1J8&x~I0#&B_#{?c6=r>!el*a=<|&x_cufEA9NNWEldF$B>*ABUQwZ zTDd7c9crj@<68Rd$x6}#L8=t|{qz#l65|->2~V5xslYUo-lX>S?MQ$gxb8w9%ByL% zSag*y^WF0CtO0q0NzCKCDiYd%7p3M{sjZMI-1*eCK1x^PJ{`JLS(%(42zn_^-wyr! z3shj1qk8bBO35^5XqD_teCh+Fo8zR+W4~ooHfsAldQ&#N!jI2Sk8+R=VAg!gd*G+0 z+r7j~sm&4d^78Yd?xI>-<wP^OW3W}G0PN%!eddTXyG3Kf(dFp$2h^r4R;R3mR~*4sU3`T^g>oDK}Ctg1$?y*>6X(kmwGga^+~-zH2W zGdiT$T_K4WC5nl=sl?soEg0mX+^(@Ceh%LX+?MKsjtR7q`)xiIl1K*N=Ns^hoT*>N zwFVp7doWO;HfP52ScvFevuHWU^vgw}uTN*%)w&P~a@_F<7~jEE z8x>9G%9}|wX6;hSO~xBsyoN%ZE)iI{u3|o;ro>Yug3xHS+pUkow$-3vuA!zVM z=GsO5`;{@FaxssRw+d-u@u9qQ?^$9#nQsj9o@uRCiLC*3C?6O-=u$5`NoaMJ@#4_N zyYIeS(*3D_i_=MAcezM{7&BZU8yP*v(LWc1;~>pwkJKIPoiAVfR2$9e+UbB()Wr2&$BnmkE)>7s;6`{Z|}afq7L9! z8TcR-B%8r4r7sZ3Tx?cJ0FJ10t~5(%wc+^bK7UwbMDyUypr3YtJg*xk~Xshr53S)SfjF!a@6_H zyK2z71IQzmUOW(%p1#FJovmV}oAhD6*1gBn43B*(V@8MCJJ_ZbFTCsJ+D#&>TQW<( zE@GS?!36}`Q?Ps@i(B|f3HTZltg+d~)t zi^YkY|At{O7`e9mD1apK6RLZqmeV_3xuV zknt_K-vT4Cm0%t3cJK177PPT2cg9G`RryTq=SeY?4p@Z+oh8VQuKW44wsu@5v1ay}e zZ85P}wnMQ8gyy33$r~C=Iuc)Qv09dRH$GbVC|6}Q4&Uu=LdzGqL%p$1J+F@x(4q%f zi`sb_MovUM?=*DU5BOc=ZsUWf5_n>YkdccQvSVo03qx({3~lMOwB#ev1`Cw8DVxF) z>2q%FB!PRrN0-g3F3_oFNdaF}bi3|6YKA1SIQ2csXDvk6t-HZ7WfD_27qm-f<24xJP%&D*sSs&8UGixn zdhP|l_2gr8Y!$uLiyk<)o8Py(nP<8qm{et|C9MMpT49Z


(w8+YT9ft{9PX;^1* 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%0DHfR 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

3ePY=}@>lNp9YB?L#R) zJI%XVZF-H&?BKlOie&M7ZQHa=)b3c**Uj?XNqHEvsW-d@uQfNf6jJ9__HAn{w=K6?n1bco9o_1MahN5U(S-BuKMHNs zmwFk;ER<^sNByAJSoq9_^_c@PZZp$0b~>b&dPhr}`PP6o4y&|k;<}*C6uYU>+V;?9 zWPB?psMeL^8A+7Dq9;&*ZyHXZcu+$yxDJ-DlPUD7t@lezZfot*wR7F5AX5$L2%?C* zQcc^&%m{r%x>QBi0dNKDq_jS~GDsjeMS5O9h|*=$kEV-`L`#nsHO7h^$Z001G1A&; zJJcDvtv>A^Y(}azVxXvAEsfnS!=iegv;))`*s$-8)R-u)mv6cbM!uL&rh@dW>>O$s ziYPTuhH?`qH7|1Z0lGU@s`uM5jd7Buh7~gPC6)(>+_O5y^o!WGJL{qvA0)aOI;$=* zGogFK)`1`p%qvjJp}|oIi#OaGGS9b4$zko^#$GVNAm+6BMdfX`Pa501Q=>PI?khej zSYwff(M;ulhMmsU%t)(*a4|FYRwC1s$a+<5Rfz zQIM@rHd0gKr9Hih2_Qg>W64VXI#S{kr?=zsth@%PI&(^OrJR$R5}+6`b1GJnLX`0K z`A|uqQju#(e|LbLr~$-8;tn)Q)j62k9jH=*ScNBFAK(=T2RTYNwwiCOUOp6;C#NMV zQDYM49~31;q130(SoVul0nE*Q5YV3lzwka+ikj;840JP^Dz`7tyigq^e!X zX2vs0w6ro5>F4hFMNdsqka^F}i+~fE#|_lwKZj1XpqXR!ILC^UuWv1f!l35acaJFT z-0@O-dv&B*)Ylwwq7&T}5MG0&D%Oc^C{yR{y<`$#{aDA6QvTQLOyYIKsXhMyod6ma zrFHb~Qg@EN-VGoFEh1n{AfyQf(hQ{{T8jj*w@yTc@240cW3=!vzWaW-aH| z^ji7WL1^cyQ_JDu*IJ;!5yOVQIVnCG`@7WT-k8lw){A{PAy037Y1*<}OuK>F)Z1TF zr_1?L98d7Je7-eOwWieyB$3vF95JG4DY>V%+EieQe0w>mJNxx^*r3(H6`JYt`Kb>d zZoT!Y)-nk&K78Ft?d{f+XgI^6HKNnhI)x57@lt+0y_!b4r5oG9{7;Q!l21hr8%+1p zRc@Zw>$N1kex1~vKaoQVS?ky`^8vnUR<^<1)Kj?%RzP#rYcWc+fh3yzkf&d5riWrc zA3CKpI@{Z&B%5s{R0L+7_xB!p(b7p5W)hv>hB>6_Ow!f7fO%yryWvW>^dp`<+rMdU<#3>I8X;rR68gOq_ zCy&mjA-aGAWAejtlWTq@1Rj&pHQI5SlTT&$Yf(1a!

tQdXJ6JRv@NRBZ-F)F`Bn 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

  • ~D7@n?Sc?oCu}I^TCw8u&?JgvV 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�rr^dT;s)1W9o(` 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

    O(Za3C=)#%G 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¥ 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