From 712b2b5a23acf02f6949af1ed28fa91d712ebc93 Mon Sep 17 00:00:00 2001 From: venkat <118790430+Venkatknight2295@users.noreply.github.com> Date: Sun, 12 May 2024 10:19:19 +0530 Subject: [PATCH 1/5] signin page done --- frontend/package-lock.json | 41 ++- frontend/package.json | 3 +- frontend/public/1.png | Bin 0 -> 798 bytes frontend/public/SignUp_step1.png | Bin 0 -> 1429481 bytes frontend/public/Social media logo.png | Bin 0 -> 786 bytes frontend/src/App.css | 13 +- frontend/src/App.jsx | 17 +- frontend/src/Poppins/OFL.txt | 93 ++++++ frontend/src/Poppins/Poppins-Black.ttf | Bin 0 -> 151396 bytes frontend/src/Poppins/Poppins-BlackItalic.ttf | Bin 0 -> 171604 bytes frontend/src/Poppins/Poppins-Bold.ttf | Bin 0 -> 153944 bytes frontend/src/Poppins/Poppins-BoldItalic.ttf | Bin 0 -> 176588 bytes frontend/src/Poppins/Poppins-ExtraBold.ttf | Bin 0 -> 152764 bytes .../src/Poppins/Poppins-ExtraBoldItalic.ttf | Bin 0 -> 173916 bytes frontend/src/Poppins/Poppins-ExtraLight.ttf | Bin 0 -> 161456 bytes .../src/Poppins/Poppins-ExtraLightItalic.ttf | Bin 0 -> 186168 bytes frontend/src/Poppins/Poppins-Italic.ttf | Bin 0 -> 182012 bytes frontend/src/Poppins/Poppins-Light.ttf | Bin 0 -> 159892 bytes frontend/src/Poppins/Poppins-LightItalic.ttf | Bin 0 -> 184460 bytes frontend/src/Poppins/Poppins-Medium.ttf | Bin 0 -> 156520 bytes frontend/src/Poppins/Poppins-MediumItalic.ttf | Bin 0 -> 180444 bytes frontend/src/Poppins/Poppins-Regular.ttf | Bin 0 -> 158240 bytes frontend/src/Poppins/Poppins-SemiBold.ttf | Bin 0 -> 155232 bytes .../src/Poppins/Poppins-SemiBoldItalic.ttf | Bin 0 -> 178584 bytes frontend/src/Poppins/Poppins-Thin.ttf | Bin 0 -> 161652 bytes frontend/src/Poppins/Poppins-ThinItalic.ttf | Bin 0 -> 187044 bytes frontend/src/components/signin.css | 297 ++++++++++++++++++ frontend/src/components/signin.jsx | 134 ++++++++ 28 files changed, 592 insertions(+), 6 deletions(-) create mode 100644 frontend/public/1.png create mode 100644 frontend/public/SignUp_step1.png create mode 100644 frontend/public/Social media logo.png create mode 100644 frontend/src/Poppins/OFL.txt create mode 100644 frontend/src/Poppins/Poppins-Black.ttf create mode 100644 frontend/src/Poppins/Poppins-BlackItalic.ttf create mode 100644 frontend/src/Poppins/Poppins-Bold.ttf create mode 100644 frontend/src/Poppins/Poppins-BoldItalic.ttf create mode 100644 frontend/src/Poppins/Poppins-ExtraBold.ttf create mode 100644 frontend/src/Poppins/Poppins-ExtraBoldItalic.ttf create mode 100644 frontend/src/Poppins/Poppins-ExtraLight.ttf create mode 100644 frontend/src/Poppins/Poppins-ExtraLightItalic.ttf create mode 100644 frontend/src/Poppins/Poppins-Italic.ttf create mode 100644 frontend/src/Poppins/Poppins-Light.ttf create mode 100644 frontend/src/Poppins/Poppins-LightItalic.ttf create mode 100644 frontend/src/Poppins/Poppins-Medium.ttf create mode 100644 frontend/src/Poppins/Poppins-MediumItalic.ttf create mode 100644 frontend/src/Poppins/Poppins-Regular.ttf create mode 100644 frontend/src/Poppins/Poppins-SemiBold.ttf create mode 100644 frontend/src/Poppins/Poppins-SemiBoldItalic.ttf create mode 100644 frontend/src/Poppins/Poppins-Thin.ttf create mode 100644 frontend/src/Poppins/Poppins-ThinItalic.ttf create mode 100644 frontend/src/components/signin.css create mode 100644 frontend/src/components/signin.jsx diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 7beb8df..0f33e10 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -11,7 +11,8 @@ "axios": "^1.6.8", "react": "^18.2.0", "react-dom": "^18.2.0", - "react-h5-audio-player": "^3.9.1" + "react-h5-audio-player": "^3.9.1", + "react-router-dom": "^6.23.1" }, "devDependencies": { "@types/react": "^18.2.66", @@ -1017,6 +1018,14 @@ "node": ">=14" } }, + "node_modules/@remix-run/router": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.16.1.tgz", + "integrity": "sha512-es2g3dq6Nb07iFxGk5GuHN20RwBZOsuDQN7izWIisUcv9r+d2C5jQxqmgkdebXgReWfiyUabcki6Fg77mSNrig==", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/@rollup/rollup-android-arm-eabi": { "version": "4.17.2", "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.17.2.tgz", @@ -4258,6 +4267,36 @@ "node": ">=0.10.0" } }, + "node_modules/react-router": { + "version": "6.23.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.23.1.tgz", + "integrity": "sha512-fzcOaRF69uvqbbM7OhvQyBTFDVrrGlsFdS3AL+1KfIBtGETibHzi3FkoTRyiDJnWNc2VxrfvR+657ROHjaNjqQ==", + "dependencies": { + "@remix-run/router": "1.16.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/react-router-dom": { + "version": "6.23.1", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.23.1.tgz", + "integrity": "sha512-utP+K+aSTtEdbWpC+4gxhdlPFwuEfDKq8ZrPFU65bbRJY+l706qjR7yaidBpo3MSeA/fzwbXWbKBI6ftOnP3OQ==", + "dependencies": { + "@remix-run/router": "1.16.1", + "react-router": "6.23.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, "node_modules/read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", diff --git a/frontend/package.json b/frontend/package.json index b5280d9..74197a9 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -13,7 +13,8 @@ "axios": "^1.6.8", "react": "^18.2.0", "react-dom": "^18.2.0", - "react-h5-audio-player": "^3.9.1" + "react-h5-audio-player": "^3.9.1", + "react-router-dom": "^6.23.1" }, "devDependencies": { "@types/react": "^18.2.66", diff --git a/frontend/public/1.png b/frontend/public/1.png new file mode 100644 index 0000000000000000000000000000000000000000..0c47d58850ec388b6902fc15e6b5b5a845357de8 GIT binary patch literal 798 zcmV+(1L6FMP)W* z6G0IE_Hv4263Y*PfCeWO6&P13K-g&!LZ*%cNr#|7lu+2`q~I?g(F7#wSP0Q#;0F*x zMTJcR2#cI>EZK0rWyg-sclJHj)}jgKR=IjVvtR}!|_!&arx=*aq)yo z^#o+?n~oZwYL~5aB7c1=hI^|E7I~j#f#KqrId>&dPm3CLl!pV2Wf0Sx_EW_@5KUiF~_)2i=zL(GB4?>dly z-I5NUD6D59@PqyQ)#twmfIeJ|Qb1Q|Nci~O2okAHIspC_A>q>x|5+ezroG{Elmc#6 zz~=6I>0Eo>vep#t^~}8Id7uM|QW-8C{S@2!^+jeHKD@esN4cnDFSfl88PFr8T}rK3 zzBrG~GL9PD$>DIIRTOWy{^Rn9xasT1-iZ@KUFGa1Y;6)E^d4tx=vuPQO!EOk zhOoKW5w;QJ0HGzqBoxAmgw6%Iuvu|C^n6i}f@-p?Xp=f-g{UV(*zo&*;QOSZbhL`8 z6$W#28b_$u=&KJ(sjOSr?U1^R`rQHSEN$=SVVZ@gioE!p#^K$ecR8i1A(*Q)WZK1K c6~~aoKOuqa#IdHBPyhe`07*qoM6N<$f=1VN7XSbN literal 0 HcmV?d00001 diff --git a/frontend/public/SignUp_step1.png b/frontend/public/SignUp_step1.png new file mode 100644 index 0000000000000000000000000000000000000000..517d2fed07e097b85789a5fd78371ccef44142a4 GIT binary patch literal 1429481 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

wf)0ge9aKoeT~0w?S4Y7te~2D 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

Uy`nH#Q%*TX6fb0N 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

S?#$?QrE~;z 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 z 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%0AZFVMU?7df{@} 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

2aVQkOVcKzCj3wQ0%vskP`#6p Qs{jB107*qoM6N<$f@$_%X#fBK literal 0 HcmV?d00001 diff --git a/frontend/src/App.css b/frontend/src/App.css index d7786b5..1585894 100644 --- a/frontend/src/App.css +++ b/frontend/src/App.css @@ -2,7 +2,7 @@ margin: 0; padding: 0; box-sizing: border-box; - font-family: "Roboto", sans-serif; + } @@ -14,6 +14,17 @@ body { background-color: #d9dbe6; } +.top-right-button { + position: absolute; + top: 10px; + right: 10px; + padding: 8px 16px; + background-color: #5773ff; + color: white; + border: none; + border-radius: 4px; + cursor: pointer; +} .player { width: 70vh; height: 90vh; diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index 0ea5c8a..7eb9371 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -3,7 +3,8 @@ import AudioPlayer from "react-h5-audio-player"; import "react-h5-audio-player/lib/styles.css"; import "./App.css"; import axios from "axios"; - +import { BrowserRouter as Router,Route,Routes,Link } from "react-router-dom"; +import SignIn from "./components/signin"; const App = () => { const [data, setData] = useState(null); const [searchQuery, setSearchQuery] = useState(""); @@ -46,7 +47,13 @@ const App = () => { }; return ( + + + + + +

{data && data.length > 0 ? ( @@ -135,8 +142,12 @@ const App = () => {
- //{" "} - // + }/> + }/> + + + + ); }; diff --git a/frontend/src/Poppins/OFL.txt b/frontend/src/Poppins/OFL.txt new file mode 100644 index 0000000..da31af0 --- /dev/null +++ b/frontend/src/Poppins/OFL.txt @@ -0,0 +1,93 @@ +Copyright 2020 The Poppins Project Authors (https://github.com/itfoundry/Poppins) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://openfontlicense.org + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/frontend/src/Poppins/Poppins-Black.ttf b/frontend/src/Poppins/Poppins-Black.ttf new file mode 100644 index 0000000000000000000000000000000000000000..71c0f995ee64396f29a3d9ef283b5050f45d6e0f GIT binary patch literal 151396 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 z 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 literal 0 HcmV?d00001 diff --git a/frontend/src/Poppins/Poppins-BlackItalic.ttf b/frontend/src/Poppins/Poppins-BlackItalic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..7aeb58bd1b9436a814a50ee3539d38f7668908c8 GIT binary patch literal 171604 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�xCqdr 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 literal 0 HcmV?d00001 diff --git a/frontend/src/Poppins/Poppins-Bold.ttf b/frontend/src/Poppins/Poppins-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..00559eeb290fb8036f10633ff0640447d827b27c GIT binary patch literal 153944 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%0AC7VmlS@LZ-TEZV}oirP&oT11@@uCp8_l( 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
iaL9w>qKFf3RqGIc*<&o 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 literal 0 HcmV?d00001 diff --git a/frontend/src/Poppins/Poppins-ExtraBoldItalic.ttf b/frontend/src/Poppins/Poppins-ExtraBoldItalic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..14d2b375dc0c2c4aec35b3d9d4bd89d7291c52dd GIT binary patch literal 173916 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 aY8oUeaqiTv3)-Z=xq_K?cQ8w#`2PT*u76+v literal 0 HcmV?d00001 diff --git a/frontend/src/Poppins/Poppins-ExtraLight.ttf b/frontend/src/Poppins/Poppins-ExtraLight.ttf new file mode 100644 index 0000000000000000000000000000000000000000..e76ec69a650f1323fe9af6dafc55628ca1afc7e1 GIT binary patch literal 161456 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 e4&?DO=qzU-SNlDimmCj>Yo9*= literal 0 HcmV?d00001 diff --git a/frontend/src/Poppins/Poppins-ExtraLightItalic.ttf b/frontend/src/Poppins/Poppins-ExtraLightItalic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..89513d94693ae8100315edbb982d7d243f5469f6 GIT binary patch literal 186168 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�sgq;mtEQG=CAEgxZId5{IKidg> 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 literal 0 HcmV?d00001 diff --git a/frontend/src/Poppins/Poppins-Italic.ttf b/frontend/src/Poppins/Poppins-Italic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..12b7b3c40b5c8dd7d90968d43bac7bc673a6c221 GIT binary patch literal 182012 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
    ?;_d7QR+e3!@*M~gh!9Dwgr*NHqmUgQ}MAnciU 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 YAF!D*rK-^QCO?2lK6UusLzJKnj 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 literal 0 HcmV?d00001 diff --git a/frontend/src/Poppins/Poppins-Medium.ttf b/frontend/src/Poppins/Poppins-Medium.ttf new file mode 100644 index 0000000000000000000000000000000000000000..6bcdcc27f22e001e46defdfd9e23f224ff65dd67 GIT binary patch literal 156520 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

    @ZQd?iv5?<%R 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 literal 0 HcmV?d00001 diff --git a/frontend/src/Poppins/Poppins-Regular.ttf b/frontend/src/Poppins/Poppins-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..9f0c71b70a49664ced448c63edc9c4ff2bf8cf4a GIT binary patch literal 158240 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

    MnKQ==?C8ul= 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 VdRBvc`AGHFy4I1}Z8a*@{{tQ)3{U_7 literal 0 HcmV?d00001 diff --git a/frontend/src/components/signin.css b/frontend/src/components/signin.css new file mode 100644 index 0000000..0ea93d5 --- /dev/null +++ b/frontend/src/components/signin.css @@ -0,0 +1,297 @@ +/* General styles */ +@font-face { + font-family: 'Poppinsbold'; + src: url(../Poppins/Poppins-Bold.ttf) format('truetype'); + font-weight: bold; + font-style: normal; +} +@font-face { + font-family: 'Poppinslight'; + src: url(../Poppins/Poppins-Light.ttf) format('truetype'); + font-weight: bold; + font-style: normal; +} +body { + + background-image: url('../../public/SignUp_step1.png'); + background-repeat: no-repeat; + background-size: cover; + background-position: center center; + + color: #fff; + } + + .create-account-container { + display: flex; + justify-content: center; + align-items: center; + height: 100vh; + } + + .create-account-form { + background-color: rgba(0,0,0,0.26); + padding: 2rem; + border-radius: 25px; + border: 1px solid #cf00a3; + width: 67vw; + height: 35vw; + + } + h2{ + font-family: 'Poppinsbold'; + color: #fff; + text-align: center; + margin-top: 1.5vw; + font-size: 3rem; + font-style:normal; + font-weight: 700; + line-height: normal; + + + } + p{ + font-family: 'Poppinslight'; + text-align: center; + margin-top:.5vw; + } + p span{ + color: #78a9fa; + font-size: 18px; + font-weight: 500; + } + /* Form steps */ + .form-steps { + margin-bottom: 1.5rem; + } + + .step { + display: flex; + align-items: center; + margin-bottom: 0.5rem; + position: relative; + } + + .step:not(:last-child)::after { + content: ""; + position: absolute; + top: -10px; /* Adjust as needed to align with circles */ + left: 90%; + width: 100%; /* Adjust as needed */ + height: 2px; /* Adjust as needed */ + background: #cf00a3; /* Adjust as needed */ + } + + .step::before { + content: attr(data-step); + position: absolute; + top: -20px; /* Adjust as needed */ + left: 50%; + transform: translateX(-50%); + width: 20px; /* Adjust as needed */ + height: 20px; /* Adjust as needed */ + border-radius: 50%; + background: #ACB6C7; + color: #fff; + text-align: center; + line-height: 20px; /* Adjust as needed */ + z-index: 1; /* Add this to make the circles appear above the lines */ + } + .step span { + flex: 1; + } + + .step input { + flex: 2; + padding: 0.5rem; + border-radius: 0.25rem; + border: none; + } + + .step.active span { + font-weight: bold; + } + + .step.step-1[data-step="1"]::before { + background-color: #4285F4; /* Color when step 1 is active */ + } + + + .step.step-2[data-step="1"]::before { + background-color: #87fc93; /* Color when step 2 is active */ + } + + .step.step-2[data-step="2"]::before { + background-color: #4285F4; /* Color when step 2 is active */ + } + .step.step-3[data-step="1"]::before { + background-color: #87fc93; /* Color when step 3 is active */ + } + + .step.step-2[data-step="3"]::before { + background-color: #87fc93; + } + .step.step-3[data-step="3"]::before { + background-color: #4285F4; /* Color when step 3 is active */ + } + + + + + /* Buttons */ + .next-btn { + background-color:rgba(9, 2, 34, 0.2); + color: #78a9fa; + border: 1px solid #fff; + padding: 0.5rem 1rem; + border-radius: 0.25rem; + cursor: pointer; + transition: background-color 0.3s ease; + width: 60%; + margin: 1rem auto; + display: block; + border-radius: 40px; + height: 3vw; + font-size: 1.5rem; + } + + .next-btn:hover { + background-color:rgba(4, 1, 15, 0.439); + } + + .signup-options { + display: flex; + justify-content: center; + + } + + .facebook-btn, + .google-btn { + background-color: rgba(9, 2, 34, 0.2); /* 20% of #090222 */ + color: #fff; + border: 1px solid #fff; + padding: 0.5rem 1rem; + border-radius: 0.25rem; + cursor: pointer; + transition: background-color 0.3s ease; + width: 40%; + margin: 1rem ; + font-size: 1.5rem; + text-align: center; /* Add this line */ + border-radius: 40px; + height: 3vw; + font-family: Poppinslight; + + } + + .facebook-btn:hover, + .google-btn:hover { + background-color:rgba(4, 1, 15, 0.439); + } + .facebook-btn::before { + content: ''; + display: inline-block; + height: 30px; + width: 30px; + background-image: url('../../public/1.png'); + background-repeat: no-repeat; + background-size: contain; + vertical-align: middle; + + } + + .google-btn::before { + content: ''; + display: inline-block; + height: 30px; + width: 30px; + background-image: url('../../public/social media logo.png'); + background-repeat: no-repeat; + background-size: contain; + margin-right: 10px; + vertical-align: middle; + } + .facebook-btn i, + .google-btn i { + margin-right: 0.5rem; + } + .flex-container { + display: flex; + justify-content: space-between; + align-items: center; + margin-top: 20px; + padding: 0 8vw 0px 8vw; + font-family: 'Poppinslight'; + } + .input-field { + display: block; + width: 70%; /* Adjust as needed */ + height: 50px; /* Adjust as needed */ + margin: 20px auto; + margin-top: 0px; /* Adjust as needed */ + border: 2px solid #CF00A3; /* Adjust as needed */ + border-radius: 10px; /* Adjust as needed */ + padding: 10px; /* Adjust as needed */ + background-color: transparent; + color: #fff; + padding-top: 0; + font-family: Poppinslight; + font-size: 1.5rem; + } + .input-field::placeholder { + color: #ffffff; + font-size:1.3rem; + font-family: Poppinslight; + line-height: 50px; + } + .input-field1 { + display: block; + width: 50%; /* Decreased width to 50% */ + height: 50px; /* Adjust as needed */ + /* margin: 20px auto; */ + margin-top: 0px; /* Adjust as needed */ + border: 2px solid #CF00A3; /* Adjust as needed */ + border-radius: 10px; /* Adjust as needed */ + padding: 10px; /* Adjust as needed */ + margin-left: 9vw; + + background-color: transparent; + color: #fff; + padding-top: 0; + font-family: Poppinslight; + font-size: 1.5rem; + } + .input-field1::placeholder { + color: #ffffff; + font-size:1.3rem; + font-family: Poppinslight; + line-height: 50px; + } + .email{ + font-size:2rem; + margin-left: 9.5vw; + font-family: Poppinslight; + } + .separator { + margin-top: 4vw; + display: flex; + align-items: center; + text-align: center; + color: #fff; + font-family: Poppinslight; + padding: 0 150px; + font-size: 1.5rem; + } + + .separator > hr { + flex-grow: 1; + border: none; + border-top: 1px solid #fff; + } + + .separator > span { + padding: 0 10px; + } + + + + \ No newline at end of file diff --git a/frontend/src/components/signin.jsx b/frontend/src/components/signin.jsx new file mode 100644 index 0000000..528a5bf --- /dev/null +++ b/frontend/src/components/signin.jsx @@ -0,0 +1,134 @@ +import React, { useState } from 'react'; +import "./signin.css" + +const SignIn = () => { + const [email, setEmail] = useState(''); + const [emailError, setEmailError] = useState(''); + const [formStep, setFormStep] = useState(1); + const [password, setPassword] = useState(''); + const [showPassword, setShowPassword] = useState(false); + + const handleNextClick = () => { + if (formStep === 1) { + const emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/; + + if (!emailPattern.test(email)) { + setEmailError('Please enter a valid email address.'); + } else { + setEmailError(''); + setFormStep(2); + } + } else if (formStep === 2) { + // Add your validation for the three inputs here + setFormStep(3); + } + }; + + const togglePasswordVisibility = () => { + setShowPassword(!showPassword); + }; + + return ( + +

    + ); +}; + +export default SignIn; \ No newline at end of file From 499716045549b681fcaff219bf83b6a8b8a1d98b Mon Sep 17 00:00:00 2001 From: venkat <118790430+Venkatknight2295@users.noreply.github.com> Date: Thu, 16 May 2024 11:39:10 +0530 Subject: [PATCH 2/5] changes --- frontend/src/components/signin.css | 33 ++++++++++-------------------- frontend/src/components/signin.jsx | 18 ++++++++++++++-- 2 files changed, 27 insertions(+), 24 deletions(-) diff --git a/frontend/src/components/signin.css b/frontend/src/components/signin.css index 0ea93d5..2bd1728 100644 --- a/frontend/src/components/signin.css +++ b/frontend/src/components/signin.css @@ -1,16 +1,5 @@ /* General styles */ -@font-face { - font-family: 'Poppinsbold'; - src: url(../Poppins/Poppins-Bold.ttf) format('truetype'); - font-weight: bold; - font-style: normal; -} -@font-face { - font-family: 'Poppinslight'; - src: url(../Poppins/Poppins-Light.ttf) format('truetype'); - font-weight: bold; - font-style: normal; -} + body { background-image: url('../../public/SignUp_step1.png'); @@ -38,7 +27,7 @@ body { } h2{ - font-family: 'Poppinsbold'; + font-family: "Roboto", sans-serif; color: #fff; text-align: center; margin-top: 1.5vw; @@ -50,7 +39,7 @@ body { } p{ - font-family: 'Poppinslight'; + font-family: "Roboto", sans-serif; text-align: center; margin-top:.5vw; } @@ -179,7 +168,7 @@ body { text-align: center; /* Add this line */ border-radius: 40px; height: 3vw; - font-family: Poppinslight; + font-family: "Roboto", sans-serif; } @@ -220,7 +209,7 @@ body { align-items: center; margin-top: 20px; padding: 0 8vw 0px 8vw; - font-family: 'Poppinslight'; + font-family: "Roboto", sans-serif; } .input-field { display: block; @@ -234,13 +223,13 @@ body { background-color: transparent; color: #fff; padding-top: 0; - font-family: Poppinslight; + font-family: "Roboto", sans-serif; font-size: 1.5rem; } .input-field::placeholder { color: #ffffff; font-size:1.3rem; - font-family: Poppinslight; + font-family: "Roboto", sans-serif; line-height: 50px; } .input-field1 { @@ -257,19 +246,19 @@ body { background-color: transparent; color: #fff; padding-top: 0; - font-family: Poppinslight; + font-family: "Roboto", sans-serif; font-size: 1.5rem; } .input-field1::placeholder { color: #ffffff; font-size:1.3rem; - font-family: Poppinslight; + font-family: "Roboto", sans-serif; line-height: 50px; } .email{ font-size:2rem; margin-left: 9.5vw; - font-family: Poppinslight; + font-family: "Roboto", sans-serif; } .separator { margin-top: 4vw; @@ -277,7 +266,7 @@ body { align-items: center; text-align: center; color: #fff; - font-family: Poppinslight; + font-family: "Roboto", sans-serif; padding: 0 150px; font-size: 1.5rem; } diff --git a/frontend/src/components/signin.jsx b/frontend/src/components/signin.jsx index 528a5bf..4f12af2 100644 --- a/frontend/src/components/signin.jsx +++ b/frontend/src/components/signin.jsx @@ -1,6 +1,20 @@ import React, { useState } from 'react'; import "./signin.css" - +const ViewOffIcon = (props) => ( + + + + + + + +); +const ViewIcon = (props) => ( + + + + +); const SignIn = () => { const [email, setEmail] = useState(''); const [emailError, setEmailError] = useState(''); @@ -112,7 +126,7 @@ const SignIn = () => { cursor: 'pointer' }} > - {showPassword ? "👁️ Hide" : "👁️ Show"} + {showPassword ? : }

    From 90c7b53a4d1a22447250f6900ea63e302789f97e Mon Sep 17 00:00:00 2001 From: venkat <118790430+Venkatknight2295@users.noreply.github.com> Date: Thu, 16 May 2024 11:45:37 +0530 Subject: [PATCH 3/5] c --- frontend/src/components/signin.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/components/signin.jsx b/frontend/src/components/signin.jsx index 4f12af2..e398d77 100644 --- a/frontend/src/components/signin.jsx +++ b/frontend/src/components/signin.jsx @@ -61,7 +61,7 @@ const SignIn = () => { {formStep === 1 ? ( <> - + Date: Thu, 16 May 2024 11:49:42 +0530 Subject: [PATCH 4/5] updaqtes --- frontend/src/components/signin.jsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/frontend/src/components/signin.jsx b/frontend/src/components/signin.jsx index e398d77..eb8e49b 100644 --- a/frontend/src/components/signin.jsx +++ b/frontend/src/components/signin.jsx @@ -16,7 +16,8 @@ const ViewIcon = (props) => ( ); const SignIn = () => { - const [email, setEmail] = useState(''); + const [email, setEmail] = useState('') + ; const [emailError, setEmailError] = useState(''); const [formStep, setFormStep] = useState(1); const [password, setPassword] = useState(''); From 25dfd5be045da97d6cc47a84a227bbeb7eec68fa Mon Sep 17 00:00:00 2001 From: venkat <118790430+Venkatknight2295@users.noreply.github.com> Date: Thu, 16 May 2024 11:53:43 +0530 Subject: [PATCH 5/5] conflics resolved --- node_modules/.bin/ejs | 12 + node_modules/.bin/ejs.cmd | 17 + node_modules/.bin/ejs.ps1 | 28 + node_modules/.bin/jake | 12 + node_modules/.bin/jake.cmd | 17 + node_modules/.bin/jake.ps1 | 28 + node_modules/.bin/mime | 12 + node_modules/.bin/mime.cmd | 17 + node_modules/.bin/mime.ps1 | 28 + node_modules/accepts/HISTORY.md | 243 + node_modules/accepts/LICENSE | 23 + node_modules/accepts/README.md | 140 + node_modules/accepts/index.js | 238 + node_modules/accepts/package.json | 47 + node_modules/ansi-styles/index.d.ts | 345 + node_modules/ansi-styles/index.js | 163 + node_modules/ansi-styles/license | 9 + node_modules/ansi-styles/package.json | 56 + node_modules/ansi-styles/readme.md | 152 + node_modules/array-flatten/LICENSE | 21 + node_modules/array-flatten/README.md | 43 + node_modules/array-flatten/array-flatten.js | 64 + node_modules/array-flatten/package.json | 39 + node_modules/async/CHANGELOG.md | 348 + node_modules/async/LICENSE | 19 + node_modules/async/README.md | 59 + node_modules/async/all.js | 119 + node_modules/async/allLimit.js | 46 + node_modules/async/allSeries.js | 45 + node_modules/async/any.js | 122 + node_modules/async/anyLimit.js | 47 + node_modules/async/anySeries.js | 46 + node_modules/async/apply.js | 11 + node_modules/async/applyEach.js | 57 + node_modules/async/applyEachSeries.js | 37 + node_modules/async/asyncify.js | 118 + node_modules/async/auto.js | 333 + node_modules/async/autoInject.js | 182 + node_modules/async/bower.json | 17 + node_modules/async/cargo.js | 63 + node_modules/async/cargoQueue.js | 71 + node_modules/async/compose.js | 55 + node_modules/async/concat.js | 115 + node_modules/async/concatLimit.js | 60 + node_modules/async/concatSeries.js | 41 + node_modules/async/constant.js | 14 + node_modules/async/detect.js | 96 + node_modules/async/detectLimit.js | 48 + node_modules/async/detectSeries.js | 47 + node_modules/async/dir.js | 43 + node_modules/async/dist/async.js | 6062 ++++++++++++ node_modules/async/dist/async.min.js | 1 + node_modules/async/dist/async.mjs | 5949 ++++++++++++ node_modules/async/doDuring.js | 68 + node_modules/async/doUntil.js | 46 + node_modules/async/doWhilst.js | 68 + node_modules/async/during.js | 78 + node_modules/async/each.js | 129 + node_modules/async/eachLimit.js | 50 + node_modules/async/eachOf.js | 185 + node_modules/async/eachOfLimit.js | 47 + node_modules/async/eachOfSeries.js | 39 + node_modules/async/eachSeries.js | 44 + node_modules/async/ensureAsync.js | 67 + node_modules/async/every.js | 119 + node_modules/async/everyLimit.js | 46 + node_modules/async/everySeries.js | 45 + node_modules/async/filter.js | 93 + node_modules/async/filterLimit.js | 45 + node_modules/async/filterSeries.js | 43 + node_modules/async/find.js | 96 + node_modules/async/findLimit.js | 48 + node_modules/async/findSeries.js | 47 + node_modules/async/flatMap.js | 115 + node_modules/async/flatMapLimit.js | 60 + node_modules/async/flatMapSeries.js | 41 + node_modules/async/foldl.js | 153 + node_modules/async/foldr.js | 41 + node_modules/async/forEach.js | 129 + node_modules/async/forEachLimit.js | 50 + node_modules/async/forEachOf.js | 185 + node_modules/async/forEachOfLimit.js | 47 + node_modules/async/forEachOfSeries.js | 39 + node_modules/async/forEachSeries.js | 44 + node_modules/async/forever.js | 68 + node_modules/async/groupBy.js | 108 + node_modules/async/groupByLimit.js | 71 + node_modules/async/groupBySeries.js | 36 + node_modules/async/index.js | 588 ++ node_modules/async/inject.js | 153 + .../async/internal/DoublyLinkedList.js | 92 + node_modules/async/internal/Heap.js | 120 + node_modules/async/internal/applyEach.js | 29 + .../async/internal/asyncEachOfLimit.js | 75 + node_modules/async/internal/awaitify.js | 28 + node_modules/async/internal/breakLoop.js | 10 + node_modules/async/internal/consoleFunc.js | 31 + node_modules/async/internal/createTester.js | 40 + node_modules/async/internal/eachOfLimit.js | 90 + node_modules/async/internal/filter.js | 55 + node_modules/async/internal/getIterator.js | 11 + node_modules/async/internal/initialParams.js | 14 + node_modules/async/internal/isArrayLike.js | 10 + node_modules/async/internal/iterator.js | 57 + node_modules/async/internal/map.js | 30 + node_modules/async/internal/once.js | 17 + node_modules/async/internal/onlyOnce.js | 15 + node_modules/async/internal/parallel.js | 34 + .../async/internal/promiseCallback.js | 23 + node_modules/async/internal/queue.js | 294 + node_modules/async/internal/range.js | 14 + node_modules/async/internal/reject.js | 26 + node_modules/async/internal/setImmediate.js | 34 + node_modules/async/internal/withoutIndex.js | 10 + node_modules/async/internal/wrapAsync.js | 34 + node_modules/async/log.js | 41 + node_modules/async/map.js | 142 + node_modules/async/mapLimit.js | 45 + node_modules/async/mapSeries.js | 44 + node_modules/async/mapValues.js | 152 + node_modules/async/mapValuesLimit.js | 61 + node_modules/async/mapValuesSeries.js | 37 + node_modules/async/memoize.js | 91 + node_modules/async/nextTick.js | 52 + node_modules/async/package.json | 75 + node_modules/async/parallel.js | 180 + node_modules/async/parallelLimit.js | 41 + node_modules/async/priorityQueue.js | 60 + node_modules/async/queue.js | 24 + node_modules/async/race.js | 67 + node_modules/async/reduce.js | 153 + node_modules/async/reduceRight.js | 41 + node_modules/async/reflect.js | 78 + node_modules/async/reflectAll.js | 93 + node_modules/async/reject.js | 87 + node_modules/async/rejectLimit.js | 45 + node_modules/async/rejectSeries.js | 43 + node_modules/async/retry.js | 159 + node_modules/async/retryable.js | 77 + node_modules/async/select.js | 93 + node_modules/async/selectLimit.js | 45 + node_modules/async/selectSeries.js | 43 + node_modules/async/seq.js | 79 + node_modules/async/series.js | 186 + node_modules/async/setImmediate.js | 45 + node_modules/async/some.js | 122 + node_modules/async/someLimit.js | 47 + node_modules/async/someSeries.js | 46 + node_modules/async/sortBy.js | 190 + node_modules/async/timeout.js | 89 + node_modules/async/times.js | 50 + node_modules/async/timesLimit.js | 43 + node_modules/async/timesSeries.js | 32 + node_modules/async/transform.js | 173 + node_modules/async/tryEach.js | 78 + node_modules/async/unmemoize.js | 25 + node_modules/async/until.js | 61 + node_modules/async/waterfall.js | 105 + node_modules/async/whilst.js | 78 + node_modules/async/wrapSync.js | 118 + 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 | 874 ++ node_modules/axios/LICENSE | 7 + node_modules/axios/MIGRATION_GUIDE.md | 3 + node_modules/axios/README.md | 1650 ++++ node_modules/axios/SECURITY.md | 6 + node_modules/axios/dist/axios.js | 3448 +++++++ node_modules/axios/dist/axios.js.map | 1 + node_modules/axios/dist/axios.min.js | 2 + 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 | 4354 +++++++++ node_modules/axios/dist/node/axios.cjs.map | 1 + node_modules/axios/index.d.cts | 542 ++ node_modules/axios/index.d.ts | 559 ++ node_modules/axios/index.js | 43 + node_modules/axios/lib/adapters/README.md | 37 + node_modules/axios/lib/adapters/adapters.js | 77 + node_modules/axios/lib/adapters/http.js | 685 ++ node_modules/axios/lib/adapters/xhr.js | 260 + node_modules/axios/lib/axios.js | 89 + node_modules/axios/lib/cancel/CancelToken.js | 121 + .../axios/lib/cancel/CanceledError.js | 25 + node_modules/axios/lib/cancel/isCancel.js | 5 + node_modules/axios/lib/core/Axios.js | 225 + node_modules/axios/lib/core/AxiosError.js | 100 + node_modules/axios/lib/core/AxiosHeaders.js | 298 + .../axios/lib/core/InterceptorManager.js | 71 + node_modules/axios/lib/core/README.md | 8 + node_modules/axios/lib/core/buildFullPath.js | 21 + .../axios/lib/core/dispatchRequest.js | 81 + node_modules/axios/lib/core/mergeConfig.js | 106 + node_modules/axios/lib/core/settle.js | 27 + node_modules/axios/lib/core/transformData.js | 28 + 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 + node_modules/axios/lib/helpers/README.md | 7 + .../lib/helpers/ZlibHeaderTransformStream.js | 28 + node_modules/axios/lib/helpers/bind.js | 7 + node_modules/axios/lib/helpers/buildURL.js | 63 + node_modules/axios/lib/helpers/callbackify.js | 16 + node_modules/axios/lib/helpers/combineURLs.js | 15 + node_modules/axios/lib/helpers/cookies.js | 42 + .../axios/lib/helpers/deprecatedMethod.js | 26 + .../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 | 15 + .../axios/lib/helpers/isAxiosError.js | 14 + .../axios/lib/helpers/isURLSameOrigin.js | 67 + node_modules/axios/lib/helpers/null.js | 2 + .../axios/lib/helpers/parseHeaders.js | 55 + .../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 | 28 + 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 | 91 + .../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 | 723 ++ node_modules/axios/package.json | 218 + .../balanced-match/.github/FUNDING.yml | 2 + node_modules/balanced-match/LICENSE.md | 21 + node_modules/balanced-match/README.md | 97 + node_modules/balanced-match/index.js | 62 + node_modules/balanced-match/package.json | 48 + node_modules/body-parser/HISTORY.md | 665 ++ node_modules/body-parser/LICENSE | 23 + node_modules/body-parser/README.md | 465 + node_modules/body-parser/SECURITY.md | 25 + node_modules/body-parser/index.js | 156 + node_modules/body-parser/lib/read.js | 205 + node_modules/body-parser/lib/types/json.js | 247 + node_modules/body-parser/lib/types/raw.js | 101 + node_modules/body-parser/lib/types/text.js | 121 + .../body-parser/lib/types/urlencoded.js | 284 + node_modules/body-parser/package.json | 56 + node_modules/brace-expansion/LICENSE | 21 + node_modules/brace-expansion/README.md | 129 + node_modules/brace-expansion/index.js | 201 + node_modules/brace-expansion/package.json | 47 + node_modules/bytes/History.md | 97 + node_modules/bytes/LICENSE | 23 + node_modules/bytes/Readme.md | 152 + node_modules/bytes/index.js | 170 + node_modules/bytes/package.json | 42 + node_modules/call-bind/.eslintignore | 1 + node_modules/call-bind/.eslintrc | 16 + node_modules/call-bind/.github/FUNDING.yml | 12 + node_modules/call-bind/.nycrc | 9 + node_modules/call-bind/CHANGELOG.md | 93 + node_modules/call-bind/LICENSE | 21 + node_modules/call-bind/README.md | 64 + node_modules/call-bind/callBound.js | 15 + node_modules/call-bind/index.js | 35 + node_modules/call-bind/package.json | 95 + node_modules/call-bind/test/callBound.js | 54 + node_modules/call-bind/test/index.js | 80 + node_modules/chalk/index.d.ts | 415 + node_modules/chalk/license | 9 + node_modules/chalk/package.json | 68 + node_modules/chalk/readme.md | 341 + node_modules/chalk/source/index.js | 229 + node_modules/chalk/source/templates.js | 134 + node_modules/chalk/source/util.js | 39 + node_modules/color-convert/CHANGELOG.md | 54 + node_modules/color-convert/LICENSE | 21 + node_modules/color-convert/README.md | 68 + node_modules/color-convert/conversions.js | 839 ++ node_modules/color-convert/index.js | 81 + node_modules/color-convert/package.json | 48 + node_modules/color-convert/route.js | 97 + node_modules/color-name/LICENSE | 8 + node_modules/color-name/README.md | 11 + node_modules/color-name/index.js | 152 + node_modules/color-name/package.json | 28 + 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/concat-map/.travis.yml | 4 + node_modules/concat-map/LICENSE | 18 + node_modules/concat-map/README.markdown | 62 + node_modules/concat-map/example/map.js | 6 + node_modules/concat-map/index.js | 13 + node_modules/concat-map/package.json | 43 + node_modules/concat-map/test/map.js | 39 + node_modules/content-disposition/HISTORY.md | 60 + node_modules/content-disposition/LICENSE | 22 + node_modules/content-disposition/README.md | 142 + node_modules/content-disposition/index.js | 458 + node_modules/content-disposition/package.json | 44 + node_modules/content-type/HISTORY.md | 29 + node_modules/content-type/LICENSE | 22 + node_modules/content-type/README.md | 94 + node_modules/content-type/index.js | 225 + node_modules/content-type/package.json | 42 + node_modules/cookie-signature/.npmignore | 4 + node_modules/cookie-signature/History.md | 38 + node_modules/cookie-signature/Readme.md | 42 + node_modules/cookie-signature/index.js | 51 + node_modules/cookie-signature/package.json | 18 + node_modules/cookie/HISTORY.md | 147 + node_modules/cookie/LICENSE | 24 + node_modules/cookie/README.md | 317 + node_modules/cookie/SECURITY.md | 25 + node_modules/cookie/index.js | 274 + node_modules/cookie/package.json | 44 + node_modules/cors/CONTRIBUTING.md | 33 + node_modules/cors/HISTORY.md | 58 + node_modules/cors/LICENSE | 22 + node_modules/cors/README.md | 243 + node_modules/cors/lib/index.js | 238 + node_modules/cors/package.json | 41 + node_modules/debug/.coveralls.yml | 1 + node_modules/debug/.eslintrc | 11 + node_modules/debug/.npmignore | 9 + node_modules/debug/.travis.yml | 14 + node_modules/debug/CHANGELOG.md | 362 + node_modules/debug/LICENSE | 19 + node_modules/debug/Makefile | 50 + node_modules/debug/README.md | 312 + node_modules/debug/component.json | 19 + node_modules/debug/karma.conf.js | 70 + node_modules/debug/node.js | 1 + node_modules/debug/package.json | 49 + node_modules/debug/src/browser.js | 185 + node_modules/debug/src/debug.js | 202 + node_modules/debug/src/index.js | 10 + node_modules/debug/src/inspector-log.js | 15 + node_modules/debug/src/node.js | 248 + node_modules/define-data-property/.eslintrc | 24 + .../define-data-property/.github/FUNDING.yml | 12 + node_modules/define-data-property/.nycrc | 13 + .../define-data-property/CHANGELOG.md | 70 + node_modules/define-data-property/LICENSE | 21 + node_modules/define-data-property/README.md | 67 + node_modules/define-data-property/index.d.ts | 12 + node_modules/define-data-property/index.js | 56 + .../define-data-property/package.json | 106 + .../define-data-property/test/index.js | 392 + .../define-data-property/tsconfig.json | 59 + 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/depd/History.md | 103 + node_modules/depd/LICENSE | 22 + node_modules/depd/Readme.md | 280 + node_modules/depd/index.js | 538 ++ node_modules/depd/lib/browser/index.js | 77 + node_modules/depd/package.json | 45 + node_modules/destroy/LICENSE | 23 + node_modules/destroy/README.md | 63 + node_modules/destroy/index.js | 209 + node_modules/destroy/package.json | 48 + node_modules/ee-first/LICENSE | 22 + node_modules/ee-first/README.md | 80 + node_modules/ee-first/index.js | 95 + node_modules/ee-first/package.json | 29 + node_modules/ejs/LICENSE | 202 + node_modules/ejs/README.md | 344 + node_modules/ejs/bin/cli.js | 211 + node_modules/ejs/ejs.js | 1736 ++++ node_modules/ejs/ejs.min.js | 1 + node_modules/ejs/jakefile.js | 88 + node_modules/ejs/lib/ejs.js | 951 ++ node_modules/ejs/lib/utils.js | 241 + node_modules/ejs/package.json | 42 + node_modules/ejs/usage.txt | 24 + node_modules/encodeurl/HISTORY.md | 14 + node_modules/encodeurl/LICENSE | 22 + node_modules/encodeurl/README.md | 128 + node_modules/encodeurl/index.js | 60 + node_modules/encodeurl/package.json | 40 + node_modules/es-define-property/.eslintrc | 13 + .../es-define-property/.github/FUNDING.yml | 12 + node_modules/es-define-property/.nycrc | 9 + node_modules/es-define-property/CHANGELOG.md | 15 + node_modules/es-define-property/LICENSE | 21 + node_modules/es-define-property/README.md | 49 + node_modules/es-define-property/index.d.ts | 3 + node_modules/es-define-property/index.js | 16 + node_modules/es-define-property/package.json | 81 + node_modules/es-define-property/test/index.js | 55 + node_modules/es-define-property/tsconfig.json | 50 + node_modules/es-errors/.eslintrc | 5 + node_modules/es-errors/.github/FUNDING.yml | 12 + node_modules/es-errors/CHANGELOG.md | 40 + node_modules/es-errors/LICENSE | 21 + node_modules/es-errors/README.md | 55 + node_modules/es-errors/eval.d.ts | 3 + node_modules/es-errors/eval.js | 4 + node_modules/es-errors/index.d.ts | 3 + node_modules/es-errors/index.js | 4 + node_modules/es-errors/package.json | 80 + node_modules/es-errors/range.d.ts | 3 + node_modules/es-errors/range.js | 4 + node_modules/es-errors/ref.d.ts | 3 + node_modules/es-errors/ref.js | 4 + node_modules/es-errors/syntax.d.ts | 3 + node_modules/es-errors/syntax.js | 4 + node_modules/es-errors/test/index.js | 19 + node_modules/es-errors/tsconfig.json | 49 + node_modules/es-errors/type.d.ts | 3 + node_modules/es-errors/type.js | 4 + node_modules/es-errors/uri.d.ts | 3 + node_modules/es-errors/uri.js | 4 + node_modules/escape-html/LICENSE | 24 + node_modules/escape-html/Readme.md | 43 + node_modules/escape-html/index.js | 78 + node_modules/escape-html/package.json | 24 + node_modules/etag/HISTORY.md | 83 + node_modules/etag/LICENSE | 22 + node_modules/etag/README.md | 159 + node_modules/etag/index.js | 131 + node_modules/etag/package.json | 47 + node_modules/express/History.md | 3615 +++++++ node_modules/express/LICENSE | 24 + node_modules/express/Readme.md | 166 + node_modules/express/index.js | 11 + node_modules/express/lib/application.js | 661 ++ node_modules/express/lib/express.js | 116 + node_modules/express/lib/middleware/init.js | 43 + node_modules/express/lib/middleware/query.js | 47 + node_modules/express/lib/request.js | 525 + node_modules/express/lib/response.js | 1178 +++ node_modules/express/lib/router/index.js | 673 ++ node_modules/express/lib/router/layer.js | 181 + node_modules/express/lib/router/route.js | 230 + node_modules/express/lib/utils.js | 303 + node_modules/express/lib/view.js | 182 + node_modules/express/package.json | 98 + node_modules/filelist/README.md | 84 + node_modules/filelist/index.d.ts | 110 + node_modules/filelist/index.js | 495 + node_modules/filelist/jakefile.js | 15 + .../brace-expansion/.github/FUNDING.yml | 2 + .../node_modules/brace-expansion/LICENSE | 21 + .../node_modules/brace-expansion/README.md | 135 + .../node_modules/brace-expansion/index.js | 203 + .../node_modules/brace-expansion/package.json | 46 + .../filelist/node_modules/minimatch/LICENSE | 15 + .../filelist/node_modules/minimatch/README.md | 259 + .../node_modules/minimatch/lib/path.js | 4 + .../node_modules/minimatch/minimatch.js | 944 ++ .../node_modules/minimatch/package.json | 35 + node_modules/filelist/package.json | 28 + node_modules/finalhandler/HISTORY.md | 195 + node_modules/finalhandler/LICENSE | 22 + node_modules/finalhandler/README.md | 147 + node_modules/finalhandler/SECURITY.md | 25 + node_modules/finalhandler/index.js | 336 + node_modules/finalhandler/package.json | 46 + node_modules/follow-redirects/LICENSE | 18 + node_modules/follow-redirects/README.md | 155 + node_modules/follow-redirects/debug.js | 15 + node_modules/follow-redirects/http.js | 1 + node_modules/follow-redirects/https.js | 1 + node_modules/follow-redirects/index.js | 672 ++ node_modules/follow-redirects/package.json | 58 + 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/forwarded/HISTORY.md | 21 + node_modules/forwarded/LICENSE | 22 + node_modules/forwarded/README.md | 57 + node_modules/forwarded/index.js | 90 + node_modules/forwarded/package.json | 45 + node_modules/fresh/HISTORY.md | 70 + node_modules/fresh/LICENSE | 23 + node_modules/fresh/README.md | 119 + node_modules/fresh/index.js | 137 + node_modules/fresh/package.json | 46 + node_modules/function-bind/.eslintrc | 21 + .../function-bind/.github/FUNDING.yml | 12 + .../function-bind/.github/SECURITY.md | 3 + node_modules/function-bind/.nycrc | 13 + node_modules/function-bind/CHANGELOG.md | 136 + node_modules/function-bind/LICENSE | 20 + node_modules/function-bind/README.md | 46 + node_modules/function-bind/implementation.js | 84 + node_modules/function-bind/index.js | 5 + node_modules/function-bind/package.json | 87 + node_modules/function-bind/test/.eslintrc | 9 + node_modules/function-bind/test/index.js | 252 + node_modules/get-intrinsic/.eslintrc | 38 + .../get-intrinsic/.github/FUNDING.yml | 12 + node_modules/get-intrinsic/.nycrc | 9 + node_modules/get-intrinsic/CHANGELOG.md | 143 + node_modules/get-intrinsic/LICENSE | 21 + node_modules/get-intrinsic/README.md | 71 + node_modules/get-intrinsic/index.js | 359 + node_modules/get-intrinsic/package.json | 93 + .../get-intrinsic/test/GetIntrinsic.js | 274 + node_modules/gopd/.eslintrc | 16 + node_modules/gopd/.github/FUNDING.yml | 12 + node_modules/gopd/CHANGELOG.md | 25 + node_modules/gopd/LICENSE | 21 + node_modules/gopd/README.md | 40 + node_modules/gopd/index.js | 16 + node_modules/gopd/package.json | 71 + node_modules/gopd/test/index.js | 35 + node_modules/has-flag/index.d.ts | 39 + node_modules/has-flag/index.js | 8 + node_modules/has-flag/license | 9 + node_modules/has-flag/package.json | 46 + node_modules/has-flag/readme.md | 89 + .../has-property-descriptors/.eslintrc | 13 + .../.github/FUNDING.yml | 12 + node_modules/has-property-descriptors/.nycrc | 9 + .../has-property-descriptors/CHANGELOG.md | 35 + node_modules/has-property-descriptors/LICENSE | 21 + .../has-property-descriptors/README.md | 43 + .../has-property-descriptors/index.js | 22 + .../has-property-descriptors/package.json | 77 + .../has-property-descriptors/test/index.js | 57 + node_modules/has-proto/.eslintrc | 5 + node_modules/has-proto/.github/FUNDING.yml | 12 + node_modules/has-proto/CHANGELOG.md | 38 + node_modules/has-proto/LICENSE | 21 + node_modules/has-proto/README.md | 38 + node_modules/has-proto/index.d.ts | 3 + node_modules/has-proto/index.js | 15 + node_modules/has-proto/package.json | 78 + node_modules/has-proto/test/index.js | 19 + node_modules/has-proto/tsconfig.json | 49 + node_modules/has-symbols/.eslintrc | 11 + node_modules/has-symbols/.github/FUNDING.yml | 12 + node_modules/has-symbols/.nycrc | 9 + node_modules/has-symbols/CHANGELOG.md | 75 + node_modules/has-symbols/LICENSE | 21 + node_modules/has-symbols/README.md | 46 + node_modules/has-symbols/index.js | 13 + node_modules/has-symbols/package.json | 101 + node_modules/has-symbols/shams.js | 42 + node_modules/has-symbols/test/index.js | 22 + .../has-symbols/test/shams/core-js.js | 28 + .../test/shams/get-own-property-symbols.js | 28 + node_modules/has-symbols/test/tests.js | 56 + node_modules/hasown/.eslintrc | 5 + node_modules/hasown/.github/FUNDING.yml | 12 + node_modules/hasown/.nycrc | 13 + node_modules/hasown/CHANGELOG.md | 40 + node_modules/hasown/LICENSE | 21 + node_modules/hasown/README.md | 40 + node_modules/hasown/index.d.ts | 3 + node_modules/hasown/index.js | 8 + node_modules/hasown/package.json | 92 + node_modules/hasown/tsconfig.json | 6 + node_modules/howler/LICENSE.md | 20 + node_modules/howler/README.md | 564 ++ node_modules/howler/dist/howler.core.min.js | 2 + node_modules/howler/dist/howler.js | 3248 +++++++ node_modules/howler/dist/howler.min.js | 4 + .../howler/dist/howler.spatial.min.js | 2 + node_modules/howler/package.json | 41 + node_modules/howler/src/howler.core.js | 2587 +++++ .../howler/src/plugins/howler.spatial.js | 659 ++ node_modules/http-errors/HISTORY.md | 180 + node_modules/http-errors/LICENSE | 23 + node_modules/http-errors/README.md | 169 + node_modules/http-errors/index.js | 289 + node_modules/http-errors/package.json | 50 + node_modules/iconv-lite/Changelog.md | 162 + node_modules/iconv-lite/LICENSE | 21 + node_modules/iconv-lite/README.md | 156 + .../iconv-lite/encodings/dbcs-codec.js | 555 ++ .../iconv-lite/encodings/dbcs-data.js | 176 + node_modules/iconv-lite/encodings/index.js | 22 + node_modules/iconv-lite/encodings/internal.js | 188 + .../iconv-lite/encodings/sbcs-codec.js | 72 + .../encodings/sbcs-data-generated.js | 451 + .../iconv-lite/encodings/sbcs-data.js | 174 + .../encodings/tables/big5-added.json | 122 + .../iconv-lite/encodings/tables/cp936.json | 264 + .../iconv-lite/encodings/tables/cp949.json | 273 + .../iconv-lite/encodings/tables/cp950.json | 177 + .../iconv-lite/encodings/tables/eucjp.json | 182 + .../encodings/tables/gb18030-ranges.json | 1 + .../encodings/tables/gbk-added.json | 55 + .../iconv-lite/encodings/tables/shiftjis.json | 125 + node_modules/iconv-lite/encodings/utf16.js | 177 + node_modules/iconv-lite/encodings/utf7.js | 290 + node_modules/iconv-lite/lib/bom-handling.js | 52 + node_modules/iconv-lite/lib/extend-node.js | 217 + node_modules/iconv-lite/lib/index.d.ts | 24 + node_modules/iconv-lite/lib/index.js | 153 + node_modules/iconv-lite/lib/streams.js | 121 + node_modules/iconv-lite/package.json | 46 + node_modules/inherits/LICENSE | 16 + node_modules/inherits/README.md | 42 + node_modules/inherits/inherits.js | 9 + node_modules/inherits/inherits_browser.js | 27 + node_modules/inherits/package.json | 29 + node_modules/ipaddr.js/LICENSE | 19 + node_modules/ipaddr.js/README.md | 233 + node_modules/ipaddr.js/ipaddr.min.js | 1 + node_modules/ipaddr.js/lib/ipaddr.js | 673 ++ node_modules/ipaddr.js/lib/ipaddr.js.d.ts | 68 + node_modules/ipaddr.js/package.json | 35 + node_modules/jake/Makefile | 44 + node_modules/jake/README.md | 17 + node_modules/jake/bin/bash_completion.sh | 41 + node_modules/jake/bin/cli.js | 31 + node_modules/jake/jakefile.js | 112 + node_modules/jake/lib/api.js | 409 + node_modules/jake/lib/jake.js | 330 + node_modules/jake/lib/loader.js | 173 + node_modules/jake/lib/namespace.js | 115 + node_modules/jake/lib/package_task.js | 406 + node_modules/jake/lib/parseargs.js | 134 + node_modules/jake/lib/program.js | 282 + node_modules/jake/lib/publish_task.js | 290 + node_modules/jake/lib/rule.js | 311 + node_modules/jake/lib/task/directory_task.js | 30 + node_modules/jake/lib/task/file_task.js | 126 + node_modules/jake/lib/task/index.js | 9 + node_modules/jake/lib/task/task.js | 449 + node_modules/jake/lib/test_task.js | 270 + node_modules/jake/lib/utils/file.js | 286 + node_modules/jake/lib/utils/index.js | 297 + node_modules/jake/lib/utils/logger.js | 24 + node_modules/jake/package.json | 42 + .../jake/test/integration/concurrent.js | 45 + node_modules/jake/test/integration/file.js | 228 + .../jake/test/integration/file_task.js | 141 + node_modules/jake/test/integration/helpers.js | 80 + .../jake/test/integration/jakefile.js | 352 + .../integration/jakelib/concurrent.jake.js | 113 + .../test/integration/jakelib/publish.jake.js | 49 + .../jakelib/required_module.jake.js | 10 + .../test/integration/jakelib/rule.jake.js | 222 + .../jake/test/integration/list_tasks.js | 15 + .../jake/test/integration/publish_task.js | 27 + node_modules/jake/test/integration/rule.js | 217 + node_modules/jake/test/integration/selfdep.js | 42 + .../jake/test/integration/task_base.js | 167 + node_modules/jake/test/unit/jakefile.js | 36 + node_modules/jake/test/unit/namespace.js | 77 + node_modules/jake/test/unit/parseargs.js | 169 + node_modules/jake/usage.txt | 17 + node_modules/media-typer/HISTORY.md | 22 + node_modules/media-typer/LICENSE | 22 + node_modules/media-typer/README.md | 81 + node_modules/media-typer/index.js | 270 + node_modules/media-typer/package.json | 26 + node_modules/merge-descriptors/HISTORY.md | 21 + node_modules/merge-descriptors/LICENSE | 23 + node_modules/merge-descriptors/README.md | 48 + node_modules/merge-descriptors/index.js | 60 + node_modules/merge-descriptors/package.json | 32 + node_modules/methods/HISTORY.md | 29 + node_modules/methods/LICENSE | 24 + node_modules/methods/README.md | 51 + node_modules/methods/index.js | 69 + node_modules/methods/package.json | 36 + node_modules/mime-db/HISTORY.md | 507 + node_modules/mime-db/LICENSE | 23 + node_modules/mime-db/README.md | 100 + node_modules/mime-db/db.json | 8519 +++++++++++++++++ node_modules/mime-db/index.js | 12 + node_modules/mime-db/package.json | 60 + node_modules/mime-types/HISTORY.md | 397 + node_modules/mime-types/LICENSE | 23 + node_modules/mime-types/README.md | 113 + node_modules/mime-types/index.js | 188 + node_modules/mime-types/package.json | 44 + node_modules/mime/.npmignore | 0 node_modules/mime/CHANGELOG.md | 164 + node_modules/mime/LICENSE | 21 + node_modules/mime/README.md | 90 + node_modules/mime/cli.js | 8 + node_modules/mime/mime.js | 108 + node_modules/mime/package.json | 44 + node_modules/mime/src/build.js | 53 + node_modules/mime/src/test.js | 60 + node_modules/mime/types.json | 1 + node_modules/minimatch/LICENSE | 15 + node_modules/minimatch/README.md | 230 + node_modules/minimatch/minimatch.js | 947 ++ node_modules/minimatch/package.json | 33 + node_modules/ms/index.js | 152 + node_modules/ms/license.md | 21 + node_modules/ms/package.json | 37 + node_modules/ms/readme.md | 51 + node_modules/negotiator/HISTORY.md | 108 + node_modules/negotiator/LICENSE | 24 + node_modules/negotiator/README.md | 203 + node_modules/negotiator/index.js | 82 + node_modules/negotiator/lib/charset.js | 169 + node_modules/negotiator/lib/encoding.js | 184 + node_modules/negotiator/lib/language.js | 179 + node_modules/negotiator/lib/mediaType.js | 294 + node_modules/negotiator/package.json | 42 + node_modules/object-assign/index.js | 90 + node_modules/object-assign/license | 21 + node_modules/object-assign/package.json | 42 + node_modules/object-assign/readme.md | 61 + node_modules/object-inspect/.eslintrc | 53 + .../object-inspect/.github/FUNDING.yml | 12 + node_modules/object-inspect/.nycrc | 13 + node_modules/object-inspect/CHANGELOG.md | 389 + node_modules/object-inspect/LICENSE | 21 + node_modules/object-inspect/example/all.js | 23 + .../object-inspect/example/circular.js | 6 + node_modules/object-inspect/example/fn.js | 5 + .../object-inspect/example/inspect.js | 10 + node_modules/object-inspect/index.js | 524 + .../object-inspect/package-support.json | 20 + node_modules/object-inspect/package.json | 99 + node_modules/object-inspect/readme.markdown | 86 + node_modules/object-inspect/test-core-js.js | 26 + node_modules/object-inspect/test/bigint.js | 58 + .../object-inspect/test/browser/dom.js | 15 + node_modules/object-inspect/test/circular.js | 16 + node_modules/object-inspect/test/deep.js | 12 + node_modules/object-inspect/test/element.js | 53 + node_modules/object-inspect/test/err.js | 48 + node_modules/object-inspect/test/fakes.js | 29 + node_modules/object-inspect/test/fn.js | 76 + node_modules/object-inspect/test/global.js | 17 + node_modules/object-inspect/test/has.js | 15 + node_modules/object-inspect/test/holes.js | 15 + .../object-inspect/test/indent-option.js | 271 + node_modules/object-inspect/test/inspect.js | 139 + node_modules/object-inspect/test/lowbyte.js | 12 + node_modules/object-inspect/test/number.js | 58 + .../object-inspect/test/quoteStyle.js | 17 + .../object-inspect/test/toStringTag.js | 40 + node_modules/object-inspect/test/undef.js | 12 + node_modules/object-inspect/test/values.js | 211 + node_modules/object-inspect/util.inspect.js | 1 + node_modules/on-finished/HISTORY.md | 98 + node_modules/on-finished/LICENSE | 23 + node_modules/on-finished/README.md | 162 + node_modules/on-finished/index.js | 234 + node_modules/on-finished/package.json | 39 + node_modules/parseurl/HISTORY.md | 58 + node_modules/parseurl/LICENSE | 24 + node_modules/parseurl/README.md | 133 + node_modules/parseurl/index.js | 158 + node_modules/parseurl/package.json | 40 + node_modules/path-to-regexp/History.md | 36 + node_modules/path-to-regexp/LICENSE | 21 + node_modules/path-to-regexp/Readme.md | 35 + node_modules/path-to-regexp/index.js | 129 + node_modules/path-to-regexp/package.json | 30 + node_modules/path/.npmignore | 1 + node_modules/path/LICENSE | 18 + node_modules/path/README.md | 15 + node_modules/path/package.json | 24 + node_modules/path/path.js | 628 ++ node_modules/process/.eslintrc | 21 + node_modules/process/LICENSE | 22 + node_modules/process/README.md | 26 + node_modules/process/browser.js | 184 + node_modules/process/index.js | 2 + node_modules/process/package.json | 27 + node_modules/process/test.js | 199 + node_modules/proxy-addr/HISTORY.md | 161 + node_modules/proxy-addr/LICENSE | 22 + node_modules/proxy-addr/README.md | 139 + node_modules/proxy-addr/index.js | 327 + node_modules/proxy-addr/package.json | 47 + 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 + node_modules/qs/.editorconfig | 43 + node_modules/qs/.eslintrc | 38 + node_modules/qs/.github/FUNDING.yml | 12 + node_modules/qs/.nycrc | 13 + node_modules/qs/CHANGELOG.md | 546 ++ node_modules/qs/LICENSE.md | 29 + node_modules/qs/README.md | 625 ++ node_modules/qs/dist/qs.js | 2054 ++++ node_modules/qs/lib/formats.js | 23 + node_modules/qs/lib/index.js | 11 + node_modules/qs/lib/parse.js | 263 + node_modules/qs/lib/stringify.js | 326 + node_modules/qs/lib/utils.js | 252 + node_modules/qs/package.json | 77 + node_modules/qs/test/parse.js | 855 ++ node_modules/qs/test/stringify.js | 909 ++ node_modules/qs/test/utils.js | 136 + node_modules/range-parser/HISTORY.md | 56 + node_modules/range-parser/LICENSE | 23 + node_modules/range-parser/README.md | 84 + node_modules/range-parser/index.js | 162 + node_modules/range-parser/package.json | 44 + node_modules/raw-body/HISTORY.md | 308 + node_modules/raw-body/LICENSE | 22 + node_modules/raw-body/README.md | 223 + node_modules/raw-body/SECURITY.md | 24 + node_modules/raw-body/index.d.ts | 87 + node_modules/raw-body/index.js | 336 + node_modules/raw-body/package.json | 49 + node_modules/safe-buffer/LICENSE | 21 + node_modules/safe-buffer/README.md | 584 ++ node_modules/safe-buffer/index.d.ts | 187 + node_modules/safe-buffer/index.js | 65 + node_modules/safe-buffer/package.json | 51 + node_modules/safer-buffer/LICENSE | 21 + node_modules/safer-buffer/Porting-Buffer.md | 268 + node_modules/safer-buffer/Readme.md | 156 + node_modules/safer-buffer/dangerous.js | 58 + node_modules/safer-buffer/package.json | 34 + node_modules/safer-buffer/safer.js | 77 + node_modules/safer-buffer/tests.js | 406 + node_modules/send/HISTORY.md | 521 + node_modules/send/LICENSE | 23 + node_modules/send/README.md | 327 + node_modules/send/SECURITY.md | 24 + node_modules/send/index.js | 1143 +++ node_modules/send/node_modules/ms/index.js | 162 + node_modules/send/node_modules/ms/license.md | 21 + .../send/node_modules/ms/package.json | 38 + node_modules/send/node_modules/ms/readme.md | 59 + node_modules/send/package.json | 62 + node_modules/serve-static/HISTORY.md | 471 + node_modules/serve-static/LICENSE | 25 + node_modules/serve-static/README.md | 257 + node_modules/serve-static/index.js | 210 + node_modules/serve-static/package.json | 42 + node_modules/set-function-length/.eslintrc | 27 + .../set-function-length/.github/FUNDING.yml | 12 + node_modules/set-function-length/.nycrc | 13 + node_modules/set-function-length/CHANGELOG.md | 70 + node_modules/set-function-length/LICENSE | 21 + node_modules/set-function-length/README.md | 56 + node_modules/set-function-length/env.d.ts | 9 + node_modules/set-function-length/env.js | 25 + node_modules/set-function-length/index.d.ts | 7 + node_modules/set-function-length/index.js | 42 + node_modules/set-function-length/package.json | 102 + .../set-function-length/tsconfig.json | 9 + node_modules/setprototypeof/LICENSE | 13 + node_modules/setprototypeof/README.md | 31 + node_modules/setprototypeof/index.d.ts | 2 + node_modules/setprototypeof/index.js | 17 + node_modules/setprototypeof/package.json | 38 + node_modules/setprototypeof/test/index.js | 24 + node_modules/side-channel/.editorconfig | 9 + node_modules/side-channel/.eslintrc | 11 + node_modules/side-channel/.github/FUNDING.yml | 12 + node_modules/side-channel/.nycrc | 13 + node_modules/side-channel/CHANGELOG.md | 95 + node_modules/side-channel/LICENSE | 21 + node_modules/side-channel/README.md | 2 + node_modules/side-channel/index.d.ts | 27 + node_modules/side-channel/index.js | 129 + node_modules/side-channel/package.json | 84 + node_modules/side-channel/test/index.js | 83 + node_modules/side-channel/tsconfig.json | 50 + node_modules/statuses/HISTORY.md | 82 + node_modules/statuses/LICENSE | 23 + node_modules/statuses/README.md | 136 + node_modules/statuses/codes.json | 65 + node_modules/statuses/index.js | 146 + node_modules/statuses/package.json | 49 + node_modules/supports-color/browser.js | 5 + node_modules/supports-color/index.js | 135 + node_modules/supports-color/license | 9 + node_modules/supports-color/package.json | 53 + node_modules/supports-color/readme.md | 76 + node_modules/toidentifier/HISTORY.md | 9 + node_modules/toidentifier/LICENSE | 21 + node_modules/toidentifier/README.md | 61 + node_modules/toidentifier/index.js | 32 + node_modules/toidentifier/package.json | 38 + node_modules/type-is/HISTORY.md | 259 + node_modules/type-is/LICENSE | 23 + node_modules/type-is/README.md | 170 + node_modules/type-is/index.js | 266 + node_modules/type-is/package.json | 45 + node_modules/unpipe/HISTORY.md | 4 + node_modules/unpipe/LICENSE | 22 + node_modules/unpipe/README.md | 43 + node_modules/unpipe/index.js | 69 + node_modules/unpipe/package.json | 27 + node_modules/util/LICENSE | 18 + node_modules/util/README.md | 15 + .../util/node_modules/inherits/LICENSE | 16 + .../util/node_modules/inherits/README.md | 42 + .../util/node_modules/inherits/inherits.js | 7 + .../node_modules/inherits/inherits_browser.js | 23 + .../util/node_modules/inherits/package.json | 29 + node_modules/util/package.json | 35 + node_modules/util/support/isBuffer.js | 3 + node_modules/util/support/isBufferBrowser.js | 6 + node_modules/util/util.js | 586 ++ node_modules/utils-merge/.npmignore | 9 + node_modules/utils-merge/LICENSE | 20 + node_modules/utils-merge/README.md | 34 + node_modules/utils-merge/index.js | 23 + node_modules/utils-merge/package.json | 40 + node_modules/vary/HISTORY.md | 39 + node_modules/vary/LICENSE | 22 + node_modules/vary/README.md | 101 + node_modules/vary/index.js | 149 + node_modules/vary/package.json | 43 + 953 files changed, 142641 insertions(+) create mode 100644 node_modules/.bin/ejs create mode 100644 node_modules/.bin/ejs.cmd create mode 100644 node_modules/.bin/ejs.ps1 create mode 100644 node_modules/.bin/jake create mode 100644 node_modules/.bin/jake.cmd create mode 100644 node_modules/.bin/jake.ps1 create mode 100644 node_modules/.bin/mime create mode 100644 node_modules/.bin/mime.cmd create mode 100644 node_modules/.bin/mime.ps1 create mode 100644 node_modules/accepts/HISTORY.md create mode 100644 node_modules/accepts/LICENSE create mode 100644 node_modules/accepts/README.md create mode 100644 node_modules/accepts/index.js create mode 100644 node_modules/accepts/package.json create mode 100644 node_modules/ansi-styles/index.d.ts create mode 100644 node_modules/ansi-styles/index.js create mode 100644 node_modules/ansi-styles/license create mode 100644 node_modules/ansi-styles/package.json create mode 100644 node_modules/ansi-styles/readme.md create mode 100644 node_modules/array-flatten/LICENSE create mode 100644 node_modules/array-flatten/README.md create mode 100644 node_modules/array-flatten/array-flatten.js create mode 100644 node_modules/array-flatten/package.json create mode 100644 node_modules/async/CHANGELOG.md create mode 100644 node_modules/async/LICENSE create mode 100644 node_modules/async/README.md create mode 100644 node_modules/async/all.js create mode 100644 node_modules/async/allLimit.js create mode 100644 node_modules/async/allSeries.js create mode 100644 node_modules/async/any.js create mode 100644 node_modules/async/anyLimit.js create mode 100644 node_modules/async/anySeries.js create mode 100644 node_modules/async/apply.js create mode 100644 node_modules/async/applyEach.js create mode 100644 node_modules/async/applyEachSeries.js create mode 100644 node_modules/async/asyncify.js create mode 100644 node_modules/async/auto.js create mode 100644 node_modules/async/autoInject.js create mode 100644 node_modules/async/bower.json create mode 100644 node_modules/async/cargo.js create mode 100644 node_modules/async/cargoQueue.js create mode 100644 node_modules/async/compose.js create mode 100644 node_modules/async/concat.js create mode 100644 node_modules/async/concatLimit.js create mode 100644 node_modules/async/concatSeries.js create mode 100644 node_modules/async/constant.js create mode 100644 node_modules/async/detect.js create mode 100644 node_modules/async/detectLimit.js create mode 100644 node_modules/async/detectSeries.js create mode 100644 node_modules/async/dir.js create mode 100644 node_modules/async/dist/async.js create mode 100644 node_modules/async/dist/async.min.js create mode 100644 node_modules/async/dist/async.mjs create mode 100644 node_modules/async/doDuring.js create mode 100644 node_modules/async/doUntil.js create mode 100644 node_modules/async/doWhilst.js create mode 100644 node_modules/async/during.js create mode 100644 node_modules/async/each.js create mode 100644 node_modules/async/eachLimit.js create mode 100644 node_modules/async/eachOf.js create mode 100644 node_modules/async/eachOfLimit.js create mode 100644 node_modules/async/eachOfSeries.js create mode 100644 node_modules/async/eachSeries.js create mode 100644 node_modules/async/ensureAsync.js create mode 100644 node_modules/async/every.js create mode 100644 node_modules/async/everyLimit.js create mode 100644 node_modules/async/everySeries.js create mode 100644 node_modules/async/filter.js create mode 100644 node_modules/async/filterLimit.js create mode 100644 node_modules/async/filterSeries.js create mode 100644 node_modules/async/find.js create mode 100644 node_modules/async/findLimit.js create mode 100644 node_modules/async/findSeries.js create mode 100644 node_modules/async/flatMap.js create mode 100644 node_modules/async/flatMapLimit.js create mode 100644 node_modules/async/flatMapSeries.js create mode 100644 node_modules/async/foldl.js create mode 100644 node_modules/async/foldr.js create mode 100644 node_modules/async/forEach.js create mode 100644 node_modules/async/forEachLimit.js create mode 100644 node_modules/async/forEachOf.js create mode 100644 node_modules/async/forEachOfLimit.js create mode 100644 node_modules/async/forEachOfSeries.js create mode 100644 node_modules/async/forEachSeries.js create mode 100644 node_modules/async/forever.js create mode 100644 node_modules/async/groupBy.js create mode 100644 node_modules/async/groupByLimit.js create mode 100644 node_modules/async/groupBySeries.js create mode 100644 node_modules/async/index.js create mode 100644 node_modules/async/inject.js create mode 100644 node_modules/async/internal/DoublyLinkedList.js create mode 100644 node_modules/async/internal/Heap.js create mode 100644 node_modules/async/internal/applyEach.js create mode 100644 node_modules/async/internal/asyncEachOfLimit.js create mode 100644 node_modules/async/internal/awaitify.js create mode 100644 node_modules/async/internal/breakLoop.js create mode 100644 node_modules/async/internal/consoleFunc.js create mode 100644 node_modules/async/internal/createTester.js create mode 100644 node_modules/async/internal/eachOfLimit.js create mode 100644 node_modules/async/internal/filter.js create mode 100644 node_modules/async/internal/getIterator.js create mode 100644 node_modules/async/internal/initialParams.js create mode 100644 node_modules/async/internal/isArrayLike.js create mode 100644 node_modules/async/internal/iterator.js create mode 100644 node_modules/async/internal/map.js create mode 100644 node_modules/async/internal/once.js create mode 100644 node_modules/async/internal/onlyOnce.js create mode 100644 node_modules/async/internal/parallel.js create mode 100644 node_modules/async/internal/promiseCallback.js create mode 100644 node_modules/async/internal/queue.js create mode 100644 node_modules/async/internal/range.js create mode 100644 node_modules/async/internal/reject.js create mode 100644 node_modules/async/internal/setImmediate.js create mode 100644 node_modules/async/internal/withoutIndex.js create mode 100644 node_modules/async/internal/wrapAsync.js create mode 100644 node_modules/async/log.js create mode 100644 node_modules/async/map.js create mode 100644 node_modules/async/mapLimit.js create mode 100644 node_modules/async/mapSeries.js create mode 100644 node_modules/async/mapValues.js create mode 100644 node_modules/async/mapValuesLimit.js create mode 100644 node_modules/async/mapValuesSeries.js create mode 100644 node_modules/async/memoize.js create mode 100644 node_modules/async/nextTick.js create mode 100644 node_modules/async/package.json create mode 100644 node_modules/async/parallel.js create mode 100644 node_modules/async/parallelLimit.js create mode 100644 node_modules/async/priorityQueue.js create mode 100644 node_modules/async/queue.js create mode 100644 node_modules/async/race.js create mode 100644 node_modules/async/reduce.js create mode 100644 node_modules/async/reduceRight.js create mode 100644 node_modules/async/reflect.js create mode 100644 node_modules/async/reflectAll.js create mode 100644 node_modules/async/reject.js create mode 100644 node_modules/async/rejectLimit.js create mode 100644 node_modules/async/rejectSeries.js create mode 100644 node_modules/async/retry.js create mode 100644 node_modules/async/retryable.js create mode 100644 node_modules/async/select.js create mode 100644 node_modules/async/selectLimit.js create mode 100644 node_modules/async/selectSeries.js create mode 100644 node_modules/async/seq.js create mode 100644 node_modules/async/series.js create mode 100644 node_modules/async/setImmediate.js create mode 100644 node_modules/async/some.js create mode 100644 node_modules/async/someLimit.js create mode 100644 node_modules/async/someSeries.js create mode 100644 node_modules/async/sortBy.js create mode 100644 node_modules/async/timeout.js create mode 100644 node_modules/async/times.js create mode 100644 node_modules/async/timesLimit.js create mode 100644 node_modules/async/timesSeries.js create mode 100644 node_modules/async/transform.js create mode 100644 node_modules/async/tryEach.js create mode 100644 node_modules/async/unmemoize.js create mode 100644 node_modules/async/until.js create mode 100644 node_modules/async/waterfall.js create mode 100644 node_modules/async/whilst.js create mode 100644 node_modules/async/wrapSync.js create mode 100644 node_modules/asynckit/LICENSE create mode 100644 node_modules/asynckit/README.md create mode 100644 node_modules/asynckit/bench.js create mode 100644 node_modules/asynckit/index.js create mode 100644 node_modules/asynckit/lib/abort.js create mode 100644 node_modules/asynckit/lib/async.js create mode 100644 node_modules/asynckit/lib/defer.js create mode 100644 node_modules/asynckit/lib/iterate.js create mode 100644 node_modules/asynckit/lib/readable_asynckit.js create mode 100644 node_modules/asynckit/lib/readable_parallel.js create mode 100644 node_modules/asynckit/lib/readable_serial.js create mode 100644 node_modules/asynckit/lib/readable_serial_ordered.js create mode 100644 node_modules/asynckit/lib/state.js create mode 100644 node_modules/asynckit/lib/streamify.js create mode 100644 node_modules/asynckit/lib/terminator.js create mode 100644 node_modules/asynckit/package.json create mode 100644 node_modules/asynckit/parallel.js create mode 100644 node_modules/asynckit/serial.js create mode 100644 node_modules/asynckit/serialOrdered.js create mode 100644 node_modules/asynckit/stream.js create mode 100644 node_modules/axios/CHANGELOG.md create mode 100644 node_modules/axios/LICENSE create mode 100644 node_modules/axios/MIGRATION_GUIDE.md create mode 100644 node_modules/axios/README.md create mode 100644 node_modules/axios/SECURITY.md create mode 100644 node_modules/axios/dist/axios.js create mode 100644 node_modules/axios/dist/axios.js.map create mode 100644 node_modules/axios/dist/axios.min.js create mode 100644 node_modules/axios/dist/axios.min.js.map create mode 100644 node_modules/axios/dist/browser/axios.cjs create mode 100644 node_modules/axios/dist/browser/axios.cjs.map create mode 100644 node_modules/axios/dist/esm/axios.js create mode 100644 node_modules/axios/dist/esm/axios.js.map create mode 100644 node_modules/axios/dist/esm/axios.min.js create mode 100644 node_modules/axios/dist/esm/axios.min.js.map create mode 100644 node_modules/axios/dist/node/axios.cjs create mode 100644 node_modules/axios/dist/node/axios.cjs.map create mode 100644 node_modules/axios/index.d.cts create mode 100644 node_modules/axios/index.d.ts create mode 100644 node_modules/axios/index.js create mode 100644 node_modules/axios/lib/adapters/README.md create mode 100644 node_modules/axios/lib/adapters/adapters.js create mode 100644 node_modules/axios/lib/adapters/http.js create mode 100644 node_modules/axios/lib/adapters/xhr.js create mode 100644 node_modules/axios/lib/axios.js create mode 100644 node_modules/axios/lib/cancel/CancelToken.js create mode 100644 node_modules/axios/lib/cancel/CanceledError.js create mode 100644 node_modules/axios/lib/cancel/isCancel.js create mode 100644 node_modules/axios/lib/core/Axios.js create mode 100644 node_modules/axios/lib/core/AxiosError.js create mode 100644 node_modules/axios/lib/core/AxiosHeaders.js create mode 100644 node_modules/axios/lib/core/InterceptorManager.js create mode 100644 node_modules/axios/lib/core/README.md create mode 100644 node_modules/axios/lib/core/buildFullPath.js create mode 100644 node_modules/axios/lib/core/dispatchRequest.js create mode 100644 node_modules/axios/lib/core/mergeConfig.js create mode 100644 node_modules/axios/lib/core/settle.js create mode 100644 node_modules/axios/lib/core/transformData.js create mode 100644 node_modules/axios/lib/defaults/index.js create mode 100644 node_modules/axios/lib/defaults/transitional.js create mode 100644 node_modules/axios/lib/env/README.md create mode 100644 node_modules/axios/lib/env/classes/FormData.js create mode 100644 node_modules/axios/lib/env/data.js create mode 100644 node_modules/axios/lib/helpers/AxiosTransformStream.js create mode 100644 node_modules/axios/lib/helpers/AxiosURLSearchParams.js create mode 100644 node_modules/axios/lib/helpers/HttpStatusCode.js create mode 100644 node_modules/axios/lib/helpers/README.md create mode 100644 node_modules/axios/lib/helpers/ZlibHeaderTransformStream.js create mode 100644 node_modules/axios/lib/helpers/bind.js create mode 100644 node_modules/axios/lib/helpers/buildURL.js create mode 100644 node_modules/axios/lib/helpers/callbackify.js create mode 100644 node_modules/axios/lib/helpers/combineURLs.js create mode 100644 node_modules/axios/lib/helpers/cookies.js create mode 100644 node_modules/axios/lib/helpers/deprecatedMethod.js create mode 100644 node_modules/axios/lib/helpers/formDataToJSON.js create mode 100644 node_modules/axios/lib/helpers/formDataToStream.js create mode 100644 node_modules/axios/lib/helpers/fromDataURI.js create mode 100644 node_modules/axios/lib/helpers/isAbsoluteURL.js create mode 100644 node_modules/axios/lib/helpers/isAxiosError.js create mode 100644 node_modules/axios/lib/helpers/isURLSameOrigin.js create mode 100644 node_modules/axios/lib/helpers/null.js create mode 100644 node_modules/axios/lib/helpers/parseHeaders.js create mode 100644 node_modules/axios/lib/helpers/parseProtocol.js create mode 100644 node_modules/axios/lib/helpers/readBlob.js create mode 100644 node_modules/axios/lib/helpers/speedometer.js create mode 100644 node_modules/axios/lib/helpers/spread.js create mode 100644 node_modules/axios/lib/helpers/throttle.js create mode 100644 node_modules/axios/lib/helpers/toFormData.js create mode 100644 node_modules/axios/lib/helpers/toURLEncodedForm.js create mode 100644 node_modules/axios/lib/helpers/validator.js create mode 100644 node_modules/axios/lib/platform/browser/classes/Blob.js create mode 100644 node_modules/axios/lib/platform/browser/classes/FormData.js create mode 100644 node_modules/axios/lib/platform/browser/classes/URLSearchParams.js create mode 100644 node_modules/axios/lib/platform/browser/index.js create mode 100644 node_modules/axios/lib/platform/common/utils.js create mode 100644 node_modules/axios/lib/platform/index.js create mode 100644 node_modules/axios/lib/platform/node/classes/FormData.js create mode 100644 node_modules/axios/lib/platform/node/classes/URLSearchParams.js create mode 100644 node_modules/axios/lib/platform/node/index.js create mode 100644 node_modules/axios/lib/utils.js create mode 100644 node_modules/axios/package.json create mode 100644 node_modules/balanced-match/.github/FUNDING.yml create mode 100644 node_modules/balanced-match/LICENSE.md create mode 100644 node_modules/balanced-match/README.md create mode 100644 node_modules/balanced-match/index.js create mode 100644 node_modules/balanced-match/package.json create mode 100644 node_modules/body-parser/HISTORY.md create mode 100644 node_modules/body-parser/LICENSE create mode 100644 node_modules/body-parser/README.md create mode 100644 node_modules/body-parser/SECURITY.md create mode 100644 node_modules/body-parser/index.js create mode 100644 node_modules/body-parser/lib/read.js create mode 100644 node_modules/body-parser/lib/types/json.js create mode 100644 node_modules/body-parser/lib/types/raw.js create mode 100644 node_modules/body-parser/lib/types/text.js create mode 100644 node_modules/body-parser/lib/types/urlencoded.js create mode 100644 node_modules/body-parser/package.json create mode 100644 node_modules/brace-expansion/LICENSE create mode 100644 node_modules/brace-expansion/README.md create mode 100644 node_modules/brace-expansion/index.js create mode 100644 node_modules/brace-expansion/package.json create mode 100644 node_modules/bytes/History.md create mode 100644 node_modules/bytes/LICENSE create mode 100644 node_modules/bytes/Readme.md create mode 100644 node_modules/bytes/index.js create mode 100644 node_modules/bytes/package.json create mode 100644 node_modules/call-bind/.eslintignore create mode 100644 node_modules/call-bind/.eslintrc create mode 100644 node_modules/call-bind/.github/FUNDING.yml create mode 100644 node_modules/call-bind/.nycrc create mode 100644 node_modules/call-bind/CHANGELOG.md create mode 100644 node_modules/call-bind/LICENSE create mode 100644 node_modules/call-bind/README.md create mode 100644 node_modules/call-bind/callBound.js create mode 100644 node_modules/call-bind/index.js create mode 100644 node_modules/call-bind/package.json create mode 100644 node_modules/call-bind/test/callBound.js create mode 100644 node_modules/call-bind/test/index.js create mode 100644 node_modules/chalk/index.d.ts create mode 100644 node_modules/chalk/license create mode 100644 node_modules/chalk/package.json create mode 100644 node_modules/chalk/readme.md create mode 100644 node_modules/chalk/source/index.js create mode 100644 node_modules/chalk/source/templates.js create mode 100644 node_modules/chalk/source/util.js create mode 100644 node_modules/color-convert/CHANGELOG.md create mode 100644 node_modules/color-convert/LICENSE create mode 100644 node_modules/color-convert/README.md create mode 100644 node_modules/color-convert/conversions.js create mode 100644 node_modules/color-convert/index.js create mode 100644 node_modules/color-convert/package.json create mode 100644 node_modules/color-convert/route.js create mode 100644 node_modules/color-name/LICENSE create mode 100644 node_modules/color-name/README.md create mode 100644 node_modules/color-name/index.js create mode 100644 node_modules/color-name/package.json create mode 100644 node_modules/combined-stream/License create mode 100644 node_modules/combined-stream/Readme.md create mode 100644 node_modules/combined-stream/lib/combined_stream.js create mode 100644 node_modules/combined-stream/package.json create mode 100644 node_modules/combined-stream/yarn.lock create mode 100644 node_modules/concat-map/.travis.yml create mode 100644 node_modules/concat-map/LICENSE create mode 100644 node_modules/concat-map/README.markdown create mode 100644 node_modules/concat-map/example/map.js create mode 100644 node_modules/concat-map/index.js create mode 100644 node_modules/concat-map/package.json create mode 100644 node_modules/concat-map/test/map.js create mode 100644 node_modules/content-disposition/HISTORY.md create mode 100644 node_modules/content-disposition/LICENSE create mode 100644 node_modules/content-disposition/README.md create mode 100644 node_modules/content-disposition/index.js create mode 100644 node_modules/content-disposition/package.json create mode 100644 node_modules/content-type/HISTORY.md create mode 100644 node_modules/content-type/LICENSE create mode 100644 node_modules/content-type/README.md create mode 100644 node_modules/content-type/index.js create mode 100644 node_modules/content-type/package.json create mode 100644 node_modules/cookie-signature/.npmignore create mode 100644 node_modules/cookie-signature/History.md create mode 100644 node_modules/cookie-signature/Readme.md create mode 100644 node_modules/cookie-signature/index.js create mode 100644 node_modules/cookie-signature/package.json create mode 100644 node_modules/cookie/HISTORY.md create mode 100644 node_modules/cookie/LICENSE create mode 100644 node_modules/cookie/README.md create mode 100644 node_modules/cookie/SECURITY.md create mode 100644 node_modules/cookie/index.js create mode 100644 node_modules/cookie/package.json create mode 100644 node_modules/cors/CONTRIBUTING.md create mode 100644 node_modules/cors/HISTORY.md create mode 100644 node_modules/cors/LICENSE create mode 100644 node_modules/cors/README.md create mode 100644 node_modules/cors/lib/index.js create mode 100644 node_modules/cors/package.json create mode 100644 node_modules/debug/.coveralls.yml create mode 100644 node_modules/debug/.eslintrc create mode 100644 node_modules/debug/.npmignore create mode 100644 node_modules/debug/.travis.yml create mode 100644 node_modules/debug/CHANGELOG.md create mode 100644 node_modules/debug/LICENSE create mode 100644 node_modules/debug/Makefile create mode 100644 node_modules/debug/README.md create mode 100644 node_modules/debug/component.json create mode 100644 node_modules/debug/karma.conf.js create mode 100644 node_modules/debug/node.js create mode 100644 node_modules/debug/package.json create mode 100644 node_modules/debug/src/browser.js create mode 100644 node_modules/debug/src/debug.js create mode 100644 node_modules/debug/src/index.js create mode 100644 node_modules/debug/src/inspector-log.js create mode 100644 node_modules/debug/src/node.js create mode 100644 node_modules/define-data-property/.eslintrc create mode 100644 node_modules/define-data-property/.github/FUNDING.yml create mode 100644 node_modules/define-data-property/.nycrc create mode 100644 node_modules/define-data-property/CHANGELOG.md create mode 100644 node_modules/define-data-property/LICENSE create mode 100644 node_modules/define-data-property/README.md create mode 100644 node_modules/define-data-property/index.d.ts create mode 100644 node_modules/define-data-property/index.js create mode 100644 node_modules/define-data-property/package.json create mode 100644 node_modules/define-data-property/test/index.js create mode 100644 node_modules/define-data-property/tsconfig.json create mode 100644 node_modules/delayed-stream/.npmignore create mode 100644 node_modules/delayed-stream/License create mode 100644 node_modules/delayed-stream/Makefile create mode 100644 node_modules/delayed-stream/Readme.md create mode 100644 node_modules/delayed-stream/lib/delayed_stream.js create mode 100644 node_modules/delayed-stream/package.json create mode 100644 node_modules/depd/History.md create mode 100644 node_modules/depd/LICENSE create mode 100644 node_modules/depd/Readme.md create mode 100644 node_modules/depd/index.js create mode 100644 node_modules/depd/lib/browser/index.js create mode 100644 node_modules/depd/package.json create mode 100644 node_modules/destroy/LICENSE create mode 100644 node_modules/destroy/README.md create mode 100644 node_modules/destroy/index.js create mode 100644 node_modules/destroy/package.json create mode 100644 node_modules/ee-first/LICENSE create mode 100644 node_modules/ee-first/README.md create mode 100644 node_modules/ee-first/index.js create mode 100644 node_modules/ee-first/package.json create mode 100644 node_modules/ejs/LICENSE create mode 100644 node_modules/ejs/README.md create mode 100644 node_modules/ejs/bin/cli.js create mode 100644 node_modules/ejs/ejs.js create mode 100644 node_modules/ejs/ejs.min.js create mode 100644 node_modules/ejs/jakefile.js create mode 100644 node_modules/ejs/lib/ejs.js create mode 100644 node_modules/ejs/lib/utils.js create mode 100644 node_modules/ejs/package.json create mode 100644 node_modules/ejs/usage.txt create mode 100644 node_modules/encodeurl/HISTORY.md create mode 100644 node_modules/encodeurl/LICENSE create mode 100644 node_modules/encodeurl/README.md create mode 100644 node_modules/encodeurl/index.js create mode 100644 node_modules/encodeurl/package.json create mode 100644 node_modules/es-define-property/.eslintrc create mode 100644 node_modules/es-define-property/.github/FUNDING.yml create mode 100644 node_modules/es-define-property/.nycrc create mode 100644 node_modules/es-define-property/CHANGELOG.md create mode 100644 node_modules/es-define-property/LICENSE create mode 100644 node_modules/es-define-property/README.md create mode 100644 node_modules/es-define-property/index.d.ts create mode 100644 node_modules/es-define-property/index.js create mode 100644 node_modules/es-define-property/package.json create mode 100644 node_modules/es-define-property/test/index.js create mode 100644 node_modules/es-define-property/tsconfig.json create mode 100644 node_modules/es-errors/.eslintrc create mode 100644 node_modules/es-errors/.github/FUNDING.yml create mode 100644 node_modules/es-errors/CHANGELOG.md create mode 100644 node_modules/es-errors/LICENSE create mode 100644 node_modules/es-errors/README.md create mode 100644 node_modules/es-errors/eval.d.ts create mode 100644 node_modules/es-errors/eval.js create mode 100644 node_modules/es-errors/index.d.ts create mode 100644 node_modules/es-errors/index.js create mode 100644 node_modules/es-errors/package.json create mode 100644 node_modules/es-errors/range.d.ts create mode 100644 node_modules/es-errors/range.js create mode 100644 node_modules/es-errors/ref.d.ts create mode 100644 node_modules/es-errors/ref.js create mode 100644 node_modules/es-errors/syntax.d.ts create mode 100644 node_modules/es-errors/syntax.js create mode 100644 node_modules/es-errors/test/index.js create mode 100644 node_modules/es-errors/tsconfig.json create mode 100644 node_modules/es-errors/type.d.ts create mode 100644 node_modules/es-errors/type.js create mode 100644 node_modules/es-errors/uri.d.ts create mode 100644 node_modules/es-errors/uri.js create mode 100644 node_modules/escape-html/LICENSE create mode 100644 node_modules/escape-html/Readme.md create mode 100644 node_modules/escape-html/index.js create mode 100644 node_modules/escape-html/package.json create mode 100644 node_modules/etag/HISTORY.md create mode 100644 node_modules/etag/LICENSE create mode 100644 node_modules/etag/README.md create mode 100644 node_modules/etag/index.js create mode 100644 node_modules/etag/package.json create mode 100644 node_modules/express/History.md create mode 100644 node_modules/express/LICENSE create mode 100644 node_modules/express/Readme.md create mode 100644 node_modules/express/index.js create mode 100644 node_modules/express/lib/application.js create mode 100644 node_modules/express/lib/express.js create mode 100644 node_modules/express/lib/middleware/init.js create mode 100644 node_modules/express/lib/middleware/query.js create mode 100644 node_modules/express/lib/request.js create mode 100644 node_modules/express/lib/response.js create mode 100644 node_modules/express/lib/router/index.js create mode 100644 node_modules/express/lib/router/layer.js create mode 100644 node_modules/express/lib/router/route.js create mode 100644 node_modules/express/lib/utils.js create mode 100644 node_modules/express/lib/view.js create mode 100644 node_modules/express/package.json create mode 100644 node_modules/filelist/README.md create mode 100644 node_modules/filelist/index.d.ts create mode 100644 node_modules/filelist/index.js create mode 100644 node_modules/filelist/jakefile.js create mode 100644 node_modules/filelist/node_modules/brace-expansion/.github/FUNDING.yml create mode 100644 node_modules/filelist/node_modules/brace-expansion/LICENSE create mode 100644 node_modules/filelist/node_modules/brace-expansion/README.md create mode 100644 node_modules/filelist/node_modules/brace-expansion/index.js create mode 100644 node_modules/filelist/node_modules/brace-expansion/package.json create mode 100644 node_modules/filelist/node_modules/minimatch/LICENSE create mode 100644 node_modules/filelist/node_modules/minimatch/README.md create mode 100644 node_modules/filelist/node_modules/minimatch/lib/path.js create mode 100644 node_modules/filelist/node_modules/minimatch/minimatch.js create mode 100644 node_modules/filelist/node_modules/minimatch/package.json create mode 100644 node_modules/filelist/package.json create mode 100644 node_modules/finalhandler/HISTORY.md create mode 100644 node_modules/finalhandler/LICENSE create mode 100644 node_modules/finalhandler/README.md create mode 100644 node_modules/finalhandler/SECURITY.md create mode 100644 node_modules/finalhandler/index.js create mode 100644 node_modules/finalhandler/package.json create mode 100644 node_modules/follow-redirects/LICENSE create mode 100644 node_modules/follow-redirects/README.md create mode 100644 node_modules/follow-redirects/debug.js create mode 100644 node_modules/follow-redirects/http.js create mode 100644 node_modules/follow-redirects/https.js create mode 100644 node_modules/follow-redirects/index.js create mode 100644 node_modules/follow-redirects/package.json create mode 100644 node_modules/form-data/License create mode 100644 node_modules/form-data/README.md.bak create mode 100644 node_modules/form-data/Readme.md create mode 100644 node_modules/form-data/index.d.ts create mode 100644 node_modules/form-data/lib/browser.js create mode 100644 node_modules/form-data/lib/form_data.js create mode 100644 node_modules/form-data/lib/populate.js create mode 100644 node_modules/form-data/package.json create mode 100644 node_modules/forwarded/HISTORY.md create mode 100644 node_modules/forwarded/LICENSE create mode 100644 node_modules/forwarded/README.md create mode 100644 node_modules/forwarded/index.js create mode 100644 node_modules/forwarded/package.json create mode 100644 node_modules/fresh/HISTORY.md create mode 100644 node_modules/fresh/LICENSE create mode 100644 node_modules/fresh/README.md create mode 100644 node_modules/fresh/index.js create mode 100644 node_modules/fresh/package.json create mode 100644 node_modules/function-bind/.eslintrc create mode 100644 node_modules/function-bind/.github/FUNDING.yml create mode 100644 node_modules/function-bind/.github/SECURITY.md create mode 100644 node_modules/function-bind/.nycrc create mode 100644 node_modules/function-bind/CHANGELOG.md create mode 100644 node_modules/function-bind/LICENSE create mode 100644 node_modules/function-bind/README.md create mode 100644 node_modules/function-bind/implementation.js create mode 100644 node_modules/function-bind/index.js create mode 100644 node_modules/function-bind/package.json create mode 100644 node_modules/function-bind/test/.eslintrc create mode 100644 node_modules/function-bind/test/index.js create mode 100644 node_modules/get-intrinsic/.eslintrc create mode 100644 node_modules/get-intrinsic/.github/FUNDING.yml create mode 100644 node_modules/get-intrinsic/.nycrc create mode 100644 node_modules/get-intrinsic/CHANGELOG.md create mode 100644 node_modules/get-intrinsic/LICENSE create mode 100644 node_modules/get-intrinsic/README.md create mode 100644 node_modules/get-intrinsic/index.js create mode 100644 node_modules/get-intrinsic/package.json create mode 100644 node_modules/get-intrinsic/test/GetIntrinsic.js create mode 100644 node_modules/gopd/.eslintrc create mode 100644 node_modules/gopd/.github/FUNDING.yml create mode 100644 node_modules/gopd/CHANGELOG.md create mode 100644 node_modules/gopd/LICENSE create mode 100644 node_modules/gopd/README.md create mode 100644 node_modules/gopd/index.js create mode 100644 node_modules/gopd/package.json create mode 100644 node_modules/gopd/test/index.js create mode 100644 node_modules/has-flag/index.d.ts create mode 100644 node_modules/has-flag/index.js create mode 100644 node_modules/has-flag/license create mode 100644 node_modules/has-flag/package.json create mode 100644 node_modules/has-flag/readme.md create mode 100644 node_modules/has-property-descriptors/.eslintrc create mode 100644 node_modules/has-property-descriptors/.github/FUNDING.yml create mode 100644 node_modules/has-property-descriptors/.nycrc create mode 100644 node_modules/has-property-descriptors/CHANGELOG.md create mode 100644 node_modules/has-property-descriptors/LICENSE create mode 100644 node_modules/has-property-descriptors/README.md create mode 100644 node_modules/has-property-descriptors/index.js create mode 100644 node_modules/has-property-descriptors/package.json create mode 100644 node_modules/has-property-descriptors/test/index.js create mode 100644 node_modules/has-proto/.eslintrc create mode 100644 node_modules/has-proto/.github/FUNDING.yml create mode 100644 node_modules/has-proto/CHANGELOG.md create mode 100644 node_modules/has-proto/LICENSE create mode 100644 node_modules/has-proto/README.md create mode 100644 node_modules/has-proto/index.d.ts create mode 100644 node_modules/has-proto/index.js create mode 100644 node_modules/has-proto/package.json create mode 100644 node_modules/has-proto/test/index.js create mode 100644 node_modules/has-proto/tsconfig.json create mode 100644 node_modules/has-symbols/.eslintrc create mode 100644 node_modules/has-symbols/.github/FUNDING.yml create mode 100644 node_modules/has-symbols/.nycrc create mode 100644 node_modules/has-symbols/CHANGELOG.md create mode 100644 node_modules/has-symbols/LICENSE create mode 100644 node_modules/has-symbols/README.md create mode 100644 node_modules/has-symbols/index.js create mode 100644 node_modules/has-symbols/package.json create mode 100644 node_modules/has-symbols/shams.js create mode 100644 node_modules/has-symbols/test/index.js create mode 100644 node_modules/has-symbols/test/shams/core-js.js create mode 100644 node_modules/has-symbols/test/shams/get-own-property-symbols.js create mode 100644 node_modules/has-symbols/test/tests.js create mode 100644 node_modules/hasown/.eslintrc create mode 100644 node_modules/hasown/.github/FUNDING.yml create mode 100644 node_modules/hasown/.nycrc create mode 100644 node_modules/hasown/CHANGELOG.md create mode 100644 node_modules/hasown/LICENSE create mode 100644 node_modules/hasown/README.md create mode 100644 node_modules/hasown/index.d.ts create mode 100644 node_modules/hasown/index.js create mode 100644 node_modules/hasown/package.json create mode 100644 node_modules/hasown/tsconfig.json create mode 100644 node_modules/howler/LICENSE.md create mode 100644 node_modules/howler/README.md create mode 100644 node_modules/howler/dist/howler.core.min.js create mode 100644 node_modules/howler/dist/howler.js create mode 100644 node_modules/howler/dist/howler.min.js create mode 100644 node_modules/howler/dist/howler.spatial.min.js create mode 100644 node_modules/howler/package.json create mode 100644 node_modules/howler/src/howler.core.js create mode 100644 node_modules/howler/src/plugins/howler.spatial.js create mode 100644 node_modules/http-errors/HISTORY.md create mode 100644 node_modules/http-errors/LICENSE create mode 100644 node_modules/http-errors/README.md create mode 100644 node_modules/http-errors/index.js create mode 100644 node_modules/http-errors/package.json create mode 100644 node_modules/iconv-lite/Changelog.md create mode 100644 node_modules/iconv-lite/LICENSE create mode 100644 node_modules/iconv-lite/README.md create mode 100644 node_modules/iconv-lite/encodings/dbcs-codec.js create mode 100644 node_modules/iconv-lite/encodings/dbcs-data.js create mode 100644 node_modules/iconv-lite/encodings/index.js create mode 100644 node_modules/iconv-lite/encodings/internal.js create mode 100644 node_modules/iconv-lite/encodings/sbcs-codec.js create mode 100644 node_modules/iconv-lite/encodings/sbcs-data-generated.js create mode 100644 node_modules/iconv-lite/encodings/sbcs-data.js create mode 100644 node_modules/iconv-lite/encodings/tables/big5-added.json create mode 100644 node_modules/iconv-lite/encodings/tables/cp936.json create mode 100644 node_modules/iconv-lite/encodings/tables/cp949.json create mode 100644 node_modules/iconv-lite/encodings/tables/cp950.json create mode 100644 node_modules/iconv-lite/encodings/tables/eucjp.json create mode 100644 node_modules/iconv-lite/encodings/tables/gb18030-ranges.json create mode 100644 node_modules/iconv-lite/encodings/tables/gbk-added.json create mode 100644 node_modules/iconv-lite/encodings/tables/shiftjis.json create mode 100644 node_modules/iconv-lite/encodings/utf16.js create mode 100644 node_modules/iconv-lite/encodings/utf7.js create mode 100644 node_modules/iconv-lite/lib/bom-handling.js create mode 100644 node_modules/iconv-lite/lib/extend-node.js create mode 100644 node_modules/iconv-lite/lib/index.d.ts create mode 100644 node_modules/iconv-lite/lib/index.js create mode 100644 node_modules/iconv-lite/lib/streams.js create mode 100644 node_modules/iconv-lite/package.json create mode 100644 node_modules/inherits/LICENSE create mode 100644 node_modules/inherits/README.md create mode 100644 node_modules/inherits/inherits.js create mode 100644 node_modules/inherits/inherits_browser.js create mode 100644 node_modules/inherits/package.json create mode 100644 node_modules/ipaddr.js/LICENSE create mode 100644 node_modules/ipaddr.js/README.md create mode 100644 node_modules/ipaddr.js/ipaddr.min.js create mode 100644 node_modules/ipaddr.js/lib/ipaddr.js create mode 100644 node_modules/ipaddr.js/lib/ipaddr.js.d.ts create mode 100644 node_modules/ipaddr.js/package.json create mode 100644 node_modules/jake/Makefile create mode 100644 node_modules/jake/README.md create mode 100644 node_modules/jake/bin/bash_completion.sh create mode 100644 node_modules/jake/bin/cli.js create mode 100644 node_modules/jake/jakefile.js create mode 100644 node_modules/jake/lib/api.js create mode 100644 node_modules/jake/lib/jake.js create mode 100644 node_modules/jake/lib/loader.js create mode 100644 node_modules/jake/lib/namespace.js create mode 100644 node_modules/jake/lib/package_task.js create mode 100644 node_modules/jake/lib/parseargs.js create mode 100644 node_modules/jake/lib/program.js create mode 100644 node_modules/jake/lib/publish_task.js create mode 100644 node_modules/jake/lib/rule.js create mode 100644 node_modules/jake/lib/task/directory_task.js create mode 100644 node_modules/jake/lib/task/file_task.js create mode 100644 node_modules/jake/lib/task/index.js create mode 100644 node_modules/jake/lib/task/task.js create mode 100644 node_modules/jake/lib/test_task.js create mode 100644 node_modules/jake/lib/utils/file.js create mode 100644 node_modules/jake/lib/utils/index.js create mode 100644 node_modules/jake/lib/utils/logger.js create mode 100644 node_modules/jake/package.json create mode 100644 node_modules/jake/test/integration/concurrent.js create mode 100644 node_modules/jake/test/integration/file.js create mode 100644 node_modules/jake/test/integration/file_task.js create mode 100644 node_modules/jake/test/integration/helpers.js create mode 100644 node_modules/jake/test/integration/jakefile.js create mode 100644 node_modules/jake/test/integration/jakelib/concurrent.jake.js create mode 100644 node_modules/jake/test/integration/jakelib/publish.jake.js create mode 100644 node_modules/jake/test/integration/jakelib/required_module.jake.js create mode 100644 node_modules/jake/test/integration/jakelib/rule.jake.js create mode 100644 node_modules/jake/test/integration/list_tasks.js create mode 100644 node_modules/jake/test/integration/publish_task.js create mode 100644 node_modules/jake/test/integration/rule.js create mode 100644 node_modules/jake/test/integration/selfdep.js create mode 100644 node_modules/jake/test/integration/task_base.js create mode 100644 node_modules/jake/test/unit/jakefile.js create mode 100644 node_modules/jake/test/unit/namespace.js create mode 100644 node_modules/jake/test/unit/parseargs.js create mode 100644 node_modules/jake/usage.txt create mode 100644 node_modules/media-typer/HISTORY.md create mode 100644 node_modules/media-typer/LICENSE create mode 100644 node_modules/media-typer/README.md create mode 100644 node_modules/media-typer/index.js create mode 100644 node_modules/media-typer/package.json create mode 100644 node_modules/merge-descriptors/HISTORY.md create mode 100644 node_modules/merge-descriptors/LICENSE create mode 100644 node_modules/merge-descriptors/README.md create mode 100644 node_modules/merge-descriptors/index.js create mode 100644 node_modules/merge-descriptors/package.json create mode 100644 node_modules/methods/HISTORY.md create mode 100644 node_modules/methods/LICENSE create mode 100644 node_modules/methods/README.md create mode 100644 node_modules/methods/index.js create mode 100644 node_modules/methods/package.json create mode 100644 node_modules/mime-db/HISTORY.md create mode 100644 node_modules/mime-db/LICENSE create mode 100644 node_modules/mime-db/README.md create mode 100644 node_modules/mime-db/db.json create mode 100644 node_modules/mime-db/index.js create mode 100644 node_modules/mime-db/package.json create mode 100644 node_modules/mime-types/HISTORY.md create mode 100644 node_modules/mime-types/LICENSE create mode 100644 node_modules/mime-types/README.md create mode 100644 node_modules/mime-types/index.js create mode 100644 node_modules/mime-types/package.json create mode 100644 node_modules/mime/.npmignore create mode 100644 node_modules/mime/CHANGELOG.md create mode 100644 node_modules/mime/LICENSE create mode 100644 node_modules/mime/README.md create mode 100644 node_modules/mime/cli.js create mode 100644 node_modules/mime/mime.js create mode 100644 node_modules/mime/package.json create mode 100644 node_modules/mime/src/build.js create mode 100644 node_modules/mime/src/test.js create mode 100644 node_modules/mime/types.json create mode 100644 node_modules/minimatch/LICENSE create mode 100644 node_modules/minimatch/README.md create mode 100644 node_modules/minimatch/minimatch.js create mode 100644 node_modules/minimatch/package.json create mode 100644 node_modules/ms/index.js create mode 100644 node_modules/ms/license.md create mode 100644 node_modules/ms/package.json create mode 100644 node_modules/ms/readme.md create mode 100644 node_modules/negotiator/HISTORY.md create mode 100644 node_modules/negotiator/LICENSE create mode 100644 node_modules/negotiator/README.md create mode 100644 node_modules/negotiator/index.js create mode 100644 node_modules/negotiator/lib/charset.js create mode 100644 node_modules/negotiator/lib/encoding.js create mode 100644 node_modules/negotiator/lib/language.js create mode 100644 node_modules/negotiator/lib/mediaType.js create mode 100644 node_modules/negotiator/package.json create mode 100644 node_modules/object-assign/index.js create mode 100644 node_modules/object-assign/license create mode 100644 node_modules/object-assign/package.json create mode 100644 node_modules/object-assign/readme.md create mode 100644 node_modules/object-inspect/.eslintrc create mode 100644 node_modules/object-inspect/.github/FUNDING.yml create mode 100644 node_modules/object-inspect/.nycrc create mode 100644 node_modules/object-inspect/CHANGELOG.md create mode 100644 node_modules/object-inspect/LICENSE create mode 100644 node_modules/object-inspect/example/all.js create mode 100644 node_modules/object-inspect/example/circular.js create mode 100644 node_modules/object-inspect/example/fn.js create mode 100644 node_modules/object-inspect/example/inspect.js create mode 100644 node_modules/object-inspect/index.js create mode 100644 node_modules/object-inspect/package-support.json create mode 100644 node_modules/object-inspect/package.json create mode 100644 node_modules/object-inspect/readme.markdown create mode 100644 node_modules/object-inspect/test-core-js.js create mode 100644 node_modules/object-inspect/test/bigint.js create mode 100644 node_modules/object-inspect/test/browser/dom.js create mode 100644 node_modules/object-inspect/test/circular.js create mode 100644 node_modules/object-inspect/test/deep.js create mode 100644 node_modules/object-inspect/test/element.js create mode 100644 node_modules/object-inspect/test/err.js create mode 100644 node_modules/object-inspect/test/fakes.js create mode 100644 node_modules/object-inspect/test/fn.js create mode 100644 node_modules/object-inspect/test/global.js create mode 100644 node_modules/object-inspect/test/has.js create mode 100644 node_modules/object-inspect/test/holes.js create mode 100644 node_modules/object-inspect/test/indent-option.js create mode 100644 node_modules/object-inspect/test/inspect.js create mode 100644 node_modules/object-inspect/test/lowbyte.js create mode 100644 node_modules/object-inspect/test/number.js create mode 100644 node_modules/object-inspect/test/quoteStyle.js create mode 100644 node_modules/object-inspect/test/toStringTag.js create mode 100644 node_modules/object-inspect/test/undef.js create mode 100644 node_modules/object-inspect/test/values.js create mode 100644 node_modules/object-inspect/util.inspect.js create mode 100644 node_modules/on-finished/HISTORY.md create mode 100644 node_modules/on-finished/LICENSE create mode 100644 node_modules/on-finished/README.md create mode 100644 node_modules/on-finished/index.js create mode 100644 node_modules/on-finished/package.json create mode 100644 node_modules/parseurl/HISTORY.md create mode 100644 node_modules/parseurl/LICENSE create mode 100644 node_modules/parseurl/README.md create mode 100644 node_modules/parseurl/index.js create mode 100644 node_modules/parseurl/package.json create mode 100644 node_modules/path-to-regexp/History.md create mode 100644 node_modules/path-to-regexp/LICENSE create mode 100644 node_modules/path-to-regexp/Readme.md create mode 100644 node_modules/path-to-regexp/index.js create mode 100644 node_modules/path-to-regexp/package.json create mode 100644 node_modules/path/.npmignore create mode 100644 node_modules/path/LICENSE create mode 100644 node_modules/path/README.md create mode 100644 node_modules/path/package.json create mode 100644 node_modules/path/path.js create mode 100644 node_modules/process/.eslintrc create mode 100644 node_modules/process/LICENSE create mode 100644 node_modules/process/README.md create mode 100644 node_modules/process/browser.js create mode 100644 node_modules/process/index.js create mode 100644 node_modules/process/package.json create mode 100644 node_modules/process/test.js create mode 100644 node_modules/proxy-addr/HISTORY.md create mode 100644 node_modules/proxy-addr/LICENSE create mode 100644 node_modules/proxy-addr/README.md create mode 100644 node_modules/proxy-addr/index.js create mode 100644 node_modules/proxy-addr/package.json create mode 100644 node_modules/proxy-from-env/.eslintrc create mode 100644 node_modules/proxy-from-env/.travis.yml create mode 100644 node_modules/proxy-from-env/LICENSE create mode 100644 node_modules/proxy-from-env/README.md create mode 100644 node_modules/proxy-from-env/index.js create mode 100644 node_modules/proxy-from-env/package.json create mode 100644 node_modules/proxy-from-env/test.js create mode 100644 node_modules/qs/.editorconfig create mode 100644 node_modules/qs/.eslintrc create mode 100644 node_modules/qs/.github/FUNDING.yml create mode 100644 node_modules/qs/.nycrc create mode 100644 node_modules/qs/CHANGELOG.md create mode 100644 node_modules/qs/LICENSE.md create mode 100644 node_modules/qs/README.md create mode 100644 node_modules/qs/dist/qs.js create mode 100644 node_modules/qs/lib/formats.js create mode 100644 node_modules/qs/lib/index.js create mode 100644 node_modules/qs/lib/parse.js create mode 100644 node_modules/qs/lib/stringify.js create mode 100644 node_modules/qs/lib/utils.js create mode 100644 node_modules/qs/package.json create mode 100644 node_modules/qs/test/parse.js create mode 100644 node_modules/qs/test/stringify.js create mode 100644 node_modules/qs/test/utils.js create mode 100644 node_modules/range-parser/HISTORY.md create mode 100644 node_modules/range-parser/LICENSE create mode 100644 node_modules/range-parser/README.md create mode 100644 node_modules/range-parser/index.js create mode 100644 node_modules/range-parser/package.json create mode 100644 node_modules/raw-body/HISTORY.md create mode 100644 node_modules/raw-body/LICENSE create mode 100644 node_modules/raw-body/README.md create mode 100644 node_modules/raw-body/SECURITY.md create mode 100644 node_modules/raw-body/index.d.ts create mode 100644 node_modules/raw-body/index.js create mode 100644 node_modules/raw-body/package.json create mode 100644 node_modules/safe-buffer/LICENSE create mode 100644 node_modules/safe-buffer/README.md create mode 100644 node_modules/safe-buffer/index.d.ts create mode 100644 node_modules/safe-buffer/index.js create mode 100644 node_modules/safe-buffer/package.json create mode 100644 node_modules/safer-buffer/LICENSE create mode 100644 node_modules/safer-buffer/Porting-Buffer.md create mode 100644 node_modules/safer-buffer/Readme.md create mode 100644 node_modules/safer-buffer/dangerous.js create mode 100644 node_modules/safer-buffer/package.json create mode 100644 node_modules/safer-buffer/safer.js create mode 100644 node_modules/safer-buffer/tests.js create mode 100644 node_modules/send/HISTORY.md create mode 100644 node_modules/send/LICENSE create mode 100644 node_modules/send/README.md create mode 100644 node_modules/send/SECURITY.md create mode 100644 node_modules/send/index.js create mode 100644 node_modules/send/node_modules/ms/index.js create mode 100644 node_modules/send/node_modules/ms/license.md create mode 100644 node_modules/send/node_modules/ms/package.json create mode 100644 node_modules/send/node_modules/ms/readme.md create mode 100644 node_modules/send/package.json create mode 100644 node_modules/serve-static/HISTORY.md create mode 100644 node_modules/serve-static/LICENSE create mode 100644 node_modules/serve-static/README.md create mode 100644 node_modules/serve-static/index.js create mode 100644 node_modules/serve-static/package.json create mode 100644 node_modules/set-function-length/.eslintrc create mode 100644 node_modules/set-function-length/.github/FUNDING.yml create mode 100644 node_modules/set-function-length/.nycrc create mode 100644 node_modules/set-function-length/CHANGELOG.md create mode 100644 node_modules/set-function-length/LICENSE create mode 100644 node_modules/set-function-length/README.md create mode 100644 node_modules/set-function-length/env.d.ts create mode 100644 node_modules/set-function-length/env.js create mode 100644 node_modules/set-function-length/index.d.ts create mode 100644 node_modules/set-function-length/index.js create mode 100644 node_modules/set-function-length/package.json create mode 100644 node_modules/set-function-length/tsconfig.json create mode 100644 node_modules/setprototypeof/LICENSE create mode 100644 node_modules/setprototypeof/README.md create mode 100644 node_modules/setprototypeof/index.d.ts create mode 100644 node_modules/setprototypeof/index.js create mode 100644 node_modules/setprototypeof/package.json create mode 100644 node_modules/setprototypeof/test/index.js create mode 100644 node_modules/side-channel/.editorconfig create mode 100644 node_modules/side-channel/.eslintrc create mode 100644 node_modules/side-channel/.github/FUNDING.yml create mode 100644 node_modules/side-channel/.nycrc create mode 100644 node_modules/side-channel/CHANGELOG.md create mode 100644 node_modules/side-channel/LICENSE create mode 100644 node_modules/side-channel/README.md create mode 100644 node_modules/side-channel/index.d.ts create mode 100644 node_modules/side-channel/index.js create mode 100644 node_modules/side-channel/package.json create mode 100644 node_modules/side-channel/test/index.js create mode 100644 node_modules/side-channel/tsconfig.json create mode 100644 node_modules/statuses/HISTORY.md create mode 100644 node_modules/statuses/LICENSE create mode 100644 node_modules/statuses/README.md create mode 100644 node_modules/statuses/codes.json create mode 100644 node_modules/statuses/index.js create mode 100644 node_modules/statuses/package.json create mode 100644 node_modules/supports-color/browser.js create mode 100644 node_modules/supports-color/index.js create mode 100644 node_modules/supports-color/license create mode 100644 node_modules/supports-color/package.json create mode 100644 node_modules/supports-color/readme.md create mode 100644 node_modules/toidentifier/HISTORY.md create mode 100644 node_modules/toidentifier/LICENSE create mode 100644 node_modules/toidentifier/README.md create mode 100644 node_modules/toidentifier/index.js create mode 100644 node_modules/toidentifier/package.json create mode 100644 node_modules/type-is/HISTORY.md create mode 100644 node_modules/type-is/LICENSE create mode 100644 node_modules/type-is/README.md create mode 100644 node_modules/type-is/index.js create mode 100644 node_modules/type-is/package.json create mode 100644 node_modules/unpipe/HISTORY.md create mode 100644 node_modules/unpipe/LICENSE create mode 100644 node_modules/unpipe/README.md create mode 100644 node_modules/unpipe/index.js create mode 100644 node_modules/unpipe/package.json create mode 100644 node_modules/util/LICENSE create mode 100644 node_modules/util/README.md create mode 100644 node_modules/util/node_modules/inherits/LICENSE create mode 100644 node_modules/util/node_modules/inherits/README.md create mode 100644 node_modules/util/node_modules/inherits/inherits.js create mode 100644 node_modules/util/node_modules/inherits/inherits_browser.js create mode 100644 node_modules/util/node_modules/inherits/package.json create mode 100644 node_modules/util/package.json create mode 100644 node_modules/util/support/isBuffer.js create mode 100644 node_modules/util/support/isBufferBrowser.js create mode 100644 node_modules/util/util.js create mode 100644 node_modules/utils-merge/.npmignore create mode 100644 node_modules/utils-merge/LICENSE create mode 100644 node_modules/utils-merge/README.md create mode 100644 node_modules/utils-merge/index.js create mode 100644 node_modules/utils-merge/package.json create mode 100644 node_modules/vary/HISTORY.md create mode 100644 node_modules/vary/LICENSE create mode 100644 node_modules/vary/README.md create mode 100644 node_modules/vary/index.js create mode 100644 node_modules/vary/package.json diff --git a/node_modules/.bin/ejs b/node_modules/.bin/ejs new file mode 100644 index 0000000..002d2ac --- /dev/null +++ b/node_modules/.bin/ejs @@ -0,0 +1,12 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../ejs/bin/cli.js" "$@" +else + exec node "$basedir/../ejs/bin/cli.js" "$@" +fi diff --git a/node_modules/.bin/ejs.cmd b/node_modules/.bin/ejs.cmd new file mode 100644 index 0000000..7cc2b56 --- /dev/null +++ b/node_modules/.bin/ejs.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\ejs\bin\cli.js" %* diff --git a/node_modules/.bin/ejs.ps1 b/node_modules/.bin/ejs.ps1 new file mode 100644 index 0000000..f31305e --- /dev/null +++ b/node_modules/.bin/ejs.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../ejs/bin/cli.js" $args + } else { + & "$basedir/node$exe" "$basedir/../ejs/bin/cli.js" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../ejs/bin/cli.js" $args + } else { + & "node$exe" "$basedir/../ejs/bin/cli.js" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/node_modules/.bin/jake b/node_modules/.bin/jake new file mode 100644 index 0000000..8580efe --- /dev/null +++ b/node_modules/.bin/jake @@ -0,0 +1,12 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../jake/bin/cli.js" "$@" +else + exec node "$basedir/../jake/bin/cli.js" "$@" +fi diff --git a/node_modules/.bin/jake.cmd b/node_modules/.bin/jake.cmd new file mode 100644 index 0000000..1ccccef --- /dev/null +++ b/node_modules/.bin/jake.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\jake\bin\cli.js" %* diff --git a/node_modules/.bin/jake.ps1 b/node_modules/.bin/jake.ps1 new file mode 100644 index 0000000..d86e1bd --- /dev/null +++ b/node_modules/.bin/jake.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../jake/bin/cli.js" $args + } else { + & "$basedir/node$exe" "$basedir/../jake/bin/cli.js" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../jake/bin/cli.js" $args + } else { + & "node$exe" "$basedir/../jake/bin/cli.js" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/node_modules/.bin/mime b/node_modules/.bin/mime new file mode 100644 index 0000000..0a62a1b --- /dev/null +++ b/node_modules/.bin/mime @@ -0,0 +1,12 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../mime/cli.js" "$@" +else + exec node "$basedir/../mime/cli.js" "$@" +fi diff --git a/node_modules/.bin/mime.cmd b/node_modules/.bin/mime.cmd new file mode 100644 index 0000000..54491f1 --- /dev/null +++ b/node_modules/.bin/mime.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\mime\cli.js" %* diff --git a/node_modules/.bin/mime.ps1 b/node_modules/.bin/mime.ps1 new file mode 100644 index 0000000..2222f40 --- /dev/null +++ b/node_modules/.bin/mime.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../mime/cli.js" $args + } else { + & "$basedir/node$exe" "$basedir/../mime/cli.js" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../mime/cli.js" $args + } else { + & "node$exe" "$basedir/../mime/cli.js" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/node_modules/accepts/HISTORY.md b/node_modules/accepts/HISTORY.md new file mode 100644 index 0000000..cb5990c --- /dev/null +++ b/node_modules/accepts/HISTORY.md @@ -0,0 +1,243 @@ +1.3.8 / 2022-02-02 +================== + + * deps: mime-types@~2.1.34 + - deps: mime-db@~1.51.0 + * deps: negotiator@0.6.3 + +1.3.7 / 2019-04-29 +================== + + * deps: negotiator@0.6.2 + - Fix sorting charset, encoding, and language with extra parameters + +1.3.6 / 2019-04-28 +================== + + * deps: mime-types@~2.1.24 + - deps: mime-db@~1.40.0 + +1.3.5 / 2018-02-28 +================== + + * deps: mime-types@~2.1.18 + - deps: mime-db@~1.33.0 + +1.3.4 / 2017-08-22 +================== + + * deps: mime-types@~2.1.16 + - deps: mime-db@~1.29.0 + +1.3.3 / 2016-05-02 +================== + + * deps: mime-types@~2.1.11 + - deps: mime-db@~1.23.0 + * deps: negotiator@0.6.1 + - perf: improve `Accept` parsing speed + - perf: improve `Accept-Charset` parsing speed + - perf: improve `Accept-Encoding` parsing speed + - perf: improve `Accept-Language` parsing speed + +1.3.2 / 2016-03-08 +================== + + * deps: mime-types@~2.1.10 + - Fix extension of `application/dash+xml` + - Update primary extension for `audio/mp4` + - deps: mime-db@~1.22.0 + +1.3.1 / 2016-01-19 +================== + + * deps: mime-types@~2.1.9 + - deps: mime-db@~1.21.0 + +1.3.0 / 2015-09-29 +================== + + * deps: mime-types@~2.1.7 + - deps: mime-db@~1.19.0 + * deps: negotiator@0.6.0 + - Fix including type extensions in parameters in `Accept` parsing + - Fix parsing `Accept` parameters with quoted equals + - Fix parsing `Accept` parameters with quoted semicolons + - Lazy-load modules from main entry point + - perf: delay type concatenation until needed + - perf: enable strict mode + - perf: hoist regular expressions + - perf: remove closures getting spec properties + - perf: remove a closure from media type parsing + - perf: remove property delete from media type parsing + +1.2.13 / 2015-09-06 +=================== + + * deps: mime-types@~2.1.6 + - deps: mime-db@~1.18.0 + +1.2.12 / 2015-07-30 +=================== + + * deps: mime-types@~2.1.4 + - deps: mime-db@~1.16.0 + +1.2.11 / 2015-07-16 +=================== + + * deps: mime-types@~2.1.3 + - deps: mime-db@~1.15.0 + +1.2.10 / 2015-07-01 +=================== + + * deps: mime-types@~2.1.2 + - deps: mime-db@~1.14.0 + +1.2.9 / 2015-06-08 +================== + + * deps: mime-types@~2.1.1 + - perf: fix deopt during mapping + +1.2.8 / 2015-06-07 +================== + + * deps: mime-types@~2.1.0 + - deps: mime-db@~1.13.0 + * perf: avoid argument reassignment & argument slice + * perf: avoid negotiator recursive construction + * perf: enable strict mode + * perf: remove unnecessary bitwise operator + +1.2.7 / 2015-05-10 +================== + + * deps: negotiator@0.5.3 + - Fix media type parameter matching to be case-insensitive + +1.2.6 / 2015-05-07 +================== + + * deps: mime-types@~2.0.11 + - deps: mime-db@~1.9.1 + * deps: negotiator@0.5.2 + - Fix comparing media types with quoted values + - Fix splitting media types with quoted commas + +1.2.5 / 2015-03-13 +================== + + * deps: mime-types@~2.0.10 + - deps: mime-db@~1.8.0 + +1.2.4 / 2015-02-14 +================== + + * Support Node.js 0.6 + * deps: mime-types@~2.0.9 + - deps: mime-db@~1.7.0 + * deps: negotiator@0.5.1 + - Fix preference sorting to be stable for long acceptable lists + +1.2.3 / 2015-01-31 +================== + + * deps: mime-types@~2.0.8 + - deps: mime-db@~1.6.0 + +1.2.2 / 2014-12-30 +================== + + * deps: mime-types@~2.0.7 + - deps: mime-db@~1.5.0 + +1.2.1 / 2014-12-30 +================== + + * deps: mime-types@~2.0.5 + - deps: mime-db@~1.3.1 + +1.2.0 / 2014-12-19 +================== + + * deps: negotiator@0.5.0 + - Fix list return order when large accepted list + - Fix missing identity encoding when q=0 exists + - Remove dynamic building of Negotiator class + +1.1.4 / 2014-12-10 +================== + + * deps: mime-types@~2.0.4 + - deps: mime-db@~1.3.0 + +1.1.3 / 2014-11-09 +================== + + * deps: mime-types@~2.0.3 + - deps: mime-db@~1.2.0 + +1.1.2 / 2014-10-14 +================== + + * deps: negotiator@0.4.9 + - Fix error when media type has invalid parameter + +1.1.1 / 2014-09-28 +================== + + * deps: mime-types@~2.0.2 + - deps: mime-db@~1.1.0 + * deps: negotiator@0.4.8 + - Fix all negotiations to be case-insensitive + - Stable sort preferences of same quality according to client order + +1.1.0 / 2014-09-02 +================== + + * update `mime-types` + +1.0.7 / 2014-07-04 +================== + + * Fix wrong type returned from `type` when match after unknown extension + +1.0.6 / 2014-06-24 +================== + + * deps: negotiator@0.4.7 + +1.0.5 / 2014-06-20 +================== + + * fix crash when unknown extension given + +1.0.4 / 2014-06-19 +================== + + * use `mime-types` + +1.0.3 / 2014-06-11 +================== + + * deps: negotiator@0.4.6 + - Order by specificity when quality is the same + +1.0.2 / 2014-05-29 +================== + + * Fix interpretation when header not in request + * deps: pin negotiator@0.4.5 + +1.0.1 / 2014-01-18 +================== + + * Identity encoding isn't always acceptable + * deps: negotiator@~0.4.0 + +1.0.0 / 2013-12-27 +================== + + * Genesis diff --git a/node_modules/accepts/LICENSE b/node_modules/accepts/LICENSE new file mode 100644 index 0000000..0616607 --- /dev/null +++ b/node_modules/accepts/LICENSE @@ -0,0 +1,23 @@ +(The MIT License) + +Copyright (c) 2014 Jonathan Ong +Copyright (c) 2015 Douglas Christopher Wilson + +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/accepts/README.md b/node_modules/accepts/README.md new file mode 100644 index 0000000..82680c5 --- /dev/null +++ b/node_modules/accepts/README.md @@ -0,0 +1,140 @@ +# accepts + +[![NPM Version][npm-version-image]][npm-url] +[![NPM Downloads][npm-downloads-image]][npm-url] +[![Node.js Version][node-version-image]][node-version-url] +[![Build Status][github-actions-ci-image]][github-actions-ci-url] +[![Test Coverage][coveralls-image]][coveralls-url] + +Higher level content negotiation based on [negotiator](https://www.npmjs.com/package/negotiator). +Extracted from [koa](https://www.npmjs.com/package/koa) for general use. + +In addition to negotiator, it allows: + +- Allows types as an array or arguments list, ie `(['text/html', 'application/json'])` + as well as `('text/html', 'application/json')`. +- Allows type shorthands such as `json`. +- Returns `false` when no types match +- Treats non-existent headers as `*` + +## Installation + +This is a [Node.js](https://nodejs.org/en/) module available through the +[npm registry](https://www.npmjs.com/). Installation is done using the +[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): + +```sh +$ npm install accepts +``` + +## API + +```js +var accepts = require('accepts') +``` + +### accepts(req) + +Create a new `Accepts` object for the given `req`. + +#### .charset(charsets) + +Return the first accepted charset. If nothing in `charsets` is accepted, +then `false` is returned. + +#### .charsets() + +Return the charsets that the request accepts, in the order of the client's +preference (most preferred first). + +#### .encoding(encodings) + +Return the first accepted encoding. If nothing in `encodings` is accepted, +then `false` is returned. + +#### .encodings() + +Return the encodings that the request accepts, in the order of the client's +preference (most preferred first). + +#### .language(languages) + +Return the first accepted language. If nothing in `languages` is accepted, +then `false` is returned. + +#### .languages() + +Return the languages that the request accepts, in the order of the client's +preference (most preferred first). + +#### .type(types) + +Return the first accepted type (and it is returned as the same text as what +appears in the `types` array). If nothing in `types` is accepted, then `false` +is returned. + +The `types` array can contain full MIME types or file extensions. Any value +that is not a full MIME types is passed to `require('mime-types').lookup`. + +#### .types() + +Return the types that the request accepts, in the order of the client's +preference (most preferred first). + +## Examples + +### Simple type negotiation + +This simple example shows how to use `accepts` to return a different typed +respond body based on what the client wants to accept. The server lists it's +preferences in order and will get back the best match between the client and +server. + +```js +var accepts = require('accepts') +var http = require('http') + +function app (req, res) { + var accept = accepts(req) + + // the order of this list is significant; should be server preferred order + switch (accept.type(['json', 'html'])) { + case 'json': + res.setHeader('Content-Type', 'application/json') + res.write('{"hello":"world!"}') + break + case 'html': + res.setHeader('Content-Type', 'text/html') + res.write('hello, world!') + break + default: + // the fallback is text/plain, so no need to specify it above + res.setHeader('Content-Type', 'text/plain') + res.write('hello, world!') + break + } + + res.end() +} + +http.createServer(app).listen(3000) +``` + +You can test this out with the cURL program: +```sh +curl -I -H'Accept: text/html' http://localhost:3000/ +``` + +## License + +[MIT](LICENSE) + +[coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/accepts/master +[coveralls-url]: https://coveralls.io/r/jshttp/accepts?branch=master +[github-actions-ci-image]: https://badgen.net/github/checks/jshttp/accepts/master?label=ci +[github-actions-ci-url]: https://github.com/jshttp/accepts/actions/workflows/ci.yml +[node-version-image]: https://badgen.net/npm/node/accepts +[node-version-url]: https://nodejs.org/en/download +[npm-downloads-image]: https://badgen.net/npm/dm/accepts +[npm-url]: https://npmjs.org/package/accepts +[npm-version-image]: https://badgen.net/npm/v/accepts diff --git a/node_modules/accepts/index.js b/node_modules/accepts/index.js new file mode 100644 index 0000000..e9b2f63 --- /dev/null +++ b/node_modules/accepts/index.js @@ -0,0 +1,238 @@ +/*! + * accepts + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2015 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module dependencies. + * @private + */ + +var Negotiator = require('negotiator') +var mime = require('mime-types') + +/** + * Module exports. + * @public + */ + +module.exports = Accepts + +/** + * Create a new Accepts object for the given req. + * + * @param {object} req + * @public + */ + +function Accepts (req) { + if (!(this instanceof Accepts)) { + return new Accepts(req) + } + + this.headers = req.headers + this.negotiator = new Negotiator(req) +} + +/** + * Check if the given `type(s)` is acceptable, returning + * the best match when true, otherwise `undefined`, in which + * case you should respond with 406 "Not Acceptable". + * + * The `type` value may be a single mime type string + * such as "application/json", the extension name + * such as "json" or an array `["json", "html", "text/plain"]`. When a list + * or array is given the _best_ match, if any is returned. + * + * Examples: + * + * // Accept: text/html + * this.types('html'); + * // => "html" + * + * // Accept: text/*, application/json + * this.types('html'); + * // => "html" + * this.types('text/html'); + * // => "text/html" + * this.types('json', 'text'); + * // => "json" + * this.types('application/json'); + * // => "application/json" + * + * // Accept: text/*, application/json + * this.types('image/png'); + * this.types('png'); + * // => undefined + * + * // Accept: text/*;q=.5, application/json + * this.types(['html', 'json']); + * this.types('html', 'json'); + * // => "json" + * + * @param {String|Array} types... + * @return {String|Array|Boolean} + * @public + */ + +Accepts.prototype.type = +Accepts.prototype.types = function (types_) { + var types = types_ + + // support flattened arguments + if (types && !Array.isArray(types)) { + types = new Array(arguments.length) + for (var i = 0; i < types.length; i++) { + types[i] = arguments[i] + } + } + + // no types, return all requested types + if (!types || types.length === 0) { + return this.negotiator.mediaTypes() + } + + // no accept header, return first given type + if (!this.headers.accept) { + return types[0] + } + + var mimes = types.map(extToMime) + var accepts = this.negotiator.mediaTypes(mimes.filter(validMime)) + var first = accepts[0] + + return first + ? types[mimes.indexOf(first)] + : false +} + +/** + * Return accepted encodings or best fit based on `encodings`. + * + * Given `Accept-Encoding: gzip, deflate` + * an array sorted by quality is returned: + * + * ['gzip', 'deflate'] + * + * @param {String|Array} encodings... + * @return {String|Array} + * @public + */ + +Accepts.prototype.encoding = +Accepts.prototype.encodings = function (encodings_) { + var encodings = encodings_ + + // support flattened arguments + if (encodings && !Array.isArray(encodings)) { + encodings = new Array(arguments.length) + for (var i = 0; i < encodings.length; i++) { + encodings[i] = arguments[i] + } + } + + // no encodings, return all requested encodings + if (!encodings || encodings.length === 0) { + return this.negotiator.encodings() + } + + return this.negotiator.encodings(encodings)[0] || false +} + +/** + * Return accepted charsets or best fit based on `charsets`. + * + * Given `Accept-Charset: utf-8, iso-8859-1;q=0.2, utf-7;q=0.5` + * an array sorted by quality is returned: + * + * ['utf-8', 'utf-7', 'iso-8859-1'] + * + * @param {String|Array} charsets... + * @return {String|Array} + * @public + */ + +Accepts.prototype.charset = +Accepts.prototype.charsets = function (charsets_) { + var charsets = charsets_ + + // support flattened arguments + if (charsets && !Array.isArray(charsets)) { + charsets = new Array(arguments.length) + for (var i = 0; i < charsets.length; i++) { + charsets[i] = arguments[i] + } + } + + // no charsets, return all requested charsets + if (!charsets || charsets.length === 0) { + return this.negotiator.charsets() + } + + return this.negotiator.charsets(charsets)[0] || false +} + +/** + * Return accepted languages or best fit based on `langs`. + * + * Given `Accept-Language: en;q=0.8, es, pt` + * an array sorted by quality is returned: + * + * ['es', 'pt', 'en'] + * + * @param {String|Array} langs... + * @return {Array|String} + * @public + */ + +Accepts.prototype.lang = +Accepts.prototype.langs = +Accepts.prototype.language = +Accepts.prototype.languages = function (languages_) { + var languages = languages_ + + // support flattened arguments + if (languages && !Array.isArray(languages)) { + languages = new Array(arguments.length) + for (var i = 0; i < languages.length; i++) { + languages[i] = arguments[i] + } + } + + // no languages, return all requested languages + if (!languages || languages.length === 0) { + return this.negotiator.languages() + } + + return this.negotiator.languages(languages)[0] || false +} + +/** + * Convert extnames to mime. + * + * @param {String} type + * @return {String} + * @private + */ + +function extToMime (type) { + return type.indexOf('/') === -1 + ? mime.lookup(type) + : type +} + +/** + * Check if mime is valid. + * + * @param {String} type + * @return {String} + * @private + */ + +function validMime (type) { + return typeof type === 'string' +} diff --git a/node_modules/accepts/package.json b/node_modules/accepts/package.json new file mode 100644 index 0000000..0f2d15d --- /dev/null +++ b/node_modules/accepts/package.json @@ -0,0 +1,47 @@ +{ + "name": "accepts", + "description": "Higher-level content negotiation", + "version": "1.3.8", + "contributors": [ + "Douglas Christopher Wilson ", + "Jonathan Ong (http://jongleberry.com)" + ], + "license": "MIT", + "repository": "jshttp/accepts", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "devDependencies": { + "deep-equal": "1.0.1", + "eslint": "7.32.0", + "eslint-config-standard": "14.1.1", + "eslint-plugin-import": "2.25.4", + "eslint-plugin-markdown": "2.2.1", + "eslint-plugin-node": "11.1.0", + "eslint-plugin-promise": "4.3.1", + "eslint-plugin-standard": "4.1.0", + "mocha": "9.2.0", + "nyc": "15.1.0" + }, + "files": [ + "LICENSE", + "HISTORY.md", + "index.js" + ], + "engines": { + "node": ">= 0.6" + }, + "scripts": { + "lint": "eslint .", + "test": "mocha --reporter spec --check-leaks --bail test/", + "test-ci": "nyc --reporter=lcov --reporter=text npm test", + "test-cov": "nyc --reporter=html --reporter=text npm test" + }, + "keywords": [ + "content", + "negotiation", + "accept", + "accepts" + ] +} diff --git a/node_modules/ansi-styles/index.d.ts b/node_modules/ansi-styles/index.d.ts new file mode 100644 index 0000000..44a907e --- /dev/null +++ b/node_modules/ansi-styles/index.d.ts @@ -0,0 +1,345 @@ +declare type CSSColor = + | 'aliceblue' + | 'antiquewhite' + | 'aqua' + | 'aquamarine' + | 'azure' + | 'beige' + | 'bisque' + | 'black' + | 'blanchedalmond' + | 'blue' + | 'blueviolet' + | 'brown' + | 'burlywood' + | 'cadetblue' + | 'chartreuse' + | 'chocolate' + | 'coral' + | 'cornflowerblue' + | 'cornsilk' + | 'crimson' + | 'cyan' + | 'darkblue' + | 'darkcyan' + | 'darkgoldenrod' + | 'darkgray' + | 'darkgreen' + | 'darkgrey' + | 'darkkhaki' + | 'darkmagenta' + | 'darkolivegreen' + | 'darkorange' + | 'darkorchid' + | 'darkred' + | 'darksalmon' + | 'darkseagreen' + | 'darkslateblue' + | 'darkslategray' + | 'darkslategrey' + | 'darkturquoise' + | 'darkviolet' + | 'deeppink' + | 'deepskyblue' + | 'dimgray' + | 'dimgrey' + | 'dodgerblue' + | 'firebrick' + | 'floralwhite' + | 'forestgreen' + | 'fuchsia' + | 'gainsboro' + | 'ghostwhite' + | 'gold' + | 'goldenrod' + | 'gray' + | 'green' + | 'greenyellow' + | 'grey' + | 'honeydew' + | 'hotpink' + | 'indianred' + | 'indigo' + | 'ivory' + | 'khaki' + | 'lavender' + | 'lavenderblush' + | 'lawngreen' + | 'lemonchiffon' + | 'lightblue' + | 'lightcoral' + | 'lightcyan' + | 'lightgoldenrodyellow' + | 'lightgray' + | 'lightgreen' + | 'lightgrey' + | 'lightpink' + | 'lightsalmon' + | 'lightseagreen' + | 'lightskyblue' + | 'lightslategray' + | 'lightslategrey' + | 'lightsteelblue' + | 'lightyellow' + | 'lime' + | 'limegreen' + | 'linen' + | 'magenta' + | 'maroon' + | 'mediumaquamarine' + | 'mediumblue' + | 'mediumorchid' + | 'mediumpurple' + | 'mediumseagreen' + | 'mediumslateblue' + | 'mediumspringgreen' + | 'mediumturquoise' + | 'mediumvioletred' + | 'midnightblue' + | 'mintcream' + | 'mistyrose' + | 'moccasin' + | 'navajowhite' + | 'navy' + | 'oldlace' + | 'olive' + | 'olivedrab' + | 'orange' + | 'orangered' + | 'orchid' + | 'palegoldenrod' + | 'palegreen' + | 'paleturquoise' + | 'palevioletred' + | 'papayawhip' + | 'peachpuff' + | 'peru' + | 'pink' + | 'plum' + | 'powderblue' + | 'purple' + | 'rebeccapurple' + | 'red' + | 'rosybrown' + | 'royalblue' + | 'saddlebrown' + | 'salmon' + | 'sandybrown' + | 'seagreen' + | 'seashell' + | 'sienna' + | 'silver' + | 'skyblue' + | 'slateblue' + | 'slategray' + | 'slategrey' + | 'snow' + | 'springgreen' + | 'steelblue' + | 'tan' + | 'teal' + | 'thistle' + | 'tomato' + | 'turquoise' + | 'violet' + | 'wheat' + | 'white' + | 'whitesmoke' + | 'yellow' + | 'yellowgreen'; + +declare namespace ansiStyles { + interface ColorConvert { + /** + The RGB color space. + + @param red - (`0`-`255`) + @param green - (`0`-`255`) + @param blue - (`0`-`255`) + */ + rgb(red: number, green: number, blue: number): string; + + /** + The RGB HEX color space. + + @param hex - A hexadecimal string containing RGB data. + */ + hex(hex: string): string; + + /** + @param keyword - A CSS color name. + */ + keyword(keyword: CSSColor): string; + + /** + The HSL color space. + + @param hue - (`0`-`360`) + @param saturation - (`0`-`100`) + @param lightness - (`0`-`100`) + */ + hsl(hue: number, saturation: number, lightness: number): string; + + /** + The HSV color space. + + @param hue - (`0`-`360`) + @param saturation - (`0`-`100`) + @param value - (`0`-`100`) + */ + hsv(hue: number, saturation: number, value: number): string; + + /** + The HSV color space. + + @param hue - (`0`-`360`) + @param whiteness - (`0`-`100`) + @param blackness - (`0`-`100`) + */ + hwb(hue: number, whiteness: number, blackness: number): string; + + /** + Use a [4-bit unsigned number](https://en.wikipedia.org/wiki/ANSI_escape_code#3/4-bit) to set text color. + */ + ansi(ansi: number): string; + + /** + Use an [8-bit unsigned number](https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit) to set text color. + */ + ansi256(ansi: number): string; + } + + interface CSPair { + /** + The ANSI terminal control sequence for starting this style. + */ + readonly open: string; + + /** + The ANSI terminal control sequence for ending this style. + */ + readonly close: string; + } + + interface ColorBase { + readonly ansi: ColorConvert; + readonly ansi256: ColorConvert; + readonly ansi16m: ColorConvert; + + /** + The ANSI terminal control sequence for ending this color. + */ + readonly close: string; + } + + interface Modifier { + /** + Resets the current color chain. + */ + readonly reset: CSPair; + + /** + Make text bold. + */ + readonly bold: CSPair; + + /** + Emitting only a small amount of light. + */ + readonly dim: CSPair; + + /** + Make text italic. (Not widely supported) + */ + readonly italic: CSPair; + + /** + Make text underline. (Not widely supported) + */ + readonly underline: CSPair; + + /** + Inverse background and foreground colors. + */ + readonly inverse: CSPair; + + /** + Prints the text, but makes it invisible. + */ + readonly hidden: CSPair; + + /** + Puts a horizontal line through the center of the text. (Not widely supported) + */ + readonly strikethrough: CSPair; + } + + interface ForegroundColor { + readonly black: CSPair; + readonly red: CSPair; + readonly green: CSPair; + readonly yellow: CSPair; + readonly blue: CSPair; + readonly cyan: CSPair; + readonly magenta: CSPair; + readonly white: CSPair; + + /** + Alias for `blackBright`. + */ + readonly gray: CSPair; + + /** + Alias for `blackBright`. + */ + readonly grey: CSPair; + + readonly blackBright: CSPair; + readonly redBright: CSPair; + readonly greenBright: CSPair; + readonly yellowBright: CSPair; + readonly blueBright: CSPair; + readonly cyanBright: CSPair; + readonly magentaBright: CSPair; + readonly whiteBright: CSPair; + } + + interface BackgroundColor { + readonly bgBlack: CSPair; + readonly bgRed: CSPair; + readonly bgGreen: CSPair; + readonly bgYellow: CSPair; + readonly bgBlue: CSPair; + readonly bgCyan: CSPair; + readonly bgMagenta: CSPair; + readonly bgWhite: CSPair; + + /** + Alias for `bgBlackBright`. + */ + readonly bgGray: CSPair; + + /** + Alias for `bgBlackBright`. + */ + readonly bgGrey: CSPair; + + readonly bgBlackBright: CSPair; + readonly bgRedBright: CSPair; + readonly bgGreenBright: CSPair; + readonly bgYellowBright: CSPair; + readonly bgBlueBright: CSPair; + readonly bgCyanBright: CSPair; + readonly bgMagentaBright: CSPair; + readonly bgWhiteBright: CSPair; + } +} + +declare const ansiStyles: { + readonly modifier: ansiStyles.Modifier; + readonly color: ansiStyles.ForegroundColor & ansiStyles.ColorBase; + readonly bgColor: ansiStyles.BackgroundColor & ansiStyles.ColorBase; + readonly codes: ReadonlyMap; +} & ansiStyles.BackgroundColor & ansiStyles.ForegroundColor & ansiStyles.Modifier; + +export = ansiStyles; diff --git a/node_modules/ansi-styles/index.js b/node_modules/ansi-styles/index.js new file mode 100644 index 0000000..5d82581 --- /dev/null +++ b/node_modules/ansi-styles/index.js @@ -0,0 +1,163 @@ +'use strict'; + +const wrapAnsi16 = (fn, offset) => (...args) => { + const code = fn(...args); + return `\u001B[${code + offset}m`; +}; + +const wrapAnsi256 = (fn, offset) => (...args) => { + const code = fn(...args); + return `\u001B[${38 + offset};5;${code}m`; +}; + +const wrapAnsi16m = (fn, offset) => (...args) => { + const rgb = fn(...args); + return `\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`; +}; + +const ansi2ansi = n => n; +const rgb2rgb = (r, g, b) => [r, g, b]; + +const setLazyProperty = (object, property, get) => { + Object.defineProperty(object, property, { + get: () => { + const value = get(); + + Object.defineProperty(object, property, { + value, + enumerable: true, + configurable: true + }); + + return value; + }, + enumerable: true, + configurable: true + }); +}; + +/** @type {typeof import('color-convert')} */ +let colorConvert; +const makeDynamicStyles = (wrap, targetSpace, identity, isBackground) => { + if (colorConvert === undefined) { + colorConvert = require('color-convert'); + } + + const offset = isBackground ? 10 : 0; + const styles = {}; + + for (const [sourceSpace, suite] of Object.entries(colorConvert)) { + const name = sourceSpace === 'ansi16' ? 'ansi' : sourceSpace; + if (sourceSpace === targetSpace) { + styles[name] = wrap(identity, offset); + } else if (typeof suite === 'object') { + styles[name] = wrap(suite[targetSpace], offset); + } + } + + return styles; +}; + +function assembleStyles() { + const codes = new Map(); + const styles = { + modifier: { + reset: [0, 0], + // 21 isn't widely supported and 22 does the same thing + bold: [1, 22], + dim: [2, 22], + italic: [3, 23], + underline: [4, 24], + inverse: [7, 27], + hidden: [8, 28], + strikethrough: [9, 29] + }, + color: { + black: [30, 39], + red: [31, 39], + green: [32, 39], + yellow: [33, 39], + blue: [34, 39], + magenta: [35, 39], + cyan: [36, 39], + white: [37, 39], + + // Bright color + blackBright: [90, 39], + redBright: [91, 39], + greenBright: [92, 39], + yellowBright: [93, 39], + blueBright: [94, 39], + magentaBright: [95, 39], + cyanBright: [96, 39], + whiteBright: [97, 39] + }, + bgColor: { + bgBlack: [40, 49], + bgRed: [41, 49], + bgGreen: [42, 49], + bgYellow: [43, 49], + bgBlue: [44, 49], + bgMagenta: [45, 49], + bgCyan: [46, 49], + bgWhite: [47, 49], + + // Bright color + bgBlackBright: [100, 49], + bgRedBright: [101, 49], + bgGreenBright: [102, 49], + bgYellowBright: [103, 49], + bgBlueBright: [104, 49], + bgMagentaBright: [105, 49], + bgCyanBright: [106, 49], + bgWhiteBright: [107, 49] + } + }; + + // Alias bright black as gray (and grey) + styles.color.gray = styles.color.blackBright; + styles.bgColor.bgGray = styles.bgColor.bgBlackBright; + styles.color.grey = styles.color.blackBright; + styles.bgColor.bgGrey = styles.bgColor.bgBlackBright; + + for (const [groupName, group] of Object.entries(styles)) { + for (const [styleName, style] of Object.entries(group)) { + styles[styleName] = { + open: `\u001B[${style[0]}m`, + close: `\u001B[${style[1]}m` + }; + + group[styleName] = styles[styleName]; + + codes.set(style[0], style[1]); + } + + Object.defineProperty(styles, groupName, { + value: group, + enumerable: false + }); + } + + Object.defineProperty(styles, 'codes', { + value: codes, + enumerable: false + }); + + styles.color.close = '\u001B[39m'; + styles.bgColor.close = '\u001B[49m'; + + setLazyProperty(styles.color, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, false)); + setLazyProperty(styles.color, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, false)); + setLazyProperty(styles.color, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, false)); + setLazyProperty(styles.bgColor, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, true)); + setLazyProperty(styles.bgColor, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, true)); + setLazyProperty(styles.bgColor, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, true)); + + return styles; +} + +// Make the export immutable +Object.defineProperty(module, 'exports', { + enumerable: true, + get: assembleStyles +}); diff --git a/node_modules/ansi-styles/license b/node_modules/ansi-styles/license new file mode 100644 index 0000000..e7af2f7 --- /dev/null +++ b/node_modules/ansi-styles/license @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +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/ansi-styles/package.json b/node_modules/ansi-styles/package.json new file mode 100644 index 0000000..7539328 --- /dev/null +++ b/node_modules/ansi-styles/package.json @@ -0,0 +1,56 @@ +{ + "name": "ansi-styles", + "version": "4.3.0", + "description": "ANSI escape codes for styling strings in the terminal", + "license": "MIT", + "repository": "chalk/ansi-styles", + "funding": "https://github.com/chalk/ansi-styles?sponsor=1", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "sindresorhus.com" + }, + "engines": { + "node": ">=8" + }, + "scripts": { + "test": "xo && ava && tsd", + "screenshot": "svg-term --command='node screenshot' --out=screenshot.svg --padding=3 --width=55 --height=3 --at=1000 --no-cursor" + }, + "files": [ + "index.js", + "index.d.ts" + ], + "keywords": [ + "ansi", + "styles", + "color", + "colour", + "colors", + "terminal", + "console", + "cli", + "string", + "tty", + "escape", + "formatting", + "rgb", + "256", + "shell", + "xterm", + "log", + "logging", + "command-line", + "text" + ], + "dependencies": { + "color-convert": "^2.0.1" + }, + "devDependencies": { + "@types/color-convert": "^1.9.0", + "ava": "^2.3.0", + "svg-term-cli": "^2.1.1", + "tsd": "^0.11.0", + "xo": "^0.25.3" + } +} diff --git a/node_modules/ansi-styles/readme.md b/node_modules/ansi-styles/readme.md new file mode 100644 index 0000000..24883de --- /dev/null +++ b/node_modules/ansi-styles/readme.md @@ -0,0 +1,152 @@ +# ansi-styles [![Build Status](https://travis-ci.org/chalk/ansi-styles.svg?branch=master)](https://travis-ci.org/chalk/ansi-styles) + +> [ANSI escape codes](https://en.wikipedia.org/wiki/ANSI_escape_code#Colors_and_Styles) for styling strings in the terminal + +You probably want the higher-level [chalk](https://github.com/chalk/chalk) module for styling your strings. + + + +## Install + +``` +$ npm install ansi-styles +``` + +## Usage + +```js +const style = require('ansi-styles'); + +console.log(`${style.green.open}Hello world!${style.green.close}`); + + +// Color conversion between 16/256/truecolor +// NOTE: If conversion goes to 16 colors or 256 colors, the original color +// may be degraded to fit that color palette. This means terminals +// that do not support 16 million colors will best-match the +// original color. +console.log(style.bgColor.ansi.hsl(120, 80, 72) + 'Hello world!' + style.bgColor.close); +console.log(style.color.ansi256.rgb(199, 20, 250) + 'Hello world!' + style.color.close); +console.log(style.color.ansi16m.hex('#abcdef') + 'Hello world!' + style.color.close); +``` + +## API + +Each style has an `open` and `close` property. + +## Styles + +### Modifiers + +- `reset` +- `bold` +- `dim` +- `italic` *(Not widely supported)* +- `underline` +- `inverse` +- `hidden` +- `strikethrough` *(Not widely supported)* + +### Colors + +- `black` +- `red` +- `green` +- `yellow` +- `blue` +- `magenta` +- `cyan` +- `white` +- `blackBright` (alias: `gray`, `grey`) +- `redBright` +- `greenBright` +- `yellowBright` +- `blueBright` +- `magentaBright` +- `cyanBright` +- `whiteBright` + +### Background colors + +- `bgBlack` +- `bgRed` +- `bgGreen` +- `bgYellow` +- `bgBlue` +- `bgMagenta` +- `bgCyan` +- `bgWhite` +- `bgBlackBright` (alias: `bgGray`, `bgGrey`) +- `bgRedBright` +- `bgGreenBright` +- `bgYellowBright` +- `bgBlueBright` +- `bgMagentaBright` +- `bgCyanBright` +- `bgWhiteBright` + +## Advanced usage + +By default, you get a map of styles, but the styles are also available as groups. They are non-enumerable so they don't show up unless you access them explicitly. This makes it easier to expose only a subset in a higher-level module. + +- `style.modifier` +- `style.color` +- `style.bgColor` + +###### Example + +```js +console.log(style.color.green.open); +``` + +Raw escape codes (i.e. without the CSI escape prefix `\u001B[` and render mode postfix `m`) are available under `style.codes`, which returns a `Map` with the open codes as keys and close codes as values. + +###### Example + +```js +console.log(style.codes.get(36)); +//=> 39 +``` + +## [256 / 16 million (TrueColor) support](https://gist.github.com/XVilka/8346728) + +`ansi-styles` uses the [`color-convert`](https://github.com/Qix-/color-convert) package to allow for converting between various colors and ANSI escapes, with support for 256 and 16 million colors. + +The following color spaces from `color-convert` are supported: + +- `rgb` +- `hex` +- `keyword` +- `hsl` +- `hsv` +- `hwb` +- `ansi` +- `ansi256` + +To use these, call the associated conversion function with the intended output, for example: + +```js +style.color.ansi.rgb(100, 200, 15); // RGB to 16 color ansi foreground code +style.bgColor.ansi.rgb(100, 200, 15); // RGB to 16 color ansi background code + +style.color.ansi256.hsl(120, 100, 60); // HSL to 256 color ansi foreground code +style.bgColor.ansi256.hsl(120, 100, 60); // HSL to 256 color ansi foreground code + +style.color.ansi16m.hex('#C0FFEE'); // Hex (RGB) to 16 million color foreground code +style.bgColor.ansi16m.hex('#C0FFEE'); // Hex (RGB) to 16 million color background code +``` + +## Related + +- [ansi-escapes](https://github.com/sindresorhus/ansi-escapes) - ANSI escape codes for manipulating the terminal + +## Maintainers + +- [Sindre Sorhus](https://github.com/sindresorhus) +- [Josh Junon](https://github.com/qix-) + +## For enterprise + +Available as part of the Tidelift Subscription. + +The maintainers of `ansi-styles` and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. [Learn more.](https://tidelift.com/subscription/pkg/npm-ansi-styles?utm_source=npm-ansi-styles&utm_medium=referral&utm_campaign=enterprise&utm_term=repo) diff --git a/node_modules/array-flatten/LICENSE b/node_modules/array-flatten/LICENSE new file mode 100644 index 0000000..983fbe8 --- /dev/null +++ b/node_modules/array-flatten/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com) + +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/array-flatten/README.md b/node_modules/array-flatten/README.md new file mode 100644 index 0000000..91fa5b6 --- /dev/null +++ b/node_modules/array-flatten/README.md @@ -0,0 +1,43 @@ +# Array Flatten + +[![NPM version][npm-image]][npm-url] +[![NPM downloads][downloads-image]][downloads-url] +[![Build status][travis-image]][travis-url] +[![Test coverage][coveralls-image]][coveralls-url] + +> Flatten an array of nested arrays into a single flat array. Accepts an optional depth. + +## Installation + +``` +npm install array-flatten --save +``` + +## Usage + +```javascript +var flatten = require('array-flatten') + +flatten([1, [2, [3, [4, [5], 6], 7], 8], 9]) +//=> [1, 2, 3, 4, 5, 6, 7, 8, 9] + +flatten([1, [2, [3, [4, [5], 6], 7], 8], 9], 2) +//=> [1, 2, 3, [4, [5], 6], 7, 8, 9] + +(function () { + flatten(arguments) //=> [1, 2, 3] +})(1, [2, 3]) +``` + +## License + +MIT + +[npm-image]: https://img.shields.io/npm/v/array-flatten.svg?style=flat +[npm-url]: https://npmjs.org/package/array-flatten +[downloads-image]: https://img.shields.io/npm/dm/array-flatten.svg?style=flat +[downloads-url]: https://npmjs.org/package/array-flatten +[travis-image]: https://img.shields.io/travis/blakeembrey/array-flatten.svg?style=flat +[travis-url]: https://travis-ci.org/blakeembrey/array-flatten +[coveralls-image]: https://img.shields.io/coveralls/blakeembrey/array-flatten.svg?style=flat +[coveralls-url]: https://coveralls.io/r/blakeembrey/array-flatten?branch=master diff --git a/node_modules/array-flatten/array-flatten.js b/node_modules/array-flatten/array-flatten.js new file mode 100644 index 0000000..089117b --- /dev/null +++ b/node_modules/array-flatten/array-flatten.js @@ -0,0 +1,64 @@ +'use strict' + +/** + * Expose `arrayFlatten`. + */ +module.exports = arrayFlatten + +/** + * Recursive flatten function with depth. + * + * @param {Array} array + * @param {Array} result + * @param {Number} depth + * @return {Array} + */ +function flattenWithDepth (array, result, depth) { + for (var i = 0; i < array.length; i++) { + var value = array[i] + + if (depth > 0 && Array.isArray(value)) { + flattenWithDepth(value, result, depth - 1) + } else { + result.push(value) + } + } + + return result +} + +/** + * Recursive flatten function. Omitting depth is slightly faster. + * + * @param {Array} array + * @param {Array} result + * @return {Array} + */ +function flattenForever (array, result) { + for (var i = 0; i < array.length; i++) { + var value = array[i] + + if (Array.isArray(value)) { + flattenForever(value, result) + } else { + result.push(value) + } + } + + return result +} + +/** + * Flatten an array, with the ability to define a depth. + * + * @param {Array} array + * @param {Number} depth + * @return {Array} + */ +function arrayFlatten (array, depth) { + if (depth == null) { + return flattenForever(array, []) + } + + return flattenWithDepth(array, [], depth) +} diff --git a/node_modules/array-flatten/package.json b/node_modules/array-flatten/package.json new file mode 100644 index 0000000..1a24e2a --- /dev/null +++ b/node_modules/array-flatten/package.json @@ -0,0 +1,39 @@ +{ + "name": "array-flatten", + "version": "1.1.1", + "description": "Flatten an array of nested arrays into a single flat array", + "main": "array-flatten.js", + "files": [ + "array-flatten.js", + "LICENSE" + ], + "scripts": { + "test": "istanbul cover _mocha -- -R spec" + }, + "repository": { + "type": "git", + "url": "git://github.com/blakeembrey/array-flatten.git" + }, + "keywords": [ + "array", + "flatten", + "arguments", + "depth" + ], + "author": { + "name": "Blake Embrey", + "email": "hello@blakeembrey.com", + "url": "http://blakeembrey.me" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/blakeembrey/array-flatten/issues" + }, + "homepage": "https://github.com/blakeembrey/array-flatten", + "devDependencies": { + "istanbul": "^0.3.13", + "mocha": "^2.2.4", + "pre-commit": "^1.0.7", + "standard": "^3.7.3" + } +} diff --git a/node_modules/async/CHANGELOG.md b/node_modules/async/CHANGELOG.md new file mode 100644 index 0000000..8a9a1bf --- /dev/null +++ b/node_modules/async/CHANGELOG.md @@ -0,0 +1,348 @@ +# v3.2.4 +- Fix a bug in `priorityQueue` where it didn't wait for the result. (#1725) +- Fix a bug where `unshiftAsync` was included in `priorityQueue`. (#1790) + +# v3.2.3 +- Fix bugs in comment parsing in `autoInject`. (#1767, #1780) + +# v3.2.2 +- Fix potential prototype pollution exploit + +# v3.2.1 +- Use `queueMicrotask` if available to the environment (#1761) +- Minor perf improvement in `priorityQueue` (#1727) +- More examples in documentation (#1726) +- Various doc fixes (#1708, #1712, #1717, #1740, #1739, #1749, #1756) +- Improved test coverage (#1754) + +# v3.2.0 +- Fix a bug in Safari related to overwriting `func.name` +- Remove built-in browserify configuration (#1653) +- Varios doc fixes (#1688, #1703, #1704) + +# v3.1.1 +- Allow redefining `name` property on wrapped functions. + +# v3.1.0 + +- Added `q.pushAsync` and `q.unshiftAsync`, analagous to `q.push` and `q.unshift`, except they always do not accept a callback, and reject if processing the task errors. (#1659) +- Promises returned from `q.push` and `q.unshift` when a callback is not passed now resolve even if an error ocurred. (#1659) +- Fixed a parsing bug in `autoInject` with complicated function bodies (#1663) +- Added ES6+ configuration for Browserify bundlers (#1653) +- Various doc fixes (#1664, #1658, #1665, #1652) + +# v3.0.1 + +## Bug fixes +- Fixed a regression where arrays passed to `queue` and `cargo` would be completely flattened. (#1645) +- Clarified Async's browser support (#1643) + + +# v3.0.0 + +The `async`/`await` release! + +There are a lot of new features and subtle breaking changes in this major version, but the biggest feature is that most Async methods return a Promise if you omit the callback, meaning you can `await` them from within an `async` function. + +```js +const results = await async.mapLimit(urls, 5, async url => { + const resp = await fetch(url) + return resp.body +}) +``` + +## Breaking Changes +- Most Async methods return a Promise when the final callback is omitted, making them `await`-able! (#1572) +- We are now making heavy use of ES2015 features, this means we have dropped out-of-the-box support for Node 4 and earlier, and many old versions of browsers. (#1541, #1553) +- In `queue`, `priorityQueue`, `cargo` and `cargoQueue`, the "event"-style methods, like `q.drain` and `q.saturated` are now methods that register a callback, rather than properties you assign a callback to. They are now of the form `q.drain(callback)`. If you do not pass a callback a Promise will be returned for the next occurrence of the event, making them `await`-able, e.g. `await q.drain()`. (#1586, #1641) +- Calling `callback(false)` will cancel an async method, preventing further iteration and callback calls. This is useful for preventing memory leaks when you break out of an async flow by calling an outer callback. (#1064, #1542) +- `during` and `doDuring` have been removed, and instead `whilst`, `doWhilst`, `until` and `doUntil` now have asynchronous `test` functions. (#850, #1557) +- `limits` of less than 1 now cause an error to be thrown in queues and collection methods. (#1249, #1552) +- `memoize` no longer memoizes errors (#1465, #1466) +- `applyEach`/`applyEachSeries` have a simpler interface, to make them more easily type-able. It always returns a function that takes in a single callback argument. If that callback is omitted, a promise is returned, making it awaitable. (#1228, #1640) + +## New Features +- Async generators are now supported in all the Collection methods. (#1560) +- Added `cargoQueue`, a queue with both `concurrency` and `payload` size parameters. (#1567) +- Queue objects returned from `queue` now have a `Symbol.iterator` method, meaning they can be iterated over to inspect the current list of items in the queue. (#1459, #1556) +- A ESM-flavored `async.mjs` is included in the `async` package. This is described in the `package.json` `"module"` field, meaning it should be automatically used by Webpack and other compatible bundlers. + +## Bug fixes +- Better handle arbitrary error objects in `asyncify` (#1568, #1569) + +## Other +- Removed Lodash as a dependency (#1283, #1528) +- Miscellaneous docs fixes (#1393, #1501, #1540, #1543, #1558, #1563, #1564, #1579, #1581) +- Miscellaneous test fixes (#1538) + +------- + +# v2.6.1 +- Updated lodash to prevent `npm audit` warnings. (#1532, #1533) +- Made `async-es` more optimized for webpack users (#1517) +- Fixed a stack overflow with large collections and a synchronous iterator (#1514) +- Various small fixes/chores (#1505, #1511, #1527, #1530) + +# v2.6.0 +- Added missing aliases for many methods. Previously, you could not (e.g.) `require('async/find')` or use `async.anyLimit`. (#1483) +- Improved `queue` performance. (#1448, #1454) +- Add missing sourcemap (#1452, #1453) +- Various doc updates (#1448, #1471, #1483) + +# v2.5.0 +- Added `concatLimit`, the `Limit` equivalent of [`concat`](https://caolan.github.io/async/docs.html#concat) ([#1426](https://github.com/caolan/async/issues/1426), [#1430](https://github.com/caolan/async/pull/1430)) +- `concat` improvements: it now preserves order, handles falsy values and the `iteratee` callback takes a variable number of arguments ([#1437](https://github.com/caolan/async/issues/1437), [#1436](https://github.com/caolan/async/pull/1436)) +- Fixed an issue in `queue` where there was a size discrepancy between `workersList().length` and `running()` ([#1428](https://github.com/caolan/async/issues/1428), [#1429](https://github.com/caolan/async/pull/1429)) +- Various doc fixes ([#1422](https://github.com/caolan/async/issues/1422), [#1424](https://github.com/caolan/async/pull/1424)) + +# v2.4.1 +- Fixed a bug preventing functions wrapped with `timeout()` from being re-used. ([#1418](https://github.com/caolan/async/issues/1418), [#1419](https://github.com/caolan/async/issues/1419)) + +# v2.4.0 +- Added `tryEach`, for running async functions in parallel, where you only expect one to succeed. ([#1365](https://github.com/caolan/async/issues/1365), [#687](https://github.com/caolan/async/issues/687)) +- Improved performance, most notably in `parallel` and `waterfall` ([#1395](https://github.com/caolan/async/issues/1395)) +- Added `queue.remove()`, for removing items in a `queue` ([#1397](https://github.com/caolan/async/issues/1397), [#1391](https://github.com/caolan/async/issues/1391)) +- Fixed using `eval`, preventing Async from running in pages with Content Security Policy ([#1404](https://github.com/caolan/async/issues/1404), [#1403](https://github.com/caolan/async/issues/1403)) +- Fixed errors thrown in an `asyncify`ed function's callback being caught by the underlying Promise ([#1408](https://github.com/caolan/async/issues/1408)) +- Fixed timing of `queue.empty()` ([#1367](https://github.com/caolan/async/issues/1367)) +- Various doc fixes ([#1314](https://github.com/caolan/async/issues/1314), [#1394](https://github.com/caolan/async/issues/1394), [#1412](https://github.com/caolan/async/issues/1412)) + +# v2.3.0 +- Added support for ES2017 `async` functions. Wherever you can pass a Node-style/CPS function that uses a callback, you can also pass an `async` function. Previously, you had to wrap `async` functions with `asyncify`. The caveat is that it will only work if `async` functions are supported natively in your environment, transpiled implementations can't be detected. ([#1386](https://github.com/caolan/async/issues/1386), [#1390](https://github.com/caolan/async/issues/1390)) +- Small doc fix ([#1392](https://github.com/caolan/async/issues/1392)) + +# v2.2.0 +- Added `groupBy`, and the `Series`/`Limit` equivalents, analogous to [`_.groupBy`](http://lodash.com/docs#groupBy) ([#1364](https://github.com/caolan/async/issues/1364)) +- Fixed `transform` bug when `callback` was not passed ([#1381](https://github.com/caolan/async/issues/1381)) +- Added note about `reflect` to `parallel` docs ([#1385](https://github.com/caolan/async/issues/1385)) + +# v2.1.5 +- Fix `auto` bug when function names collided with Array.prototype ([#1358](https://github.com/caolan/async/issues/1358)) +- Improve some error messages ([#1349](https://github.com/caolan/async/issues/1349)) +- Avoid stack overflow case in queue +- Fixed an issue in `some`, `every` and `find` where processing would continue after the result was determined. +- Cleanup implementations of `some`, `every` and `find` + +# v2.1.3 +- Make bundle size smaller +- Create optimized hotpath for `filter` in array case. + +# v2.1.2 +- Fixed a stackoverflow bug with `detect`, `some`, `every` on large inputs ([#1293](https://github.com/caolan/async/issues/1293)). + +# v2.1.0 + +- `retry` and `retryable` now support an optional `errorFilter` function that determines if the `task` should retry on the error ([#1256](https://github.com/caolan/async/issues/1256), [#1261](https://github.com/caolan/async/issues/1261)) +- Optimized array iteration in `race`, `cargo`, `queue`, and `priorityQueue` ([#1253](https://github.com/caolan/async/issues/1253)) +- Added alias documentation to doc site ([#1251](https://github.com/caolan/async/issues/1251), [#1254](https://github.com/caolan/async/issues/1254)) +- Added [BootStrap scrollspy](http://getbootstrap.com/javascript/#scrollspy) to docs to highlight in the sidebar the current method being viewed ([#1289](https://github.com/caolan/async/issues/1289), [#1300](https://github.com/caolan/async/issues/1300)) +- Various minor doc fixes ([#1263](https://github.com/caolan/async/issues/1263), [#1264](https://github.com/caolan/async/issues/1264), [#1271](https://github.com/caolan/async/issues/1271), [#1278](https://github.com/caolan/async/issues/1278), [#1280](https://github.com/caolan/async/issues/1280), [#1282](https://github.com/caolan/async/issues/1282), [#1302](https://github.com/caolan/async/issues/1302)) + +# v2.0.1 + +- Significantly optimized all iteration based collection methods such as `each`, `map`, `filter`, etc ([#1245](https://github.com/caolan/async/issues/1245), [#1246](https://github.com/caolan/async/issues/1246), [#1247](https://github.com/caolan/async/issues/1247)). + +# v2.0.0 + +Lots of changes here! + +First and foremost, we have a slick new [site for docs](https://caolan.github.io/async/). Special thanks to [**@hargasinski**](https://github.com/hargasinski) for his work converting our old docs to `jsdoc` format and implementing the new website. Also huge ups to [**@ivanseidel**](https://github.com/ivanseidel) for designing our new logo. It was a long process for both of these tasks, but I think these changes turned out extraordinary well. + +The biggest feature is modularization. You can now `require("async/series")` to only require the `series` function. Every Async library function is available this way. You still can `require("async")` to require the entire library, like you could do before. + +We also provide Async as a collection of ES2015 modules. You can now `import {each} from 'async-es'` or `import waterfall from 'async-es/waterfall'`. If you are using only a few Async functions, and are using a ES bundler such as Rollup, this can significantly lower your build size. + +Major thanks to [**@Kikobeats**](github.com/Kikobeats), [**@aearly**](github.com/aearly) and [**@megawac**](github.com/megawac) for doing the majority of the modularization work, as well as [**@jdalton**](github.com/jdalton) and [**@Rich-Harris**](github.com/Rich-Harris) for advisory work on the general modularization strategy. + +Another one of the general themes of the 2.0 release is standardization of what an "async" function is. We are now more strictly following the node-style continuation passing style. That is, an async function is a function that: + +1. Takes a variable number of arguments +2. The last argument is always a callback +3. The callback can accept any number of arguments +4. The first argument passed to the callback will be treated as an error result, if the argument is truthy +5. Any number of result arguments can be passed after the "error" argument +6. The callback is called once and exactly once, either on the same tick or later tick of the JavaScript event loop. + +There were several cases where Async accepted some functions that did not strictly have these properties, most notably `auto`, `every`, `some`, `filter`, `reject` and `detect`. + +Another theme is performance. We have eliminated internal deferrals in all cases where they make sense. For example, in `waterfall` and `auto`, there was a `setImmediate` between each task -- these deferrals have been removed. A `setImmediate` call can add up to 1ms of delay. This might not seem like a lot, but it can add up if you are using many Async functions in the course of processing a HTTP request, for example. Nearly all asynchronous functions that do I/O already have some sort of deferral built in, so the extra deferral is unnecessary. The trade-off of this change is removing our built-in stack-overflow defense. Many synchronous callback calls in series can quickly overflow the JS call stack. If you do have a function that is sometimes synchronous (calling its callback on the same tick), and are running into stack overflows, wrap it with `async.ensureAsync()`. + +Another big performance win has been re-implementing `queue`, `cargo`, and `priorityQueue` with [doubly linked lists](https://en.wikipedia.org/wiki/Doubly_linked_list) instead of arrays. This has lead to queues being an order of [magnitude faster on large sets of tasks](https://github.com/caolan/async/pull/1205). + +## New Features + +- Async is now modularized. Individual functions can be `require()`d from the main package. (`require('async/auto')`) ([#984](https://github.com/caolan/async/issues/984), [#996](https://github.com/caolan/async/issues/996)) +- Async is also available as a collection of ES2015 modules in the new `async-es` package. (`import {forEachSeries} from 'async-es'`) ([#984](https://github.com/caolan/async/issues/984), [#996](https://github.com/caolan/async/issues/996)) +- Added `race`, analogous to `Promise.race()`. It will run an array of async tasks in parallel and will call its callback with the result of the first task to respond. ([#568](https://github.com/caolan/async/issues/568), [#1038](https://github.com/caolan/async/issues/1038)) +- Collection methods now accept ES2015 iterators. Maps, Sets, and anything that implements the iterator spec can now be passed directly to `each`, `map`, `parallel`, etc.. ([#579](https://github.com/caolan/async/issues/579), [#839](https://github.com/caolan/async/issues/839), [#1074](https://github.com/caolan/async/issues/1074)) +- Added `mapValues`, for mapping over the properties of an object and returning an object with the same keys. ([#1157](https://github.com/caolan/async/issues/1157), [#1177](https://github.com/caolan/async/issues/1177)) +- Added `timeout`, a wrapper for an async function that will make the task time-out after the specified time. ([#1007](https://github.com/caolan/async/issues/1007), [#1027](https://github.com/caolan/async/issues/1027)) +- Added `reflect` and `reflectAll`, analagous to [`Promise.reflect()`](http://bluebirdjs.com/docs/api/reflect.html), a wrapper for async tasks that always succeeds, by gathering results and errors into an object. ([#942](https://github.com/caolan/async/issues/942), [#1012](https://github.com/caolan/async/issues/1012), [#1095](https://github.com/caolan/async/issues/1095)) +- `constant` supports dynamic arguments -- it will now always use its last argument as the callback. ([#1016](https://github.com/caolan/async/issues/1016), [#1052](https://github.com/caolan/async/issues/1052)) +- `setImmediate` and `nextTick` now support arguments to partially apply to the deferred function, like the node-native versions do. ([#940](https://github.com/caolan/async/issues/940), [#1053](https://github.com/caolan/async/issues/1053)) +- `auto` now supports resolving cyclic dependencies using [Kahn's algorithm](https://en.wikipedia.org/wiki/Topological_sorting#Kahn.27s_algorithm) ([#1140](https://github.com/caolan/async/issues/1140)). +- Added `autoInject`, a relative of `auto` that automatically spreads a task's dependencies as arguments to the task function. ([#608](https://github.com/caolan/async/issues/608), [#1055](https://github.com/caolan/async/issues/1055), [#1099](https://github.com/caolan/async/issues/1099), [#1100](https://github.com/caolan/async/issues/1100)) +- You can now limit the concurrency of `auto` tasks. ([#635](https://github.com/caolan/async/issues/635), [#637](https://github.com/caolan/async/issues/637)) +- Added `retryable`, a relative of `retry` that wraps an async function, making it retry when called. ([#1058](https://github.com/caolan/async/issues/1058)) +- `retry` now supports specifying a function that determines the next time interval, useful for exponential backoff, logging and other retry strategies. ([#1161](https://github.com/caolan/async/issues/1161)) +- `retry` will now pass all of the arguments the task function was resolved with to the callback ([#1231](https://github.com/caolan/async/issues/1231)). +- Added `q.unsaturated` -- callback called when a `queue`'s number of running workers falls below a threshold. ([#868](https://github.com/caolan/async/issues/868), [#1030](https://github.com/caolan/async/issues/1030), [#1033](https://github.com/caolan/async/issues/1033), [#1034](https://github.com/caolan/async/issues/1034)) +- Added `q.error` -- a callback called whenever a `queue` task calls its callback with an error. ([#1170](https://github.com/caolan/async/issues/1170)) +- `applyEach` and `applyEachSeries` now pass results to the final callback. ([#1088](https://github.com/caolan/async/issues/1088)) + +## Breaking changes + +- Calling a callback more than once is considered an error, and an error will be thrown. This had an explicit breaking change in `waterfall`. If you were relying on this behavior, you should more accurately represent your control flow as an event emitter or stream. ([#814](https://github.com/caolan/async/issues/814), [#815](https://github.com/caolan/async/issues/815), [#1048](https://github.com/caolan/async/issues/1048), [#1050](https://github.com/caolan/async/issues/1050)) +- `auto` task functions now always take the callback as the last argument. If a task has dependencies, the `results` object will be passed as the first argument. To migrate old task functions, wrap them with [`_.flip`](https://lodash.com/docs#flip) ([#1036](https://github.com/caolan/async/issues/1036), [#1042](https://github.com/caolan/async/issues/1042)) +- Internal `setImmediate` calls have been refactored away. This may make existing flows vulnerable to stack overflows if you use many synchronous functions in series. Use `ensureAsync` to work around this. ([#696](https://github.com/caolan/async/issues/696), [#704](https://github.com/caolan/async/issues/704), [#1049](https://github.com/caolan/async/issues/1049), [#1050](https://github.com/caolan/async/issues/1050)) +- `map` used to return an object when iterating over an object. `map` now always returns an array, like in other libraries. The previous object behavior has been split out into `mapValues`. ([#1157](https://github.com/caolan/async/issues/1157), [#1177](https://github.com/caolan/async/issues/1177)) +- `filter`, `reject`, `some`, `every`, `detect` and their families like `{METHOD}Series` and `{METHOD}Limit` now expect an error as the first callback argument, rather than just a simple boolean. Pass `null` as the first argument, or use `fs.access` instead of `fs.exists`. ([#118](https://github.com/caolan/async/issues/118), [#774](https://github.com/caolan/async/issues/774), [#1028](https://github.com/caolan/async/issues/1028), [#1041](https://github.com/caolan/async/issues/1041)) +- `{METHOD}` and `{METHOD}Series` are now implemented in terms of `{METHOD}Limit`. This is a major internal simplification, and is not expected to cause many problems, but it does subtly affect how functions execute internally. ([#778](https://github.com/caolan/async/issues/778), [#847](https://github.com/caolan/async/issues/847)) +- `retry`'s callback is now optional. Previously, omitting the callback would partially apply the function, meaning it could be passed directly as a task to `series` or `auto`. The partially applied "control-flow" behavior has been separated out into `retryable`. ([#1054](https://github.com/caolan/async/issues/1054), [#1058](https://github.com/caolan/async/issues/1058)) +- The test function for `whilst`, `until`, and `during` used to be passed non-error args from the iteratee function's callback, but this led to weirdness where the first call of the test function would be passed no args. We have made it so the test function is never passed extra arguments, and only the `doWhilst`, `doUntil`, and `doDuring` functions pass iteratee callback arguments to the test function ([#1217](https://github.com/caolan/async/issues/1217), [#1224](https://github.com/caolan/async/issues/1224)) +- The `q.tasks` array has been renamed `q._tasks` and is now implemented as a doubly linked list (DLL). Any code that used to interact with this array will need to be updated to either use the provided helpers or support DLLs ([#1205](https://github.com/caolan/async/issues/1205)). +- The timing of the `q.saturated()` callback in a `queue` has been modified to better reflect when tasks pushed to the queue will start queueing. ([#724](https://github.com/caolan/async/issues/724), [#1078](https://github.com/caolan/async/issues/1078)) +- Removed `iterator` method in favour of [ES2015 iterator protocol](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators ) which natively supports arrays ([#1237](https://github.com/caolan/async/issues/1237)) +- Dropped support for Component, Jam, SPM, and Volo ([#1175](https://github.com/caolan/async/issues/1175), #[#176](https://github.com/caolan/async/issues/176)) + +## Bug Fixes + +- Improved handling of no dependency cases in `auto` & `autoInject` ([#1147](https://github.com/caolan/async/issues/1147)). +- Fixed a bug where the callback generated by `asyncify` with `Promises` could resolve twice ([#1197](https://github.com/caolan/async/issues/1197)). +- Fixed several documented optional callbacks not actually being optional ([#1223](https://github.com/caolan/async/issues/1223)). + +## Other + +- Added `someSeries` and `everySeries` for symmetry, as well as a complete set of `any`/`anyLimit`/`anySeries` and `all`/`/allLmit`/`allSeries` aliases. +- Added `find` as an alias for `detect. (as well as `findLimit` and `findSeries`). +- Various doc fixes ([#1005](https://github.com/caolan/async/issues/1005), [#1008](https://github.com/caolan/async/issues/1008), [#1010](https://github.com/caolan/async/issues/1010), [#1015](https://github.com/caolan/async/issues/1015), [#1021](https://github.com/caolan/async/issues/1021), [#1037](https://github.com/caolan/async/issues/1037), [#1039](https://github.com/caolan/async/issues/1039), [#1051](https://github.com/caolan/async/issues/1051), [#1102](https://github.com/caolan/async/issues/1102), [#1107](https://github.com/caolan/async/issues/1107), [#1121](https://github.com/caolan/async/issues/1121), [#1123](https://github.com/caolan/async/issues/1123), [#1129](https://github.com/caolan/async/issues/1129), [#1135](https://github.com/caolan/async/issues/1135), [#1138](https://github.com/caolan/async/issues/1138), [#1141](https://github.com/caolan/async/issues/1141), [#1153](https://github.com/caolan/async/issues/1153), [#1216](https://github.com/caolan/async/issues/1216), [#1217](https://github.com/caolan/async/issues/1217), [#1232](https://github.com/caolan/async/issues/1232), [#1233](https://github.com/caolan/async/issues/1233), [#1236](https://github.com/caolan/async/issues/1236), [#1238](https://github.com/caolan/async/issues/1238)) + +Thank you [**@aearly**](github.com/aearly) and [**@megawac**](github.com/megawac) for taking the lead on version 2 of async. + +------------------------------------------ + +# v1.5.2 +- Allow using `"constructor"` as an argument in `memoize` ([#998](https://github.com/caolan/async/issues/998)) +- Give a better error messsage when `auto` dependency checking fails ([#994](https://github.com/caolan/async/issues/994)) +- Various doc updates ([#936](https://github.com/caolan/async/issues/936), [#956](https://github.com/caolan/async/issues/956), [#979](https://github.com/caolan/async/issues/979), [#1002](https://github.com/caolan/async/issues/1002)) + +# v1.5.1 +- Fix issue with `pause` in `queue` with concurrency enabled ([#946](https://github.com/caolan/async/issues/946)) +- `while` and `until` now pass the final result to callback ([#963](https://github.com/caolan/async/issues/963)) +- `auto` will properly handle concurrency when there is no callback ([#966](https://github.com/caolan/async/issues/966)) +- `auto` will no. properly stop execution when an error occurs ([#988](https://github.com/caolan/async/issues/988), [#993](https://github.com/caolan/async/issues/993)) +- Various doc fixes ([#971](https://github.com/caolan/async/issues/971), [#980](https://github.com/caolan/async/issues/980)) + +# v1.5.0 + +- Added `transform`, analogous to [`_.transform`](http://lodash.com/docs#transform) ([#892](https://github.com/caolan/async/issues/892)) +- `map` now returns an object when an object is passed in, rather than array with non-numeric keys. `map` will begin always returning an array with numeric indexes in the next major release. ([#873](https://github.com/caolan/async/issues/873)) +- `auto` now accepts an optional `concurrency` argument to limit the number o. running tasks ([#637](https://github.com/caolan/async/issues/637)) +- Added `queue#workersList()`, to retrieve the lis. of currently running tasks. ([#891](https://github.com/caolan/async/issues/891)) +- Various code simplifications ([#896](https://github.com/caolan/async/issues/896), [#904](https://github.com/caolan/async/issues/904)) +- Various doc fixes :scroll: ([#890](https://github.com/caolan/async/issues/890), [#894](https://github.com/caolan/async/issues/894), [#903](https://github.com/caolan/async/issues/903), [#905](https://github.com/caolan/async/issues/905), [#912](https://github.com/caolan/async/issues/912)) + +# v1.4.2 + +- Ensure coverage files don't get published on npm ([#879](https://github.com/caolan/async/issues/879)) + +# v1.4.1 + +- Add in overlooked `detectLimit` method ([#866](https://github.com/caolan/async/issues/866)) +- Removed unnecessary files from npm releases ([#861](https://github.com/caolan/async/issues/861)) +- Removed usage of a reserved word to prevent :boom: in older environments ([#870](https://github.com/caolan/async/issues/870)) + +# v1.4.0 + +- `asyncify` now supports promises ([#840](https://github.com/caolan/async/issues/840)) +- Added `Limit` versions of `filter` and `reject` ([#836](https://github.com/caolan/async/issues/836)) +- Add `Limit` versions of `detect`, `some` and `every` ([#828](https://github.com/caolan/async/issues/828), [#829](https://github.com/caolan/async/issues/829)) +- `some`, `every` and `detect` now short circuit early ([#828](https://github.com/caolan/async/issues/828), [#829](https://github.com/caolan/async/issues/829)) +- Improve detection of the global object ([#804](https://github.com/caolan/async/issues/804)), enabling use in WebWorkers +- `whilst` now called with arguments from iterator ([#823](https://github.com/caolan/async/issues/823)) +- `during` now gets called with arguments from iterator ([#824](https://github.com/caolan/async/issues/824)) +- Code simplifications and optimizations aplenty ([diff](https://github.com/caolan/async/compare/v1.3.0...v1.4.0)) + + +# v1.3.0 + +New Features: +- Added `constant` +- Added `asyncify`/`wrapSync` for making sync functions work with callbacks. ([#671](https://github.com/caolan/async/issues/671), [#806](https://github.com/caolan/async/issues/806)) +- Added `during` and `doDuring`, which are like `whilst` with an async truth test. ([#800](https://github.com/caolan/async/issues/800)) +- `retry` now accepts an `interval` parameter to specify a delay between retries. ([#793](https://github.com/caolan/async/issues/793)) +- `async` should work better in Web Workers due to better `root` detection ([#804](https://github.com/caolan/async/issues/804)) +- Callbacks are now optional in `whilst`, `doWhilst`, `until`, and `doUntil` ([#642](https://github.com/caolan/async/issues/642)) +- Various internal updates ([#786](https://github.com/caolan/async/issues/786), [#801](https://github.com/caolan/async/issues/801), [#802](https://github.com/caolan/async/issues/802), [#803](https://github.com/caolan/async/issues/803)) +- Various doc fixes ([#790](https://github.com/caolan/async/issues/790), [#794](https://github.com/caolan/async/issues/794)) + +Bug Fixes: +- `cargo` now exposes the `payload` size, and `cargo.payload` can be changed on the fly after the `cargo` is created. ([#740](https://github.com/caolan/async/issues/740), [#744](https://github.com/caolan/async/issues/744), [#783](https://github.com/caolan/async/issues/783)) + + +# v1.2.1 + +Bug Fix: + +- Small regression with synchronous iterator behavior in `eachSeries` with a 1-element array. Before 1.1.0, `eachSeries`'s callback was called on the same tick, which this patch restores. In 2.0.0, it will be called on the next tick. ([#782](https://github.com/caolan/async/issues/782)) + + +# v1.2.0 + +New Features: + +- Added `timesLimit` ([#743](https://github.com/caolan/async/issues/743)) +- `concurrency` can be changed after initialization in `queue` by setting `q.concurrency`. The new concurrency will be reflected the next time a task is processed. ([#747](https://github.com/caolan/async/issues/747), [#772](https://github.com/caolan/async/issues/772)) + +Bug Fixes: + +- Fixed a regression in `each` and family with empty arrays that have additional properties. ([#775](https://github.com/caolan/async/issues/775), [#777](https://github.com/caolan/async/issues/777)) + + +# v1.1.1 + +Bug Fix: + +- Small regression with synchronous iterator behavior in `eachSeries` with a 1-element array. Before 1.1.0, `eachSeries`'s callback was called on the same tick, which this patch restores. In 2.0.0, it will be called on the next tick. ([#782](https://github.com/caolan/async/issues/782)) + + +# v1.1.0 + +New Features: + +- `cargo` now supports all of the same methods and event callbacks as `queue`. +- Added `ensureAsync` - A wrapper that ensures an async function calls its callback on a later tick. ([#769](https://github.com/caolan/async/issues/769)) +- Optimized `map`, `eachOf`, and `waterfall` families of functions +- Passing a `null` or `undefined` array to `map`, `each`, `parallel` and families will be treated as an empty array ([#667](https://github.com/caolan/async/issues/667)). +- The callback is now optional for the composed results of `compose` and `seq`. ([#618](https://github.com/caolan/async/issues/618)) +- Reduced file size by 4kb, (minified version by 1kb) +- Added code coverage through `nyc` and `coveralls` ([#768](https://github.com/caolan/async/issues/768)) + +Bug Fixes: + +- `forever` will no longer stack overflow with a synchronous iterator ([#622](https://github.com/caolan/async/issues/622)) +- `eachLimit` and other limit functions will stop iterating once an error occurs ([#754](https://github.com/caolan/async/issues/754)) +- Always pass `null` in callbacks when there is no error ([#439](https://github.com/caolan/async/issues/439)) +- Ensure proper conditions when calling `drain()` after pushing an empty data set to a queue ([#668](https://github.com/caolan/async/issues/668)) +- `each` and family will properly handle an empty array ([#578](https://github.com/caolan/async/issues/578)) +- `eachSeries` and family will finish if the underlying array is modified during execution ([#557](https://github.com/caolan/async/issues/557)) +- `queue` will throw if a non-function is passed to `q.push()` ([#593](https://github.com/caolan/async/issues/593)) +- Doc fixes ([#629](https://github.com/caolan/async/issues/629), [#766](https://github.com/caolan/async/issues/766)) + + +# v1.0.0 + +No known breaking changes, we are simply complying with semver from here on out. + +Changes: + +- Start using a changelog! +- Add `forEachOf` for iterating over Objects (or to iterate Arrays with indexes available) ([#168](https://github.com/caolan/async/issues/168) [#704](https://github.com/caolan/async/issues/704) [#321](https://github.com/caolan/async/issues/321)) +- Detect deadlocks in `auto` ([#663](https://github.com/caolan/async/issues/663)) +- Better support for require.js ([#527](https://github.com/caolan/async/issues/527)) +- Throw if queue created with concurrency `0` ([#714](https://github.com/caolan/async/issues/714)) +- Fix unneeded iteration in `queue.resume()` ([#758](https://github.com/caolan/async/issues/758)) +- Guard against timer mocking overriding `setImmediate` ([#609](https://github.com/caolan/async/issues/609) [#611](https://github.com/caolan/async/issues/611)) +- Miscellaneous doc fixes ([#542](https://github.com/caolan/async/issues/542) [#596](https://github.com/caolan/async/issues/596) [#615](https://github.com/caolan/async/issues/615) [#628](https://github.com/caolan/async/issues/628) [#631](https://github.com/caolan/async/issues/631) [#690](https://github.com/caolan/async/issues/690) [#729](https://github.com/caolan/async/issues/729)) +- Use single noop function internally ([#546](https://github.com/caolan/async/issues/546)) +- Optimize internal `_each`, `_map` and `_keys` functions. diff --git a/node_modules/async/LICENSE b/node_modules/async/LICENSE new file mode 100644 index 0000000..b18aed6 --- /dev/null +++ b/node_modules/async/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2010-2018 Caolan McMahon + +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/async/README.md b/node_modules/async/README.md new file mode 100644 index 0000000..77f645e --- /dev/null +++ b/node_modules/async/README.md @@ -0,0 +1,59 @@ +![Async Logo](https://raw.githubusercontent.com/caolan/async/master/logo/async-logo_readme.jpg) + +![Github Actions CI status](https://github.com/caolan/async/actions/workflows/ci.yml/badge.svg) +[![NPM version](https://img.shields.io/npm/v/async.svg)](https://www.npmjs.com/package/async) +[![Coverage Status](https://coveralls.io/repos/caolan/async/badge.svg?branch=master)](https://coveralls.io/r/caolan/async?branch=master) +[![Join the chat at https://gitter.im/caolan/async](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/caolan/async?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) +[![jsDelivr Hits](https://data.jsdelivr.com/v1/package/npm/async/badge?style=rounded)](https://www.jsdelivr.com/package/npm/async) + + + +Async is a utility module which provides straight-forward, powerful functions for working with [asynchronous JavaScript](http://caolan.github.io/async/v3/global.html). Although originally designed for use with [Node.js](https://nodejs.org/) and installable via `npm i async`, it can also be used directly in the browser. A ESM/MJS version is included in the main `async` package that should automatically be used with compatible bundlers such as Webpack and Rollup. + +A pure ESM version of Async is available as [`async-es`](https://www.npmjs.com/package/async-es). + +For Documentation, visit + +*For Async v1.5.x documentation, go [HERE](https://github.com/caolan/async/blob/v1.5.2/README.md)* + + +```javascript +// for use with Node-style callbacks... +var async = require("async"); + +var obj = {dev: "/dev.json", test: "/test.json", prod: "/prod.json"}; +var configs = {}; + +async.forEachOf(obj, (value, key, callback) => { + fs.readFile(__dirname + value, "utf8", (err, data) => { + if (err) return callback(err); + try { + configs[key] = JSON.parse(data); + } catch (e) { + return callback(e); + } + callback(); + }); +}, err => { + if (err) console.error(err.message); + // configs is now a map of JSON data + doSomethingWith(configs); +}); +``` + +```javascript +var async = require("async"); + +// ...or ES2017 async functions +async.mapLimit(urls, 5, async function(url) { + const response = await fetch(url) + return response.body +}, (err, results) => { + if (err) throw err + // results is now an array of the response bodies + console.log(results) +}) +``` diff --git a/node_modules/async/all.js b/node_modules/async/all.js new file mode 100644 index 0000000..622b301 --- /dev/null +++ b/node_modules/async/all.js @@ -0,0 +1,119 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createTester = require('./internal/createTester.js'); + +var _createTester2 = _interopRequireDefault(_createTester); + +var _eachOf = require('./eachOf.js'); + +var _eachOf2 = _interopRequireDefault(_eachOf); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Returns `true` if every element in `coll` satisfies an async test. If any + * iteratee call returns `false`, the main `callback` is immediately called. + * + * @name every + * @static + * @memberOf module:Collections + * @method + * @alias all + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collection in parallel. + * The iteratee must complete with a boolean result value. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Result will be either `true` or `false` + * depending on the values of the async tests. Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * // dir4 does not exist + * + * const fileList = ['dir1/file1.txt','dir2/file3.txt','dir3/file5.txt']; + * const withMissingFileList = ['file1.txt','file2.txt','file4.txt']; + * + * // asynchronous function that checks if a file exists + * function fileExists(file, callback) { + * fs.access(file, fs.constants.F_OK, (err) => { + * callback(null, !err); + * }); + * } + * + * // Using callbacks + * async.every(fileList, fileExists, function(err, result) { + * console.log(result); + * // true + * // result is true since every file exists + * }); + * + * async.every(withMissingFileList, fileExists, function(err, result) { + * console.log(result); + * // false + * // result is false since NOT every file exists + * }); + * + * // Using Promises + * async.every(fileList, fileExists) + * .then( result => { + * console.log(result); + * // true + * // result is true since every file exists + * }).catch( err => { + * console.log(err); + * }); + * + * async.every(withMissingFileList, fileExists) + * .then( result => { + * console.log(result); + * // false + * // result is false since NOT every file exists + * }).catch( err => { + * console.log(err); + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.every(fileList, fileExists); + * console.log(result); + * // true + * // result is true since every file exists + * } + * catch (err) { + * console.log(err); + * } + * } + * + * async () => { + * try { + * let result = await async.every(withMissingFileList, fileExists); + * console.log(result); + * // false + * // result is false since NOT every file exists + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ +function every(coll, iteratee, callback) { + return (0, _createTester2.default)(bool => !bool, res => !res)(_eachOf2.default, coll, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(every, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/allLimit.js b/node_modules/async/allLimit.js new file mode 100644 index 0000000..375e126 --- /dev/null +++ b/node_modules/async/allLimit.js @@ -0,0 +1,46 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createTester = require('./internal/createTester.js'); + +var _createTester2 = _interopRequireDefault(_createTester); + +var _eachOfLimit = require('./internal/eachOfLimit.js'); + +var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`every`]{@link module:Collections.every} but runs a maximum of `limit` async operations at a time. + * + * @name everyLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.every]{@link module:Collections.every} + * @alias allLimit + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collection in parallel. + * The iteratee must complete with a boolean result value. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Result will be either `true` or `false` + * depending on the values of the async tests. Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + */ +function everyLimit(coll, limit, iteratee, callback) { + return (0, _createTester2.default)(bool => !bool, res => !res)((0, _eachOfLimit2.default)(limit), coll, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(everyLimit, 4); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/allSeries.js b/node_modules/async/allSeries.js new file mode 100644 index 0000000..9a6bf7d --- /dev/null +++ b/node_modules/async/allSeries.js @@ -0,0 +1,45 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createTester = require('./internal/createTester.js'); + +var _createTester2 = _interopRequireDefault(_createTester); + +var _eachOfSeries = require('./eachOfSeries.js'); + +var _eachOfSeries2 = _interopRequireDefault(_eachOfSeries); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`every`]{@link module:Collections.every} but runs only a single async operation at a time. + * + * @name everySeries + * @static + * @memberOf module:Collections + * @method + * @see [async.every]{@link module:Collections.every} + * @alias allSeries + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collection in series. + * The iteratee must complete with a boolean result value. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Result will be either `true` or `false` + * depending on the values of the async tests. Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + */ +function everySeries(coll, iteratee, callback) { + return (0, _createTester2.default)(bool => !bool, res => !res)(_eachOfSeries2.default, coll, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(everySeries, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/any.js b/node_modules/async/any.js new file mode 100644 index 0000000..a5bd328 --- /dev/null +++ b/node_modules/async/any.js @@ -0,0 +1,122 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createTester = require('./internal/createTester.js'); + +var _createTester2 = _interopRequireDefault(_createTester); + +var _eachOf = require('./eachOf.js'); + +var _eachOf2 = _interopRequireDefault(_eachOf); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Returns `true` if at least one element in the `coll` satisfies an async test. + * If any iteratee call returns `true`, the main `callback` is immediately + * called. + * + * @name some + * @static + * @memberOf module:Collections + * @method + * @alias any + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collections in parallel. + * The iteratee should complete with a boolean `result` value. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called as soon as any + * iteratee returns `true`, or after all the iteratee functions have finished. + * Result will be either `true` or `false` depending on the values of the async + * tests. Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * // dir4 does not exist + * + * // asynchronous function that checks if a file exists + * function fileExists(file, callback) { + * fs.access(file, fs.constants.F_OK, (err) => { + * callback(null, !err); + * }); + * } + * + * // Using callbacks + * async.some(['dir1/missing.txt','dir2/missing.txt','dir3/file5.txt'], fileExists, + * function(err, result) { + * console.log(result); + * // true + * // result is true since some file in the list exists + * } + *); + * + * async.some(['dir1/missing.txt','dir2/missing.txt','dir4/missing.txt'], fileExists, + * function(err, result) { + * console.log(result); + * // false + * // result is false since none of the files exists + * } + *); + * + * // Using Promises + * async.some(['dir1/missing.txt','dir2/missing.txt','dir3/file5.txt'], fileExists) + * .then( result => { + * console.log(result); + * // true + * // result is true since some file in the list exists + * }).catch( err => { + * console.log(err); + * }); + * + * async.some(['dir1/missing.txt','dir2/missing.txt','dir4/missing.txt'], fileExists) + * .then( result => { + * console.log(result); + * // false + * // result is false since none of the files exists + * }).catch( err => { + * console.log(err); + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.some(['dir1/missing.txt','dir2/missing.txt','dir3/file5.txt'], fileExists); + * console.log(result); + * // true + * // result is true since some file in the list exists + * } + * catch (err) { + * console.log(err); + * } + * } + * + * async () => { + * try { + * let result = await async.some(['dir1/missing.txt','dir2/missing.txt','dir4/missing.txt'], fileExists); + * console.log(result); + * // false + * // result is false since none of the files exists + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ +function some(coll, iteratee, callback) { + return (0, _createTester2.default)(Boolean, res => res)(_eachOf2.default, coll, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(some, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/anyLimit.js b/node_modules/async/anyLimit.js new file mode 100644 index 0000000..3a8096f --- /dev/null +++ b/node_modules/async/anyLimit.js @@ -0,0 +1,47 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createTester = require('./internal/createTester.js'); + +var _createTester2 = _interopRequireDefault(_createTester); + +var _eachOfLimit = require('./internal/eachOfLimit.js'); + +var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`some`]{@link module:Collections.some} but runs a maximum of `limit` async operations at a time. + * + * @name someLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.some]{@link module:Collections.some} + * @alias anyLimit + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collections in parallel. + * The iteratee should complete with a boolean `result` value. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called as soon as any + * iteratee returns `true`, or after all the iteratee functions have finished. + * Result will be either `true` or `false` depending on the values of the async + * tests. Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + */ +function someLimit(coll, limit, iteratee, callback) { + return (0, _createTester2.default)(Boolean, res => res)((0, _eachOfLimit2.default)(limit), coll, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(someLimit, 4); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/anySeries.js b/node_modules/async/anySeries.js new file mode 100644 index 0000000..51aad19 --- /dev/null +++ b/node_modules/async/anySeries.js @@ -0,0 +1,46 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createTester = require('./internal/createTester.js'); + +var _createTester2 = _interopRequireDefault(_createTester); + +var _eachOfSeries = require('./eachOfSeries.js'); + +var _eachOfSeries2 = _interopRequireDefault(_eachOfSeries); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`some`]{@link module:Collections.some} but runs only a single async operation at a time. + * + * @name someSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.some]{@link module:Collections.some} + * @alias anySeries + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collections in series. + * The iteratee should complete with a boolean `result` value. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called as soon as any + * iteratee returns `true`, or after all the iteratee functions have finished. + * Result will be either `true` or `false` depending on the values of the async + * tests. Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + */ +function someSeries(coll, iteratee, callback) { + return (0, _createTester2.default)(Boolean, res => res)(_eachOfSeries2.default, coll, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(someSeries, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/apply.js b/node_modules/async/apply.js new file mode 100644 index 0000000..d40784f --- /dev/null +++ b/node_modules/async/apply.js @@ -0,0 +1,11 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +exports.default = function (fn, ...args) { + return (...callArgs) => fn(...args, ...callArgs); +}; + +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/applyEach.js b/node_modules/async/applyEach.js new file mode 100644 index 0000000..841842c --- /dev/null +++ b/node_modules/async/applyEach.js @@ -0,0 +1,57 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _applyEach = require('./internal/applyEach.js'); + +var _applyEach2 = _interopRequireDefault(_applyEach); + +var _map = require('./map.js'); + +var _map2 = _interopRequireDefault(_map); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Applies the provided arguments to each function in the array, calling + * `callback` after all functions have completed. If you only provide the first + * argument, `fns`, then it will return a function which lets you pass in the + * arguments as if it were a single function call. If more arguments are + * provided, `callback` is required while `args` is still optional. The results + * for each of the applied async functions are passed to the final callback + * as an array. + * + * @name applyEach + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {Array|Iterable|AsyncIterable|Object} fns - A collection of {@link AsyncFunction}s + * to all call with the same arguments + * @param {...*} [args] - any number of separate arguments to pass to the + * function. + * @param {Function} [callback] - the final argument should be the callback, + * called when all functions have completed processing. + * @returns {AsyncFunction} - Returns a function that takes no args other than + * an optional callback, that is the result of applying the `args` to each + * of the functions. + * @example + * + * const appliedFn = async.applyEach([enableSearch, updateSchema], 'bucket') + * + * appliedFn((err, results) => { + * // results[0] is the results for `enableSearch` + * // results[1] is the results for `updateSchema` + * }); + * + * // partial application example: + * async.each( + * buckets, + * async (bucket) => async.applyEach([enableSearch, updateSchema], bucket)(), + * callback + * ); + */ +exports.default = (0, _applyEach2.default)(_map2.default); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/applyEachSeries.js b/node_modules/async/applyEachSeries.js new file mode 100644 index 0000000..f5267f6 --- /dev/null +++ b/node_modules/async/applyEachSeries.js @@ -0,0 +1,37 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _applyEach = require('./internal/applyEach.js'); + +var _applyEach2 = _interopRequireDefault(_applyEach); + +var _mapSeries = require('./mapSeries.js'); + +var _mapSeries2 = _interopRequireDefault(_mapSeries); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`applyEach`]{@link module:ControlFlow.applyEach} but runs only a single async operation at a time. + * + * @name applyEachSeries + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.applyEach]{@link module:ControlFlow.applyEach} + * @category Control Flow + * @param {Array|Iterable|AsyncIterable|Object} fns - A collection of {@link AsyncFunction}s to all + * call with the same arguments + * @param {...*} [args] - any number of separate arguments to pass to the + * function. + * @param {Function} [callback] - the final argument should be the callback, + * called when all functions have completed processing. + * @returns {AsyncFunction} - A function, that when called, is the result of + * appling the `args` to the list of functions. It takes no args, other than + * a callback. + */ +exports.default = (0, _applyEach2.default)(_mapSeries2.default); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/asyncify.js b/node_modules/async/asyncify.js new file mode 100644 index 0000000..ddc3f02 --- /dev/null +++ b/node_modules/async/asyncify.js @@ -0,0 +1,118 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = asyncify; + +var _initialParams = require('./internal/initialParams.js'); + +var _initialParams2 = _interopRequireDefault(_initialParams); + +var _setImmediate = require('./internal/setImmediate.js'); + +var _setImmediate2 = _interopRequireDefault(_setImmediate); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Take a sync function and make it async, passing its return value to a + * callback. This is useful for plugging sync functions into a waterfall, + * series, or other async functions. Any arguments passed to the generated + * function will be passed to the wrapped function (except for the final + * callback argument). Errors thrown will be passed to the callback. + * + * If the function passed to `asyncify` returns a Promise, that promises's + * resolved/rejected state will be used to call the callback, rather than simply + * the synchronous return value. + * + * This also means you can asyncify ES2017 `async` functions. + * + * @name asyncify + * @static + * @memberOf module:Utils + * @method + * @alias wrapSync + * @category Util + * @param {Function} func - The synchronous function, or Promise-returning + * function to convert to an {@link AsyncFunction}. + * @returns {AsyncFunction} An asynchronous wrapper of the `func`. To be + * invoked with `(args..., callback)`. + * @example + * + * // passing a regular synchronous function + * async.waterfall([ + * async.apply(fs.readFile, filename, "utf8"), + * async.asyncify(JSON.parse), + * function (data, next) { + * // data is the result of parsing the text. + * // If there was a parsing error, it would have been caught. + * } + * ], callback); + * + * // passing a function returning a promise + * async.waterfall([ + * async.apply(fs.readFile, filename, "utf8"), + * async.asyncify(function (contents) { + * return db.model.create(contents); + * }), + * function (model, next) { + * // `model` is the instantiated model object. + * // If there was an error, this function would be skipped. + * } + * ], callback); + * + * // es2017 example, though `asyncify` is not needed if your JS environment + * // supports async functions out of the box + * var q = async.queue(async.asyncify(async function(file) { + * var intermediateStep = await processFile(file); + * return await somePromise(intermediateStep) + * })); + * + * q.push(files); + */ +function asyncify(func) { + if ((0, _wrapAsync.isAsync)(func)) { + return function (...args /*, callback*/) { + const callback = args.pop(); + const promise = func.apply(this, args); + return handlePromise(promise, callback); + }; + } + + return (0, _initialParams2.default)(function (args, callback) { + var result; + try { + result = func.apply(this, args); + } catch (e) { + return callback(e); + } + // if result is Promise object + if (result && typeof result.then === 'function') { + return handlePromise(result, callback); + } else { + callback(null, result); + } + }); +} + +function handlePromise(promise, callback) { + return promise.then(value => { + invokeCallback(callback, null, value); + }, err => { + invokeCallback(callback, err && (err instanceof Error || err.message) ? err : new Error(err)); + }); +} + +function invokeCallback(callback, error, value) { + try { + callback(error, value); + } catch (err) { + (0, _setImmediate2.default)(e => { + throw e; + }, err); + } +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/auto.js b/node_modules/async/auto.js new file mode 100644 index 0000000..163c4f2 --- /dev/null +++ b/node_modules/async/auto.js @@ -0,0 +1,333 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = auto; + +var _once = require('./internal/once.js'); + +var _once2 = _interopRequireDefault(_once); + +var _onlyOnce = require('./internal/onlyOnce.js'); + +var _onlyOnce2 = _interopRequireDefault(_onlyOnce); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _promiseCallback = require('./internal/promiseCallback.js'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Determines the best order for running the {@link AsyncFunction}s in `tasks`, based on + * their requirements. Each function can optionally depend on other functions + * being completed first, and each function is run as soon as its requirements + * are satisfied. + * + * If any of the {@link AsyncFunction}s pass an error to their callback, the `auto` sequence + * will stop. Further tasks will not execute (so any other functions depending + * on it will not run), and the main `callback` is immediately called with the + * error. + * + * {@link AsyncFunction}s also receive an object containing the results of functions which + * have completed so far as the first argument, if they have dependencies. If a + * task function has no dependencies, it will only be passed a callback. + * + * @name auto + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {Object} tasks - An object. Each of its properties is either a + * function or an array of requirements, with the {@link AsyncFunction} itself the last item + * in the array. The object's key of a property serves as the name of the task + * defined by that property, i.e. can be used when specifying requirements for + * other tasks. The function receives one or two arguments: + * * a `results` object, containing the results of the previously executed + * functions, only passed if the task has any dependencies, + * * a `callback(err, result)` function, which must be called when finished, + * passing an `error` (which can be `null`) and the result of the function's + * execution. + * @param {number} [concurrency=Infinity] - An optional `integer` for + * determining the maximum number of tasks that can be run in parallel. By + * default, as many as possible. + * @param {Function} [callback] - An optional callback which is called when all + * the tasks have been completed. It receives the `err` argument if any `tasks` + * pass an error to their callback. Results are always returned; however, if an + * error occurs, no further `tasks` will be performed, and the results object + * will only contain partial results. Invoked with (err, results). + * @returns {Promise} a promise, if a callback is not passed + * @example + * + * //Using Callbacks + * async.auto({ + * get_data: function(callback) { + * // async code to get some data + * callback(null, 'data', 'converted to array'); + * }, + * make_folder: function(callback) { + * // async code to create a directory to store a file in + * // this is run at the same time as getting the data + * callback(null, 'folder'); + * }, + * write_file: ['get_data', 'make_folder', function(results, callback) { + * // once there is some data and the directory exists, + * // write the data to a file in the directory + * callback(null, 'filename'); + * }], + * email_link: ['write_file', function(results, callback) { + * // once the file is written let's email a link to it... + * callback(null, {'file':results.write_file, 'email':'user@example.com'}); + * }] + * }, function(err, results) { + * if (err) { + * console.log('err = ', err); + * } + * console.log('results = ', results); + * // results = { + * // get_data: ['data', 'converted to array'] + * // make_folder; 'folder', + * // write_file: 'filename' + * // email_link: { file: 'filename', email: 'user@example.com' } + * // } + * }); + * + * //Using Promises + * async.auto({ + * get_data: function(callback) { + * console.log('in get_data'); + * // async code to get some data + * callback(null, 'data', 'converted to array'); + * }, + * make_folder: function(callback) { + * console.log('in make_folder'); + * // async code to create a directory to store a file in + * // this is run at the same time as getting the data + * callback(null, 'folder'); + * }, + * write_file: ['get_data', 'make_folder', function(results, callback) { + * // once there is some data and the directory exists, + * // write the data to a file in the directory + * callback(null, 'filename'); + * }], + * email_link: ['write_file', function(results, callback) { + * // once the file is written let's email a link to it... + * callback(null, {'file':results.write_file, 'email':'user@example.com'}); + * }] + * }).then(results => { + * console.log('results = ', results); + * // results = { + * // get_data: ['data', 'converted to array'] + * // make_folder; 'folder', + * // write_file: 'filename' + * // email_link: { file: 'filename', email: 'user@example.com' } + * // } + * }).catch(err => { + * console.log('err = ', err); + * }); + * + * //Using async/await + * async () => { + * try { + * let results = await async.auto({ + * get_data: function(callback) { + * // async code to get some data + * callback(null, 'data', 'converted to array'); + * }, + * make_folder: function(callback) { + * // async code to create a directory to store a file in + * // this is run at the same time as getting the data + * callback(null, 'folder'); + * }, + * write_file: ['get_data', 'make_folder', function(results, callback) { + * // once there is some data and the directory exists, + * // write the data to a file in the directory + * callback(null, 'filename'); + * }], + * email_link: ['write_file', function(results, callback) { + * // once the file is written let's email a link to it... + * callback(null, {'file':results.write_file, 'email':'user@example.com'}); + * }] + * }); + * console.log('results = ', results); + * // results = { + * // get_data: ['data', 'converted to array'] + * // make_folder; 'folder', + * // write_file: 'filename' + * // email_link: { file: 'filename', email: 'user@example.com' } + * // } + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ +function auto(tasks, concurrency, callback) { + if (typeof concurrency !== 'number') { + // concurrency is optional, shift the args. + callback = concurrency; + concurrency = null; + } + callback = (0, _once2.default)(callback || (0, _promiseCallback.promiseCallback)()); + var numTasks = Object.keys(tasks).length; + if (!numTasks) { + return callback(null); + } + if (!concurrency) { + concurrency = numTasks; + } + + var results = {}; + var runningTasks = 0; + var canceled = false; + var hasError = false; + + var listeners = Object.create(null); + + var readyTasks = []; + + // for cycle detection: + var readyToCheck = []; // tasks that have been identified as reachable + // without the possibility of returning to an ancestor task + var uncheckedDependencies = {}; + + Object.keys(tasks).forEach(key => { + var task = tasks[key]; + if (!Array.isArray(task)) { + // no dependencies + enqueueTask(key, [task]); + readyToCheck.push(key); + return; + } + + var dependencies = task.slice(0, task.length - 1); + var remainingDependencies = dependencies.length; + if (remainingDependencies === 0) { + enqueueTask(key, task); + readyToCheck.push(key); + return; + } + uncheckedDependencies[key] = remainingDependencies; + + dependencies.forEach(dependencyName => { + if (!tasks[dependencyName]) { + throw new Error('async.auto task `' + key + '` has a non-existent dependency `' + dependencyName + '` in ' + dependencies.join(', ')); + } + addListener(dependencyName, () => { + remainingDependencies--; + if (remainingDependencies === 0) { + enqueueTask(key, task); + } + }); + }); + }); + + checkForDeadlocks(); + processQueue(); + + function enqueueTask(key, task) { + readyTasks.push(() => runTask(key, task)); + } + + function processQueue() { + if (canceled) return; + if (readyTasks.length === 0 && runningTasks === 0) { + return callback(null, results); + } + while (readyTasks.length && runningTasks < concurrency) { + var run = readyTasks.shift(); + run(); + } + } + + function addListener(taskName, fn) { + var taskListeners = listeners[taskName]; + if (!taskListeners) { + taskListeners = listeners[taskName] = []; + } + + taskListeners.push(fn); + } + + function taskComplete(taskName) { + var taskListeners = listeners[taskName] || []; + taskListeners.forEach(fn => fn()); + processQueue(); + } + + function runTask(key, task) { + if (hasError) return; + + var taskCallback = (0, _onlyOnce2.default)((err, ...result) => { + runningTasks--; + if (err === false) { + canceled = true; + return; + } + if (result.length < 2) { + [result] = result; + } + if (err) { + var safeResults = {}; + Object.keys(results).forEach(rkey => { + safeResults[rkey] = results[rkey]; + }); + safeResults[key] = result; + hasError = true; + listeners = Object.create(null); + if (canceled) return; + callback(err, safeResults); + } else { + results[key] = result; + taskComplete(key); + } + }); + + runningTasks++; + var taskFn = (0, _wrapAsync2.default)(task[task.length - 1]); + if (task.length > 1) { + taskFn(results, taskCallback); + } else { + taskFn(taskCallback); + } + } + + function checkForDeadlocks() { + // Kahn's algorithm + // https://en.wikipedia.org/wiki/Topological_sorting#Kahn.27s_algorithm + // http://connalle.blogspot.com/2013/10/topological-sortingkahn-algorithm.html + var currentTask; + var counter = 0; + while (readyToCheck.length) { + currentTask = readyToCheck.pop(); + counter++; + getDependents(currentTask).forEach(dependent => { + if (--uncheckedDependencies[dependent] === 0) { + readyToCheck.push(dependent); + } + }); + } + + if (counter !== numTasks) { + throw new Error('async.auto cannot execute tasks due to a recursive dependency'); + } + } + + function getDependents(taskName) { + var result = []; + Object.keys(tasks).forEach(key => { + const task = tasks[key]; + if (Array.isArray(task) && task.indexOf(taskName) >= 0) { + result.push(key); + } + }); + return result; + } + + return callback[_promiseCallback.PROMISE_SYMBOL]; +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/autoInject.js b/node_modules/async/autoInject.js new file mode 100644 index 0000000..38eac15 --- /dev/null +++ b/node_modules/async/autoInject.js @@ -0,0 +1,182 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = autoInject; + +var _auto = require('./auto.js'); + +var _auto2 = _interopRequireDefault(_auto); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var FN_ARGS = /^(?:async\s+)?(?:function)?\s*\w*\s*\(\s*([^)]+)\s*\)(?:\s*{)/; +var ARROW_FN_ARGS = /^(?:async\s+)?\(?\s*([^)=]+)\s*\)?(?:\s*=>)/; +var FN_ARG_SPLIT = /,/; +var FN_ARG = /(=.+)?(\s*)$/; + +function stripComments(string) { + let stripped = ''; + let index = 0; + let endBlockComment = string.indexOf('*/'); + while (index < string.length) { + if (string[index] === '/' && string[index + 1] === '/') { + // inline comment + let endIndex = string.indexOf('\n', index); + index = endIndex === -1 ? string.length : endIndex; + } else if (endBlockComment !== -1 && string[index] === '/' && string[index + 1] === '*') { + // block comment + let endIndex = string.indexOf('*/', index); + if (endIndex !== -1) { + index = endIndex + 2; + endBlockComment = string.indexOf('*/', index); + } else { + stripped += string[index]; + index++; + } + } else { + stripped += string[index]; + index++; + } + } + return stripped; +} + +function parseParams(func) { + const src = stripComments(func.toString()); + let match = src.match(FN_ARGS); + if (!match) { + match = src.match(ARROW_FN_ARGS); + } + if (!match) throw new Error('could not parse args in autoInject\nSource:\n' + src); + let [, args] = match; + return args.replace(/\s/g, '').split(FN_ARG_SPLIT).map(arg => arg.replace(FN_ARG, '').trim()); +} + +/** + * A dependency-injected version of the [async.auto]{@link module:ControlFlow.auto} function. Dependent + * tasks are specified as parameters to the function, after the usual callback + * parameter, with the parameter names matching the names of the tasks it + * depends on. This can provide even more readable task graphs which can be + * easier to maintain. + * + * If a final callback is specified, the task results are similarly injected, + * specified as named parameters after the initial error parameter. + * + * The autoInject function is purely syntactic sugar and its semantics are + * otherwise equivalent to [async.auto]{@link module:ControlFlow.auto}. + * + * @name autoInject + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.auto]{@link module:ControlFlow.auto} + * @category Control Flow + * @param {Object} tasks - An object, each of whose properties is an {@link AsyncFunction} of + * the form 'func([dependencies...], callback). The object's key of a property + * serves as the name of the task defined by that property, i.e. can be used + * when specifying requirements for other tasks. + * * The `callback` parameter is a `callback(err, result)` which must be called + * when finished, passing an `error` (which can be `null`) and the result of + * the function's execution. The remaining parameters name other tasks on + * which the task is dependent, and the results from those tasks are the + * arguments of those parameters. + * @param {Function} [callback] - An optional callback which is called when all + * the tasks have been completed. It receives the `err` argument if any `tasks` + * pass an error to their callback, and a `results` object with any completed + * task results, similar to `auto`. + * @returns {Promise} a promise, if no callback is passed + * @example + * + * // The example from `auto` can be rewritten as follows: + * async.autoInject({ + * get_data: function(callback) { + * // async code to get some data + * callback(null, 'data', 'converted to array'); + * }, + * make_folder: function(callback) { + * // async code to create a directory to store a file in + * // this is run at the same time as getting the data + * callback(null, 'folder'); + * }, + * write_file: function(get_data, make_folder, callback) { + * // once there is some data and the directory exists, + * // write the data to a file in the directory + * callback(null, 'filename'); + * }, + * email_link: function(write_file, callback) { + * // once the file is written let's email a link to it... + * // write_file contains the filename returned by write_file. + * callback(null, {'file':write_file, 'email':'user@example.com'}); + * } + * }, function(err, results) { + * console.log('err = ', err); + * console.log('email_link = ', results.email_link); + * }); + * + * // If you are using a JS minifier that mangles parameter names, `autoInject` + * // will not work with plain functions, since the parameter names will be + * // collapsed to a single letter identifier. To work around this, you can + * // explicitly specify the names of the parameters your task function needs + * // in an array, similar to Angular.js dependency injection. + * + * // This still has an advantage over plain `auto`, since the results a task + * // depends on are still spread into arguments. + * async.autoInject({ + * //... + * write_file: ['get_data', 'make_folder', function(get_data, make_folder, callback) { + * callback(null, 'filename'); + * }], + * email_link: ['write_file', function(write_file, callback) { + * callback(null, {'file':write_file, 'email':'user@example.com'}); + * }] + * //... + * }, function(err, results) { + * console.log('err = ', err); + * console.log('email_link = ', results.email_link); + * }); + */ +function autoInject(tasks, callback) { + var newTasks = {}; + + Object.keys(tasks).forEach(key => { + var taskFn = tasks[key]; + var params; + var fnIsAsync = (0, _wrapAsync.isAsync)(taskFn); + var hasNoDeps = !fnIsAsync && taskFn.length === 1 || fnIsAsync && taskFn.length === 0; + + if (Array.isArray(taskFn)) { + params = [...taskFn]; + taskFn = params.pop(); + + newTasks[key] = params.concat(params.length > 0 ? newTask : taskFn); + } else if (hasNoDeps) { + // no dependencies, use the function as-is + newTasks[key] = taskFn; + } else { + params = parseParams(taskFn); + if (taskFn.length === 0 && !fnIsAsync && params.length === 0) { + throw new Error("autoInject task functions require explicit parameters."); + } + + // remove callback param + if (!fnIsAsync) params.pop(); + + newTasks[key] = params.concat(newTask); + } + + function newTask(results, taskCb) { + var newArgs = params.map(name => results[name]); + newArgs.push(taskCb); + (0, _wrapAsync2.default)(taskFn)(...newArgs); + } + }); + + return (0, _auto2.default)(newTasks, callback); +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/bower.json b/node_modules/async/bower.json new file mode 100644 index 0000000..390c650 --- /dev/null +++ b/node_modules/async/bower.json @@ -0,0 +1,17 @@ +{ + "name": "async", + "main": "dist/async.js", + "ignore": [ + "bower_components", + "lib", + "test", + "node_modules", + "perf", + "support", + "**/.*", + "*.config.js", + "*.json", + "index.js", + "Makefile" + ] +} diff --git a/node_modules/async/cargo.js b/node_modules/async/cargo.js new file mode 100644 index 0000000..d4abd21 --- /dev/null +++ b/node_modules/async/cargo.js @@ -0,0 +1,63 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = cargo; + +var _queue = require('./internal/queue.js'); + +var _queue2 = _interopRequireDefault(_queue); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Creates a `cargo` object with the specified payload. Tasks added to the + * cargo will be processed altogether (up to the `payload` limit). If the + * `worker` is in progress, the task is queued until it becomes available. Once + * the `worker` has completed some tasks, each callback of those tasks is + * called. Check out [these](https://camo.githubusercontent.com/6bbd36f4cf5b35a0f11a96dcd2e97711ffc2fb37/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130382f62626330636662302d356632392d313165322d393734662d3333393763363464633835382e676966) [animations](https://camo.githubusercontent.com/f4810e00e1c5f5f8addbe3e9f49064fd5d102699/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130312f38346339323036362d356632392d313165322d383134662d3964336430323431336266642e676966) + * for how `cargo` and `queue` work. + * + * While [`queue`]{@link module:ControlFlow.queue} passes only one task to one of a group of workers + * at a time, cargo passes an array of tasks to a single worker, repeating + * when the worker is finished. + * + * @name cargo + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.queue]{@link module:ControlFlow.queue} + * @category Control Flow + * @param {AsyncFunction} worker - An asynchronous function for processing an array + * of queued tasks. Invoked with `(tasks, callback)`. + * @param {number} [payload=Infinity] - An optional `integer` for determining + * how many tasks should be processed per round; if omitted, the default is + * unlimited. + * @returns {module:ControlFlow.QueueObject} A cargo object to manage the tasks. Callbacks can + * attached as certain properties to listen for specific events during the + * lifecycle of the cargo and inner queue. + * @example + * + * // create a cargo object with payload 2 + * var cargo = async.cargo(function(tasks, callback) { + * for (var i=0; i { + * console.log(results); + * // [ 'file1.txt', 'file2.txt', 'file3.txt', 'file4.txt', file5.txt ] + * }).catch(err => { + * console.log(err); + * }); + * + * // Error Handling + * async.concat(withMissingDirectoryList, fs.readdir) + * .then(results => { + * console.log(results); + * }).catch(err => { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * // since dir4 does not exist + * }); + * + * // Using async/await + * async () => { + * try { + * let results = await async.concat(directoryList, fs.readdir); + * console.log(results); + * // [ 'file1.txt', 'file2.txt', 'file3.txt', 'file4.txt', file5.txt ] + * } catch (err) { + * console.log(err); + * } + * } + * + * // Error Handling + * async () => { + * try { + * let results = await async.concat(withMissingDirectoryList, fs.readdir); + * console.log(results); + * } catch (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * // since dir4 does not exist + * } + * } + * + */ +function concat(coll, iteratee, callback) { + return (0, _concatLimit2.default)(coll, Infinity, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(concat, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/concatLimit.js b/node_modules/async/concatLimit.js new file mode 100644 index 0000000..a27cc7d --- /dev/null +++ b/node_modules/async/concatLimit.js @@ -0,0 +1,60 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _mapLimit = require('./mapLimit.js'); + +var _mapLimit2 = _interopRequireDefault(_mapLimit); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`concat`]{@link module:Collections.concat} but runs a maximum of `limit` async operations at a time. + * + * @name concatLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.concat]{@link module:Collections.concat} + * @category Collection + * @alias flatMapLimit + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - A function to apply to each item in `coll`, + * which should use an array as its result. Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished, or an error occurs. Results is an array + * containing the concatenated results of the `iteratee` function. Invoked with + * (err, results). + * @returns A Promise, if no callback is passed + */ +function concatLimit(coll, limit, iteratee, callback) { + var _iteratee = (0, _wrapAsync2.default)(iteratee); + return (0, _mapLimit2.default)(coll, limit, (val, iterCb) => { + _iteratee(val, (err, ...args) => { + if (err) return iterCb(err); + return iterCb(err, args); + }); + }, (err, mapResults) => { + var result = []; + for (var i = 0; i < mapResults.length; i++) { + if (mapResults[i]) { + result = result.concat(...mapResults[i]); + } + } + + return callback(err, result); + }); +} +exports.default = (0, _awaitify2.default)(concatLimit, 4); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/concatSeries.js b/node_modules/async/concatSeries.js new file mode 100644 index 0000000..332de3f --- /dev/null +++ b/node_modules/async/concatSeries.js @@ -0,0 +1,41 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _concatLimit = require('./concatLimit.js'); + +var _concatLimit2 = _interopRequireDefault(_concatLimit); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`concat`]{@link module:Collections.concat} but runs only a single async operation at a time. + * + * @name concatSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.concat]{@link module:Collections.concat} + * @category Collection + * @alias flatMapSeries + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - A function to apply to each item in `coll`. + * The iteratee should complete with an array an array of results. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished, or an error occurs. Results is an array + * containing the concatenated results of the `iteratee` function. Invoked with + * (err, results). + * @returns A Promise, if no callback is passed + */ +function concatSeries(coll, iteratee, callback) { + return (0, _concatLimit2.default)(coll, 1, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(concatSeries, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/constant.js b/node_modules/async/constant.js new file mode 100644 index 0000000..ea406f6 --- /dev/null +++ b/node_modules/async/constant.js @@ -0,0 +1,14 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +exports.default = function (...args) { + return function (...ignoredArgs /*, callback*/) { + var callback = ignoredArgs.pop(); + return callback(null, ...args); + }; +}; + +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/detect.js b/node_modules/async/detect.js new file mode 100644 index 0000000..d5896ef --- /dev/null +++ b/node_modules/async/detect.js @@ -0,0 +1,96 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createTester = require('./internal/createTester.js'); + +var _createTester2 = _interopRequireDefault(_createTester); + +var _eachOf = require('./eachOf.js'); + +var _eachOf2 = _interopRequireDefault(_eachOf); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Returns the first value in `coll` that passes an async truth test. The + * `iteratee` is applied in parallel, meaning the first iteratee to return + * `true` will fire the detect `callback` with that result. That means the + * result might not be the first item in the original `coll` (in terms of order) + * that passes the test. + + * If order within the original `coll` is important, then look at + * [`detectSeries`]{@link module:Collections.detectSeries}. + * + * @name detect + * @static + * @memberOf module:Collections + * @method + * @alias find + * @category Collections + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`. + * The iteratee must complete with a boolean value as its result. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called as soon as any + * iteratee returns `true`, or after all the `iteratee` functions have finished. + * Result will be the first item in the array that passes the truth test + * (iteratee) or the value `undefined` if none passed. Invoked with + * (err, result). + * @returns {Promise} a promise, if a callback is omitted + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * + * // asynchronous function that checks if a file exists + * function fileExists(file, callback) { + * fs.access(file, fs.constants.F_OK, (err) => { + * callback(null, !err); + * }); + * } + * + * async.detect(['file3.txt','file2.txt','dir1/file1.txt'], fileExists, + * function(err, result) { + * console.log(result); + * // dir1/file1.txt + * // result now equals the first file in the list that exists + * } + *); + * + * // Using Promises + * async.detect(['file3.txt','file2.txt','dir1/file1.txt'], fileExists) + * .then(result => { + * console.log(result); + * // dir1/file1.txt + * // result now equals the first file in the list that exists + * }).catch(err => { + * console.log(err); + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.detect(['file3.txt','file2.txt','dir1/file1.txt'], fileExists); + * console.log(result); + * // dir1/file1.txt + * // result now equals the file in the list that exists + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ +function detect(coll, iteratee, callback) { + return (0, _createTester2.default)(bool => bool, (res, item) => item)(_eachOf2.default, coll, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(detect, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/detectLimit.js b/node_modules/async/detectLimit.js new file mode 100644 index 0000000..c59843b --- /dev/null +++ b/node_modules/async/detectLimit.js @@ -0,0 +1,48 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createTester = require('./internal/createTester.js'); + +var _createTester2 = _interopRequireDefault(_createTester); + +var _eachOfLimit = require('./internal/eachOfLimit.js'); + +var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`detect`]{@link module:Collections.detect} but runs a maximum of `limit` async operations at a + * time. + * + * @name detectLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.detect]{@link module:Collections.detect} + * @alias findLimit + * @category Collections + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`. + * The iteratee must complete with a boolean value as its result. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called as soon as any + * iteratee returns `true`, or after all the `iteratee` functions have finished. + * Result will be the first item in the array that passes the truth test + * (iteratee) or the value `undefined` if none passed. Invoked with + * (err, result). + * @returns {Promise} a promise, if a callback is omitted + */ +function detectLimit(coll, limit, iteratee, callback) { + return (0, _createTester2.default)(bool => bool, (res, item) => item)((0, _eachOfLimit2.default)(limit), coll, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(detectLimit, 4); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/detectSeries.js b/node_modules/async/detectSeries.js new file mode 100644 index 0000000..b486899 --- /dev/null +++ b/node_modules/async/detectSeries.js @@ -0,0 +1,47 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createTester = require('./internal/createTester.js'); + +var _createTester2 = _interopRequireDefault(_createTester); + +var _eachOfLimit = require('./internal/eachOfLimit.js'); + +var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`detect`]{@link module:Collections.detect} but runs only a single async operation at a time. + * + * @name detectSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.detect]{@link module:Collections.detect} + * @alias findSeries + * @category Collections + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`. + * The iteratee must complete with a boolean value as its result. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called as soon as any + * iteratee returns `true`, or after all the `iteratee` functions have finished. + * Result will be the first item in the array that passes the truth test + * (iteratee) or the value `undefined` if none passed. Invoked with + * (err, result). + * @returns {Promise} a promise, if a callback is omitted + */ +function detectSeries(coll, iteratee, callback) { + return (0, _createTester2.default)(bool => bool, (res, item) => item)((0, _eachOfLimit2.default)(1), coll, iteratee, callback); +} + +exports.default = (0, _awaitify2.default)(detectSeries, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/dir.js b/node_modules/async/dir.js new file mode 100644 index 0000000..8e9fafd --- /dev/null +++ b/node_modules/async/dir.js @@ -0,0 +1,43 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _consoleFunc = require('./internal/consoleFunc.js'); + +var _consoleFunc2 = _interopRequireDefault(_consoleFunc); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Logs the result of an [`async` function]{@link AsyncFunction} to the + * `console` using `console.dir` to display the properties of the resulting object. + * Only works in Node.js or in browsers that support `console.dir` and + * `console.error` (such as FF and Chrome). + * If multiple arguments are returned from the async function, + * `console.dir` is called on each argument in order. + * + * @name dir + * @static + * @memberOf module:Utils + * @method + * @category Util + * @param {AsyncFunction} function - The function you want to eventually apply + * all arguments to. + * @param {...*} arguments... - Any number of arguments to apply to the function. + * @example + * + * // in a module + * var hello = function(name, callback) { + * setTimeout(function() { + * callback(null, {hello: name}); + * }, 1000); + * }; + * + * // in the node repl + * node> async.dir(hello, 'world'); + * {hello: 'world'} + */ +exports.default = (0, _consoleFunc2.default)('dir'); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/dist/async.js b/node_modules/async/dist/async.js new file mode 100644 index 0000000..e58f8f2 --- /dev/null +++ b/node_modules/async/dist/async.js @@ -0,0 +1,6062 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : + typeof define === 'function' && define.amd ? define(['exports'], factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.async = {})); +})(this, (function (exports) { 'use strict'; + + /** + * Creates a continuation function with some arguments already applied. + * + * Useful as a shorthand when combined with other control flow functions. Any + * arguments passed to the returned function are added to the arguments + * originally passed to apply. + * + * @name apply + * @static + * @memberOf module:Utils + * @method + * @category Util + * @param {Function} fn - The function you want to eventually apply all + * arguments to. Invokes with (arguments...). + * @param {...*} arguments... - Any number of arguments to automatically apply + * when the continuation is called. + * @returns {Function} the partially-applied function + * @example + * + * // using apply + * async.parallel([ + * async.apply(fs.writeFile, 'testfile1', 'test1'), + * async.apply(fs.writeFile, 'testfile2', 'test2') + * ]); + * + * + * // the same process without using apply + * async.parallel([ + * function(callback) { + * fs.writeFile('testfile1', 'test1', callback); + * }, + * function(callback) { + * fs.writeFile('testfile2', 'test2', callback); + * } + * ]); + * + * // It's possible to pass any number of additional arguments when calling the + * // continuation: + * + * node> var fn = async.apply(sys.puts, 'one'); + * node> fn('two', 'three'); + * one + * two + * three + */ + function apply(fn, ...args) { + return (...callArgs) => fn(...args,...callArgs); + } + + function initialParams (fn) { + return function (...args/*, callback*/) { + var callback = args.pop(); + return fn.call(this, args, callback); + }; + } + + /* istanbul ignore file */ + + var hasQueueMicrotask = typeof queueMicrotask === 'function' && queueMicrotask; + var hasSetImmediate = typeof setImmediate === 'function' && setImmediate; + var hasNextTick = typeof process === 'object' && typeof process.nextTick === 'function'; + + function fallback(fn) { + setTimeout(fn, 0); + } + + function wrap(defer) { + return (fn, ...args) => defer(() => fn(...args)); + } + + var _defer$1; + + if (hasQueueMicrotask) { + _defer$1 = queueMicrotask; + } else if (hasSetImmediate) { + _defer$1 = setImmediate; + } else if (hasNextTick) { + _defer$1 = process.nextTick; + } else { + _defer$1 = fallback; + } + + var setImmediate$1 = wrap(_defer$1); + + /** + * Take a sync function and make it async, passing its return value to a + * callback. This is useful for plugging sync functions into a waterfall, + * series, or other async functions. Any arguments passed to the generated + * function will be passed to the wrapped function (except for the final + * callback argument). Errors thrown will be passed to the callback. + * + * If the function passed to `asyncify` returns a Promise, that promises's + * resolved/rejected state will be used to call the callback, rather than simply + * the synchronous return value. + * + * This also means you can asyncify ES2017 `async` functions. + * + * @name asyncify + * @static + * @memberOf module:Utils + * @method + * @alias wrapSync + * @category Util + * @param {Function} func - The synchronous function, or Promise-returning + * function to convert to an {@link AsyncFunction}. + * @returns {AsyncFunction} An asynchronous wrapper of the `func`. To be + * invoked with `(args..., callback)`. + * @example + * + * // passing a regular synchronous function + * async.waterfall([ + * async.apply(fs.readFile, filename, "utf8"), + * async.asyncify(JSON.parse), + * function (data, next) { + * // data is the result of parsing the text. + * // If there was a parsing error, it would have been caught. + * } + * ], callback); + * + * // passing a function returning a promise + * async.waterfall([ + * async.apply(fs.readFile, filename, "utf8"), + * async.asyncify(function (contents) { + * return db.model.create(contents); + * }), + * function (model, next) { + * // `model` is the instantiated model object. + * // If there was an error, this function would be skipped. + * } + * ], callback); + * + * // es2017 example, though `asyncify` is not needed if your JS environment + * // supports async functions out of the box + * var q = async.queue(async.asyncify(async function(file) { + * var intermediateStep = await processFile(file); + * return await somePromise(intermediateStep) + * })); + * + * q.push(files); + */ + function asyncify(func) { + if (isAsync(func)) { + return function (...args/*, callback*/) { + const callback = args.pop(); + const promise = func.apply(this, args); + return handlePromise(promise, callback) + } + } + + return initialParams(function (args, callback) { + var result; + try { + result = func.apply(this, args); + } catch (e) { + return callback(e); + } + // if result is Promise object + if (result && typeof result.then === 'function') { + return handlePromise(result, callback) + } else { + callback(null, result); + } + }); + } + + function handlePromise(promise, callback) { + return promise.then(value => { + invokeCallback(callback, null, value); + }, err => { + invokeCallback(callback, err && (err instanceof Error || err.message) ? err : new Error(err)); + }); + } + + function invokeCallback(callback, error, value) { + try { + callback(error, value); + } catch (err) { + setImmediate$1(e => { throw e }, err); + } + } + + function isAsync(fn) { + return fn[Symbol.toStringTag] === 'AsyncFunction'; + } + + function isAsyncGenerator(fn) { + return fn[Symbol.toStringTag] === 'AsyncGenerator'; + } + + function isAsyncIterable(obj) { + return typeof obj[Symbol.asyncIterator] === 'function'; + } + + function wrapAsync(asyncFn) { + if (typeof asyncFn !== 'function') throw new Error('expected a function') + return isAsync(asyncFn) ? asyncify(asyncFn) : asyncFn; + } + + // conditionally promisify a function. + // only return a promise if a callback is omitted + function awaitify (asyncFn, arity) { + if (!arity) arity = asyncFn.length; + if (!arity) throw new Error('arity is undefined') + function awaitable (...args) { + if (typeof args[arity - 1] === 'function') { + return asyncFn.apply(this, args) + } + + return new Promise((resolve, reject) => { + args[arity - 1] = (err, ...cbArgs) => { + if (err) return reject(err) + resolve(cbArgs.length > 1 ? cbArgs : cbArgs[0]); + }; + asyncFn.apply(this, args); + }) + } + + return awaitable + } + + function applyEach$1 (eachfn) { + return function applyEach(fns, ...callArgs) { + const go = awaitify(function (callback) { + var that = this; + return eachfn(fns, (fn, cb) => { + wrapAsync(fn).apply(that, callArgs.concat(cb)); + }, callback); + }); + return go; + }; + } + + function _asyncMap(eachfn, arr, iteratee, callback) { + arr = arr || []; + var results = []; + var counter = 0; + var _iteratee = wrapAsync(iteratee); + + return eachfn(arr, (value, _, iterCb) => { + var index = counter++; + _iteratee(value, (err, v) => { + results[index] = v; + iterCb(err); + }); + }, err => { + callback(err, results); + }); + } + + function isArrayLike(value) { + return value && + typeof value.length === 'number' && + value.length >= 0 && + value.length % 1 === 0; + } + + // A temporary value used to identify if the loop should be broken. + // See #1064, #1293 + const breakLoop = {}; + var breakLoop$1 = breakLoop; + + function once(fn) { + function wrapper (...args) { + if (fn === null) return; + var callFn = fn; + fn = null; + callFn.apply(this, args); + } + Object.assign(wrapper, fn); + return wrapper + } + + function getIterator (coll) { + return coll[Symbol.iterator] && coll[Symbol.iterator](); + } + + function createArrayIterator(coll) { + var i = -1; + var len = coll.length; + return function next() { + return ++i < len ? {value: coll[i], key: i} : null; + } + } + + function createES2015Iterator(iterator) { + var i = -1; + return function next() { + var item = iterator.next(); + if (item.done) + return null; + i++; + return {value: item.value, key: i}; + } + } + + function createObjectIterator(obj) { + var okeys = obj ? Object.keys(obj) : []; + var i = -1; + var len = okeys.length; + return function next() { + var key = okeys[++i]; + if (key === '__proto__') { + return next(); + } + return i < len ? {value: obj[key], key} : null; + }; + } + + function createIterator(coll) { + if (isArrayLike(coll)) { + return createArrayIterator(coll); + } + + var iterator = getIterator(coll); + return iterator ? createES2015Iterator(iterator) : createObjectIterator(coll); + } + + function onlyOnce(fn) { + return function (...args) { + if (fn === null) throw new Error("Callback was already called."); + var callFn = fn; + fn = null; + callFn.apply(this, args); + }; + } + + // for async generators + function asyncEachOfLimit(generator, limit, iteratee, callback) { + let done = false; + let canceled = false; + let awaiting = false; + let running = 0; + let idx = 0; + + function replenish() { + //console.log('replenish') + if (running >= limit || awaiting || done) return + //console.log('replenish awaiting') + awaiting = true; + generator.next().then(({value, done: iterDone}) => { + //console.log('got value', value) + if (canceled || done) return + awaiting = false; + if (iterDone) { + done = true; + if (running <= 0) { + //console.log('done nextCb') + callback(null); + } + return; + } + running++; + iteratee(value, idx, iterateeCallback); + idx++; + replenish(); + }).catch(handleError); + } + + function iterateeCallback(err, result) { + //console.log('iterateeCallback') + running -= 1; + if (canceled) return + if (err) return handleError(err) + + if (err === false) { + done = true; + canceled = true; + return + } + + if (result === breakLoop$1 || (done && running <= 0)) { + done = true; + //console.log('done iterCb') + return callback(null); + } + replenish(); + } + + function handleError(err) { + if (canceled) return + awaiting = false; + done = true; + callback(err); + } + + replenish(); + } + + var eachOfLimit$2 = (limit) => { + return (obj, iteratee, callback) => { + callback = once(callback); + if (limit <= 0) { + throw new RangeError('concurrency limit cannot be less than 1') + } + if (!obj) { + return callback(null); + } + if (isAsyncGenerator(obj)) { + return asyncEachOfLimit(obj, limit, iteratee, callback) + } + if (isAsyncIterable(obj)) { + return asyncEachOfLimit(obj[Symbol.asyncIterator](), limit, iteratee, callback) + } + var nextElem = createIterator(obj); + var done = false; + var canceled = false; + var running = 0; + var looping = false; + + function iterateeCallback(err, value) { + if (canceled) return + running -= 1; + if (err) { + done = true; + callback(err); + } + else if (err === false) { + done = true; + canceled = true; + } + else if (value === breakLoop$1 || (done && running <= 0)) { + done = true; + return callback(null); + } + else if (!looping) { + replenish(); + } + } + + function replenish () { + looping = true; + while (running < limit && !done) { + var elem = nextElem(); + if (elem === null) { + done = true; + if (running <= 0) { + callback(null); + } + return; + } + running += 1; + iteratee(elem.value, elem.key, onlyOnce(iterateeCallback)); + } + looping = false; + } + + replenish(); + }; + }; + + /** + * The same as [`eachOf`]{@link module:Collections.eachOf} but runs a maximum of `limit` async operations at a + * time. + * + * @name eachOfLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.eachOf]{@link module:Collections.eachOf} + * @alias forEachOfLimit + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - An async function to apply to each + * item in `coll`. The `key` is the item's key, or index in the case of an + * array. + * Invoked with (item, key, callback). + * @param {Function} [callback] - A callback which is called when all + * `iteratee` functions have finished, or an error occurs. Invoked with (err). + * @returns {Promise} a promise, if a callback is omitted + */ + function eachOfLimit(coll, limit, iteratee, callback) { + return eachOfLimit$2(limit)(coll, wrapAsync(iteratee), callback); + } + + var eachOfLimit$1 = awaitify(eachOfLimit, 4); + + // eachOf implementation optimized for array-likes + function eachOfArrayLike(coll, iteratee, callback) { + callback = once(callback); + var index = 0, + completed = 0, + {length} = coll, + canceled = false; + if (length === 0) { + callback(null); + } + + function iteratorCallback(err, value) { + if (err === false) { + canceled = true; + } + if (canceled === true) return + if (err) { + callback(err); + } else if ((++completed === length) || value === breakLoop$1) { + callback(null); + } + } + + for (; index < length; index++) { + iteratee(coll[index], index, onlyOnce(iteratorCallback)); + } + } + + // a generic version of eachOf which can handle array, object, and iterator cases. + function eachOfGeneric (coll, iteratee, callback) { + return eachOfLimit$1(coll, Infinity, iteratee, callback); + } + + /** + * Like [`each`]{@link module:Collections.each}, except that it passes the key (or index) as the second argument + * to the iteratee. + * + * @name eachOf + * @static + * @memberOf module:Collections + * @method + * @alias forEachOf + * @category Collection + * @see [async.each]{@link module:Collections.each} + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - A function to apply to each + * item in `coll`. + * The `key` is the item's key, or index in the case of an array. + * Invoked with (item, key, callback). + * @param {Function} [callback] - A callback which is called when all + * `iteratee` functions have finished, or an error occurs. Invoked with (err). + * @returns {Promise} a promise, if a callback is omitted + * @example + * + * // dev.json is a file containing a valid json object config for dev environment + * // dev.json is a file containing a valid json object config for test environment + * // prod.json is a file containing a valid json object config for prod environment + * // invalid.json is a file with a malformed json object + * + * let configs = {}; //global variable + * let validConfigFileMap = {dev: 'dev.json', test: 'test.json', prod: 'prod.json'}; + * let invalidConfigFileMap = {dev: 'dev.json', test: 'test.json', invalid: 'invalid.json'}; + * + * // asynchronous function that reads a json file and parses the contents as json object + * function parseFile(file, key, callback) { + * fs.readFile(file, "utf8", function(err, data) { + * if (err) return calback(err); + * try { + * configs[key] = JSON.parse(data); + * } catch (e) { + * return callback(e); + * } + * callback(); + * }); + * } + * + * // Using callbacks + * async.forEachOf(validConfigFileMap, parseFile, function (err) { + * if (err) { + * console.error(err); + * } else { + * console.log(configs); + * // configs is now a map of JSON data, e.g. + * // { dev: //parsed dev.json, test: //parsed test.json, prod: //parsed prod.json} + * } + * }); + * + * //Error handing + * async.forEachOf(invalidConfigFileMap, parseFile, function (err) { + * if (err) { + * console.error(err); + * // JSON parse error exception + * } else { + * console.log(configs); + * } + * }); + * + * // Using Promises + * async.forEachOf(validConfigFileMap, parseFile) + * .then( () => { + * console.log(configs); + * // configs is now a map of JSON data, e.g. + * // { dev: //parsed dev.json, test: //parsed test.json, prod: //parsed prod.json} + * }).catch( err => { + * console.error(err); + * }); + * + * //Error handing + * async.forEachOf(invalidConfigFileMap, parseFile) + * .then( () => { + * console.log(configs); + * }).catch( err => { + * console.error(err); + * // JSON parse error exception + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.forEachOf(validConfigFileMap, parseFile); + * console.log(configs); + * // configs is now a map of JSON data, e.g. + * // { dev: //parsed dev.json, test: //parsed test.json, prod: //parsed prod.json} + * } + * catch (err) { + * console.log(err); + * } + * } + * + * //Error handing + * async () => { + * try { + * let result = await async.forEachOf(invalidConfigFileMap, parseFile); + * console.log(configs); + * } + * catch (err) { + * console.log(err); + * // JSON parse error exception + * } + * } + * + */ + function eachOf(coll, iteratee, callback) { + var eachOfImplementation = isArrayLike(coll) ? eachOfArrayLike : eachOfGeneric; + return eachOfImplementation(coll, wrapAsync(iteratee), callback); + } + + var eachOf$1 = awaitify(eachOf, 3); + + /** + * Produces a new collection of values by mapping each value in `coll` through + * the `iteratee` function. The `iteratee` is called with an item from `coll` + * and a callback for when it has finished processing. Each of these callbacks + * takes 2 arguments: an `error`, and the transformed item from `coll`. If + * `iteratee` passes an error to its callback, the main `callback` (for the + * `map` function) is immediately called with the error. + * + * Note, that since this function applies the `iteratee` to each item in + * parallel, there is no guarantee that the `iteratee` functions will complete + * in order. However, the results array will be in the same order as the + * original `coll`. + * + * If `map` is passed an Object, the results will be an Array. The results + * will roughly be in the order of the original Objects' keys (but this can + * vary across JavaScript engines). + * + * @name map + * @static + * @memberOf module:Collections + * @method + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The iteratee should complete with the transformed item. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. Results is an Array of the + * transformed items from the `coll`. Invoked with (err, results). + * @returns {Promise} a promise, if no callback is passed + * @example + * + * // file1.txt is a file that is 1000 bytes in size + * // file2.txt is a file that is 2000 bytes in size + * // file3.txt is a file that is 3000 bytes in size + * // file4.txt does not exist + * + * const fileList = ['file1.txt','file2.txt','file3.txt']; + * const withMissingFileList = ['file1.txt','file2.txt','file4.txt']; + * + * // asynchronous function that returns the file size in bytes + * function getFileSizeInBytes(file, callback) { + * fs.stat(file, function(err, stat) { + * if (err) { + * return callback(err); + * } + * callback(null, stat.size); + * }); + * } + * + * // Using callbacks + * async.map(fileList, getFileSizeInBytes, function(err, results) { + * if (err) { + * console.log(err); + * } else { + * console.log(results); + * // results is now an array of the file size in bytes for each file, e.g. + * // [ 1000, 2000, 3000] + * } + * }); + * + * // Error Handling + * async.map(withMissingFileList, getFileSizeInBytes, function(err, results) { + * if (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } else { + * console.log(results); + * } + * }); + * + * // Using Promises + * async.map(fileList, getFileSizeInBytes) + * .then( results => { + * console.log(results); + * // results is now an array of the file size in bytes for each file, e.g. + * // [ 1000, 2000, 3000] + * }).catch( err => { + * console.log(err); + * }); + * + * // Error Handling + * async.map(withMissingFileList, getFileSizeInBytes) + * .then( results => { + * console.log(results); + * }).catch( err => { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * }); + * + * // Using async/await + * async () => { + * try { + * let results = await async.map(fileList, getFileSizeInBytes); + * console.log(results); + * // results is now an array of the file size in bytes for each file, e.g. + * // [ 1000, 2000, 3000] + * } + * catch (err) { + * console.log(err); + * } + * } + * + * // Error Handling + * async () => { + * try { + * let results = await async.map(withMissingFileList, getFileSizeInBytes); + * console.log(results); + * } + * catch (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } + * } + * + */ + function map (coll, iteratee, callback) { + return _asyncMap(eachOf$1, coll, iteratee, callback) + } + var map$1 = awaitify(map, 3); + + /** + * Applies the provided arguments to each function in the array, calling + * `callback` after all functions have completed. If you only provide the first + * argument, `fns`, then it will return a function which lets you pass in the + * arguments as if it were a single function call. If more arguments are + * provided, `callback` is required while `args` is still optional. The results + * for each of the applied async functions are passed to the final callback + * as an array. + * + * @name applyEach + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {Array|Iterable|AsyncIterable|Object} fns - A collection of {@link AsyncFunction}s + * to all call with the same arguments + * @param {...*} [args] - any number of separate arguments to pass to the + * function. + * @param {Function} [callback] - the final argument should be the callback, + * called when all functions have completed processing. + * @returns {AsyncFunction} - Returns a function that takes no args other than + * an optional callback, that is the result of applying the `args` to each + * of the functions. + * @example + * + * const appliedFn = async.applyEach([enableSearch, updateSchema], 'bucket') + * + * appliedFn((err, results) => { + * // results[0] is the results for `enableSearch` + * // results[1] is the results for `updateSchema` + * }); + * + * // partial application example: + * async.each( + * buckets, + * async (bucket) => async.applyEach([enableSearch, updateSchema], bucket)(), + * callback + * ); + */ + var applyEach = applyEach$1(map$1); + + /** + * The same as [`eachOf`]{@link module:Collections.eachOf} but runs only a single async operation at a time. + * + * @name eachOfSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.eachOf]{@link module:Collections.eachOf} + * @alias forEachOfSeries + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * Invoked with (item, key, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. Invoked with (err). + * @returns {Promise} a promise, if a callback is omitted + */ + function eachOfSeries(coll, iteratee, callback) { + return eachOfLimit$1(coll, 1, iteratee, callback) + } + var eachOfSeries$1 = awaitify(eachOfSeries, 3); + + /** + * The same as [`map`]{@link module:Collections.map} but runs only a single async operation at a time. + * + * @name mapSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.map]{@link module:Collections.map} + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The iteratee should complete with the transformed item. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. Results is an array of the + * transformed items from the `coll`. Invoked with (err, results). + * @returns {Promise} a promise, if no callback is passed + */ + function mapSeries (coll, iteratee, callback) { + return _asyncMap(eachOfSeries$1, coll, iteratee, callback) + } + var mapSeries$1 = awaitify(mapSeries, 3); + + /** + * The same as [`applyEach`]{@link module:ControlFlow.applyEach} but runs only a single async operation at a time. + * + * @name applyEachSeries + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.applyEach]{@link module:ControlFlow.applyEach} + * @category Control Flow + * @param {Array|Iterable|AsyncIterable|Object} fns - A collection of {@link AsyncFunction}s to all + * call with the same arguments + * @param {...*} [args] - any number of separate arguments to pass to the + * function. + * @param {Function} [callback] - the final argument should be the callback, + * called when all functions have completed processing. + * @returns {AsyncFunction} - A function, that when called, is the result of + * appling the `args` to the list of functions. It takes no args, other than + * a callback. + */ + var applyEachSeries = applyEach$1(mapSeries$1); + + const PROMISE_SYMBOL = Symbol('promiseCallback'); + + function promiseCallback () { + let resolve, reject; + function callback (err, ...args) { + if (err) return reject(err) + resolve(args.length > 1 ? args : args[0]); + } + + callback[PROMISE_SYMBOL] = new Promise((res, rej) => { + resolve = res, + reject = rej; + }); + + return callback + } + + /** + * Determines the best order for running the {@link AsyncFunction}s in `tasks`, based on + * their requirements. Each function can optionally depend on other functions + * being completed first, and each function is run as soon as its requirements + * are satisfied. + * + * If any of the {@link AsyncFunction}s pass an error to their callback, the `auto` sequence + * will stop. Further tasks will not execute (so any other functions depending + * on it will not run), and the main `callback` is immediately called with the + * error. + * + * {@link AsyncFunction}s also receive an object containing the results of functions which + * have completed so far as the first argument, if they have dependencies. If a + * task function has no dependencies, it will only be passed a callback. + * + * @name auto + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {Object} tasks - An object. Each of its properties is either a + * function or an array of requirements, with the {@link AsyncFunction} itself the last item + * in the array. The object's key of a property serves as the name of the task + * defined by that property, i.e. can be used when specifying requirements for + * other tasks. The function receives one or two arguments: + * * a `results` object, containing the results of the previously executed + * functions, only passed if the task has any dependencies, + * * a `callback(err, result)` function, which must be called when finished, + * passing an `error` (which can be `null`) and the result of the function's + * execution. + * @param {number} [concurrency=Infinity] - An optional `integer` for + * determining the maximum number of tasks that can be run in parallel. By + * default, as many as possible. + * @param {Function} [callback] - An optional callback which is called when all + * the tasks have been completed. It receives the `err` argument if any `tasks` + * pass an error to their callback. Results are always returned; however, if an + * error occurs, no further `tasks` will be performed, and the results object + * will only contain partial results. Invoked with (err, results). + * @returns {Promise} a promise, if a callback is not passed + * @example + * + * //Using Callbacks + * async.auto({ + * get_data: function(callback) { + * // async code to get some data + * callback(null, 'data', 'converted to array'); + * }, + * make_folder: function(callback) { + * // async code to create a directory to store a file in + * // this is run at the same time as getting the data + * callback(null, 'folder'); + * }, + * write_file: ['get_data', 'make_folder', function(results, callback) { + * // once there is some data and the directory exists, + * // write the data to a file in the directory + * callback(null, 'filename'); + * }], + * email_link: ['write_file', function(results, callback) { + * // once the file is written let's email a link to it... + * callback(null, {'file':results.write_file, 'email':'user@example.com'}); + * }] + * }, function(err, results) { + * if (err) { + * console.log('err = ', err); + * } + * console.log('results = ', results); + * // results = { + * // get_data: ['data', 'converted to array'] + * // make_folder; 'folder', + * // write_file: 'filename' + * // email_link: { file: 'filename', email: 'user@example.com' } + * // } + * }); + * + * //Using Promises + * async.auto({ + * get_data: function(callback) { + * console.log('in get_data'); + * // async code to get some data + * callback(null, 'data', 'converted to array'); + * }, + * make_folder: function(callback) { + * console.log('in make_folder'); + * // async code to create a directory to store a file in + * // this is run at the same time as getting the data + * callback(null, 'folder'); + * }, + * write_file: ['get_data', 'make_folder', function(results, callback) { + * // once there is some data and the directory exists, + * // write the data to a file in the directory + * callback(null, 'filename'); + * }], + * email_link: ['write_file', function(results, callback) { + * // once the file is written let's email a link to it... + * callback(null, {'file':results.write_file, 'email':'user@example.com'}); + * }] + * }).then(results => { + * console.log('results = ', results); + * // results = { + * // get_data: ['data', 'converted to array'] + * // make_folder; 'folder', + * // write_file: 'filename' + * // email_link: { file: 'filename', email: 'user@example.com' } + * // } + * }).catch(err => { + * console.log('err = ', err); + * }); + * + * //Using async/await + * async () => { + * try { + * let results = await async.auto({ + * get_data: function(callback) { + * // async code to get some data + * callback(null, 'data', 'converted to array'); + * }, + * make_folder: function(callback) { + * // async code to create a directory to store a file in + * // this is run at the same time as getting the data + * callback(null, 'folder'); + * }, + * write_file: ['get_data', 'make_folder', function(results, callback) { + * // once there is some data and the directory exists, + * // write the data to a file in the directory + * callback(null, 'filename'); + * }], + * email_link: ['write_file', function(results, callback) { + * // once the file is written let's email a link to it... + * callback(null, {'file':results.write_file, 'email':'user@example.com'}); + * }] + * }); + * console.log('results = ', results); + * // results = { + * // get_data: ['data', 'converted to array'] + * // make_folder; 'folder', + * // write_file: 'filename' + * // email_link: { file: 'filename', email: 'user@example.com' } + * // } + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ + function auto(tasks, concurrency, callback) { + if (typeof concurrency !== 'number') { + // concurrency is optional, shift the args. + callback = concurrency; + concurrency = null; + } + callback = once(callback || promiseCallback()); + var numTasks = Object.keys(tasks).length; + if (!numTasks) { + return callback(null); + } + if (!concurrency) { + concurrency = numTasks; + } + + var results = {}; + var runningTasks = 0; + var canceled = false; + var hasError = false; + + var listeners = Object.create(null); + + var readyTasks = []; + + // for cycle detection: + var readyToCheck = []; // tasks that have been identified as reachable + // without the possibility of returning to an ancestor task + var uncheckedDependencies = {}; + + Object.keys(tasks).forEach(key => { + var task = tasks[key]; + if (!Array.isArray(task)) { + // no dependencies + enqueueTask(key, [task]); + readyToCheck.push(key); + return; + } + + var dependencies = task.slice(0, task.length - 1); + var remainingDependencies = dependencies.length; + if (remainingDependencies === 0) { + enqueueTask(key, task); + readyToCheck.push(key); + return; + } + uncheckedDependencies[key] = remainingDependencies; + + dependencies.forEach(dependencyName => { + if (!tasks[dependencyName]) { + throw new Error('async.auto task `' + key + + '` has a non-existent dependency `' + + dependencyName + '` in ' + + dependencies.join(', ')); + } + addListener(dependencyName, () => { + remainingDependencies--; + if (remainingDependencies === 0) { + enqueueTask(key, task); + } + }); + }); + }); + + checkForDeadlocks(); + processQueue(); + + function enqueueTask(key, task) { + readyTasks.push(() => runTask(key, task)); + } + + function processQueue() { + if (canceled) return + if (readyTasks.length === 0 && runningTasks === 0) { + return callback(null, results); + } + while(readyTasks.length && runningTasks < concurrency) { + var run = readyTasks.shift(); + run(); + } + + } + + function addListener(taskName, fn) { + var taskListeners = listeners[taskName]; + if (!taskListeners) { + taskListeners = listeners[taskName] = []; + } + + taskListeners.push(fn); + } + + function taskComplete(taskName) { + var taskListeners = listeners[taskName] || []; + taskListeners.forEach(fn => fn()); + processQueue(); + } + + + function runTask(key, task) { + if (hasError) return; + + var taskCallback = onlyOnce((err, ...result) => { + runningTasks--; + if (err === false) { + canceled = true; + return + } + if (result.length < 2) { + [result] = result; + } + if (err) { + var safeResults = {}; + Object.keys(results).forEach(rkey => { + safeResults[rkey] = results[rkey]; + }); + safeResults[key] = result; + hasError = true; + listeners = Object.create(null); + if (canceled) return + callback(err, safeResults); + } else { + results[key] = result; + taskComplete(key); + } + }); + + runningTasks++; + var taskFn = wrapAsync(task[task.length - 1]); + if (task.length > 1) { + taskFn(results, taskCallback); + } else { + taskFn(taskCallback); + } + } + + function checkForDeadlocks() { + // Kahn's algorithm + // https://en.wikipedia.org/wiki/Topological_sorting#Kahn.27s_algorithm + // http://connalle.blogspot.com/2013/10/topological-sortingkahn-algorithm.html + var currentTask; + var counter = 0; + while (readyToCheck.length) { + currentTask = readyToCheck.pop(); + counter++; + getDependents(currentTask).forEach(dependent => { + if (--uncheckedDependencies[dependent] === 0) { + readyToCheck.push(dependent); + } + }); + } + + if (counter !== numTasks) { + throw new Error( + 'async.auto cannot execute tasks due to a recursive dependency' + ); + } + } + + function getDependents(taskName) { + var result = []; + Object.keys(tasks).forEach(key => { + const task = tasks[key]; + if (Array.isArray(task) && task.indexOf(taskName) >= 0) { + result.push(key); + } + }); + return result; + } + + return callback[PROMISE_SYMBOL] + } + + var FN_ARGS = /^(?:async\s+)?(?:function)?\s*\w*\s*\(\s*([^)]+)\s*\)(?:\s*{)/; + var ARROW_FN_ARGS = /^(?:async\s+)?\(?\s*([^)=]+)\s*\)?(?:\s*=>)/; + var FN_ARG_SPLIT = /,/; + var FN_ARG = /(=.+)?(\s*)$/; + + function stripComments(string) { + let stripped = ''; + let index = 0; + let endBlockComment = string.indexOf('*/'); + while (index < string.length) { + if (string[index] === '/' && string[index+1] === '/') { + // inline comment + let endIndex = string.indexOf('\n', index); + index = (endIndex === -1) ? string.length : endIndex; + } else if ((endBlockComment !== -1) && (string[index] === '/') && (string[index+1] === '*')) { + // block comment + let endIndex = string.indexOf('*/', index); + if (endIndex !== -1) { + index = endIndex + 2; + endBlockComment = string.indexOf('*/', index); + } else { + stripped += string[index]; + index++; + } + } else { + stripped += string[index]; + index++; + } + } + return stripped; + } + + function parseParams(func) { + const src = stripComments(func.toString()); + let match = src.match(FN_ARGS); + if (!match) { + match = src.match(ARROW_FN_ARGS); + } + if (!match) throw new Error('could not parse args in autoInject\nSource:\n' + src) + let [, args] = match; + return args + .replace(/\s/g, '') + .split(FN_ARG_SPLIT) + .map((arg) => arg.replace(FN_ARG, '').trim()); + } + + /** + * A dependency-injected version of the [async.auto]{@link module:ControlFlow.auto} function. Dependent + * tasks are specified as parameters to the function, after the usual callback + * parameter, with the parameter names matching the names of the tasks it + * depends on. This can provide even more readable task graphs which can be + * easier to maintain. + * + * If a final callback is specified, the task results are similarly injected, + * specified as named parameters after the initial error parameter. + * + * The autoInject function is purely syntactic sugar and its semantics are + * otherwise equivalent to [async.auto]{@link module:ControlFlow.auto}. + * + * @name autoInject + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.auto]{@link module:ControlFlow.auto} + * @category Control Flow + * @param {Object} tasks - An object, each of whose properties is an {@link AsyncFunction} of + * the form 'func([dependencies...], callback). The object's key of a property + * serves as the name of the task defined by that property, i.e. can be used + * when specifying requirements for other tasks. + * * The `callback` parameter is a `callback(err, result)` which must be called + * when finished, passing an `error` (which can be `null`) and the result of + * the function's execution. The remaining parameters name other tasks on + * which the task is dependent, and the results from those tasks are the + * arguments of those parameters. + * @param {Function} [callback] - An optional callback which is called when all + * the tasks have been completed. It receives the `err` argument if any `tasks` + * pass an error to their callback, and a `results` object with any completed + * task results, similar to `auto`. + * @returns {Promise} a promise, if no callback is passed + * @example + * + * // The example from `auto` can be rewritten as follows: + * async.autoInject({ + * get_data: function(callback) { + * // async code to get some data + * callback(null, 'data', 'converted to array'); + * }, + * make_folder: function(callback) { + * // async code to create a directory to store a file in + * // this is run at the same time as getting the data + * callback(null, 'folder'); + * }, + * write_file: function(get_data, make_folder, callback) { + * // once there is some data and the directory exists, + * // write the data to a file in the directory + * callback(null, 'filename'); + * }, + * email_link: function(write_file, callback) { + * // once the file is written let's email a link to it... + * // write_file contains the filename returned by write_file. + * callback(null, {'file':write_file, 'email':'user@example.com'}); + * } + * }, function(err, results) { + * console.log('err = ', err); + * console.log('email_link = ', results.email_link); + * }); + * + * // If you are using a JS minifier that mangles parameter names, `autoInject` + * // will not work with plain functions, since the parameter names will be + * // collapsed to a single letter identifier. To work around this, you can + * // explicitly specify the names of the parameters your task function needs + * // in an array, similar to Angular.js dependency injection. + * + * // This still has an advantage over plain `auto`, since the results a task + * // depends on are still spread into arguments. + * async.autoInject({ + * //... + * write_file: ['get_data', 'make_folder', function(get_data, make_folder, callback) { + * callback(null, 'filename'); + * }], + * email_link: ['write_file', function(write_file, callback) { + * callback(null, {'file':write_file, 'email':'user@example.com'}); + * }] + * //... + * }, function(err, results) { + * console.log('err = ', err); + * console.log('email_link = ', results.email_link); + * }); + */ + function autoInject(tasks, callback) { + var newTasks = {}; + + Object.keys(tasks).forEach(key => { + var taskFn = tasks[key]; + var params; + var fnIsAsync = isAsync(taskFn); + var hasNoDeps = + (!fnIsAsync && taskFn.length === 1) || + (fnIsAsync && taskFn.length === 0); + + if (Array.isArray(taskFn)) { + params = [...taskFn]; + taskFn = params.pop(); + + newTasks[key] = params.concat(params.length > 0 ? newTask : taskFn); + } else if (hasNoDeps) { + // no dependencies, use the function as-is + newTasks[key] = taskFn; + } else { + params = parseParams(taskFn); + if ((taskFn.length === 0 && !fnIsAsync) && params.length === 0) { + throw new Error("autoInject task functions require explicit parameters."); + } + + // remove callback param + if (!fnIsAsync) params.pop(); + + newTasks[key] = params.concat(newTask); + } + + function newTask(results, taskCb) { + var newArgs = params.map(name => results[name]); + newArgs.push(taskCb); + wrapAsync(taskFn)(...newArgs); + } + }); + + return auto(newTasks, callback); + } + + // Simple doubly linked list (https://en.wikipedia.org/wiki/Doubly_linked_list) implementation + // used for queues. This implementation assumes that the node provided by the user can be modified + // to adjust the next and last properties. We implement only the minimal functionality + // for queue support. + class DLL { + constructor() { + this.head = this.tail = null; + this.length = 0; + } + + removeLink(node) { + if (node.prev) node.prev.next = node.next; + else this.head = node.next; + if (node.next) node.next.prev = node.prev; + else this.tail = node.prev; + + node.prev = node.next = null; + this.length -= 1; + return node; + } + + empty () { + while(this.head) this.shift(); + return this; + } + + insertAfter(node, newNode) { + newNode.prev = node; + newNode.next = node.next; + if (node.next) node.next.prev = newNode; + else this.tail = newNode; + node.next = newNode; + this.length += 1; + } + + insertBefore(node, newNode) { + newNode.prev = node.prev; + newNode.next = node; + if (node.prev) node.prev.next = newNode; + else this.head = newNode; + node.prev = newNode; + this.length += 1; + } + + unshift(node) { + if (this.head) this.insertBefore(this.head, node); + else setInitial(this, node); + } + + push(node) { + if (this.tail) this.insertAfter(this.tail, node); + else setInitial(this, node); + } + + shift() { + return this.head && this.removeLink(this.head); + } + + pop() { + return this.tail && this.removeLink(this.tail); + } + + toArray() { + return [...this] + } + + *[Symbol.iterator] () { + var cur = this.head; + while (cur) { + yield cur.data; + cur = cur.next; + } + } + + remove (testFn) { + var curr = this.head; + while(curr) { + var {next} = curr; + if (testFn(curr)) { + this.removeLink(curr); + } + curr = next; + } + return this; + } + } + + function setInitial(dll, node) { + dll.length = 1; + dll.head = dll.tail = node; + } + + function queue$1(worker, concurrency, payload) { + if (concurrency == null) { + concurrency = 1; + } + else if(concurrency === 0) { + throw new RangeError('Concurrency must not be zero'); + } + + var _worker = wrapAsync(worker); + var numRunning = 0; + var workersList = []; + const events = { + error: [], + drain: [], + saturated: [], + unsaturated: [], + empty: [] + }; + + function on (event, handler) { + events[event].push(handler); + } + + function once (event, handler) { + const handleAndRemove = (...args) => { + off(event, handleAndRemove); + handler(...args); + }; + events[event].push(handleAndRemove); + } + + function off (event, handler) { + if (!event) return Object.keys(events).forEach(ev => events[ev] = []) + if (!handler) return events[event] = [] + events[event] = events[event].filter(ev => ev !== handler); + } + + function trigger (event, ...args) { + events[event].forEach(handler => handler(...args)); + } + + var processingScheduled = false; + function _insert(data, insertAtFront, rejectOnError, callback) { + if (callback != null && typeof callback !== 'function') { + throw new Error('task callback must be a function'); + } + q.started = true; + + var res, rej; + function promiseCallback (err, ...args) { + // we don't care about the error, let the global error handler + // deal with it + if (err) return rejectOnError ? rej(err) : res() + if (args.length <= 1) return res(args[0]) + res(args); + } + + var item = q._createTaskItem( + data, + rejectOnError ? promiseCallback : + (callback || promiseCallback) + ); + + if (insertAtFront) { + q._tasks.unshift(item); + } else { + q._tasks.push(item); + } + + if (!processingScheduled) { + processingScheduled = true; + setImmediate$1(() => { + processingScheduled = false; + q.process(); + }); + } + + if (rejectOnError || !callback) { + return new Promise((resolve, reject) => { + res = resolve; + rej = reject; + }) + } + } + + function _createCB(tasks) { + return function (err, ...args) { + numRunning -= 1; + + for (var i = 0, l = tasks.length; i < l; i++) { + var task = tasks[i]; + + var index = workersList.indexOf(task); + if (index === 0) { + workersList.shift(); + } else if (index > 0) { + workersList.splice(index, 1); + } + + task.callback(err, ...args); + + if (err != null) { + trigger('error', err, task.data); + } + } + + if (numRunning <= (q.concurrency - q.buffer) ) { + trigger('unsaturated'); + } + + if (q.idle()) { + trigger('drain'); + } + q.process(); + }; + } + + function _maybeDrain(data) { + if (data.length === 0 && q.idle()) { + // call drain immediately if there are no tasks + setImmediate$1(() => trigger('drain')); + return true + } + return false + } + + const eventMethod = (name) => (handler) => { + if (!handler) { + return new Promise((resolve, reject) => { + once(name, (err, data) => { + if (err) return reject(err) + resolve(data); + }); + }) + } + off(name); + on(name, handler); + + }; + + var isProcessing = false; + var q = { + _tasks: new DLL(), + _createTaskItem (data, callback) { + return { + data, + callback + }; + }, + *[Symbol.iterator] () { + yield* q._tasks[Symbol.iterator](); + }, + concurrency, + payload, + buffer: concurrency / 4, + started: false, + paused: false, + push (data, callback) { + if (Array.isArray(data)) { + if (_maybeDrain(data)) return + return data.map(datum => _insert(datum, false, false, callback)) + } + return _insert(data, false, false, callback); + }, + pushAsync (data, callback) { + if (Array.isArray(data)) { + if (_maybeDrain(data)) return + return data.map(datum => _insert(datum, false, true, callback)) + } + return _insert(data, false, true, callback); + }, + kill () { + off(); + q._tasks.empty(); + }, + unshift (data, callback) { + if (Array.isArray(data)) { + if (_maybeDrain(data)) return + return data.map(datum => _insert(datum, true, false, callback)) + } + return _insert(data, true, false, callback); + }, + unshiftAsync (data, callback) { + if (Array.isArray(data)) { + if (_maybeDrain(data)) return + return data.map(datum => _insert(datum, true, true, callback)) + } + return _insert(data, true, true, callback); + }, + remove (testFn) { + q._tasks.remove(testFn); + }, + process () { + // Avoid trying to start too many processing operations. This can occur + // when callbacks resolve synchronously (#1267). + if (isProcessing) { + return; + } + isProcessing = true; + while(!q.paused && numRunning < q.concurrency && q._tasks.length){ + var tasks = [], data = []; + var l = q._tasks.length; + if (q.payload) l = Math.min(l, q.payload); + for (var i = 0; i < l; i++) { + var node = q._tasks.shift(); + tasks.push(node); + workersList.push(node); + data.push(node.data); + } + + numRunning += 1; + + if (q._tasks.length === 0) { + trigger('empty'); + } + + if (numRunning === q.concurrency) { + trigger('saturated'); + } + + var cb = onlyOnce(_createCB(tasks)); + _worker(data, cb); + } + isProcessing = false; + }, + length () { + return q._tasks.length; + }, + running () { + return numRunning; + }, + workersList () { + return workersList; + }, + idle() { + return q._tasks.length + numRunning === 0; + }, + pause () { + q.paused = true; + }, + resume () { + if (q.paused === false) { return; } + q.paused = false; + setImmediate$1(q.process); + } + }; + // define these as fixed properties, so people get useful errors when updating + Object.defineProperties(q, { + saturated: { + writable: false, + value: eventMethod('saturated') + }, + unsaturated: { + writable: false, + value: eventMethod('unsaturated') + }, + empty: { + writable: false, + value: eventMethod('empty') + }, + drain: { + writable: false, + value: eventMethod('drain') + }, + error: { + writable: false, + value: eventMethod('error') + }, + }); + return q; + } + + /** + * Creates a `cargo` object with the specified payload. Tasks added to the + * cargo will be processed altogether (up to the `payload` limit). If the + * `worker` is in progress, the task is queued until it becomes available. Once + * the `worker` has completed some tasks, each callback of those tasks is + * called. Check out [these](https://camo.githubusercontent.com/6bbd36f4cf5b35a0f11a96dcd2e97711ffc2fb37/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130382f62626330636662302d356632392d313165322d393734662d3333393763363464633835382e676966) [animations](https://camo.githubusercontent.com/f4810e00e1c5f5f8addbe3e9f49064fd5d102699/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130312f38346339323036362d356632392d313165322d383134662d3964336430323431336266642e676966) + * for how `cargo` and `queue` work. + * + * While [`queue`]{@link module:ControlFlow.queue} passes only one task to one of a group of workers + * at a time, cargo passes an array of tasks to a single worker, repeating + * when the worker is finished. + * + * @name cargo + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.queue]{@link module:ControlFlow.queue} + * @category Control Flow + * @param {AsyncFunction} worker - An asynchronous function for processing an array + * of queued tasks. Invoked with `(tasks, callback)`. + * @param {number} [payload=Infinity] - An optional `integer` for determining + * how many tasks should be processed per round; if omitted, the default is + * unlimited. + * @returns {module:ControlFlow.QueueObject} A cargo object to manage the tasks. Callbacks can + * attached as certain properties to listen for specific events during the + * lifecycle of the cargo and inner queue. + * @example + * + * // create a cargo object with payload 2 + * var cargo = async.cargo(function(tasks, callback) { + * for (var i=0; i { + * console.log(result); + * // 6000 + * // which is the sum of the file sizes of the three files + * }).catch( err => { + * console.log(err); + * }); + * + * // Error Handling + * async.reduce(withMissingFileList, 0, getFileSizeInBytes) + * .then( result => { + * console.log(result); + * }).catch( err => { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.reduce(fileList, 0, getFileSizeInBytes); + * console.log(result); + * // 6000 + * // which is the sum of the file sizes of the three files + * } + * catch (err) { + * console.log(err); + * } + * } + * + * // Error Handling + * async () => { + * try { + * let result = await async.reduce(withMissingFileList, 0, getFileSizeInBytes); + * console.log(result); + * } + * catch (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } + * } + * + */ + function reduce(coll, memo, iteratee, callback) { + callback = once(callback); + var _iteratee = wrapAsync(iteratee); + return eachOfSeries$1(coll, (x, i, iterCb) => { + _iteratee(memo, x, (err, v) => { + memo = v; + iterCb(err); + }); + }, err => callback(err, memo)); + } + var reduce$1 = awaitify(reduce, 4); + + /** + * Version of the compose function that is more natural to read. Each function + * consumes the return value of the previous function. It is the equivalent of + * [compose]{@link module:ControlFlow.compose} with the arguments reversed. + * + * Each function is executed with the `this` binding of the composed function. + * + * @name seq + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.compose]{@link module:ControlFlow.compose} + * @category Control Flow + * @param {...AsyncFunction} functions - the asynchronous functions to compose + * @returns {Function} a function that composes the `functions` in order + * @example + * + * // Requires lodash (or underscore), express3 and dresende's orm2. + * // Part of an app, that fetches cats of the logged user. + * // This example uses `seq` function to avoid overnesting and error + * // handling clutter. + * app.get('/cats', function(request, response) { + * var User = request.models.User; + * async.seq( + * User.get.bind(User), // 'User.get' has signature (id, callback(err, data)) + * function(user, fn) { + * user.getCats(fn); // 'getCats' has signature (callback(err, data)) + * } + * )(req.session.user_id, function (err, cats) { + * if (err) { + * console.error(err); + * response.json({ status: 'error', message: err.message }); + * } else { + * response.json({ status: 'ok', message: 'Cats found', data: cats }); + * } + * }); + * }); + */ + function seq(...functions) { + var _functions = functions.map(wrapAsync); + return function (...args) { + var that = this; + + var cb = args[args.length - 1]; + if (typeof cb == 'function') { + args.pop(); + } else { + cb = promiseCallback(); + } + + reduce$1(_functions, args, (newargs, fn, iterCb) => { + fn.apply(that, newargs.concat((err, ...nextargs) => { + iterCb(err, nextargs); + })); + }, + (err, results) => cb(err, ...results)); + + return cb[PROMISE_SYMBOL] + }; + } + + /** + * Creates a function which is a composition of the passed asynchronous + * functions. Each function consumes the return value of the function that + * follows. Composing functions `f()`, `g()`, and `h()` would produce the result + * of `f(g(h()))`, only this version uses callbacks to obtain the return values. + * + * If the last argument to the composed function is not a function, a promise + * is returned when you call it. + * + * Each function is executed with the `this` binding of the composed function. + * + * @name compose + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {...AsyncFunction} functions - the asynchronous functions to compose + * @returns {Function} an asynchronous function that is the composed + * asynchronous `functions` + * @example + * + * function add1(n, callback) { + * setTimeout(function () { + * callback(null, n + 1); + * }, 10); + * } + * + * function mul3(n, callback) { + * setTimeout(function () { + * callback(null, n * 3); + * }, 10); + * } + * + * var add1mul3 = async.compose(mul3, add1); + * add1mul3(4, function (err, result) { + * // result now equals 15 + * }); + */ + function compose(...args) { + return seq(...args.reverse()); + } + + /** + * The same as [`map`]{@link module:Collections.map} but runs a maximum of `limit` async operations at a time. + * + * @name mapLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.map]{@link module:Collections.map} + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The iteratee should complete with the transformed item. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. Results is an array of the + * transformed items from the `coll`. Invoked with (err, results). + * @returns {Promise} a promise, if no callback is passed + */ + function mapLimit (coll, limit, iteratee, callback) { + return _asyncMap(eachOfLimit$2(limit), coll, iteratee, callback) + } + var mapLimit$1 = awaitify(mapLimit, 4); + + /** + * The same as [`concat`]{@link module:Collections.concat} but runs a maximum of `limit` async operations at a time. + * + * @name concatLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.concat]{@link module:Collections.concat} + * @category Collection + * @alias flatMapLimit + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - A function to apply to each item in `coll`, + * which should use an array as its result. Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished, or an error occurs. Results is an array + * containing the concatenated results of the `iteratee` function. Invoked with + * (err, results). + * @returns A Promise, if no callback is passed + */ + function concatLimit(coll, limit, iteratee, callback) { + var _iteratee = wrapAsync(iteratee); + return mapLimit$1(coll, limit, (val, iterCb) => { + _iteratee(val, (err, ...args) => { + if (err) return iterCb(err); + return iterCb(err, args); + }); + }, (err, mapResults) => { + var result = []; + for (var i = 0; i < mapResults.length; i++) { + if (mapResults[i]) { + result = result.concat(...mapResults[i]); + } + } + + return callback(err, result); + }); + } + var concatLimit$1 = awaitify(concatLimit, 4); + + /** + * Applies `iteratee` to each item in `coll`, concatenating the results. Returns + * the concatenated list. The `iteratee`s are called in parallel, and the + * results are concatenated as they return. The results array will be returned in + * the original order of `coll` passed to the `iteratee` function. + * + * @name concat + * @static + * @memberOf module:Collections + * @method + * @category Collection + * @alias flatMap + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - A function to apply to each item in `coll`, + * which should use an array as its result. Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished, or an error occurs. Results is an array + * containing the concatenated results of the `iteratee` function. Invoked with + * (err, results). + * @returns A Promise, if no callback is passed + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * // dir4 does not exist + * + * let directoryList = ['dir1','dir2','dir3']; + * let withMissingDirectoryList = ['dir1','dir2','dir3', 'dir4']; + * + * // Using callbacks + * async.concat(directoryList, fs.readdir, function(err, results) { + * if (err) { + * console.log(err); + * } else { + * console.log(results); + * // [ 'file1.txt', 'file2.txt', 'file3.txt', 'file4.txt', file5.txt ] + * } + * }); + * + * // Error Handling + * async.concat(withMissingDirectoryList, fs.readdir, function(err, results) { + * if (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * // since dir4 does not exist + * } else { + * console.log(results); + * } + * }); + * + * // Using Promises + * async.concat(directoryList, fs.readdir) + * .then(results => { + * console.log(results); + * // [ 'file1.txt', 'file2.txt', 'file3.txt', 'file4.txt', file5.txt ] + * }).catch(err => { + * console.log(err); + * }); + * + * // Error Handling + * async.concat(withMissingDirectoryList, fs.readdir) + * .then(results => { + * console.log(results); + * }).catch(err => { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * // since dir4 does not exist + * }); + * + * // Using async/await + * async () => { + * try { + * let results = await async.concat(directoryList, fs.readdir); + * console.log(results); + * // [ 'file1.txt', 'file2.txt', 'file3.txt', 'file4.txt', file5.txt ] + * } catch (err) { + * console.log(err); + * } + * } + * + * // Error Handling + * async () => { + * try { + * let results = await async.concat(withMissingDirectoryList, fs.readdir); + * console.log(results); + * } catch (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * // since dir4 does not exist + * } + * } + * + */ + function concat(coll, iteratee, callback) { + return concatLimit$1(coll, Infinity, iteratee, callback) + } + var concat$1 = awaitify(concat, 3); + + /** + * The same as [`concat`]{@link module:Collections.concat} but runs only a single async operation at a time. + * + * @name concatSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.concat]{@link module:Collections.concat} + * @category Collection + * @alias flatMapSeries + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - A function to apply to each item in `coll`. + * The iteratee should complete with an array an array of results. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished, or an error occurs. Results is an array + * containing the concatenated results of the `iteratee` function. Invoked with + * (err, results). + * @returns A Promise, if no callback is passed + */ + function concatSeries(coll, iteratee, callback) { + return concatLimit$1(coll, 1, iteratee, callback) + } + var concatSeries$1 = awaitify(concatSeries, 3); + + /** + * Returns a function that when called, calls-back with the values provided. + * Useful as the first function in a [`waterfall`]{@link module:ControlFlow.waterfall}, or for plugging values in to + * [`auto`]{@link module:ControlFlow.auto}. + * + * @name constant + * @static + * @memberOf module:Utils + * @method + * @category Util + * @param {...*} arguments... - Any number of arguments to automatically invoke + * callback with. + * @returns {AsyncFunction} Returns a function that when invoked, automatically + * invokes the callback with the previous given arguments. + * @example + * + * async.waterfall([ + * async.constant(42), + * function (value, next) { + * // value === 42 + * }, + * //... + * ], callback); + * + * async.waterfall([ + * async.constant(filename, "utf8"), + * fs.readFile, + * function (fileData, next) { + * //... + * } + * //... + * ], callback); + * + * async.auto({ + * hostname: async.constant("https://server.net/"), + * port: findFreePort, + * launchServer: ["hostname", "port", function (options, cb) { + * startServer(options, cb); + * }], + * //... + * }, callback); + */ + function constant$1(...args) { + return function (...ignoredArgs/*, callback*/) { + var callback = ignoredArgs.pop(); + return callback(null, ...args); + }; + } + + function _createTester(check, getResult) { + return (eachfn, arr, _iteratee, cb) => { + var testPassed = false; + var testResult; + const iteratee = wrapAsync(_iteratee); + eachfn(arr, (value, _, callback) => { + iteratee(value, (err, result) => { + if (err || err === false) return callback(err); + + if (check(result) && !testResult) { + testPassed = true; + testResult = getResult(true, value); + return callback(null, breakLoop$1); + } + callback(); + }); + }, err => { + if (err) return cb(err); + cb(null, testPassed ? testResult : getResult(false)); + }); + }; + } + + /** + * Returns the first value in `coll` that passes an async truth test. The + * `iteratee` is applied in parallel, meaning the first iteratee to return + * `true` will fire the detect `callback` with that result. That means the + * result might not be the first item in the original `coll` (in terms of order) + * that passes the test. + + * If order within the original `coll` is important, then look at + * [`detectSeries`]{@link module:Collections.detectSeries}. + * + * @name detect + * @static + * @memberOf module:Collections + * @method + * @alias find + * @category Collections + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`. + * The iteratee must complete with a boolean value as its result. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called as soon as any + * iteratee returns `true`, or after all the `iteratee` functions have finished. + * Result will be the first item in the array that passes the truth test + * (iteratee) or the value `undefined` if none passed. Invoked with + * (err, result). + * @returns {Promise} a promise, if a callback is omitted + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * + * // asynchronous function that checks if a file exists + * function fileExists(file, callback) { + * fs.access(file, fs.constants.F_OK, (err) => { + * callback(null, !err); + * }); + * } + * + * async.detect(['file3.txt','file2.txt','dir1/file1.txt'], fileExists, + * function(err, result) { + * console.log(result); + * // dir1/file1.txt + * // result now equals the first file in the list that exists + * } + *); + * + * // Using Promises + * async.detect(['file3.txt','file2.txt','dir1/file1.txt'], fileExists) + * .then(result => { + * console.log(result); + * // dir1/file1.txt + * // result now equals the first file in the list that exists + * }).catch(err => { + * console.log(err); + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.detect(['file3.txt','file2.txt','dir1/file1.txt'], fileExists); + * console.log(result); + * // dir1/file1.txt + * // result now equals the file in the list that exists + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ + function detect(coll, iteratee, callback) { + return _createTester(bool => bool, (res, item) => item)(eachOf$1, coll, iteratee, callback) + } + var detect$1 = awaitify(detect, 3); + + /** + * The same as [`detect`]{@link module:Collections.detect} but runs a maximum of `limit` async operations at a + * time. + * + * @name detectLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.detect]{@link module:Collections.detect} + * @alias findLimit + * @category Collections + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`. + * The iteratee must complete with a boolean value as its result. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called as soon as any + * iteratee returns `true`, or after all the `iteratee` functions have finished. + * Result will be the first item in the array that passes the truth test + * (iteratee) or the value `undefined` if none passed. Invoked with + * (err, result). + * @returns {Promise} a promise, if a callback is omitted + */ + function detectLimit(coll, limit, iteratee, callback) { + return _createTester(bool => bool, (res, item) => item)(eachOfLimit$2(limit), coll, iteratee, callback) + } + var detectLimit$1 = awaitify(detectLimit, 4); + + /** + * The same as [`detect`]{@link module:Collections.detect} but runs only a single async operation at a time. + * + * @name detectSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.detect]{@link module:Collections.detect} + * @alias findSeries + * @category Collections + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`. + * The iteratee must complete with a boolean value as its result. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called as soon as any + * iteratee returns `true`, or after all the `iteratee` functions have finished. + * Result will be the first item in the array that passes the truth test + * (iteratee) or the value `undefined` if none passed. Invoked with + * (err, result). + * @returns {Promise} a promise, if a callback is omitted + */ + function detectSeries(coll, iteratee, callback) { + return _createTester(bool => bool, (res, item) => item)(eachOfLimit$2(1), coll, iteratee, callback) + } + + var detectSeries$1 = awaitify(detectSeries, 3); + + function consoleFunc(name) { + return (fn, ...args) => wrapAsync(fn)(...args, (err, ...resultArgs) => { + /* istanbul ignore else */ + if (typeof console === 'object') { + /* istanbul ignore else */ + if (err) { + /* istanbul ignore else */ + if (console.error) { + console.error(err); + } + } else if (console[name]) { /* istanbul ignore else */ + resultArgs.forEach(x => console[name](x)); + } + } + }) + } + + /** + * Logs the result of an [`async` function]{@link AsyncFunction} to the + * `console` using `console.dir` to display the properties of the resulting object. + * Only works in Node.js or in browsers that support `console.dir` and + * `console.error` (such as FF and Chrome). + * If multiple arguments are returned from the async function, + * `console.dir` is called on each argument in order. + * + * @name dir + * @static + * @memberOf module:Utils + * @method + * @category Util + * @param {AsyncFunction} function - The function you want to eventually apply + * all arguments to. + * @param {...*} arguments... - Any number of arguments to apply to the function. + * @example + * + * // in a module + * var hello = function(name, callback) { + * setTimeout(function() { + * callback(null, {hello: name}); + * }, 1000); + * }; + * + * // in the node repl + * node> async.dir(hello, 'world'); + * {hello: 'world'} + */ + var dir = consoleFunc('dir'); + + /** + * The post-check version of [`whilst`]{@link module:ControlFlow.whilst}. To reflect the difference in + * the order of operations, the arguments `test` and `iteratee` are switched. + * + * `doWhilst` is to `whilst` as `do while` is to `while` in plain JavaScript. + * + * @name doWhilst + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.whilst]{@link module:ControlFlow.whilst} + * @category Control Flow + * @param {AsyncFunction} iteratee - A function which is called each time `test` + * passes. Invoked with (callback). + * @param {AsyncFunction} test - asynchronous truth test to perform after each + * execution of `iteratee`. Invoked with (...args, callback), where `...args` are the + * non-error args from the previous callback of `iteratee`. + * @param {Function} [callback] - A callback which is called after the test + * function has failed and repeated execution of `iteratee` has stopped. + * `callback` will be passed an error and any arguments passed to the final + * `iteratee`'s callback. Invoked with (err, [results]); + * @returns {Promise} a promise, if no callback is passed + */ + function doWhilst(iteratee, test, callback) { + callback = onlyOnce(callback); + var _fn = wrapAsync(iteratee); + var _test = wrapAsync(test); + var results; + + function next(err, ...args) { + if (err) return callback(err); + if (err === false) return; + results = args; + _test(...args, check); + } + + function check(err, truth) { + if (err) return callback(err); + if (err === false) return; + if (!truth) return callback(null, ...results); + _fn(next); + } + + return check(null, true); + } + + var doWhilst$1 = awaitify(doWhilst, 3); + + /** + * Like ['doWhilst']{@link module:ControlFlow.doWhilst}, except the `test` is inverted. Note the + * argument ordering differs from `until`. + * + * @name doUntil + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.doWhilst]{@link module:ControlFlow.doWhilst} + * @category Control Flow + * @param {AsyncFunction} iteratee - An async function which is called each time + * `test` fails. Invoked with (callback). + * @param {AsyncFunction} test - asynchronous truth test to perform after each + * execution of `iteratee`. Invoked with (...args, callback), where `...args` are the + * non-error args from the previous callback of `iteratee` + * @param {Function} [callback] - A callback which is called after the test + * function has passed and repeated execution of `iteratee` has stopped. `callback` + * will be passed an error and any arguments passed to the final `iteratee`'s + * callback. Invoked with (err, [results]); + * @returns {Promise} a promise, if no callback is passed + */ + function doUntil(iteratee, test, callback) { + const _test = wrapAsync(test); + return doWhilst$1(iteratee, (...args) => { + const cb = args.pop(); + _test(...args, (err, truth) => cb (err, !truth)); + }, callback); + } + + function _withoutIndex(iteratee) { + return (value, index, callback) => iteratee(value, callback); + } + + /** + * Applies the function `iteratee` to each item in `coll`, in parallel. + * The `iteratee` is called with an item from the list, and a callback for when + * it has finished. If the `iteratee` passes an error to its `callback`, the + * main `callback` (for the `each` function) is immediately called with the + * error. + * + * Note, that since this function applies `iteratee` to each item in parallel, + * there is no guarantee that the iteratee functions will complete in order. + * + * @name each + * @static + * @memberOf module:Collections + * @method + * @alias forEach + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to + * each item in `coll`. Invoked with (item, callback). + * The array index is not passed to the iteratee. + * If you need the index, use `eachOf`. + * @param {Function} [callback] - A callback which is called when all + * `iteratee` functions have finished, or an error occurs. Invoked with (err). + * @returns {Promise} a promise, if a callback is omitted + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * // dir4 does not exist + * + * const fileList = [ 'dir1/file2.txt', 'dir2/file3.txt', 'dir/file5.txt']; + * const withMissingFileList = ['dir1/file1.txt', 'dir4/file2.txt']; + * + * // asynchronous function that deletes a file + * const deleteFile = function(file, callback) { + * fs.unlink(file, callback); + * }; + * + * // Using callbacks + * async.each(fileList, deleteFile, function(err) { + * if( err ) { + * console.log(err); + * } else { + * console.log('All files have been deleted successfully'); + * } + * }); + * + * // Error Handling + * async.each(withMissingFileList, deleteFile, function(err){ + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * // since dir4/file2.txt does not exist + * // dir1/file1.txt could have been deleted + * }); + * + * // Using Promises + * async.each(fileList, deleteFile) + * .then( () => { + * console.log('All files have been deleted successfully'); + * }).catch( err => { + * console.log(err); + * }); + * + * // Error Handling + * async.each(fileList, deleteFile) + * .then( () => { + * console.log('All files have been deleted successfully'); + * }).catch( err => { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * // since dir4/file2.txt does not exist + * // dir1/file1.txt could have been deleted + * }); + * + * // Using async/await + * async () => { + * try { + * await async.each(files, deleteFile); + * } + * catch (err) { + * console.log(err); + * } + * } + * + * // Error Handling + * async () => { + * try { + * await async.each(withMissingFileList, deleteFile); + * } + * catch (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * // since dir4/file2.txt does not exist + * // dir1/file1.txt could have been deleted + * } + * } + * + */ + function eachLimit$2(coll, iteratee, callback) { + return eachOf$1(coll, _withoutIndex(wrapAsync(iteratee)), callback); + } + + var each = awaitify(eachLimit$2, 3); + + /** + * The same as [`each`]{@link module:Collections.each} but runs a maximum of `limit` async operations at a time. + * + * @name eachLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.each]{@link module:Collections.each} + * @alias forEachLimit + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The array index is not passed to the iteratee. + * If you need the index, use `eachOfLimit`. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called when all + * `iteratee` functions have finished, or an error occurs. Invoked with (err). + * @returns {Promise} a promise, if a callback is omitted + */ + function eachLimit(coll, limit, iteratee, callback) { + return eachOfLimit$2(limit)(coll, _withoutIndex(wrapAsync(iteratee)), callback); + } + var eachLimit$1 = awaitify(eachLimit, 4); + + /** + * The same as [`each`]{@link module:Collections.each} but runs only a single async operation at a time. + * + * Note, that unlike [`each`]{@link module:Collections.each}, this function applies iteratee to each item + * in series and therefore the iteratee functions will complete in order. + + * @name eachSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.each]{@link module:Collections.each} + * @alias forEachSeries + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to each + * item in `coll`. + * The array index is not passed to the iteratee. + * If you need the index, use `eachOfSeries`. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called when all + * `iteratee` functions have finished, or an error occurs. Invoked with (err). + * @returns {Promise} a promise, if a callback is omitted + */ + function eachSeries(coll, iteratee, callback) { + return eachLimit$1(coll, 1, iteratee, callback) + } + var eachSeries$1 = awaitify(eachSeries, 3); + + /** + * Wrap an async function and ensure it calls its callback on a later tick of + * the event loop. If the function already calls its callback on a next tick, + * no extra deferral is added. This is useful for preventing stack overflows + * (`RangeError: Maximum call stack size exceeded`) and generally keeping + * [Zalgo](http://blog.izs.me/post/59142742143/designing-apis-for-asynchrony) + * contained. ES2017 `async` functions are returned as-is -- they are immune + * to Zalgo's corrupting influences, as they always resolve on a later tick. + * + * @name ensureAsync + * @static + * @memberOf module:Utils + * @method + * @category Util + * @param {AsyncFunction} fn - an async function, one that expects a node-style + * callback as its last argument. + * @returns {AsyncFunction} Returns a wrapped function with the exact same call + * signature as the function passed in. + * @example + * + * function sometimesAsync(arg, callback) { + * if (cache[arg]) { + * return callback(null, cache[arg]); // this would be synchronous!! + * } else { + * doSomeIO(arg, callback); // this IO would be asynchronous + * } + * } + * + * // this has a risk of stack overflows if many results are cached in a row + * async.mapSeries(args, sometimesAsync, done); + * + * // this will defer sometimesAsync's callback if necessary, + * // preventing stack overflows + * async.mapSeries(args, async.ensureAsync(sometimesAsync), done); + */ + function ensureAsync(fn) { + if (isAsync(fn)) return fn; + return function (...args/*, callback*/) { + var callback = args.pop(); + var sync = true; + args.push((...innerArgs) => { + if (sync) { + setImmediate$1(() => callback(...innerArgs)); + } else { + callback(...innerArgs); + } + }); + fn.apply(this, args); + sync = false; + }; + } + + /** + * Returns `true` if every element in `coll` satisfies an async test. If any + * iteratee call returns `false`, the main `callback` is immediately called. + * + * @name every + * @static + * @memberOf module:Collections + * @method + * @alias all + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collection in parallel. + * The iteratee must complete with a boolean result value. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Result will be either `true` or `false` + * depending on the values of the async tests. Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * // dir4 does not exist + * + * const fileList = ['dir1/file1.txt','dir2/file3.txt','dir3/file5.txt']; + * const withMissingFileList = ['file1.txt','file2.txt','file4.txt']; + * + * // asynchronous function that checks if a file exists + * function fileExists(file, callback) { + * fs.access(file, fs.constants.F_OK, (err) => { + * callback(null, !err); + * }); + * } + * + * // Using callbacks + * async.every(fileList, fileExists, function(err, result) { + * console.log(result); + * // true + * // result is true since every file exists + * }); + * + * async.every(withMissingFileList, fileExists, function(err, result) { + * console.log(result); + * // false + * // result is false since NOT every file exists + * }); + * + * // Using Promises + * async.every(fileList, fileExists) + * .then( result => { + * console.log(result); + * // true + * // result is true since every file exists + * }).catch( err => { + * console.log(err); + * }); + * + * async.every(withMissingFileList, fileExists) + * .then( result => { + * console.log(result); + * // false + * // result is false since NOT every file exists + * }).catch( err => { + * console.log(err); + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.every(fileList, fileExists); + * console.log(result); + * // true + * // result is true since every file exists + * } + * catch (err) { + * console.log(err); + * } + * } + * + * async () => { + * try { + * let result = await async.every(withMissingFileList, fileExists); + * console.log(result); + * // false + * // result is false since NOT every file exists + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ + function every(coll, iteratee, callback) { + return _createTester(bool => !bool, res => !res)(eachOf$1, coll, iteratee, callback) + } + var every$1 = awaitify(every, 3); + + /** + * The same as [`every`]{@link module:Collections.every} but runs a maximum of `limit` async operations at a time. + * + * @name everyLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.every]{@link module:Collections.every} + * @alias allLimit + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collection in parallel. + * The iteratee must complete with a boolean result value. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Result will be either `true` or `false` + * depending on the values of the async tests. Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + */ + function everyLimit(coll, limit, iteratee, callback) { + return _createTester(bool => !bool, res => !res)(eachOfLimit$2(limit), coll, iteratee, callback) + } + var everyLimit$1 = awaitify(everyLimit, 4); + + /** + * The same as [`every`]{@link module:Collections.every} but runs only a single async operation at a time. + * + * @name everySeries + * @static + * @memberOf module:Collections + * @method + * @see [async.every]{@link module:Collections.every} + * @alias allSeries + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collection in series. + * The iteratee must complete with a boolean result value. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Result will be either `true` or `false` + * depending on the values of the async tests. Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + */ + function everySeries(coll, iteratee, callback) { + return _createTester(bool => !bool, res => !res)(eachOfSeries$1, coll, iteratee, callback) + } + var everySeries$1 = awaitify(everySeries, 3); + + function filterArray(eachfn, arr, iteratee, callback) { + var truthValues = new Array(arr.length); + eachfn(arr, (x, index, iterCb) => { + iteratee(x, (err, v) => { + truthValues[index] = !!v; + iterCb(err); + }); + }, err => { + if (err) return callback(err); + var results = []; + for (var i = 0; i < arr.length; i++) { + if (truthValues[i]) results.push(arr[i]); + } + callback(null, results); + }); + } + + function filterGeneric(eachfn, coll, iteratee, callback) { + var results = []; + eachfn(coll, (x, index, iterCb) => { + iteratee(x, (err, v) => { + if (err) return iterCb(err); + if (v) { + results.push({index, value: x}); + } + iterCb(err); + }); + }, err => { + if (err) return callback(err); + callback(null, results + .sort((a, b) => a.index - b.index) + .map(v => v.value)); + }); + } + + function _filter(eachfn, coll, iteratee, callback) { + var filter = isArrayLike(coll) ? filterArray : filterGeneric; + return filter(eachfn, coll, wrapAsync(iteratee), callback); + } + + /** + * Returns a new array of all the values in `coll` which pass an async truth + * test. This operation is performed in parallel, but the results array will be + * in the same order as the original. + * + * @name filter + * @static + * @memberOf module:Collections + * @method + * @alias select + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {Function} iteratee - A truth test to apply to each item in `coll`. + * The `iteratee` is passed a `callback(err, truthValue)`, which must be called + * with a boolean argument once it has completed. Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Invoked with (err, results). + * @returns {Promise} a promise, if no callback provided + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * + * const files = ['dir1/file1.txt','dir2/file3.txt','dir3/file6.txt']; + * + * // asynchronous function that checks if a file exists + * function fileExists(file, callback) { + * fs.access(file, fs.constants.F_OK, (err) => { + * callback(null, !err); + * }); + * } + * + * // Using callbacks + * async.filter(files, fileExists, function(err, results) { + * if(err) { + * console.log(err); + * } else { + * console.log(results); + * // [ 'dir1/file1.txt', 'dir2/file3.txt' ] + * // results is now an array of the existing files + * } + * }); + * + * // Using Promises + * async.filter(files, fileExists) + * .then(results => { + * console.log(results); + * // [ 'dir1/file1.txt', 'dir2/file3.txt' ] + * // results is now an array of the existing files + * }).catch(err => { + * console.log(err); + * }); + * + * // Using async/await + * async () => { + * try { + * let results = await async.filter(files, fileExists); + * console.log(results); + * // [ 'dir1/file1.txt', 'dir2/file3.txt' ] + * // results is now an array of the existing files + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ + function filter (coll, iteratee, callback) { + return _filter(eachOf$1, coll, iteratee, callback) + } + var filter$1 = awaitify(filter, 3); + + /** + * The same as [`filter`]{@link module:Collections.filter} but runs a maximum of `limit` async operations at a + * time. + * + * @name filterLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.filter]{@link module:Collections.filter} + * @alias selectLimit + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {Function} iteratee - A truth test to apply to each item in `coll`. + * The `iteratee` is passed a `callback(err, truthValue)`, which must be called + * with a boolean argument once it has completed. Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Invoked with (err, results). + * @returns {Promise} a promise, if no callback provided + */ + function filterLimit (coll, limit, iteratee, callback) { + return _filter(eachOfLimit$2(limit), coll, iteratee, callback) + } + var filterLimit$1 = awaitify(filterLimit, 4); + + /** + * The same as [`filter`]{@link module:Collections.filter} but runs only a single async operation at a time. + * + * @name filterSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.filter]{@link module:Collections.filter} + * @alias selectSeries + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {Function} iteratee - A truth test to apply to each item in `coll`. + * The `iteratee` is passed a `callback(err, truthValue)`, which must be called + * with a boolean argument once it has completed. Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Invoked with (err, results) + * @returns {Promise} a promise, if no callback provided + */ + function filterSeries (coll, iteratee, callback) { + return _filter(eachOfSeries$1, coll, iteratee, callback) + } + var filterSeries$1 = awaitify(filterSeries, 3); + + /** + * Calls the asynchronous function `fn` with a callback parameter that allows it + * to call itself again, in series, indefinitely. + + * If an error is passed to the callback then `errback` is called with the + * error, and execution stops, otherwise it will never be called. + * + * @name forever + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {AsyncFunction} fn - an async function to call repeatedly. + * Invoked with (next). + * @param {Function} [errback] - when `fn` passes an error to it's callback, + * this function will be called, and execution stops. Invoked with (err). + * @returns {Promise} a promise that rejects if an error occurs and an errback + * is not passed + * @example + * + * async.forever( + * function(next) { + * // next is suitable for passing to things that need a callback(err [, whatever]); + * // it will result in this function being called again. + * }, + * function(err) { + * // if next is called with a value in its first parameter, it will appear + * // in here as 'err', and execution will stop. + * } + * ); + */ + function forever(fn, errback) { + var done = onlyOnce(errback); + var task = wrapAsync(ensureAsync(fn)); + + function next(err) { + if (err) return done(err); + if (err === false) return; + task(next); + } + return next(); + } + var forever$1 = awaitify(forever, 2); + + /** + * The same as [`groupBy`]{@link module:Collections.groupBy} but runs a maximum of `limit` async operations at a time. + * + * @name groupByLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.groupBy]{@link module:Collections.groupBy} + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The iteratee should complete with a `key` to group the value under. + * Invoked with (value, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. Result is an `Object` whoses + * properties are arrays of values which returned the corresponding key. + * @returns {Promise} a promise, if no callback is passed + */ + function groupByLimit(coll, limit, iteratee, callback) { + var _iteratee = wrapAsync(iteratee); + return mapLimit$1(coll, limit, (val, iterCb) => { + _iteratee(val, (err, key) => { + if (err) return iterCb(err); + return iterCb(err, {key, val}); + }); + }, (err, mapResults) => { + var result = {}; + // from MDN, handle object having an `hasOwnProperty` prop + var {hasOwnProperty} = Object.prototype; + + for (var i = 0; i < mapResults.length; i++) { + if (mapResults[i]) { + var {key} = mapResults[i]; + var {val} = mapResults[i]; + + if (hasOwnProperty.call(result, key)) { + result[key].push(val); + } else { + result[key] = [val]; + } + } + } + + return callback(err, result); + }); + } + + var groupByLimit$1 = awaitify(groupByLimit, 4); + + /** + * Returns a new object, where each value corresponds to an array of items, from + * `coll`, that returned the corresponding key. That is, the keys of the object + * correspond to the values passed to the `iteratee` callback. + * + * Note: Since this function applies the `iteratee` to each item in parallel, + * there is no guarantee that the `iteratee` functions will complete in order. + * However, the values for each key in the `result` will be in the same order as + * the original `coll`. For Objects, the values will roughly be in the order of + * the original Objects' keys (but this can vary across JavaScript engines). + * + * @name groupBy + * @static + * @memberOf module:Collections + * @method + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The iteratee should complete with a `key` to group the value under. + * Invoked with (value, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. Result is an `Object` whoses + * properties are arrays of values which returned the corresponding key. + * @returns {Promise} a promise, if no callback is passed + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * // dir4 does not exist + * + * const files = ['dir1/file1.txt','dir2','dir4'] + * + * // asynchronous function that detects file type as none, file, or directory + * function detectFile(file, callback) { + * fs.stat(file, function(err, stat) { + * if (err) { + * return callback(null, 'none'); + * } + * callback(null, stat.isDirectory() ? 'directory' : 'file'); + * }); + * } + * + * //Using callbacks + * async.groupBy(files, detectFile, function(err, result) { + * if(err) { + * console.log(err); + * } else { + * console.log(result); + * // { + * // file: [ 'dir1/file1.txt' ], + * // none: [ 'dir4' ], + * // directory: [ 'dir2'] + * // } + * // result is object containing the files grouped by type + * } + * }); + * + * // Using Promises + * async.groupBy(files, detectFile) + * .then( result => { + * console.log(result); + * // { + * // file: [ 'dir1/file1.txt' ], + * // none: [ 'dir4' ], + * // directory: [ 'dir2'] + * // } + * // result is object containing the files grouped by type + * }).catch( err => { + * console.log(err); + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.groupBy(files, detectFile); + * console.log(result); + * // { + * // file: [ 'dir1/file1.txt' ], + * // none: [ 'dir4' ], + * // directory: [ 'dir2'] + * // } + * // result is object containing the files grouped by type + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ + function groupBy (coll, iteratee, callback) { + return groupByLimit$1(coll, Infinity, iteratee, callback) + } + + /** + * The same as [`groupBy`]{@link module:Collections.groupBy} but runs only a single async operation at a time. + * + * @name groupBySeries + * @static + * @memberOf module:Collections + * @method + * @see [async.groupBy]{@link module:Collections.groupBy} + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The iteratee should complete with a `key` to group the value under. + * Invoked with (value, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. Result is an `Object` whose + * properties are arrays of values which returned the corresponding key. + * @returns {Promise} a promise, if no callback is passed + */ + function groupBySeries (coll, iteratee, callback) { + return groupByLimit$1(coll, 1, iteratee, callback) + } + + /** + * Logs the result of an `async` function to the `console`. Only works in + * Node.js or in browsers that support `console.log` and `console.error` (such + * as FF and Chrome). If multiple arguments are returned from the async + * function, `console.log` is called on each argument in order. + * + * @name log + * @static + * @memberOf module:Utils + * @method + * @category Util + * @param {AsyncFunction} function - The function you want to eventually apply + * all arguments to. + * @param {...*} arguments... - Any number of arguments to apply to the function. + * @example + * + * // in a module + * var hello = function(name, callback) { + * setTimeout(function() { + * callback(null, 'hello ' + name); + * }, 1000); + * }; + * + * // in the node repl + * node> async.log(hello, 'world'); + * 'hello world' + */ + var log = consoleFunc('log'); + + /** + * The same as [`mapValues`]{@link module:Collections.mapValues} but runs a maximum of `limit` async operations at a + * time. + * + * @name mapValuesLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.mapValues]{@link module:Collections.mapValues} + * @category Collection + * @param {Object} obj - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - A function to apply to each value and key + * in `coll`. + * The iteratee should complete with the transformed value as its result. + * Invoked with (value, key, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. `result` is a new object consisting + * of each key from `obj`, with each transformed value on the right-hand side. + * Invoked with (err, result). + * @returns {Promise} a promise, if no callback is passed + */ + function mapValuesLimit(obj, limit, iteratee, callback) { + callback = once(callback); + var newObj = {}; + var _iteratee = wrapAsync(iteratee); + return eachOfLimit$2(limit)(obj, (val, key, next) => { + _iteratee(val, key, (err, result) => { + if (err) return next(err); + newObj[key] = result; + next(err); + }); + }, err => callback(err, newObj)); + } + + var mapValuesLimit$1 = awaitify(mapValuesLimit, 4); + + /** + * A relative of [`map`]{@link module:Collections.map}, designed for use with objects. + * + * Produces a new Object by mapping each value of `obj` through the `iteratee` + * function. The `iteratee` is called each `value` and `key` from `obj` and a + * callback for when it has finished processing. Each of these callbacks takes + * two arguments: an `error`, and the transformed item from `obj`. If `iteratee` + * passes an error to its callback, the main `callback` (for the `mapValues` + * function) is immediately called with the error. + * + * Note, the order of the keys in the result is not guaranteed. The keys will + * be roughly in the order they complete, (but this is very engine-specific) + * + * @name mapValues + * @static + * @memberOf module:Collections + * @method + * @category Collection + * @param {Object} obj - A collection to iterate over. + * @param {AsyncFunction} iteratee - A function to apply to each value and key + * in `coll`. + * The iteratee should complete with the transformed value as its result. + * Invoked with (value, key, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. `result` is a new object consisting + * of each key from `obj`, with each transformed value on the right-hand side. + * Invoked with (err, result). + * @returns {Promise} a promise, if no callback is passed + * @example + * + * // file1.txt is a file that is 1000 bytes in size + * // file2.txt is a file that is 2000 bytes in size + * // file3.txt is a file that is 3000 bytes in size + * // file4.txt does not exist + * + * const fileMap = { + * f1: 'file1.txt', + * f2: 'file2.txt', + * f3: 'file3.txt' + * }; + * + * const withMissingFileMap = { + * f1: 'file1.txt', + * f2: 'file2.txt', + * f3: 'file4.txt' + * }; + * + * // asynchronous function that returns the file size in bytes + * function getFileSizeInBytes(file, key, callback) { + * fs.stat(file, function(err, stat) { + * if (err) { + * return callback(err); + * } + * callback(null, stat.size); + * }); + * } + * + * // Using callbacks + * async.mapValues(fileMap, getFileSizeInBytes, function(err, result) { + * if (err) { + * console.log(err); + * } else { + * console.log(result); + * // result is now a map of file size in bytes for each file, e.g. + * // { + * // f1: 1000, + * // f2: 2000, + * // f3: 3000 + * // } + * } + * }); + * + * // Error handling + * async.mapValues(withMissingFileMap, getFileSizeInBytes, function(err, result) { + * if (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } else { + * console.log(result); + * } + * }); + * + * // Using Promises + * async.mapValues(fileMap, getFileSizeInBytes) + * .then( result => { + * console.log(result); + * // result is now a map of file size in bytes for each file, e.g. + * // { + * // f1: 1000, + * // f2: 2000, + * // f3: 3000 + * // } + * }).catch (err => { + * console.log(err); + * }); + * + * // Error Handling + * async.mapValues(withMissingFileMap, getFileSizeInBytes) + * .then( result => { + * console.log(result); + * }).catch (err => { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.mapValues(fileMap, getFileSizeInBytes); + * console.log(result); + * // result is now a map of file size in bytes for each file, e.g. + * // { + * // f1: 1000, + * // f2: 2000, + * // f3: 3000 + * // } + * } + * catch (err) { + * console.log(err); + * } + * } + * + * // Error Handling + * async () => { + * try { + * let result = await async.mapValues(withMissingFileMap, getFileSizeInBytes); + * console.log(result); + * } + * catch (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } + * } + * + */ + function mapValues(obj, iteratee, callback) { + return mapValuesLimit$1(obj, Infinity, iteratee, callback) + } + + /** + * The same as [`mapValues`]{@link module:Collections.mapValues} but runs only a single async operation at a time. + * + * @name mapValuesSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.mapValues]{@link module:Collections.mapValues} + * @category Collection + * @param {Object} obj - A collection to iterate over. + * @param {AsyncFunction} iteratee - A function to apply to each value and key + * in `coll`. + * The iteratee should complete with the transformed value as its result. + * Invoked with (value, key, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. `result` is a new object consisting + * of each key from `obj`, with each transformed value on the right-hand side. + * Invoked with (err, result). + * @returns {Promise} a promise, if no callback is passed + */ + function mapValuesSeries(obj, iteratee, callback) { + return mapValuesLimit$1(obj, 1, iteratee, callback) + } + + /** + * Caches the results of an async function. When creating a hash to store + * function results against, the callback is omitted from the hash and an + * optional hash function can be used. + * + * **Note: if the async function errs, the result will not be cached and + * subsequent calls will call the wrapped function.** + * + * If no hash function is specified, the first argument is used as a hash key, + * which may work reasonably if it is a string or a data type that converts to a + * distinct string. Note that objects and arrays will not behave reasonably. + * Neither will cases where the other arguments are significant. In such cases, + * specify your own hash function. + * + * The cache of results is exposed as the `memo` property of the function + * returned by `memoize`. + * + * @name memoize + * @static + * @memberOf module:Utils + * @method + * @category Util + * @param {AsyncFunction} fn - The async function to proxy and cache results from. + * @param {Function} hasher - An optional function for generating a custom hash + * for storing results. It has all the arguments applied to it apart from the + * callback, and must be synchronous. + * @returns {AsyncFunction} a memoized version of `fn` + * @example + * + * var slow_fn = function(name, callback) { + * // do something + * callback(null, result); + * }; + * var fn = async.memoize(slow_fn); + * + * // fn can now be used as if it were slow_fn + * fn('some name', function() { + * // callback + * }); + */ + function memoize(fn, hasher = v => v) { + var memo = Object.create(null); + var queues = Object.create(null); + var _fn = wrapAsync(fn); + var memoized = initialParams((args, callback) => { + var key = hasher(...args); + if (key in memo) { + setImmediate$1(() => callback(null, ...memo[key])); + } else if (key in queues) { + queues[key].push(callback); + } else { + queues[key] = [callback]; + _fn(...args, (err, ...resultArgs) => { + // #1465 don't memoize if an error occurred + if (!err) { + memo[key] = resultArgs; + } + var q = queues[key]; + delete queues[key]; + for (var i = 0, l = q.length; i < l; i++) { + q[i](err, ...resultArgs); + } + }); + } + }); + memoized.memo = memo; + memoized.unmemoized = fn; + return memoized; + } + + /* istanbul ignore file */ + + /** + * Calls `callback` on a later loop around the event loop. In Node.js this just + * calls `process.nextTick`. In the browser it will use `setImmediate` if + * available, otherwise `setTimeout(callback, 0)`, which means other higher + * priority events may precede the execution of `callback`. + * + * This is used internally for browser-compatibility purposes. + * + * @name nextTick + * @static + * @memberOf module:Utils + * @method + * @see [async.setImmediate]{@link module:Utils.setImmediate} + * @category Util + * @param {Function} callback - The function to call on a later loop around + * the event loop. Invoked with (args...). + * @param {...*} args... - any number of additional arguments to pass to the + * callback on the next tick. + * @example + * + * var call_order = []; + * async.nextTick(function() { + * call_order.push('two'); + * // call_order now equals ['one','two'] + * }); + * call_order.push('one'); + * + * async.setImmediate(function (a, b, c) { + * // a, b, and c equal 1, 2, and 3 + * }, 1, 2, 3); + */ + var _defer; + + if (hasNextTick) { + _defer = process.nextTick; + } else if (hasSetImmediate) { + _defer = setImmediate; + } else { + _defer = fallback; + } + + var nextTick = wrap(_defer); + + var _parallel = awaitify((eachfn, tasks, callback) => { + var results = isArrayLike(tasks) ? [] : {}; + + eachfn(tasks, (task, key, taskCb) => { + wrapAsync(task)((err, ...result) => { + if (result.length < 2) { + [result] = result; + } + results[key] = result; + taskCb(err); + }); + }, err => callback(err, results)); + }, 3); + + /** + * Run the `tasks` collection of functions in parallel, without waiting until + * the previous function has completed. If any of the functions pass an error to + * its callback, the main `callback` is immediately called with the value of the + * error. Once the `tasks` have completed, the results are passed to the final + * `callback` as an array. + * + * **Note:** `parallel` is about kicking-off I/O tasks in parallel, not about + * parallel execution of code. If your tasks do not use any timers or perform + * any I/O, they will actually be executed in series. Any synchronous setup + * sections for each task will happen one after the other. JavaScript remains + * single-threaded. + * + * **Hint:** Use [`reflect`]{@link module:Utils.reflect} to continue the + * execution of other tasks when a task fails. + * + * It is also possible to use an object instead of an array. Each property will + * be run as a function and the results will be passed to the final `callback` + * as an object instead of an array. This can be a more readable way of handling + * results from {@link async.parallel}. + * + * @name parallel + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {Array|Iterable|AsyncIterable|Object} tasks - A collection of + * [async functions]{@link AsyncFunction} to run. + * Each async function can complete with any number of optional `result` values. + * @param {Function} [callback] - An optional callback to run once all the + * functions have completed successfully. This function gets a results array + * (or object) containing all the result arguments passed to the task callbacks. + * Invoked with (err, results). + * @returns {Promise} a promise, if a callback is not passed + * + * @example + * + * //Using Callbacks + * async.parallel([ + * function(callback) { + * setTimeout(function() { + * callback(null, 'one'); + * }, 200); + * }, + * function(callback) { + * setTimeout(function() { + * callback(null, 'two'); + * }, 100); + * } + * ], function(err, results) { + * console.log(results); + * // results is equal to ['one','two'] even though + * // the second function had a shorter timeout. + * }); + * + * // an example using an object instead of an array + * async.parallel({ + * one: function(callback) { + * setTimeout(function() { + * callback(null, 1); + * }, 200); + * }, + * two: function(callback) { + * setTimeout(function() { + * callback(null, 2); + * }, 100); + * } + * }, function(err, results) { + * console.log(results); + * // results is equal to: { one: 1, two: 2 } + * }); + * + * //Using Promises + * async.parallel([ + * function(callback) { + * setTimeout(function() { + * callback(null, 'one'); + * }, 200); + * }, + * function(callback) { + * setTimeout(function() { + * callback(null, 'two'); + * }, 100); + * } + * ]).then(results => { + * console.log(results); + * // results is equal to ['one','two'] even though + * // the second function had a shorter timeout. + * }).catch(err => { + * console.log(err); + * }); + * + * // an example using an object instead of an array + * async.parallel({ + * one: function(callback) { + * setTimeout(function() { + * callback(null, 1); + * }, 200); + * }, + * two: function(callback) { + * setTimeout(function() { + * callback(null, 2); + * }, 100); + * } + * }).then(results => { + * console.log(results); + * // results is equal to: { one: 1, two: 2 } + * }).catch(err => { + * console.log(err); + * }); + * + * //Using async/await + * async () => { + * try { + * let results = await async.parallel([ + * function(callback) { + * setTimeout(function() { + * callback(null, 'one'); + * }, 200); + * }, + * function(callback) { + * setTimeout(function() { + * callback(null, 'two'); + * }, 100); + * } + * ]); + * console.log(results); + * // results is equal to ['one','two'] even though + * // the second function had a shorter timeout. + * } + * catch (err) { + * console.log(err); + * } + * } + * + * // an example using an object instead of an array + * async () => { + * try { + * let results = await async.parallel({ + * one: function(callback) { + * setTimeout(function() { + * callback(null, 1); + * }, 200); + * }, + * two: function(callback) { + * setTimeout(function() { + * callback(null, 2); + * }, 100); + * } + * }); + * console.log(results); + * // results is equal to: { one: 1, two: 2 } + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ + function parallel(tasks, callback) { + return _parallel(eachOf$1, tasks, callback); + } + + /** + * The same as [`parallel`]{@link module:ControlFlow.parallel} but runs a maximum of `limit` async operations at a + * time. + * + * @name parallelLimit + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.parallel]{@link module:ControlFlow.parallel} + * @category Control Flow + * @param {Array|Iterable|AsyncIterable|Object} tasks - A collection of + * [async functions]{@link AsyncFunction} to run. + * Each async function can complete with any number of optional `result` values. + * @param {number} limit - The maximum number of async operations at a time. + * @param {Function} [callback] - An optional callback to run once all the + * functions have completed successfully. This function gets a results array + * (or object) containing all the result arguments passed to the task callbacks. + * Invoked with (err, results). + * @returns {Promise} a promise, if a callback is not passed + */ + function parallelLimit(tasks, limit, callback) { + return _parallel(eachOfLimit$2(limit), tasks, callback); + } + + /** + * A queue of tasks for the worker function to complete. + * @typedef {Iterable} QueueObject + * @memberOf module:ControlFlow + * @property {Function} length - a function returning the number of items + * waiting to be processed. Invoke with `queue.length()`. + * @property {boolean} started - a boolean indicating whether or not any + * items have been pushed and processed by the queue. + * @property {Function} running - a function returning the number of items + * currently being processed. Invoke with `queue.running()`. + * @property {Function} workersList - a function returning the array of items + * currently being processed. Invoke with `queue.workersList()`. + * @property {Function} idle - a function returning false if there are items + * waiting or being processed, or true if not. Invoke with `queue.idle()`. + * @property {number} concurrency - an integer for determining how many `worker` + * functions should be run in parallel. This property can be changed after a + * `queue` is created to alter the concurrency on-the-fly. + * @property {number} payload - an integer that specifies how many items are + * passed to the worker function at a time. only applies if this is a + * [cargo]{@link module:ControlFlow.cargo} object + * @property {AsyncFunction} push - add a new task to the `queue`. Calls `callback` + * once the `worker` has finished processing the task. Instead of a single task, + * a `tasks` array can be submitted. The respective callback is used for every + * task in the list. Invoke with `queue.push(task, [callback])`, + * @property {AsyncFunction} unshift - add a new task to the front of the `queue`. + * Invoke with `queue.unshift(task, [callback])`. + * @property {AsyncFunction} pushAsync - the same as `q.push`, except this returns + * a promise that rejects if an error occurs. + * @property {AsyncFunction} unshiftAsync - the same as `q.unshift`, except this returns + * a promise that rejects if an error occurs. + * @property {Function} remove - remove items from the queue that match a test + * function. The test function will be passed an object with a `data` property, + * and a `priority` property, if this is a + * [priorityQueue]{@link module:ControlFlow.priorityQueue} object. + * Invoked with `queue.remove(testFn)`, where `testFn` is of the form + * `function ({data, priority}) {}` and returns a Boolean. + * @property {Function} saturated - a function that sets a callback that is + * called when the number of running workers hits the `concurrency` limit, and + * further tasks will be queued. If the callback is omitted, `q.saturated()` + * returns a promise for the next occurrence. + * @property {Function} unsaturated - a function that sets a callback that is + * called when the number of running workers is less than the `concurrency` & + * `buffer` limits, and further tasks will not be queued. If the callback is + * omitted, `q.unsaturated()` returns a promise for the next occurrence. + * @property {number} buffer - A minimum threshold buffer in order to say that + * the `queue` is `unsaturated`. + * @property {Function} empty - a function that sets a callback that is called + * when the last item from the `queue` is given to a `worker`. If the callback + * is omitted, `q.empty()` returns a promise for the next occurrence. + * @property {Function} drain - a function that sets a callback that is called + * when the last item from the `queue` has returned from the `worker`. If the + * callback is omitted, `q.drain()` returns a promise for the next occurrence. + * @property {Function} error - a function that sets a callback that is called + * when a task errors. Has the signature `function(error, task)`. If the + * callback is omitted, `error()` returns a promise that rejects on the next + * error. + * @property {boolean} paused - a boolean for determining whether the queue is + * in a paused state. + * @property {Function} pause - a function that pauses the processing of tasks + * until `resume()` is called. Invoke with `queue.pause()`. + * @property {Function} resume - a function that resumes the processing of + * queued tasks when the queue is paused. Invoke with `queue.resume()`. + * @property {Function} kill - a function that removes the `drain` callback and + * empties remaining tasks from the queue forcing it to go idle. No more tasks + * should be pushed to the queue after calling this function. Invoke with `queue.kill()`. + * + * @example + * const q = async.queue(worker, 2) + * q.push(item1) + * q.push(item2) + * q.push(item3) + * // queues are iterable, spread into an array to inspect + * const items = [...q] // [item1, item2, item3] + * // or use for of + * for (let item of q) { + * console.log(item) + * } + * + * q.drain(() => { + * console.log('all done') + * }) + * // or + * await q.drain() + */ + + /** + * Creates a `queue` object with the specified `concurrency`. Tasks added to the + * `queue` are processed in parallel (up to the `concurrency` limit). If all + * `worker`s are in progress, the task is queued until one becomes available. + * Once a `worker` completes a `task`, that `task`'s callback is called. + * + * @name queue + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {AsyncFunction} worker - An async function for processing a queued task. + * If you want to handle errors from an individual task, pass a callback to + * `q.push()`. Invoked with (task, callback). + * @param {number} [concurrency=1] - An `integer` for determining how many + * `worker` functions should be run in parallel. If omitted, the concurrency + * defaults to `1`. If the concurrency is `0`, an error is thrown. + * @returns {module:ControlFlow.QueueObject} A queue object to manage the tasks. Callbacks can be + * attached as certain properties to listen for specific events during the + * lifecycle of the queue. + * @example + * + * // create a queue object with concurrency 2 + * var q = async.queue(function(task, callback) { + * console.log('hello ' + task.name); + * callback(); + * }, 2); + * + * // assign a callback + * q.drain(function() { + * console.log('all items have been processed'); + * }); + * // or await the end + * await q.drain() + * + * // assign an error callback + * q.error(function(err, task) { + * console.error('task experienced an error'); + * }); + * + * // add some items to the queue + * q.push({name: 'foo'}, function(err) { + * console.log('finished processing foo'); + * }); + * // callback is optional + * q.push({name: 'bar'}); + * + * // add some items to the queue (batch-wise) + * q.push([{name: 'baz'},{name: 'bay'},{name: 'bax'}], function(err) { + * console.log('finished processing item'); + * }); + * + * // add some items to the front of the queue + * q.unshift({name: 'bar'}, function (err) { + * console.log('finished processing bar'); + * }); + */ + function queue (worker, concurrency) { + var _worker = wrapAsync(worker); + return queue$1((items, cb) => { + _worker(items[0], cb); + }, concurrency, 1); + } + + // Binary min-heap implementation used for priority queue. + // Implementation is stable, i.e. push time is considered for equal priorities + class Heap { + constructor() { + this.heap = []; + this.pushCount = Number.MIN_SAFE_INTEGER; + } + + get length() { + return this.heap.length; + } + + empty () { + this.heap = []; + return this; + } + + percUp(index) { + let p; + + while (index > 0 && smaller(this.heap[index], this.heap[p=parent(index)])) { + let t = this.heap[index]; + this.heap[index] = this.heap[p]; + this.heap[p] = t; + + index = p; + } + } + + percDown(index) { + let l; + + while ((l=leftChi(index)) < this.heap.length) { + if (l+1 < this.heap.length && smaller(this.heap[l+1], this.heap[l])) { + l = l+1; + } + + if (smaller(this.heap[index], this.heap[l])) { + break; + } + + let t = this.heap[index]; + this.heap[index] = this.heap[l]; + this.heap[l] = t; + + index = l; + } + } + + push(node) { + node.pushCount = ++this.pushCount; + this.heap.push(node); + this.percUp(this.heap.length-1); + } + + unshift(node) { + return this.heap.push(node); + } + + shift() { + let [top] = this.heap; + + this.heap[0] = this.heap[this.heap.length-1]; + this.heap.pop(); + this.percDown(0); + + return top; + } + + toArray() { + return [...this]; + } + + *[Symbol.iterator] () { + for (let i = 0; i < this.heap.length; i++) { + yield this.heap[i].data; + } + } + + remove (testFn) { + let j = 0; + for (let i = 0; i < this.heap.length; i++) { + if (!testFn(this.heap[i])) { + this.heap[j] = this.heap[i]; + j++; + } + } + + this.heap.splice(j); + + for (let i = parent(this.heap.length-1); i >= 0; i--) { + this.percDown(i); + } + + return this; + } + } + + function leftChi(i) { + return (i<<1)+1; + } + + function parent(i) { + return ((i+1)>>1)-1; + } + + function smaller(x, y) { + if (x.priority !== y.priority) { + return x.priority < y.priority; + } + else { + return x.pushCount < y.pushCount; + } + } + + /** + * The same as [async.queue]{@link module:ControlFlow.queue} only tasks are assigned a priority and + * completed in ascending priority order. + * + * @name priorityQueue + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.queue]{@link module:ControlFlow.queue} + * @category Control Flow + * @param {AsyncFunction} worker - An async function for processing a queued task. + * If you want to handle errors from an individual task, pass a callback to + * `q.push()`. + * Invoked with (task, callback). + * @param {number} concurrency - An `integer` for determining how many `worker` + * functions should be run in parallel. If omitted, the concurrency defaults to + * `1`. If the concurrency is `0`, an error is thrown. + * @returns {module:ControlFlow.QueueObject} A priorityQueue object to manage the tasks. There are three + * differences between `queue` and `priorityQueue` objects: + * * `push(task, priority, [callback])` - `priority` should be a number. If an + * array of `tasks` is given, all tasks will be assigned the same priority. + * * `pushAsync(task, priority, [callback])` - the same as `priorityQueue.push`, + * except this returns a promise that rejects if an error occurs. + * * The `unshift` and `unshiftAsync` methods were removed. + */ + function priorityQueue(worker, concurrency) { + // Start with a normal queue + var q = queue(worker, concurrency); + + var { + push, + pushAsync + } = q; + + q._tasks = new Heap(); + q._createTaskItem = ({data, priority}, callback) => { + return { + data, + priority, + callback + }; + }; + + function createDataItems(tasks, priority) { + if (!Array.isArray(tasks)) { + return {data: tasks, priority}; + } + return tasks.map(data => { return {data, priority}; }); + } + + // Override push to accept second parameter representing priority + q.push = function(data, priority = 0, callback) { + return push(createDataItems(data, priority), callback); + }; + + q.pushAsync = function(data, priority = 0, callback) { + return pushAsync(createDataItems(data, priority), callback); + }; + + // Remove unshift functions + delete q.unshift; + delete q.unshiftAsync; + + return q; + } + + /** + * Runs the `tasks` array of functions in parallel, without waiting until the + * previous function has completed. Once any of the `tasks` complete or pass an + * error to its callback, the main `callback` is immediately called. It's + * equivalent to `Promise.race()`. + * + * @name race + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {Array} tasks - An array containing [async functions]{@link AsyncFunction} + * to run. Each function can complete with an optional `result` value. + * @param {Function} callback - A callback to run once any of the functions have + * completed. This function gets an error or result from the first function that + * completed. Invoked with (err, result). + * @returns {Promise} a promise, if a callback is omitted + * @example + * + * async.race([ + * function(callback) { + * setTimeout(function() { + * callback(null, 'one'); + * }, 200); + * }, + * function(callback) { + * setTimeout(function() { + * callback(null, 'two'); + * }, 100); + * } + * ], + * // main callback + * function(err, result) { + * // the result will be equal to 'two' as it finishes earlier + * }); + */ + function race(tasks, callback) { + callback = once(callback); + if (!Array.isArray(tasks)) return callback(new TypeError('First argument to race must be an array of functions')); + if (!tasks.length) return callback(); + for (var i = 0, l = tasks.length; i < l; i++) { + wrapAsync(tasks[i])(callback); + } + } + + var race$1 = awaitify(race, 2); + + /** + * Same as [`reduce`]{@link module:Collections.reduce}, only operates on `array` in reverse order. + * + * @name reduceRight + * @static + * @memberOf module:Collections + * @method + * @see [async.reduce]{@link module:Collections.reduce} + * @alias foldr + * @category Collection + * @param {Array} array - A collection to iterate over. + * @param {*} memo - The initial state of the reduction. + * @param {AsyncFunction} iteratee - A function applied to each item in the + * array to produce the next step in the reduction. + * The `iteratee` should complete with the next state of the reduction. + * If the iteratee completes with an error, the reduction is stopped and the + * main `callback` is immediately called with the error. + * Invoked with (memo, item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Result is the reduced value. Invoked with + * (err, result). + * @returns {Promise} a promise, if no callback is passed + */ + function reduceRight (array, memo, iteratee, callback) { + var reversed = [...array].reverse(); + return reduce$1(reversed, memo, iteratee, callback); + } + + /** + * Wraps the async function in another function that always completes with a + * result object, even when it errors. + * + * The result object has either the property `error` or `value`. + * + * @name reflect + * @static + * @memberOf module:Utils + * @method + * @category Util + * @param {AsyncFunction} fn - The async function you want to wrap + * @returns {Function} - A function that always passes null to it's callback as + * the error. The second argument to the callback will be an `object` with + * either an `error` or a `value` property. + * @example + * + * async.parallel([ + * async.reflect(function(callback) { + * // do some stuff ... + * callback(null, 'one'); + * }), + * async.reflect(function(callback) { + * // do some more stuff but error ... + * callback('bad stuff happened'); + * }), + * async.reflect(function(callback) { + * // do some more stuff ... + * callback(null, 'two'); + * }) + * ], + * // optional callback + * function(err, results) { + * // values + * // results[0].value = 'one' + * // results[1].error = 'bad stuff happened' + * // results[2].value = 'two' + * }); + */ + function reflect(fn) { + var _fn = wrapAsync(fn); + return initialParams(function reflectOn(args, reflectCallback) { + args.push((error, ...cbArgs) => { + let retVal = {}; + if (error) { + retVal.error = error; + } + if (cbArgs.length > 0){ + var value = cbArgs; + if (cbArgs.length <= 1) { + [value] = cbArgs; + } + retVal.value = value; + } + reflectCallback(null, retVal); + }); + + return _fn.apply(this, args); + }); + } + + /** + * A helper function that wraps an array or an object of functions with `reflect`. + * + * @name reflectAll + * @static + * @memberOf module:Utils + * @method + * @see [async.reflect]{@link module:Utils.reflect} + * @category Util + * @param {Array|Object|Iterable} tasks - The collection of + * [async functions]{@link AsyncFunction} to wrap in `async.reflect`. + * @returns {Array} Returns an array of async functions, each wrapped in + * `async.reflect` + * @example + * + * let tasks = [ + * function(callback) { + * setTimeout(function() { + * callback(null, 'one'); + * }, 200); + * }, + * function(callback) { + * // do some more stuff but error ... + * callback(new Error('bad stuff happened')); + * }, + * function(callback) { + * setTimeout(function() { + * callback(null, 'two'); + * }, 100); + * } + * ]; + * + * async.parallel(async.reflectAll(tasks), + * // optional callback + * function(err, results) { + * // values + * // results[0].value = 'one' + * // results[1].error = Error('bad stuff happened') + * // results[2].value = 'two' + * }); + * + * // an example using an object instead of an array + * let tasks = { + * one: function(callback) { + * setTimeout(function() { + * callback(null, 'one'); + * }, 200); + * }, + * two: function(callback) { + * callback('two'); + * }, + * three: function(callback) { + * setTimeout(function() { + * callback(null, 'three'); + * }, 100); + * } + * }; + * + * async.parallel(async.reflectAll(tasks), + * // optional callback + * function(err, results) { + * // values + * // results.one.value = 'one' + * // results.two.error = 'two' + * // results.three.value = 'three' + * }); + */ + function reflectAll(tasks) { + var results; + if (Array.isArray(tasks)) { + results = tasks.map(reflect); + } else { + results = {}; + Object.keys(tasks).forEach(key => { + results[key] = reflect.call(this, tasks[key]); + }); + } + return results; + } + + function reject$2(eachfn, arr, _iteratee, callback) { + const iteratee = wrapAsync(_iteratee); + return _filter(eachfn, arr, (value, cb) => { + iteratee(value, (err, v) => { + cb(err, !v); + }); + }, callback); + } + + /** + * The opposite of [`filter`]{@link module:Collections.filter}. Removes values that pass an `async` truth test. + * + * @name reject + * @static + * @memberOf module:Collections + * @method + * @see [async.filter]{@link module:Collections.filter} + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {Function} iteratee - An async truth test to apply to each item in + * `coll`. + * The should complete with a boolean value as its `result`. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Invoked with (err, results). + * @returns {Promise} a promise, if no callback is passed + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * + * const fileList = ['dir1/file1.txt','dir2/file3.txt','dir3/file6.txt']; + * + * // asynchronous function that checks if a file exists + * function fileExists(file, callback) { + * fs.access(file, fs.constants.F_OK, (err) => { + * callback(null, !err); + * }); + * } + * + * // Using callbacks + * async.reject(fileList, fileExists, function(err, results) { + * // [ 'dir3/file6.txt' ] + * // results now equals an array of the non-existing files + * }); + * + * // Using Promises + * async.reject(fileList, fileExists) + * .then( results => { + * console.log(results); + * // [ 'dir3/file6.txt' ] + * // results now equals an array of the non-existing files + * }).catch( err => { + * console.log(err); + * }); + * + * // Using async/await + * async () => { + * try { + * let results = await async.reject(fileList, fileExists); + * console.log(results); + * // [ 'dir3/file6.txt' ] + * // results now equals an array of the non-existing files + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ + function reject (coll, iteratee, callback) { + return reject$2(eachOf$1, coll, iteratee, callback) + } + var reject$1 = awaitify(reject, 3); + + /** + * The same as [`reject`]{@link module:Collections.reject} but runs a maximum of `limit` async operations at a + * time. + * + * @name rejectLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.reject]{@link module:Collections.reject} + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {Function} iteratee - An async truth test to apply to each item in + * `coll`. + * The should complete with a boolean value as its `result`. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Invoked with (err, results). + * @returns {Promise} a promise, if no callback is passed + */ + function rejectLimit (coll, limit, iteratee, callback) { + return reject$2(eachOfLimit$2(limit), coll, iteratee, callback) + } + var rejectLimit$1 = awaitify(rejectLimit, 4); + + /** + * The same as [`reject`]{@link module:Collections.reject} but runs only a single async operation at a time. + * + * @name rejectSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.reject]{@link module:Collections.reject} + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {Function} iteratee - An async truth test to apply to each item in + * `coll`. + * The should complete with a boolean value as its `result`. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Invoked with (err, results). + * @returns {Promise} a promise, if no callback is passed + */ + function rejectSeries (coll, iteratee, callback) { + return reject$2(eachOfSeries$1, coll, iteratee, callback) + } + var rejectSeries$1 = awaitify(rejectSeries, 3); + + function constant(value) { + return function () { + return value; + } + } + + /** + * Attempts to get a successful response from `task` no more than `times` times + * before returning an error. If the task is successful, the `callback` will be + * passed the result of the successful task. If all attempts fail, the callback + * will be passed the error and result (if any) of the final attempt. + * + * @name retry + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @see [async.retryable]{@link module:ControlFlow.retryable} + * @param {Object|number} [opts = {times: 5, interval: 0}| 5] - Can be either an + * object with `times` and `interval` or a number. + * * `times` - The number of attempts to make before giving up. The default + * is `5`. + * * `interval` - The time to wait between retries, in milliseconds. The + * default is `0`. The interval may also be specified as a function of the + * retry count (see example). + * * `errorFilter` - An optional synchronous function that is invoked on + * erroneous result. If it returns `true` the retry attempts will continue; + * if the function returns `false` the retry flow is aborted with the current + * attempt's error and result being returned to the final callback. + * Invoked with (err). + * * If `opts` is a number, the number specifies the number of times to retry, + * with the default interval of `0`. + * @param {AsyncFunction} task - An async function to retry. + * Invoked with (callback). + * @param {Function} [callback] - An optional callback which is called when the + * task has succeeded, or after the final failed attempt. It receives the `err` + * and `result` arguments of the last attempt at completing the `task`. Invoked + * with (err, results). + * @returns {Promise} a promise if no callback provided + * + * @example + * + * // The `retry` function can be used as a stand-alone control flow by passing + * // a callback, as shown below: + * + * // try calling apiMethod 3 times + * async.retry(3, apiMethod, function(err, result) { + * // do something with the result + * }); + * + * // try calling apiMethod 3 times, waiting 200 ms between each retry + * async.retry({times: 3, interval: 200}, apiMethod, function(err, result) { + * // do something with the result + * }); + * + * // try calling apiMethod 10 times with exponential backoff + * // (i.e. intervals of 100, 200, 400, 800, 1600, ... milliseconds) + * async.retry({ + * times: 10, + * interval: function(retryCount) { + * return 50 * Math.pow(2, retryCount); + * } + * }, apiMethod, function(err, result) { + * // do something with the result + * }); + * + * // try calling apiMethod the default 5 times no delay between each retry + * async.retry(apiMethod, function(err, result) { + * // do something with the result + * }); + * + * // try calling apiMethod only when error condition satisfies, all other + * // errors will abort the retry control flow and return to final callback + * async.retry({ + * errorFilter: function(err) { + * return err.message === 'Temporary error'; // only retry on a specific error + * } + * }, apiMethod, function(err, result) { + * // do something with the result + * }); + * + * // to retry individual methods that are not as reliable within other + * // control flow functions, use the `retryable` wrapper: + * async.auto({ + * users: api.getUsers.bind(api), + * payments: async.retryable(3, api.getPayments.bind(api)) + * }, function(err, results) { + * // do something with the results + * }); + * + */ + const DEFAULT_TIMES = 5; + const DEFAULT_INTERVAL = 0; + + function retry(opts, task, callback) { + var options = { + times: DEFAULT_TIMES, + intervalFunc: constant(DEFAULT_INTERVAL) + }; + + if (arguments.length < 3 && typeof opts === 'function') { + callback = task || promiseCallback(); + task = opts; + } else { + parseTimes(options, opts); + callback = callback || promiseCallback(); + } + + if (typeof task !== 'function') { + throw new Error("Invalid arguments for async.retry"); + } + + var _task = wrapAsync(task); + + var attempt = 1; + function retryAttempt() { + _task((err, ...args) => { + if (err === false) return + if (err && attempt++ < options.times && + (typeof options.errorFilter != 'function' || + options.errorFilter(err))) { + setTimeout(retryAttempt, options.intervalFunc(attempt - 1)); + } else { + callback(err, ...args); + } + }); + } + + retryAttempt(); + return callback[PROMISE_SYMBOL] + } + + function parseTimes(acc, t) { + if (typeof t === 'object') { + acc.times = +t.times || DEFAULT_TIMES; + + acc.intervalFunc = typeof t.interval === 'function' ? + t.interval : + constant(+t.interval || DEFAULT_INTERVAL); + + acc.errorFilter = t.errorFilter; + } else if (typeof t === 'number' || typeof t === 'string') { + acc.times = +t || DEFAULT_TIMES; + } else { + throw new Error("Invalid arguments for async.retry"); + } + } + + /** + * A close relative of [`retry`]{@link module:ControlFlow.retry}. This method + * wraps a task and makes it retryable, rather than immediately calling it + * with retries. + * + * @name retryable + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.retry]{@link module:ControlFlow.retry} + * @category Control Flow + * @param {Object|number} [opts = {times: 5, interval: 0}| 5] - optional + * options, exactly the same as from `retry`, except for a `opts.arity` that + * is the arity of the `task` function, defaulting to `task.length` + * @param {AsyncFunction} task - the asynchronous function to wrap. + * This function will be passed any arguments passed to the returned wrapper. + * Invoked with (...args, callback). + * @returns {AsyncFunction} The wrapped function, which when invoked, will + * retry on an error, based on the parameters specified in `opts`. + * This function will accept the same parameters as `task`. + * @example + * + * async.auto({ + * dep1: async.retryable(3, getFromFlakyService), + * process: ["dep1", async.retryable(3, function (results, cb) { + * maybeProcessData(results.dep1, cb); + * })] + * }, callback); + */ + function retryable (opts, task) { + if (!task) { + task = opts; + opts = null; + } + let arity = (opts && opts.arity) || task.length; + if (isAsync(task)) { + arity += 1; + } + var _task = wrapAsync(task); + return initialParams((args, callback) => { + if (args.length < arity - 1 || callback == null) { + args.push(callback); + callback = promiseCallback(); + } + function taskFn(cb) { + _task(...args, cb); + } + + if (opts) retry(opts, taskFn, callback); + else retry(taskFn, callback); + + return callback[PROMISE_SYMBOL] + }); + } + + /** + * Run the functions in the `tasks` collection in series, each one running once + * the previous function has completed. If any functions in the series pass an + * error to its callback, no more functions are run, and `callback` is + * immediately called with the value of the error. Otherwise, `callback` + * receives an array of results when `tasks` have completed. + * + * It is also possible to use an object instead of an array. Each property will + * be run as a function, and the results will be passed to the final `callback` + * as an object instead of an array. This can be a more readable way of handling + * results from {@link async.series}. + * + * **Note** that while many implementations preserve the order of object + * properties, the [ECMAScript Language Specification](http://www.ecma-international.org/ecma-262/5.1/#sec-8.6) + * explicitly states that + * + * > The mechanics and order of enumerating the properties is not specified. + * + * So if you rely on the order in which your series of functions are executed, + * and want this to work on all platforms, consider using an array. + * + * @name series + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {Array|Iterable|AsyncIterable|Object} tasks - A collection containing + * [async functions]{@link AsyncFunction} to run in series. + * Each function can complete with any number of optional `result` values. + * @param {Function} [callback] - An optional callback to run once all the + * functions have completed. This function gets a results array (or object) + * containing all the result arguments passed to the `task` callbacks. Invoked + * with (err, result). + * @return {Promise} a promise, if no callback is passed + * @example + * + * //Using Callbacks + * async.series([ + * function(callback) { + * setTimeout(function() { + * // do some async task + * callback(null, 'one'); + * }, 200); + * }, + * function(callback) { + * setTimeout(function() { + * // then do another async task + * callback(null, 'two'); + * }, 100); + * } + * ], function(err, results) { + * console.log(results); + * // results is equal to ['one','two'] + * }); + * + * // an example using objects instead of arrays + * async.series({ + * one: function(callback) { + * setTimeout(function() { + * // do some async task + * callback(null, 1); + * }, 200); + * }, + * two: function(callback) { + * setTimeout(function() { + * // then do another async task + * callback(null, 2); + * }, 100); + * } + * }, function(err, results) { + * console.log(results); + * // results is equal to: { one: 1, two: 2 } + * }); + * + * //Using Promises + * async.series([ + * function(callback) { + * setTimeout(function() { + * callback(null, 'one'); + * }, 200); + * }, + * function(callback) { + * setTimeout(function() { + * callback(null, 'two'); + * }, 100); + * } + * ]).then(results => { + * console.log(results); + * // results is equal to ['one','two'] + * }).catch(err => { + * console.log(err); + * }); + * + * // an example using an object instead of an array + * async.series({ + * one: function(callback) { + * setTimeout(function() { + * // do some async task + * callback(null, 1); + * }, 200); + * }, + * two: function(callback) { + * setTimeout(function() { + * // then do another async task + * callback(null, 2); + * }, 100); + * } + * }).then(results => { + * console.log(results); + * // results is equal to: { one: 1, two: 2 } + * }).catch(err => { + * console.log(err); + * }); + * + * //Using async/await + * async () => { + * try { + * let results = await async.series([ + * function(callback) { + * setTimeout(function() { + * // do some async task + * callback(null, 'one'); + * }, 200); + * }, + * function(callback) { + * setTimeout(function() { + * // then do another async task + * callback(null, 'two'); + * }, 100); + * } + * ]); + * console.log(results); + * // results is equal to ['one','two'] + * } + * catch (err) { + * console.log(err); + * } + * } + * + * // an example using an object instead of an array + * async () => { + * try { + * let results = await async.parallel({ + * one: function(callback) { + * setTimeout(function() { + * // do some async task + * callback(null, 1); + * }, 200); + * }, + * two: function(callback) { + * setTimeout(function() { + * // then do another async task + * callback(null, 2); + * }, 100); + * } + * }); + * console.log(results); + * // results is equal to: { one: 1, two: 2 } + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ + function series(tasks, callback) { + return _parallel(eachOfSeries$1, tasks, callback); + } + + /** + * Returns `true` if at least one element in the `coll` satisfies an async test. + * If any iteratee call returns `true`, the main `callback` is immediately + * called. + * + * @name some + * @static + * @memberOf module:Collections + * @method + * @alias any + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collections in parallel. + * The iteratee should complete with a boolean `result` value. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called as soon as any + * iteratee returns `true`, or after all the iteratee functions have finished. + * Result will be either `true` or `false` depending on the values of the async + * tests. Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * // dir4 does not exist + * + * // asynchronous function that checks if a file exists + * function fileExists(file, callback) { + * fs.access(file, fs.constants.F_OK, (err) => { + * callback(null, !err); + * }); + * } + * + * // Using callbacks + * async.some(['dir1/missing.txt','dir2/missing.txt','dir3/file5.txt'], fileExists, + * function(err, result) { + * console.log(result); + * // true + * // result is true since some file in the list exists + * } + *); + * + * async.some(['dir1/missing.txt','dir2/missing.txt','dir4/missing.txt'], fileExists, + * function(err, result) { + * console.log(result); + * // false + * // result is false since none of the files exists + * } + *); + * + * // Using Promises + * async.some(['dir1/missing.txt','dir2/missing.txt','dir3/file5.txt'], fileExists) + * .then( result => { + * console.log(result); + * // true + * // result is true since some file in the list exists + * }).catch( err => { + * console.log(err); + * }); + * + * async.some(['dir1/missing.txt','dir2/missing.txt','dir4/missing.txt'], fileExists) + * .then( result => { + * console.log(result); + * // false + * // result is false since none of the files exists + * }).catch( err => { + * console.log(err); + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.some(['dir1/missing.txt','dir2/missing.txt','dir3/file5.txt'], fileExists); + * console.log(result); + * // true + * // result is true since some file in the list exists + * } + * catch (err) { + * console.log(err); + * } + * } + * + * async () => { + * try { + * let result = await async.some(['dir1/missing.txt','dir2/missing.txt','dir4/missing.txt'], fileExists); + * console.log(result); + * // false + * // result is false since none of the files exists + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ + function some(coll, iteratee, callback) { + return _createTester(Boolean, res => res)(eachOf$1, coll, iteratee, callback) + } + var some$1 = awaitify(some, 3); + + /** + * The same as [`some`]{@link module:Collections.some} but runs a maximum of `limit` async operations at a time. + * + * @name someLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.some]{@link module:Collections.some} + * @alias anyLimit + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collections in parallel. + * The iteratee should complete with a boolean `result` value. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called as soon as any + * iteratee returns `true`, or after all the iteratee functions have finished. + * Result will be either `true` or `false` depending on the values of the async + * tests. Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + */ + function someLimit(coll, limit, iteratee, callback) { + return _createTester(Boolean, res => res)(eachOfLimit$2(limit), coll, iteratee, callback) + } + var someLimit$1 = awaitify(someLimit, 4); + + /** + * The same as [`some`]{@link module:Collections.some} but runs only a single async operation at a time. + * + * @name someSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.some]{@link module:Collections.some} + * @alias anySeries + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collections in series. + * The iteratee should complete with a boolean `result` value. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called as soon as any + * iteratee returns `true`, or after all the iteratee functions have finished. + * Result will be either `true` or `false` depending on the values of the async + * tests. Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + */ + function someSeries(coll, iteratee, callback) { + return _createTester(Boolean, res => res)(eachOfSeries$1, coll, iteratee, callback) + } + var someSeries$1 = awaitify(someSeries, 3); + + /** + * Sorts a list by the results of running each `coll` value through an async + * `iteratee`. + * + * @name sortBy + * @static + * @memberOf module:Collections + * @method + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The iteratee should complete with a value to use as the sort criteria as + * its `result`. + * Invoked with (item, callback). + * @param {Function} callback - A callback which is called after all the + * `iteratee` functions have finished, or an error occurs. Results is the items + * from the original `coll` sorted by the values returned by the `iteratee` + * calls. Invoked with (err, results). + * @returns {Promise} a promise, if no callback passed + * @example + * + * // bigfile.txt is a file that is 251100 bytes in size + * // mediumfile.txt is a file that is 11000 bytes in size + * // smallfile.txt is a file that is 121 bytes in size + * + * // asynchronous function that returns the file size in bytes + * function getFileSizeInBytes(file, callback) { + * fs.stat(file, function(err, stat) { + * if (err) { + * return callback(err); + * } + * callback(null, stat.size); + * }); + * } + * + * // Using callbacks + * async.sortBy(['mediumfile.txt','smallfile.txt','bigfile.txt'], getFileSizeInBytes, + * function(err, results) { + * if (err) { + * console.log(err); + * } else { + * console.log(results); + * // results is now the original array of files sorted by + * // file size (ascending by default), e.g. + * // [ 'smallfile.txt', 'mediumfile.txt', 'bigfile.txt'] + * } + * } + * ); + * + * // By modifying the callback parameter the + * // sorting order can be influenced: + * + * // ascending order + * async.sortBy(['mediumfile.txt','smallfile.txt','bigfile.txt'], function(file, callback) { + * getFileSizeInBytes(file, function(getFileSizeErr, fileSize) { + * if (getFileSizeErr) return callback(getFileSizeErr); + * callback(null, fileSize); + * }); + * }, function(err, results) { + * if (err) { + * console.log(err); + * } else { + * console.log(results); + * // results is now the original array of files sorted by + * // file size (ascending by default), e.g. + * // [ 'smallfile.txt', 'mediumfile.txt', 'bigfile.txt'] + * } + * } + * ); + * + * // descending order + * async.sortBy(['bigfile.txt','mediumfile.txt','smallfile.txt'], function(file, callback) { + * getFileSizeInBytes(file, function(getFileSizeErr, fileSize) { + * if (getFileSizeErr) { + * return callback(getFileSizeErr); + * } + * callback(null, fileSize * -1); + * }); + * }, function(err, results) { + * if (err) { + * console.log(err); + * } else { + * console.log(results); + * // results is now the original array of files sorted by + * // file size (ascending by default), e.g. + * // [ 'bigfile.txt', 'mediumfile.txt', 'smallfile.txt'] + * } + * } + * ); + * + * // Error handling + * async.sortBy(['mediumfile.txt','smallfile.txt','missingfile.txt'], getFileSizeInBytes, + * function(err, results) { + * if (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } else { + * console.log(results); + * } + * } + * ); + * + * // Using Promises + * async.sortBy(['mediumfile.txt','smallfile.txt','bigfile.txt'], getFileSizeInBytes) + * .then( results => { + * console.log(results); + * // results is now the original array of files sorted by + * // file size (ascending by default), e.g. + * // [ 'smallfile.txt', 'mediumfile.txt', 'bigfile.txt'] + * }).catch( err => { + * console.log(err); + * }); + * + * // Error handling + * async.sortBy(['mediumfile.txt','smallfile.txt','missingfile.txt'], getFileSizeInBytes) + * .then( results => { + * console.log(results); + * }).catch( err => { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * }); + * + * // Using async/await + * (async () => { + * try { + * let results = await async.sortBy(['bigfile.txt','mediumfile.txt','smallfile.txt'], getFileSizeInBytes); + * console.log(results); + * // results is now the original array of files sorted by + * // file size (ascending by default), e.g. + * // [ 'smallfile.txt', 'mediumfile.txt', 'bigfile.txt'] + * } + * catch (err) { + * console.log(err); + * } + * })(); + * + * // Error handling + * async () => { + * try { + * let results = await async.sortBy(['missingfile.txt','mediumfile.txt','smallfile.txt'], getFileSizeInBytes); + * console.log(results); + * } + * catch (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } + * } + * + */ + function sortBy (coll, iteratee, callback) { + var _iteratee = wrapAsync(iteratee); + return map$1(coll, (x, iterCb) => { + _iteratee(x, (err, criteria) => { + if (err) return iterCb(err); + iterCb(err, {value: x, criteria}); + }); + }, (err, results) => { + if (err) return callback(err); + callback(null, results.sort(comparator).map(v => v.value)); + }); + + function comparator(left, right) { + var a = left.criteria, b = right.criteria; + return a < b ? -1 : a > b ? 1 : 0; + } + } + var sortBy$1 = awaitify(sortBy, 3); + + /** + * Sets a time limit on an asynchronous function. If the function does not call + * its callback within the specified milliseconds, it will be called with a + * timeout error. The code property for the error object will be `'ETIMEDOUT'`. + * + * @name timeout + * @static + * @memberOf module:Utils + * @method + * @category Util + * @param {AsyncFunction} asyncFn - The async function to limit in time. + * @param {number} milliseconds - The specified time limit. + * @param {*} [info] - Any variable you want attached (`string`, `object`, etc) + * to timeout Error for more information.. + * @returns {AsyncFunction} Returns a wrapped function that can be used with any + * of the control flow functions. + * Invoke this function with the same parameters as you would `asyncFunc`. + * @example + * + * function myFunction(foo, callback) { + * doAsyncTask(foo, function(err, data) { + * // handle errors + * if (err) return callback(err); + * + * // do some stuff ... + * + * // return processed data + * return callback(null, data); + * }); + * } + * + * var wrapped = async.timeout(myFunction, 1000); + * + * // call `wrapped` as you would `myFunction` + * wrapped({ bar: 'bar' }, function(err, data) { + * // if `myFunction` takes < 1000 ms to execute, `err` + * // and `data` will have their expected values + * + * // else `err` will be an Error with the code 'ETIMEDOUT' + * }); + */ + function timeout(asyncFn, milliseconds, info) { + var fn = wrapAsync(asyncFn); + + return initialParams((args, callback) => { + var timedOut = false; + var timer; + + function timeoutCallback() { + var name = asyncFn.name || 'anonymous'; + var error = new Error('Callback function "' + name + '" timed out.'); + error.code = 'ETIMEDOUT'; + if (info) { + error.info = info; + } + timedOut = true; + callback(error); + } + + args.push((...cbArgs) => { + if (!timedOut) { + callback(...cbArgs); + clearTimeout(timer); + } + }); + + // setup timer and call original function + timer = setTimeout(timeoutCallback, milliseconds); + fn(...args); + }); + } + + function range(size) { + var result = Array(size); + while (size--) { + result[size] = size; + } + return result; + } + + /** + * The same as [times]{@link module:ControlFlow.times} but runs a maximum of `limit` async operations at a + * time. + * + * @name timesLimit + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.times]{@link module:ControlFlow.times} + * @category Control Flow + * @param {number} count - The number of times to run the function. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - The async function to call `n` times. + * Invoked with the iteration index and a callback: (n, next). + * @param {Function} callback - see [async.map]{@link module:Collections.map}. + * @returns {Promise} a promise, if no callback is provided + */ + function timesLimit(count, limit, iteratee, callback) { + var _iteratee = wrapAsync(iteratee); + return mapLimit$1(range(count), limit, _iteratee, callback); + } + + /** + * Calls the `iteratee` function `n` times, and accumulates results in the same + * manner you would use with [map]{@link module:Collections.map}. + * + * @name times + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.map]{@link module:Collections.map} + * @category Control Flow + * @param {number} n - The number of times to run the function. + * @param {AsyncFunction} iteratee - The async function to call `n` times. + * Invoked with the iteration index and a callback: (n, next). + * @param {Function} callback - see {@link module:Collections.map}. + * @returns {Promise} a promise, if no callback is provided + * @example + * + * // Pretend this is some complicated async factory + * var createUser = function(id, callback) { + * callback(null, { + * id: 'user' + id + * }); + * }; + * + * // generate 5 users + * async.times(5, function(n, next) { + * createUser(n, function(err, user) { + * next(err, user); + * }); + * }, function(err, users) { + * // we should now have 5 users + * }); + */ + function times (n, iteratee, callback) { + return timesLimit(n, Infinity, iteratee, callback) + } + + /** + * The same as [times]{@link module:ControlFlow.times} but runs only a single async operation at a time. + * + * @name timesSeries + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.times]{@link module:ControlFlow.times} + * @category Control Flow + * @param {number} n - The number of times to run the function. + * @param {AsyncFunction} iteratee - The async function to call `n` times. + * Invoked with the iteration index and a callback: (n, next). + * @param {Function} callback - see {@link module:Collections.map}. + * @returns {Promise} a promise, if no callback is provided + */ + function timesSeries (n, iteratee, callback) { + return timesLimit(n, 1, iteratee, callback) + } + + /** + * A relative of `reduce`. Takes an Object or Array, and iterates over each + * element in parallel, each step potentially mutating an `accumulator` value. + * The type of the accumulator defaults to the type of collection passed in. + * + * @name transform + * @static + * @memberOf module:Collections + * @method + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {*} [accumulator] - The initial state of the transform. If omitted, + * it will default to an empty Object or Array, depending on the type of `coll` + * @param {AsyncFunction} iteratee - A function applied to each item in the + * collection that potentially modifies the accumulator. + * Invoked with (accumulator, item, key, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Result is the transformed accumulator. + * Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + * @example + * + * // file1.txt is a file that is 1000 bytes in size + * // file2.txt is a file that is 2000 bytes in size + * // file3.txt is a file that is 3000 bytes in size + * + * // helper function that returns human-readable size format from bytes + * function formatBytes(bytes, decimals = 2) { + * // implementation not included for brevity + * return humanReadbleFilesize; + * } + * + * const fileList = ['file1.txt','file2.txt','file3.txt']; + * + * // asynchronous function that returns the file size, transformed to human-readable format + * // e.g. 1024 bytes = 1KB, 1234 bytes = 1.21 KB, 1048576 bytes = 1MB, etc. + * function transformFileSize(acc, value, key, callback) { + * fs.stat(value, function(err, stat) { + * if (err) { + * return callback(err); + * } + * acc[key] = formatBytes(stat.size); + * callback(null); + * }); + * } + * + * // Using callbacks + * async.transform(fileList, transformFileSize, function(err, result) { + * if(err) { + * console.log(err); + * } else { + * console.log(result); + * // [ '1000 Bytes', '1.95 KB', '2.93 KB' ] + * } + * }); + * + * // Using Promises + * async.transform(fileList, transformFileSize) + * .then(result => { + * console.log(result); + * // [ '1000 Bytes', '1.95 KB', '2.93 KB' ] + * }).catch(err => { + * console.log(err); + * }); + * + * // Using async/await + * (async () => { + * try { + * let result = await async.transform(fileList, transformFileSize); + * console.log(result); + * // [ '1000 Bytes', '1.95 KB', '2.93 KB' ] + * } + * catch (err) { + * console.log(err); + * } + * })(); + * + * @example + * + * // file1.txt is a file that is 1000 bytes in size + * // file2.txt is a file that is 2000 bytes in size + * // file3.txt is a file that is 3000 bytes in size + * + * // helper function that returns human-readable size format from bytes + * function formatBytes(bytes, decimals = 2) { + * // implementation not included for brevity + * return humanReadbleFilesize; + * } + * + * const fileMap = { f1: 'file1.txt', f2: 'file2.txt', f3: 'file3.txt' }; + * + * // asynchronous function that returns the file size, transformed to human-readable format + * // e.g. 1024 bytes = 1KB, 1234 bytes = 1.21 KB, 1048576 bytes = 1MB, etc. + * function transformFileSize(acc, value, key, callback) { + * fs.stat(value, function(err, stat) { + * if (err) { + * return callback(err); + * } + * acc[key] = formatBytes(stat.size); + * callback(null); + * }); + * } + * + * // Using callbacks + * async.transform(fileMap, transformFileSize, function(err, result) { + * if(err) { + * console.log(err); + * } else { + * console.log(result); + * // { f1: '1000 Bytes', f2: '1.95 KB', f3: '2.93 KB' } + * } + * }); + * + * // Using Promises + * async.transform(fileMap, transformFileSize) + * .then(result => { + * console.log(result); + * // { f1: '1000 Bytes', f2: '1.95 KB', f3: '2.93 KB' } + * }).catch(err => { + * console.log(err); + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.transform(fileMap, transformFileSize); + * console.log(result); + * // { f1: '1000 Bytes', f2: '1.95 KB', f3: '2.93 KB' } + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ + function transform (coll, accumulator, iteratee, callback) { + if (arguments.length <= 3 && typeof accumulator === 'function') { + callback = iteratee; + iteratee = accumulator; + accumulator = Array.isArray(coll) ? [] : {}; + } + callback = once(callback || promiseCallback()); + var _iteratee = wrapAsync(iteratee); + + eachOf$1(coll, (v, k, cb) => { + _iteratee(accumulator, v, k, cb); + }, err => callback(err, accumulator)); + return callback[PROMISE_SYMBOL] + } + + /** + * It runs each task in series but stops whenever any of the functions were + * successful. If one of the tasks were successful, the `callback` will be + * passed the result of the successful task. If all tasks fail, the callback + * will be passed the error and result (if any) of the final attempt. + * + * @name tryEach + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {Array|Iterable|AsyncIterable|Object} tasks - A collection containing functions to + * run, each function is passed a `callback(err, result)` it must call on + * completion with an error `err` (which can be `null`) and an optional `result` + * value. + * @param {Function} [callback] - An optional callback which is called when one + * of the tasks has succeeded, or all have failed. It receives the `err` and + * `result` arguments of the last attempt at completing the `task`. Invoked with + * (err, results). + * @returns {Promise} a promise, if no callback is passed + * @example + * async.tryEach([ + * function getDataFromFirstWebsite(callback) { + * // Try getting the data from the first website + * callback(err, data); + * }, + * function getDataFromSecondWebsite(callback) { + * // First website failed, + * // Try getting the data from the backup website + * callback(err, data); + * } + * ], + * // optional callback + * function(err, results) { + * Now do something with the data. + * }); + * + */ + function tryEach(tasks, callback) { + var error = null; + var result; + return eachSeries$1(tasks, (task, taskCb) => { + wrapAsync(task)((err, ...args) => { + if (err === false) return taskCb(err); + + if (args.length < 2) { + [result] = args; + } else { + result = args; + } + error = err; + taskCb(err ? null : {}); + }); + }, () => callback(error, result)); + } + + var tryEach$1 = awaitify(tryEach); + + /** + * Undoes a [memoize]{@link module:Utils.memoize}d function, reverting it to the original, + * unmemoized form. Handy for testing. + * + * @name unmemoize + * @static + * @memberOf module:Utils + * @method + * @see [async.memoize]{@link module:Utils.memoize} + * @category Util + * @param {AsyncFunction} fn - the memoized function + * @returns {AsyncFunction} a function that calls the original unmemoized function + */ + function unmemoize(fn) { + return (...args) => { + return (fn.unmemoized || fn)(...args); + }; + } + + /** + * Repeatedly call `iteratee`, while `test` returns `true`. Calls `callback` when + * stopped, or an error occurs. + * + * @name whilst + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {AsyncFunction} test - asynchronous truth test to perform before each + * execution of `iteratee`. Invoked with (callback). + * @param {AsyncFunction} iteratee - An async function which is called each time + * `test` passes. Invoked with (callback). + * @param {Function} [callback] - A callback which is called after the test + * function has failed and repeated execution of `iteratee` has stopped. `callback` + * will be passed an error and any arguments passed to the final `iteratee`'s + * callback. Invoked with (err, [results]); + * @returns {Promise} a promise, if no callback is passed + * @example + * + * var count = 0; + * async.whilst( + * function test(cb) { cb(null, count < 5); }, + * function iter(callback) { + * count++; + * setTimeout(function() { + * callback(null, count); + * }, 1000); + * }, + * function (err, n) { + * // 5 seconds have passed, n = 5 + * } + * ); + */ + function whilst(test, iteratee, callback) { + callback = onlyOnce(callback); + var _fn = wrapAsync(iteratee); + var _test = wrapAsync(test); + var results = []; + + function next(err, ...rest) { + if (err) return callback(err); + results = rest; + if (err === false) return; + _test(check); + } + + function check(err, truth) { + if (err) return callback(err); + if (err === false) return; + if (!truth) return callback(null, ...results); + _fn(next); + } + + return _test(check); + } + var whilst$1 = awaitify(whilst, 3); + + /** + * Repeatedly call `iteratee` until `test` returns `true`. Calls `callback` when + * stopped, or an error occurs. `callback` will be passed an error and any + * arguments passed to the final `iteratee`'s callback. + * + * The inverse of [whilst]{@link module:ControlFlow.whilst}. + * + * @name until + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.whilst]{@link module:ControlFlow.whilst} + * @category Control Flow + * @param {AsyncFunction} test - asynchronous truth test to perform before each + * execution of `iteratee`. Invoked with (callback). + * @param {AsyncFunction} iteratee - An async function which is called each time + * `test` fails. Invoked with (callback). + * @param {Function} [callback] - A callback which is called after the test + * function has passed and repeated execution of `iteratee` has stopped. `callback` + * will be passed an error and any arguments passed to the final `iteratee`'s + * callback. Invoked with (err, [results]); + * @returns {Promise} a promise, if a callback is not passed + * + * @example + * const results = [] + * let finished = false + * async.until(function test(cb) { + * cb(null, finished) + * }, function iter(next) { + * fetchPage(url, (err, body) => { + * if (err) return next(err) + * results = results.concat(body.objects) + * finished = !!body.next + * next(err) + * }) + * }, function done (err) { + * // all pages have been fetched + * }) + */ + function until(test, iteratee, callback) { + const _test = wrapAsync(test); + return whilst$1((cb) => _test((err, truth) => cb (err, !truth)), iteratee, callback); + } + + /** + * Runs the `tasks` array of functions in series, each passing their results to + * the next in the array. However, if any of the `tasks` pass an error to their + * own callback, the next function is not executed, and the main `callback` is + * immediately called with the error. + * + * @name waterfall + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {Array} tasks - An array of [async functions]{@link AsyncFunction} + * to run. + * Each function should complete with any number of `result` values. + * The `result` values will be passed as arguments, in order, to the next task. + * @param {Function} [callback] - An optional callback to run once all the + * functions have completed. This will be passed the results of the last task's + * callback. Invoked with (err, [results]). + * @returns {Promise} a promise, if a callback is omitted + * @example + * + * async.waterfall([ + * function(callback) { + * callback(null, 'one', 'two'); + * }, + * function(arg1, arg2, callback) { + * // arg1 now equals 'one' and arg2 now equals 'two' + * callback(null, 'three'); + * }, + * function(arg1, callback) { + * // arg1 now equals 'three' + * callback(null, 'done'); + * } + * ], function (err, result) { + * // result now equals 'done' + * }); + * + * // Or, with named functions: + * async.waterfall([ + * myFirstFunction, + * mySecondFunction, + * myLastFunction, + * ], function (err, result) { + * // result now equals 'done' + * }); + * function myFirstFunction(callback) { + * callback(null, 'one', 'two'); + * } + * function mySecondFunction(arg1, arg2, callback) { + * // arg1 now equals 'one' and arg2 now equals 'two' + * callback(null, 'three'); + * } + * function myLastFunction(arg1, callback) { + * // arg1 now equals 'three' + * callback(null, 'done'); + * } + */ + function waterfall (tasks, callback) { + callback = once(callback); + if (!Array.isArray(tasks)) return callback(new Error('First argument to waterfall must be an array of functions')); + if (!tasks.length) return callback(); + var taskIndex = 0; + + function nextTask(args) { + var task = wrapAsync(tasks[taskIndex++]); + task(...args, onlyOnce(next)); + } + + function next(err, ...args) { + if (err === false) return + if (err || taskIndex === tasks.length) { + return callback(err, ...args); + } + nextTask(args); + } + + nextTask([]); + } + + var waterfall$1 = awaitify(waterfall); + + /** + * An "async function" in the context of Async is an asynchronous function with + * a variable number of parameters, with the final parameter being a callback. + * (`function (arg1, arg2, ..., callback) {}`) + * The final callback is of the form `callback(err, results...)`, which must be + * called once the function is completed. The callback should be called with a + * Error as its first argument to signal that an error occurred. + * Otherwise, if no error occurred, it should be called with `null` as the first + * argument, and any additional `result` arguments that may apply, to signal + * successful completion. + * The callback must be called exactly once, ideally on a later tick of the + * JavaScript event loop. + * + * This type of function is also referred to as a "Node-style async function", + * or a "continuation passing-style function" (CPS). Most of the methods of this + * library are themselves CPS/Node-style async functions, or functions that + * return CPS/Node-style async functions. + * + * Wherever we accept a Node-style async function, we also directly accept an + * [ES2017 `async` function]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function}. + * In this case, the `async` function will not be passed a final callback + * argument, and any thrown error will be used as the `err` argument of the + * implicit callback, and the return value will be used as the `result` value. + * (i.e. a `rejected` of the returned Promise becomes the `err` callback + * argument, and a `resolved` value becomes the `result`.) + * + * Note, due to JavaScript limitations, we can only detect native `async` + * functions and not transpilied implementations. + * Your environment must have `async`/`await` support for this to work. + * (e.g. Node > v7.6, or a recent version of a modern browser). + * If you are using `async` functions through a transpiler (e.g. Babel), you + * must still wrap the function with [asyncify]{@link module:Utils.asyncify}, + * because the `async function` will be compiled to an ordinary function that + * returns a promise. + * + * @typedef {Function} AsyncFunction + * @static + */ + + + var index = { + apply, + applyEach, + applyEachSeries, + asyncify, + auto, + autoInject, + cargo: cargo$1, + cargoQueue: cargo, + compose, + concat: concat$1, + concatLimit: concatLimit$1, + concatSeries: concatSeries$1, + constant: constant$1, + detect: detect$1, + detectLimit: detectLimit$1, + detectSeries: detectSeries$1, + dir, + doUntil, + doWhilst: doWhilst$1, + each, + eachLimit: eachLimit$1, + eachOf: eachOf$1, + eachOfLimit: eachOfLimit$1, + eachOfSeries: eachOfSeries$1, + eachSeries: eachSeries$1, + ensureAsync, + every: every$1, + everyLimit: everyLimit$1, + everySeries: everySeries$1, + filter: filter$1, + filterLimit: filterLimit$1, + filterSeries: filterSeries$1, + forever: forever$1, + groupBy, + groupByLimit: groupByLimit$1, + groupBySeries, + log, + map: map$1, + mapLimit: mapLimit$1, + mapSeries: mapSeries$1, + mapValues, + mapValuesLimit: mapValuesLimit$1, + mapValuesSeries, + memoize, + nextTick, + parallel, + parallelLimit, + priorityQueue, + queue, + race: race$1, + reduce: reduce$1, + reduceRight, + reflect, + reflectAll, + reject: reject$1, + rejectLimit: rejectLimit$1, + rejectSeries: rejectSeries$1, + retry, + retryable, + seq, + series, + setImmediate: setImmediate$1, + some: some$1, + someLimit: someLimit$1, + someSeries: someSeries$1, + sortBy: sortBy$1, + timeout, + times, + timesLimit, + timesSeries, + transform, + tryEach: tryEach$1, + unmemoize, + until, + waterfall: waterfall$1, + whilst: whilst$1, + + // aliases + all: every$1, + allLimit: everyLimit$1, + allSeries: everySeries$1, + any: some$1, + anyLimit: someLimit$1, + anySeries: someSeries$1, + find: detect$1, + findLimit: detectLimit$1, + findSeries: detectSeries$1, + flatMap: concat$1, + flatMapLimit: concatLimit$1, + flatMapSeries: concatSeries$1, + forEach: each, + forEachSeries: eachSeries$1, + forEachLimit: eachLimit$1, + forEachOf: eachOf$1, + forEachOfSeries: eachOfSeries$1, + forEachOfLimit: eachOfLimit$1, + inject: reduce$1, + foldl: reduce$1, + foldr: reduceRight, + select: filter$1, + selectLimit: filterLimit$1, + selectSeries: filterSeries$1, + wrapSync: asyncify, + during: whilst$1, + doDuring: doWhilst$1 + }; + + exports.all = every$1; + exports.allLimit = everyLimit$1; + exports.allSeries = everySeries$1; + exports.any = some$1; + exports.anyLimit = someLimit$1; + exports.anySeries = someSeries$1; + exports.apply = apply; + exports.applyEach = applyEach; + exports.applyEachSeries = applyEachSeries; + exports.asyncify = asyncify; + exports.auto = auto; + exports.autoInject = autoInject; + exports.cargo = cargo$1; + exports.cargoQueue = cargo; + exports.compose = compose; + exports.concat = concat$1; + exports.concatLimit = concatLimit$1; + exports.concatSeries = concatSeries$1; + exports.constant = constant$1; + exports.default = index; + exports.detect = detect$1; + exports.detectLimit = detectLimit$1; + exports.detectSeries = detectSeries$1; + exports.dir = dir; + exports.doDuring = doWhilst$1; + exports.doUntil = doUntil; + exports.doWhilst = doWhilst$1; + exports.during = whilst$1; + exports.each = each; + exports.eachLimit = eachLimit$1; + exports.eachOf = eachOf$1; + exports.eachOfLimit = eachOfLimit$1; + exports.eachOfSeries = eachOfSeries$1; + exports.eachSeries = eachSeries$1; + exports.ensureAsync = ensureAsync; + exports.every = every$1; + exports.everyLimit = everyLimit$1; + exports.everySeries = everySeries$1; + exports.filter = filter$1; + exports.filterLimit = filterLimit$1; + exports.filterSeries = filterSeries$1; + exports.find = detect$1; + exports.findLimit = detectLimit$1; + exports.findSeries = detectSeries$1; + exports.flatMap = concat$1; + exports.flatMapLimit = concatLimit$1; + exports.flatMapSeries = concatSeries$1; + exports.foldl = reduce$1; + exports.foldr = reduceRight; + exports.forEach = each; + exports.forEachLimit = eachLimit$1; + exports.forEachOf = eachOf$1; + exports.forEachOfLimit = eachOfLimit$1; + exports.forEachOfSeries = eachOfSeries$1; + exports.forEachSeries = eachSeries$1; + exports.forever = forever$1; + exports.groupBy = groupBy; + exports.groupByLimit = groupByLimit$1; + exports.groupBySeries = groupBySeries; + exports.inject = reduce$1; + exports.log = log; + exports.map = map$1; + exports.mapLimit = mapLimit$1; + exports.mapSeries = mapSeries$1; + exports.mapValues = mapValues; + exports.mapValuesLimit = mapValuesLimit$1; + exports.mapValuesSeries = mapValuesSeries; + exports.memoize = memoize; + exports.nextTick = nextTick; + exports.parallel = parallel; + exports.parallelLimit = parallelLimit; + exports.priorityQueue = priorityQueue; + exports.queue = queue; + exports.race = race$1; + exports.reduce = reduce$1; + exports.reduceRight = reduceRight; + exports.reflect = reflect; + exports.reflectAll = reflectAll; + exports.reject = reject$1; + exports.rejectLimit = rejectLimit$1; + exports.rejectSeries = rejectSeries$1; + exports.retry = retry; + exports.retryable = retryable; + exports.select = filter$1; + exports.selectLimit = filterLimit$1; + exports.selectSeries = filterSeries$1; + exports.seq = seq; + exports.series = series; + exports.setImmediate = setImmediate$1; + exports.some = some$1; + exports.someLimit = someLimit$1; + exports.someSeries = someSeries$1; + exports.sortBy = sortBy$1; + exports.timeout = timeout; + exports.times = times; + exports.timesLimit = timesLimit; + exports.timesSeries = timesSeries; + exports.transform = transform; + exports.tryEach = tryEach$1; + exports.unmemoize = unmemoize; + exports.until = until; + exports.waterfall = waterfall$1; + exports.whilst = whilst$1; + exports.wrapSync = asyncify; + + Object.defineProperty(exports, '__esModule', { value: true }); + +})); diff --git a/node_modules/async/dist/async.min.js b/node_modules/async/dist/async.min.js new file mode 100644 index 0000000..f5c464e --- /dev/null +++ b/node_modules/async/dist/async.min.js @@ -0,0 +1 @@ +(function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):(e="undefined"==typeof globalThis?e||self:globalThis,t(e.async={}))})(this,function(e){"use strict";function t(e,...t){return(...n)=>e(...t,...n)}function n(e){return function(...t){var n=t.pop();return e.call(this,t,n)}}function a(e){setTimeout(e,0)}function i(e){return(t,...n)=>e(()=>t(...n))}function r(e){return d(e)?function(...t){const n=t.pop(),a=e.apply(this,t);return s(a,n)}:n(function(t,n){var a;try{a=e.apply(this,t)}catch(t){return n(t)}return a&&"function"==typeof a.then?s(a,n):void n(null,a)})}function s(e,t){return e.then(e=>{l(t,null,e)},e=>{l(t,e&&(e instanceof Error||e.message)?e:new Error(e))})}function l(e,t,n){try{e(t,n)}catch(e){_e(t=>{throw t},e)}}function d(e){return"AsyncFunction"===e[Symbol.toStringTag]}function u(e){return"AsyncGenerator"===e[Symbol.toStringTag]}function p(e){return"function"==typeof e[Symbol.asyncIterator]}function c(e){if("function"!=typeof e)throw new Error("expected a function");return d(e)?r(e):e}function o(e,t){function n(...n){return"function"==typeof n[t-1]?e.apply(this,n):new Promise((a,i)=>{n[t-1]=(e,...t)=>e?i(e):void a(1{c(e).apply(i,n.concat(t))},a)});return i}}function f(e,t,n,a){t=t||[];var i=[],r=0,s=c(n);return e(t,(e,t,n)=>{var a=r++;s(e,(e,t)=>{i[a]=t,n(e)})},e=>{a(e,i)})}function y(e){return e&&"number"==typeof e.length&&0<=e.length&&0==e.length%1}function m(e){function t(...t){if(null!==e){var n=e;e=null,n.apply(this,t)}}return Object.assign(t,e),t}function g(e){return e[Symbol.iterator]&&e[Symbol.iterator]()}function k(e){var t=-1,n=e.length;return function a(){return++t=t||u||l||(u=!0,e.next().then(({value:e,done:t})=>{if(!(d||l))return u=!1,t?(l=!0,void(0>=p&&a(null))):void(p++,n(e,c,r),c++,i())}).catch(s))}function r(e,t){return p-=1,d?void 0:e?s(e):!1===e?(l=!0,void(d=!0)):t===be||l&&0>=p?(l=!0,a(null)):void i()}function s(e){d||(u=!1,l=!0,a(e))}let l=!1,d=!1,u=!1,p=0,c=0;i()}function O(e,t,n){function a(e,t){!1===e&&(l=!0);!0===l||(e?n(e):(++r===s||t===be)&&n(null))}n=m(n);var i=0,r=0,{length:s}=e,l=!1;for(0===s&&n(null);i{t=e,n=a}),e}function A(e,t,n){function a(e,t){k.push(()=>l(e,t))}function i(){if(!f){if(0===k.length&&0===h)return n(null,o);for(;k.length&&he()),i()}function l(e,t){if(!y){var a=L((t,...a)=>{if(h--,!1===t)return void(f=!0);if(2>a.length&&([a]=a),t){var i={};if(Object.keys(o).forEach(e=>{i[e]=o[e]}),i[e]=a,y=!0,g=Object.create(null),f)return;n(t,i)}else o[e]=a,s(e)});h++;var i=c(t[t.length-1]);1{0==--S[e]&&v.push(e)});if(t!==p)throw new Error("async.auto cannot execute tasks due to a recursive dependency")}function u(t){var n=[];return Object.keys(e).forEach(a=>{const i=e[a];Array.isArray(i)&&0<=i.indexOf(t)&&n.push(a)}),n}"number"!=typeof t&&(n=t,t=null),n=m(n||b());var p=Object.keys(e).length;if(!p)return n(null);t||(t=p);var o={},h=0,f=!1,y=!1,g=Object.create(null),k=[],v=[],S={};return Object.keys(e).forEach(t=>{var n=e[t];if(!Array.isArray(n))return a(t,[n]),void v.push(t);var i=n.slice(0,n.length-1),s=i.length;return 0===s?(a(t,n),void v.push(t)):void(S[t]=s,i.forEach(l=>{if(!e[l])throw new Error("async.auto task `"+t+"` has a non-existent dependency `"+l+"` in "+i.join(", "));r(l,()=>{s--,0===s&&a(t,n)})}))}),d(),i(),n[Ce]}function I(e){let t="",n=0,a=e.indexOf("*/");for(;ne.replace(Ne,"").trim())}function j(e,t){var n={};return Object.keys(e).forEach(t=>{function a(e,t){var n=i.map(t=>e[t]);n.push(t),c(r)(...n)}var i,r=e[t],s=d(r),l=!s&&1===r.length||s&&0===r.length;if(Array.isArray(r))i=[...r],r=i.pop(),n[t]=i.concat(0{r(e,n),t(...a)};f[e].push(n)}function r(e,t){return e?t?void(f[e]=f[e].filter(e=>e!==t)):f[e]=[]:Object.keys(f).forEach(e=>f[e]=[])}function s(e,...t){f[e].forEach(e=>e(...t))}function l(e,t,n,a){function i(e,...t){return e?n?s(e):r():1>=t.length?r(t[0]):void r(t)}if(null!=a&&"function"!=typeof a)throw new Error("task callback must be a function");k.started=!0;var r,s,l=k._createTaskItem(e,n?i:a||i);if(t?k._tasks.unshift(l):k._tasks.push(l),y||(y=!0,_e(()=>{y=!1,k.process()})),n||!a)return new Promise((e,t)=>{r=e,s=t})}function d(e){return function(t,...n){o-=1;for(var a=0,r=e.length;as("drain")),!0)}if(null==t)t=1;else if(0===t)throw new RangeError("Concurrency must not be zero");var p=c(e),o=0,h=[];const f={error:[],drain:[],saturated:[],unsaturated:[],empty:[]};var y=!1;const m=e=>t=>t?void(r(e),a(e,t)):new Promise((t,n)=>{i(e,(e,a)=>e?n(e):void t(a))});var g=!1,k={_tasks:new Ve,_createTaskItem(e,t){return{data:e,callback:t}},*[Symbol.iterator](){yield*k._tasks[Symbol.iterator]()},concurrency:t,payload:n,buffer:t/4,started:!1,paused:!1,push(e,t){return Array.isArray(e)?u(e)?void 0:e.map(e=>l(e,!1,!1,t)):l(e,!1,!1,t)},pushAsync(e,t){return Array.isArray(e)?u(e)?void 0:e.map(e=>l(e,!1,!0,t)):l(e,!1,!0,t)},kill(){r(),k._tasks.empty()},unshift(e,t){return Array.isArray(e)?u(e)?void 0:e.map(e=>l(e,!0,!1,t)):l(e,!0,!1,t)},unshiftAsync(e,t){return Array.isArray(e)?u(e)?void 0:e.map(e=>l(e,!0,!0,t)):l(e,!0,!0,t)},remove(e){k._tasks.remove(e)},process(){var e=Math.min;if(!g){for(g=!0;!k.paused&&o{t.apply(n,e.concat((e,...t)=>{a(e,t)}))},(e,t)=>a(e,...t)),a[Ce]}}function P(...e){return C(...e.reverse())}function R(...e){return function(...t){var n=t.pop();return n(null,...e)}}function z(e,t){return(n,a,i,r)=>{var s,l=!1;const d=c(i);n(a,(n,a,i)=>{d(n,(a,r)=>a||!1===a?i(a):e(r)&&!s?(l=!0,s=t(!0,n),i(null,be)):void i())},e=>e?r(e):void r(null,l?s:t(!1)))}}function N(e){return(t,...n)=>c(t)(...n,(t,...n)=>{"object"==typeof console&&(t?console.error&&console.error(t):console[e]&&n.forEach(t=>console[e](t)))})}function V(e,t,n){const a=c(t);return Xe(e,(...e)=>{const t=e.pop();a(...e,(e,n)=>t(e,!n))},n)}function Y(e){return(t,n,a)=>e(t,a)}function q(e){return d(e)?e:function(...t){var n=t.pop(),a=!0;t.push((...e)=>{a?_e(()=>n(...e)):n(...e)}),e.apply(this,t),a=!1}}function D(e,t,n,a){var r=Array(t.length);e(t,(e,t,a)=>{n(e,(e,n)=>{r[t]=!!n,a(e)})},e=>{if(e)return a(e);for(var n=[],s=0;s{n(e,(n,r)=>n?a(n):void(r&&i.push({index:t,value:e}),a(n)))},e=>e?a(e):void a(null,i.sort((e,t)=>e.index-t.index).map(e=>e.value)))}function U(e,t,n,a){var i=y(t)?D:Q;return i(e,t,c(n),a)}function G(e,t,n){return dt(e,1/0,t,n)}function W(e,t,n){return dt(e,1,t,n)}function H(e,t,n){return pt(e,1/0,t,n)}function J(e,t,n){return pt(e,1,t,n)}function K(e,t=e=>e){var a=Object.create(null),r=Object.create(null),s=c(e),l=n((e,n)=>{var d=t(...e);d in a?_e(()=>n(null,...a[d])):d in r?r[d].push(n):(r[d]=[n],s(...e,(e,...t)=>{e||(a[d]=t);var n=r[d];delete r[d];for(var s=0,u=n.length;s{n(e[0],t)},t,1)}function ee(e){return(e<<1)+1}function te(e){return(e+1>>1)-1}function ne(e,t){return e.priority===t.priority?e.pushCount({data:e,priority:t})):{data:e,priority:t}}var a=$(e,t),{push:i,pushAsync:r}=a;return a._tasks=new ht,a._createTaskItem=({data:e,priority:t},n)=>({data:e,priority:t,callback:n}),a.push=function(e,t=0,a){return i(n(e,t),a)},a.pushAsync=function(e,t=0,a){return r(n(e,t),a)},delete a.unshift,delete a.unshiftAsync,a}function ie(e,t,n,a){var i=[...e].reverse();return qe(i,t,n,a)}function re(e){var t=c(e);return n(function a(e,n){return e.push((e,...t)=>{let a={};if(e&&(a.error=e),0=t.length&&([i]=t),a.value=i}n(null,a)}),t.apply(this,e)})}function se(e){var t;return Array.isArray(e)?t=e.map(re):(t={},Object.keys(e).forEach(n=>{t[n]=re.call(this,e[n])})),t}function le(e,t,n,a){const i=c(n);return U(e,t,(e,t)=>{i(e,(e,n)=>{t(e,!n)})},a)}function de(e){return function(){return e}}function ue(e,t,n){function a(){r((e,...t)=>{!1===e||(e&&s++arguments.length&&"function"==typeof e?(n=t||b(),t=e):(pe(i,e),n=n||b()),"function"!=typeof t)throw new Error("Invalid arguments for async.retry");var r=c(t),s=1;return a(),n[Ce]}function pe(e,n){if("object"==typeof n)e.times=+n.times||kt,e.intervalFunc="function"==typeof n.interval?n.interval:de(+n.interval||vt),e.errorFilter=n.errorFilter;else if("number"==typeof n||"string"==typeof n)e.times=+n||kt;else throw new Error("Invalid arguments for async.retry")}function ce(e,t){t||(t=e,e=null);let a=e&&e.arity||t.length;d(t)&&(a+=1);var i=c(t);return n((t,n)=>{function r(e){i(...t,e)}return(t.length{function s(){var t=e.name||"anonymous",n=new Error("Callback function \""+t+"\" timed out.");n.code="ETIMEDOUT",a&&(n.info=a),d=!0,r(n)}var l,d=!1;n.push((...e)=>{d||(r(...e),clearTimeout(l))}),l=setTimeout(s,t),i(...n)})}function fe(e){for(var t=Array(e);e--;)t[e]=e;return t}function ye(e,t,n,a){var i=c(n);return De(fe(e),t,i,a)}function me(e,t,n){return ye(e,1/0,t,n)}function ge(e,t,n){return ye(e,1,t,n)}function ke(e,t,n,a){3>=arguments.length&&"function"==typeof t&&(a=n,n=t,t=Array.isArray(e)?[]:{}),a=m(a||b());var i=c(n);return Me(e,(e,n,a)=>{i(t,e,n,a)},e=>a(e,t)),a[Ce]}function ve(e){return(...t)=>(e.unmemoized||e)(...t)}function Se(e,t,n){const a=c(e);return _t(e=>a((t,n)=>e(t,!n)),t,n)}var xe,Le="function"==typeof queueMicrotask&&queueMicrotask,Ee="function"==typeof setImmediate&&setImmediate,Oe="object"==typeof process&&"function"==typeof process.nextTick;xe=Le?queueMicrotask:Ee?setImmediate:Oe?process.nextTick:a;var _e=i(xe);var be={},Ae=e=>(t,n,a)=>{function i(e,t){if(!d)if(c-=1,e)l=!0,a(e);else if(!1===e)l=!0,d=!0;else{if(t===be||l&&0>=c)return l=!0,a(null);o||r()}}function r(){for(o=!0;c=c&&a(null));c+=1,n(t.value,t.key,L(i))}o=!1}if(a=m(a),0>=e)throw new RangeError("concurrency limit cannot be less than 1");if(!t)return a(null);if(u(t))return E(t,e,n,a);if(p(t))return E(t[Symbol.asyncIterator](),e,n,a);var s=x(t),l=!1,d=!1,c=0,o=!1;r()},Ie=o(function i(e,t,n,a){return Ae(t)(e,c(n),a)},4),Me=o(function a(e,t,n){var i=y(e)?O:_;return i(e,c(t),n)},3),je=o(function a(e,t,n){return f(Me,e,t,n)},3),we=h(je),Be=o(function a(e,t,n){return Ie(e,1,t,n)},3),Te=o(function a(e,t,n){return f(Be,e,t,n)},3),Fe=h(Te);const Ce=Symbol("promiseCallback");var Pe=/^(?:async\s+)?(?:function)?\s*\w*\s*\(\s*([^)]+)\s*\)(?:\s*{)/,Re=/^(?:async\s+)?\(?\s*([^)=]+)\s*\)?(?:\s*=>)/,ze=/,/,Ne=/(=.+)?(\s*)$/;class Ve{constructor(){this.head=this.tail=null,this.length=0}removeLink(e){return e.prev?e.prev.next=e.next:this.head=e.next,e.next?e.next.prev=e.prev:this.tail=e.prev,e.prev=e.next=null,this.length-=1,e}empty(){for(;this.head;)this.shift();return this}insertAfter(e,t){t.prev=e,t.next=e.next,e.next?e.next.prev=t:this.tail=t,e.next=t,this.length+=1}insertBefore(e,t){t.prev=e.prev,t.next=e,e.prev?e.prev.next=t:this.head=t,e.prev=t,this.length+=1}unshift(e){this.head?this.insertBefore(this.head,e):w(this,e)}push(e){this.tail?this.insertAfter(this.tail,e):w(this,e)}shift(){return this.head&&this.removeLink(this.head)}pop(){return this.tail&&this.removeLink(this.tail)}toArray(){return[...this]}*[Symbol.iterator](){for(var e=this.head;e;)yield e.data,e=e.next}remove(e){for(var t=this.head;t;){var{next:n}=t;e(t)&&this.removeLink(t),t=n}return this}}var Ye,qe=o(function i(e,t,n,a){a=m(a);var r=c(n);return Be(e,(e,n,a)=>{r(t,e,(e,n)=>{t=n,a(e)})},e=>a(e,t))},4),De=o(function i(e,t,n,a){return f(Ae(t),e,n,a)},4),Qe=o(function i(e,t,n,a){var r=c(n);return De(e,t,(e,t)=>{r(e,(e,...n)=>e?t(e):t(e,n))},(e,t)=>{for(var n=[],r=0;re,(e,t)=>t)(Me,e,t,n)},3),He=o(function i(e,t,n,a){return z(e=>e,(e,t)=>t)(Ae(t),e,n,a)},4),Je=o(function a(e,t,n){return z(e=>e,(e,t)=>t)(Ae(1),e,t,n)},3),Ke=N("dir"),Xe=o(function a(e,t,n){function i(e,...t){return e?n(e):void(!1===e||(s=t,d(...t,r)))}function r(e,t){return e?n(e):!1===e?void 0:t?void l(i):n(null,...s)}n=L(n);var s,l=c(e),d=c(t);return r(null,!0)},3),Ze=o(function a(e,t,n){return Me(e,Y(c(t)),n)},3),$e=o(function i(e,t,n,a){return Ae(t)(e,Y(c(n)),a)},4),et=o(function a(e,t,n){return $e(e,1,t,n)},3),tt=o(function a(e,t,n){return z(e=>!e,e=>!e)(Me,e,t,n)},3),nt=o(function i(e,t,n,a){return z(e=>!e,e=>!e)(Ae(t),e,n,a)},4),at=o(function a(e,t,n){return z(e=>!e,e=>!e)(Be,e,t,n)},3),it=o(function a(e,t,n){return U(Me,e,t,n)},3),rt=o(function i(e,t,n,a){return U(Ae(t),e,n,a)},4),st=o(function a(e,t,n){return U(Be,e,t,n)},3),lt=o(function n(e,t){function a(e){return e?i(e):void(!1===e||r(a))}var i=L(t),r=c(q(e));return a()},2),dt=o(function i(e,t,n,a){var r=c(n);return De(e,t,(e,t)=>{r(e,(n,a)=>n?t(n):t(n,{key:a,val:e}))},(e,t)=>{for(var n={},{hasOwnProperty:r}=Object.prototype,s=0;s{s(e,t,(e,a)=>e?n(e):void(r[t]=a,n(e)))},e=>a(e,r))},4);Ye=Oe?process.nextTick:Ee?setImmediate:a;var ct=i(Ye),ot=o((e,t,n)=>{var a=y(t)?[]:{};e(t,(e,t,n)=>{c(e)((e,...i)=>{2>i.length&&([i]=i),a[t]=i,n(e)})},e=>n(e,a))},3);class ht{constructor(){this.heap=[],this.pushCount=Number.MIN_SAFE_INTEGER}get length(){return this.heap.length}empty(){return this.heap=[],this}percUp(e){for(let n;0e)(Me,e,t,n)},3),xt=o(function i(e,t,n,a){return z(Boolean,e=>e)(Ae(t),e,n,a)},4),Lt=o(function a(e,t,n){return z(Boolean,e=>e)(Be,e,t,n)},3),Et=o(function a(e,t,n){function i(e,t){var n=e.criteria,a=t.criteria;return na?1:0}var r=c(t);return je(e,(e,t)=>{r(e,(n,a)=>n?t(n):void t(n,{value:e,criteria:a}))},(e,t)=>e?n(e):void n(null,t.sort(i).map(e=>e.value)))},3),Ot=o(function n(e,t){var a,i=null;return et(e,(e,t)=>{c(e)((e,...n)=>!1===e?t(e):void(2>n.length?[a]=n:a=n,i=e,t(e?null:{})))},()=>t(i,a))}),_t=o(function a(e,t,n){function i(e,...t){if(e)return n(e);d=t;!1===e||l(r)}function r(e,t){return e?n(e):!1===e?void 0:t?void s(i):n(null,...d)}n=L(n);var s=c(t),l=c(e),d=[];return l(r)},3),bt=o(function n(e,t){function a(t){var n=c(e[r++]);n(...t,L(i))}function i(n,...i){return!1===n?void 0:n||r===e.length?t(n,...i):void a(i)}if(t=m(t),!Array.isArray(e))return t(new Error("First argument to waterfall must be an array of functions"));if(!e.length)return t();var r=0;a([])});e.all=tt,e.allLimit=nt,e.allSeries=at,e.any=St,e.anyLimit=xt,e.anySeries=Lt,e.apply=t,e.applyEach=we,e.applyEachSeries=Fe,e.asyncify=r,e.auto=A,e.autoInject=j,e.cargo=T,e.cargoQueue=F,e.compose=P,e.concat=Ue,e.concatLimit=Qe,e.concatSeries=Ge,e.constant=R,e.default={apply:t,applyEach:we,applyEachSeries:Fe,asyncify:r,auto:A,autoInject:j,cargo:T,cargoQueue:F,compose:P,concat:Ue,concatLimit:Qe,concatSeries:Ge,constant:R,detect:We,detectLimit:He,detectSeries:Je,dir:Ke,doUntil:V,doWhilst:Xe,each:Ze,eachLimit:$e,eachOf:Me,eachOfLimit:Ie,eachOfSeries:Be,eachSeries:et,ensureAsync:q,every:tt,everyLimit:nt,everySeries:at,filter:it,filterLimit:rt,filterSeries:st,forever:lt,groupBy:G,groupByLimit:dt,groupBySeries:W,log:ut,map:je,mapLimit:De,mapSeries:Te,mapValues:H,mapValuesLimit:pt,mapValuesSeries:J,memoize:K,nextTick:ct,parallel:X,parallelLimit:Z,priorityQueue:ae,queue:$,race:ft,reduce:qe,reduceRight:ie,reflect:re,reflectAll:se,reject:yt,rejectLimit:mt,rejectSeries:gt,retry:ue,retryable:ce,seq:C,series:oe,setImmediate:_e,some:St,someLimit:xt,someSeries:Lt,sortBy:Et,timeout:he,times:me,timesLimit:ye,timesSeries:ge,transform:ke,tryEach:Ot,unmemoize:ve,until:Se,waterfall:bt,whilst:_t,all:tt,allLimit:nt,allSeries:at,any:St,anyLimit:xt,anySeries:Lt,find:We,findLimit:He,findSeries:Je,flatMap:Ue,flatMapLimit:Qe,flatMapSeries:Ge,forEach:Ze,forEachSeries:et,forEachLimit:$e,forEachOf:Me,forEachOfSeries:Be,forEachOfLimit:Ie,inject:qe,foldl:qe,foldr:ie,select:it,selectLimit:rt,selectSeries:st,wrapSync:r,during:_t,doDuring:Xe},e.detect=We,e.detectLimit=He,e.detectSeries=Je,e.dir=Ke,e.doDuring=Xe,e.doUntil=V,e.doWhilst=Xe,e.during=_t,e.each=Ze,e.eachLimit=$e,e.eachOf=Me,e.eachOfLimit=Ie,e.eachOfSeries=Be,e.eachSeries=et,e.ensureAsync=q,e.every=tt,e.everyLimit=nt,e.everySeries=at,e.filter=it,e.filterLimit=rt,e.filterSeries=st,e.find=We,e.findLimit=He,e.findSeries=Je,e.flatMap=Ue,e.flatMapLimit=Qe,e.flatMapSeries=Ge,e.foldl=qe,e.foldr=ie,e.forEach=Ze,e.forEachLimit=$e,e.forEachOf=Me,e.forEachOfLimit=Ie,e.forEachOfSeries=Be,e.forEachSeries=et,e.forever=lt,e.groupBy=G,e.groupByLimit=dt,e.groupBySeries=W,e.inject=qe,e.log=ut,e.map=je,e.mapLimit=De,e.mapSeries=Te,e.mapValues=H,e.mapValuesLimit=pt,e.mapValuesSeries=J,e.memoize=K,e.nextTick=ct,e.parallel=X,e.parallelLimit=Z,e.priorityQueue=ae,e.queue=$,e.race=ft,e.reduce=qe,e.reduceRight=ie,e.reflect=re,e.reflectAll=se,e.reject=yt,e.rejectLimit=mt,e.rejectSeries=gt,e.retry=ue,e.retryable=ce,e.select=it,e.selectLimit=rt,e.selectSeries=st,e.seq=C,e.series=oe,e.setImmediate=_e,e.some=St,e.someLimit=xt,e.someSeries=Lt,e.sortBy=Et,e.timeout=he,e.times=me,e.timesLimit=ye,e.timesSeries=ge,e.transform=ke,e.tryEach=Ot,e.unmemoize=ve,e.until=Se,e.waterfall=bt,e.whilst=_t,e.wrapSync=r,Object.defineProperty(e,"__esModule",{value:!0})}); \ No newline at end of file diff --git a/node_modules/async/dist/async.mjs b/node_modules/async/dist/async.mjs new file mode 100644 index 0000000..41c63c1 --- /dev/null +++ b/node_modules/async/dist/async.mjs @@ -0,0 +1,5949 @@ +/** + * Creates a continuation function with some arguments already applied. + * + * Useful as a shorthand when combined with other control flow functions. Any + * arguments passed to the returned function are added to the arguments + * originally passed to apply. + * + * @name apply + * @static + * @memberOf module:Utils + * @method + * @category Util + * @param {Function} fn - The function you want to eventually apply all + * arguments to. Invokes with (arguments...). + * @param {...*} arguments... - Any number of arguments to automatically apply + * when the continuation is called. + * @returns {Function} the partially-applied function + * @example + * + * // using apply + * async.parallel([ + * async.apply(fs.writeFile, 'testfile1', 'test1'), + * async.apply(fs.writeFile, 'testfile2', 'test2') + * ]); + * + * + * // the same process without using apply + * async.parallel([ + * function(callback) { + * fs.writeFile('testfile1', 'test1', callback); + * }, + * function(callback) { + * fs.writeFile('testfile2', 'test2', callback); + * } + * ]); + * + * // It's possible to pass any number of additional arguments when calling the + * // continuation: + * + * node> var fn = async.apply(sys.puts, 'one'); + * node> fn('two', 'three'); + * one + * two + * three + */ +function apply(fn, ...args) { + return (...callArgs) => fn(...args,...callArgs); +} + +function initialParams (fn) { + return function (...args/*, callback*/) { + var callback = args.pop(); + return fn.call(this, args, callback); + }; +} + +/* istanbul ignore file */ + +var hasQueueMicrotask = typeof queueMicrotask === 'function' && queueMicrotask; +var hasSetImmediate = typeof setImmediate === 'function' && setImmediate; +var hasNextTick = typeof process === 'object' && typeof process.nextTick === 'function'; + +function fallback(fn) { + setTimeout(fn, 0); +} + +function wrap(defer) { + return (fn, ...args) => defer(() => fn(...args)); +} + +var _defer$1; + +if (hasQueueMicrotask) { + _defer$1 = queueMicrotask; +} else if (hasSetImmediate) { + _defer$1 = setImmediate; +} else if (hasNextTick) { + _defer$1 = process.nextTick; +} else { + _defer$1 = fallback; +} + +var setImmediate$1 = wrap(_defer$1); + +/** + * Take a sync function and make it async, passing its return value to a + * callback. This is useful for plugging sync functions into a waterfall, + * series, or other async functions. Any arguments passed to the generated + * function will be passed to the wrapped function (except for the final + * callback argument). Errors thrown will be passed to the callback. + * + * If the function passed to `asyncify` returns a Promise, that promises's + * resolved/rejected state will be used to call the callback, rather than simply + * the synchronous return value. + * + * This also means you can asyncify ES2017 `async` functions. + * + * @name asyncify + * @static + * @memberOf module:Utils + * @method + * @alias wrapSync + * @category Util + * @param {Function} func - The synchronous function, or Promise-returning + * function to convert to an {@link AsyncFunction}. + * @returns {AsyncFunction} An asynchronous wrapper of the `func`. To be + * invoked with `(args..., callback)`. + * @example + * + * // passing a regular synchronous function + * async.waterfall([ + * async.apply(fs.readFile, filename, "utf8"), + * async.asyncify(JSON.parse), + * function (data, next) { + * // data is the result of parsing the text. + * // If there was a parsing error, it would have been caught. + * } + * ], callback); + * + * // passing a function returning a promise + * async.waterfall([ + * async.apply(fs.readFile, filename, "utf8"), + * async.asyncify(function (contents) { + * return db.model.create(contents); + * }), + * function (model, next) { + * // `model` is the instantiated model object. + * // If there was an error, this function would be skipped. + * } + * ], callback); + * + * // es2017 example, though `asyncify` is not needed if your JS environment + * // supports async functions out of the box + * var q = async.queue(async.asyncify(async function(file) { + * var intermediateStep = await processFile(file); + * return await somePromise(intermediateStep) + * })); + * + * q.push(files); + */ +function asyncify(func) { + if (isAsync(func)) { + return function (...args/*, callback*/) { + const callback = args.pop(); + const promise = func.apply(this, args); + return handlePromise(promise, callback) + } + } + + return initialParams(function (args, callback) { + var result; + try { + result = func.apply(this, args); + } catch (e) { + return callback(e); + } + // if result is Promise object + if (result && typeof result.then === 'function') { + return handlePromise(result, callback) + } else { + callback(null, result); + } + }); +} + +function handlePromise(promise, callback) { + return promise.then(value => { + invokeCallback(callback, null, value); + }, err => { + invokeCallback(callback, err && (err instanceof Error || err.message) ? err : new Error(err)); + }); +} + +function invokeCallback(callback, error, value) { + try { + callback(error, value); + } catch (err) { + setImmediate$1(e => { throw e }, err); + } +} + +function isAsync(fn) { + return fn[Symbol.toStringTag] === 'AsyncFunction'; +} + +function isAsyncGenerator(fn) { + return fn[Symbol.toStringTag] === 'AsyncGenerator'; +} + +function isAsyncIterable(obj) { + return typeof obj[Symbol.asyncIterator] === 'function'; +} + +function wrapAsync(asyncFn) { + if (typeof asyncFn !== 'function') throw new Error('expected a function') + return isAsync(asyncFn) ? asyncify(asyncFn) : asyncFn; +} + +// conditionally promisify a function. +// only return a promise if a callback is omitted +function awaitify (asyncFn, arity) { + if (!arity) arity = asyncFn.length; + if (!arity) throw new Error('arity is undefined') + function awaitable (...args) { + if (typeof args[arity - 1] === 'function') { + return asyncFn.apply(this, args) + } + + return new Promise((resolve, reject) => { + args[arity - 1] = (err, ...cbArgs) => { + if (err) return reject(err) + resolve(cbArgs.length > 1 ? cbArgs : cbArgs[0]); + }; + asyncFn.apply(this, args); + }) + } + + return awaitable +} + +function applyEach$1 (eachfn) { + return function applyEach(fns, ...callArgs) { + const go = awaitify(function (callback) { + var that = this; + return eachfn(fns, (fn, cb) => { + wrapAsync(fn).apply(that, callArgs.concat(cb)); + }, callback); + }); + return go; + }; +} + +function _asyncMap(eachfn, arr, iteratee, callback) { + arr = arr || []; + var results = []; + var counter = 0; + var _iteratee = wrapAsync(iteratee); + + return eachfn(arr, (value, _, iterCb) => { + var index = counter++; + _iteratee(value, (err, v) => { + results[index] = v; + iterCb(err); + }); + }, err => { + callback(err, results); + }); +} + +function isArrayLike(value) { + return value && + typeof value.length === 'number' && + value.length >= 0 && + value.length % 1 === 0; +} + +// A temporary value used to identify if the loop should be broken. +// See #1064, #1293 +const breakLoop = {}; +var breakLoop$1 = breakLoop; + +function once(fn) { + function wrapper (...args) { + if (fn === null) return; + var callFn = fn; + fn = null; + callFn.apply(this, args); + } + Object.assign(wrapper, fn); + return wrapper +} + +function getIterator (coll) { + return coll[Symbol.iterator] && coll[Symbol.iterator](); +} + +function createArrayIterator(coll) { + var i = -1; + var len = coll.length; + return function next() { + return ++i < len ? {value: coll[i], key: i} : null; + } +} + +function createES2015Iterator(iterator) { + var i = -1; + return function next() { + var item = iterator.next(); + if (item.done) + return null; + i++; + return {value: item.value, key: i}; + } +} + +function createObjectIterator(obj) { + var okeys = obj ? Object.keys(obj) : []; + var i = -1; + var len = okeys.length; + return function next() { + var key = okeys[++i]; + if (key === '__proto__') { + return next(); + } + return i < len ? {value: obj[key], key} : null; + }; +} + +function createIterator(coll) { + if (isArrayLike(coll)) { + return createArrayIterator(coll); + } + + var iterator = getIterator(coll); + return iterator ? createES2015Iterator(iterator) : createObjectIterator(coll); +} + +function onlyOnce(fn) { + return function (...args) { + if (fn === null) throw new Error("Callback was already called."); + var callFn = fn; + fn = null; + callFn.apply(this, args); + }; +} + +// for async generators +function asyncEachOfLimit(generator, limit, iteratee, callback) { + let done = false; + let canceled = false; + let awaiting = false; + let running = 0; + let idx = 0; + + function replenish() { + //console.log('replenish') + if (running >= limit || awaiting || done) return + //console.log('replenish awaiting') + awaiting = true; + generator.next().then(({value, done: iterDone}) => { + //console.log('got value', value) + if (canceled || done) return + awaiting = false; + if (iterDone) { + done = true; + if (running <= 0) { + //console.log('done nextCb') + callback(null); + } + return; + } + running++; + iteratee(value, idx, iterateeCallback); + idx++; + replenish(); + }).catch(handleError); + } + + function iterateeCallback(err, result) { + //console.log('iterateeCallback') + running -= 1; + if (canceled) return + if (err) return handleError(err) + + if (err === false) { + done = true; + canceled = true; + return + } + + if (result === breakLoop$1 || (done && running <= 0)) { + done = true; + //console.log('done iterCb') + return callback(null); + } + replenish(); + } + + function handleError(err) { + if (canceled) return + awaiting = false; + done = true; + callback(err); + } + + replenish(); +} + +var eachOfLimit$2 = (limit) => { + return (obj, iteratee, callback) => { + callback = once(callback); + if (limit <= 0) { + throw new RangeError('concurrency limit cannot be less than 1') + } + if (!obj) { + return callback(null); + } + if (isAsyncGenerator(obj)) { + return asyncEachOfLimit(obj, limit, iteratee, callback) + } + if (isAsyncIterable(obj)) { + return asyncEachOfLimit(obj[Symbol.asyncIterator](), limit, iteratee, callback) + } + var nextElem = createIterator(obj); + var done = false; + var canceled = false; + var running = 0; + var looping = false; + + function iterateeCallback(err, value) { + if (canceled) return + running -= 1; + if (err) { + done = true; + callback(err); + } + else if (err === false) { + done = true; + canceled = true; + } + else if (value === breakLoop$1 || (done && running <= 0)) { + done = true; + return callback(null); + } + else if (!looping) { + replenish(); + } + } + + function replenish () { + looping = true; + while (running < limit && !done) { + var elem = nextElem(); + if (elem === null) { + done = true; + if (running <= 0) { + callback(null); + } + return; + } + running += 1; + iteratee(elem.value, elem.key, onlyOnce(iterateeCallback)); + } + looping = false; + } + + replenish(); + }; +}; + +/** + * The same as [`eachOf`]{@link module:Collections.eachOf} but runs a maximum of `limit` async operations at a + * time. + * + * @name eachOfLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.eachOf]{@link module:Collections.eachOf} + * @alias forEachOfLimit + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - An async function to apply to each + * item in `coll`. The `key` is the item's key, or index in the case of an + * array. + * Invoked with (item, key, callback). + * @param {Function} [callback] - A callback which is called when all + * `iteratee` functions have finished, or an error occurs. Invoked with (err). + * @returns {Promise} a promise, if a callback is omitted + */ +function eachOfLimit(coll, limit, iteratee, callback) { + return eachOfLimit$2(limit)(coll, wrapAsync(iteratee), callback); +} + +var eachOfLimit$1 = awaitify(eachOfLimit, 4); + +// eachOf implementation optimized for array-likes +function eachOfArrayLike(coll, iteratee, callback) { + callback = once(callback); + var index = 0, + completed = 0, + {length} = coll, + canceled = false; + if (length === 0) { + callback(null); + } + + function iteratorCallback(err, value) { + if (err === false) { + canceled = true; + } + if (canceled === true) return + if (err) { + callback(err); + } else if ((++completed === length) || value === breakLoop$1) { + callback(null); + } + } + + for (; index < length; index++) { + iteratee(coll[index], index, onlyOnce(iteratorCallback)); + } +} + +// a generic version of eachOf which can handle array, object, and iterator cases. +function eachOfGeneric (coll, iteratee, callback) { + return eachOfLimit$1(coll, Infinity, iteratee, callback); +} + +/** + * Like [`each`]{@link module:Collections.each}, except that it passes the key (or index) as the second argument + * to the iteratee. + * + * @name eachOf + * @static + * @memberOf module:Collections + * @method + * @alias forEachOf + * @category Collection + * @see [async.each]{@link module:Collections.each} + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - A function to apply to each + * item in `coll`. + * The `key` is the item's key, or index in the case of an array. + * Invoked with (item, key, callback). + * @param {Function} [callback] - A callback which is called when all + * `iteratee` functions have finished, or an error occurs. Invoked with (err). + * @returns {Promise} a promise, if a callback is omitted + * @example + * + * // dev.json is a file containing a valid json object config for dev environment + * // dev.json is a file containing a valid json object config for test environment + * // prod.json is a file containing a valid json object config for prod environment + * // invalid.json is a file with a malformed json object + * + * let configs = {}; //global variable + * let validConfigFileMap = {dev: 'dev.json', test: 'test.json', prod: 'prod.json'}; + * let invalidConfigFileMap = {dev: 'dev.json', test: 'test.json', invalid: 'invalid.json'}; + * + * // asynchronous function that reads a json file and parses the contents as json object + * function parseFile(file, key, callback) { + * fs.readFile(file, "utf8", function(err, data) { + * if (err) return calback(err); + * try { + * configs[key] = JSON.parse(data); + * } catch (e) { + * return callback(e); + * } + * callback(); + * }); + * } + * + * // Using callbacks + * async.forEachOf(validConfigFileMap, parseFile, function (err) { + * if (err) { + * console.error(err); + * } else { + * console.log(configs); + * // configs is now a map of JSON data, e.g. + * // { dev: //parsed dev.json, test: //parsed test.json, prod: //parsed prod.json} + * } + * }); + * + * //Error handing + * async.forEachOf(invalidConfigFileMap, parseFile, function (err) { + * if (err) { + * console.error(err); + * // JSON parse error exception + * } else { + * console.log(configs); + * } + * }); + * + * // Using Promises + * async.forEachOf(validConfigFileMap, parseFile) + * .then( () => { + * console.log(configs); + * // configs is now a map of JSON data, e.g. + * // { dev: //parsed dev.json, test: //parsed test.json, prod: //parsed prod.json} + * }).catch( err => { + * console.error(err); + * }); + * + * //Error handing + * async.forEachOf(invalidConfigFileMap, parseFile) + * .then( () => { + * console.log(configs); + * }).catch( err => { + * console.error(err); + * // JSON parse error exception + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.forEachOf(validConfigFileMap, parseFile); + * console.log(configs); + * // configs is now a map of JSON data, e.g. + * // { dev: //parsed dev.json, test: //parsed test.json, prod: //parsed prod.json} + * } + * catch (err) { + * console.log(err); + * } + * } + * + * //Error handing + * async () => { + * try { + * let result = await async.forEachOf(invalidConfigFileMap, parseFile); + * console.log(configs); + * } + * catch (err) { + * console.log(err); + * // JSON parse error exception + * } + * } + * + */ +function eachOf(coll, iteratee, callback) { + var eachOfImplementation = isArrayLike(coll) ? eachOfArrayLike : eachOfGeneric; + return eachOfImplementation(coll, wrapAsync(iteratee), callback); +} + +var eachOf$1 = awaitify(eachOf, 3); + +/** + * Produces a new collection of values by mapping each value in `coll` through + * the `iteratee` function. The `iteratee` is called with an item from `coll` + * and a callback for when it has finished processing. Each of these callbacks + * takes 2 arguments: an `error`, and the transformed item from `coll`. If + * `iteratee` passes an error to its callback, the main `callback` (for the + * `map` function) is immediately called with the error. + * + * Note, that since this function applies the `iteratee` to each item in + * parallel, there is no guarantee that the `iteratee` functions will complete + * in order. However, the results array will be in the same order as the + * original `coll`. + * + * If `map` is passed an Object, the results will be an Array. The results + * will roughly be in the order of the original Objects' keys (but this can + * vary across JavaScript engines). + * + * @name map + * @static + * @memberOf module:Collections + * @method + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The iteratee should complete with the transformed item. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. Results is an Array of the + * transformed items from the `coll`. Invoked with (err, results). + * @returns {Promise} a promise, if no callback is passed + * @example + * + * // file1.txt is a file that is 1000 bytes in size + * // file2.txt is a file that is 2000 bytes in size + * // file3.txt is a file that is 3000 bytes in size + * // file4.txt does not exist + * + * const fileList = ['file1.txt','file2.txt','file3.txt']; + * const withMissingFileList = ['file1.txt','file2.txt','file4.txt']; + * + * // asynchronous function that returns the file size in bytes + * function getFileSizeInBytes(file, callback) { + * fs.stat(file, function(err, stat) { + * if (err) { + * return callback(err); + * } + * callback(null, stat.size); + * }); + * } + * + * // Using callbacks + * async.map(fileList, getFileSizeInBytes, function(err, results) { + * if (err) { + * console.log(err); + * } else { + * console.log(results); + * // results is now an array of the file size in bytes for each file, e.g. + * // [ 1000, 2000, 3000] + * } + * }); + * + * // Error Handling + * async.map(withMissingFileList, getFileSizeInBytes, function(err, results) { + * if (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } else { + * console.log(results); + * } + * }); + * + * // Using Promises + * async.map(fileList, getFileSizeInBytes) + * .then( results => { + * console.log(results); + * // results is now an array of the file size in bytes for each file, e.g. + * // [ 1000, 2000, 3000] + * }).catch( err => { + * console.log(err); + * }); + * + * // Error Handling + * async.map(withMissingFileList, getFileSizeInBytes) + * .then( results => { + * console.log(results); + * }).catch( err => { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * }); + * + * // Using async/await + * async () => { + * try { + * let results = await async.map(fileList, getFileSizeInBytes); + * console.log(results); + * // results is now an array of the file size in bytes for each file, e.g. + * // [ 1000, 2000, 3000] + * } + * catch (err) { + * console.log(err); + * } + * } + * + * // Error Handling + * async () => { + * try { + * let results = await async.map(withMissingFileList, getFileSizeInBytes); + * console.log(results); + * } + * catch (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } + * } + * + */ +function map (coll, iteratee, callback) { + return _asyncMap(eachOf$1, coll, iteratee, callback) +} +var map$1 = awaitify(map, 3); + +/** + * Applies the provided arguments to each function in the array, calling + * `callback` after all functions have completed. If you only provide the first + * argument, `fns`, then it will return a function which lets you pass in the + * arguments as if it were a single function call. If more arguments are + * provided, `callback` is required while `args` is still optional. The results + * for each of the applied async functions are passed to the final callback + * as an array. + * + * @name applyEach + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {Array|Iterable|AsyncIterable|Object} fns - A collection of {@link AsyncFunction}s + * to all call with the same arguments + * @param {...*} [args] - any number of separate arguments to pass to the + * function. + * @param {Function} [callback] - the final argument should be the callback, + * called when all functions have completed processing. + * @returns {AsyncFunction} - Returns a function that takes no args other than + * an optional callback, that is the result of applying the `args` to each + * of the functions. + * @example + * + * const appliedFn = async.applyEach([enableSearch, updateSchema], 'bucket') + * + * appliedFn((err, results) => { + * // results[0] is the results for `enableSearch` + * // results[1] is the results for `updateSchema` + * }); + * + * // partial application example: + * async.each( + * buckets, + * async (bucket) => async.applyEach([enableSearch, updateSchema], bucket)(), + * callback + * ); + */ +var applyEach = applyEach$1(map$1); + +/** + * The same as [`eachOf`]{@link module:Collections.eachOf} but runs only a single async operation at a time. + * + * @name eachOfSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.eachOf]{@link module:Collections.eachOf} + * @alias forEachOfSeries + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * Invoked with (item, key, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. Invoked with (err). + * @returns {Promise} a promise, if a callback is omitted + */ +function eachOfSeries(coll, iteratee, callback) { + return eachOfLimit$1(coll, 1, iteratee, callback) +} +var eachOfSeries$1 = awaitify(eachOfSeries, 3); + +/** + * The same as [`map`]{@link module:Collections.map} but runs only a single async operation at a time. + * + * @name mapSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.map]{@link module:Collections.map} + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The iteratee should complete with the transformed item. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. Results is an array of the + * transformed items from the `coll`. Invoked with (err, results). + * @returns {Promise} a promise, if no callback is passed + */ +function mapSeries (coll, iteratee, callback) { + return _asyncMap(eachOfSeries$1, coll, iteratee, callback) +} +var mapSeries$1 = awaitify(mapSeries, 3); + +/** + * The same as [`applyEach`]{@link module:ControlFlow.applyEach} but runs only a single async operation at a time. + * + * @name applyEachSeries + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.applyEach]{@link module:ControlFlow.applyEach} + * @category Control Flow + * @param {Array|Iterable|AsyncIterable|Object} fns - A collection of {@link AsyncFunction}s to all + * call with the same arguments + * @param {...*} [args] - any number of separate arguments to pass to the + * function. + * @param {Function} [callback] - the final argument should be the callback, + * called when all functions have completed processing. + * @returns {AsyncFunction} - A function, that when called, is the result of + * appling the `args` to the list of functions. It takes no args, other than + * a callback. + */ +var applyEachSeries = applyEach$1(mapSeries$1); + +const PROMISE_SYMBOL = Symbol('promiseCallback'); + +function promiseCallback () { + let resolve, reject; + function callback (err, ...args) { + if (err) return reject(err) + resolve(args.length > 1 ? args : args[0]); + } + + callback[PROMISE_SYMBOL] = new Promise((res, rej) => { + resolve = res, + reject = rej; + }); + + return callback +} + +/** + * Determines the best order for running the {@link AsyncFunction}s in `tasks`, based on + * their requirements. Each function can optionally depend on other functions + * being completed first, and each function is run as soon as its requirements + * are satisfied. + * + * If any of the {@link AsyncFunction}s pass an error to their callback, the `auto` sequence + * will stop. Further tasks will not execute (so any other functions depending + * on it will not run), and the main `callback` is immediately called with the + * error. + * + * {@link AsyncFunction}s also receive an object containing the results of functions which + * have completed so far as the first argument, if they have dependencies. If a + * task function has no dependencies, it will only be passed a callback. + * + * @name auto + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {Object} tasks - An object. Each of its properties is either a + * function or an array of requirements, with the {@link AsyncFunction} itself the last item + * in the array. The object's key of a property serves as the name of the task + * defined by that property, i.e. can be used when specifying requirements for + * other tasks. The function receives one or two arguments: + * * a `results` object, containing the results of the previously executed + * functions, only passed if the task has any dependencies, + * * a `callback(err, result)` function, which must be called when finished, + * passing an `error` (which can be `null`) and the result of the function's + * execution. + * @param {number} [concurrency=Infinity] - An optional `integer` for + * determining the maximum number of tasks that can be run in parallel. By + * default, as many as possible. + * @param {Function} [callback] - An optional callback which is called when all + * the tasks have been completed. It receives the `err` argument if any `tasks` + * pass an error to their callback. Results are always returned; however, if an + * error occurs, no further `tasks` will be performed, and the results object + * will only contain partial results. Invoked with (err, results). + * @returns {Promise} a promise, if a callback is not passed + * @example + * + * //Using Callbacks + * async.auto({ + * get_data: function(callback) { + * // async code to get some data + * callback(null, 'data', 'converted to array'); + * }, + * make_folder: function(callback) { + * // async code to create a directory to store a file in + * // this is run at the same time as getting the data + * callback(null, 'folder'); + * }, + * write_file: ['get_data', 'make_folder', function(results, callback) { + * // once there is some data and the directory exists, + * // write the data to a file in the directory + * callback(null, 'filename'); + * }], + * email_link: ['write_file', function(results, callback) { + * // once the file is written let's email a link to it... + * callback(null, {'file':results.write_file, 'email':'user@example.com'}); + * }] + * }, function(err, results) { + * if (err) { + * console.log('err = ', err); + * } + * console.log('results = ', results); + * // results = { + * // get_data: ['data', 'converted to array'] + * // make_folder; 'folder', + * // write_file: 'filename' + * // email_link: { file: 'filename', email: 'user@example.com' } + * // } + * }); + * + * //Using Promises + * async.auto({ + * get_data: function(callback) { + * console.log('in get_data'); + * // async code to get some data + * callback(null, 'data', 'converted to array'); + * }, + * make_folder: function(callback) { + * console.log('in make_folder'); + * // async code to create a directory to store a file in + * // this is run at the same time as getting the data + * callback(null, 'folder'); + * }, + * write_file: ['get_data', 'make_folder', function(results, callback) { + * // once there is some data and the directory exists, + * // write the data to a file in the directory + * callback(null, 'filename'); + * }], + * email_link: ['write_file', function(results, callback) { + * // once the file is written let's email a link to it... + * callback(null, {'file':results.write_file, 'email':'user@example.com'}); + * }] + * }).then(results => { + * console.log('results = ', results); + * // results = { + * // get_data: ['data', 'converted to array'] + * // make_folder; 'folder', + * // write_file: 'filename' + * // email_link: { file: 'filename', email: 'user@example.com' } + * // } + * }).catch(err => { + * console.log('err = ', err); + * }); + * + * //Using async/await + * async () => { + * try { + * let results = await async.auto({ + * get_data: function(callback) { + * // async code to get some data + * callback(null, 'data', 'converted to array'); + * }, + * make_folder: function(callback) { + * // async code to create a directory to store a file in + * // this is run at the same time as getting the data + * callback(null, 'folder'); + * }, + * write_file: ['get_data', 'make_folder', function(results, callback) { + * // once there is some data and the directory exists, + * // write the data to a file in the directory + * callback(null, 'filename'); + * }], + * email_link: ['write_file', function(results, callback) { + * // once the file is written let's email a link to it... + * callback(null, {'file':results.write_file, 'email':'user@example.com'}); + * }] + * }); + * console.log('results = ', results); + * // results = { + * // get_data: ['data', 'converted to array'] + * // make_folder; 'folder', + * // write_file: 'filename' + * // email_link: { file: 'filename', email: 'user@example.com' } + * // } + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ +function auto(tasks, concurrency, callback) { + if (typeof concurrency !== 'number') { + // concurrency is optional, shift the args. + callback = concurrency; + concurrency = null; + } + callback = once(callback || promiseCallback()); + var numTasks = Object.keys(tasks).length; + if (!numTasks) { + return callback(null); + } + if (!concurrency) { + concurrency = numTasks; + } + + var results = {}; + var runningTasks = 0; + var canceled = false; + var hasError = false; + + var listeners = Object.create(null); + + var readyTasks = []; + + // for cycle detection: + var readyToCheck = []; // tasks that have been identified as reachable + // without the possibility of returning to an ancestor task + var uncheckedDependencies = {}; + + Object.keys(tasks).forEach(key => { + var task = tasks[key]; + if (!Array.isArray(task)) { + // no dependencies + enqueueTask(key, [task]); + readyToCheck.push(key); + return; + } + + var dependencies = task.slice(0, task.length - 1); + var remainingDependencies = dependencies.length; + if (remainingDependencies === 0) { + enqueueTask(key, task); + readyToCheck.push(key); + return; + } + uncheckedDependencies[key] = remainingDependencies; + + dependencies.forEach(dependencyName => { + if (!tasks[dependencyName]) { + throw new Error('async.auto task `' + key + + '` has a non-existent dependency `' + + dependencyName + '` in ' + + dependencies.join(', ')); + } + addListener(dependencyName, () => { + remainingDependencies--; + if (remainingDependencies === 0) { + enqueueTask(key, task); + } + }); + }); + }); + + checkForDeadlocks(); + processQueue(); + + function enqueueTask(key, task) { + readyTasks.push(() => runTask(key, task)); + } + + function processQueue() { + if (canceled) return + if (readyTasks.length === 0 && runningTasks === 0) { + return callback(null, results); + } + while(readyTasks.length && runningTasks < concurrency) { + var run = readyTasks.shift(); + run(); + } + + } + + function addListener(taskName, fn) { + var taskListeners = listeners[taskName]; + if (!taskListeners) { + taskListeners = listeners[taskName] = []; + } + + taskListeners.push(fn); + } + + function taskComplete(taskName) { + var taskListeners = listeners[taskName] || []; + taskListeners.forEach(fn => fn()); + processQueue(); + } + + + function runTask(key, task) { + if (hasError) return; + + var taskCallback = onlyOnce((err, ...result) => { + runningTasks--; + if (err === false) { + canceled = true; + return + } + if (result.length < 2) { + [result] = result; + } + if (err) { + var safeResults = {}; + Object.keys(results).forEach(rkey => { + safeResults[rkey] = results[rkey]; + }); + safeResults[key] = result; + hasError = true; + listeners = Object.create(null); + if (canceled) return + callback(err, safeResults); + } else { + results[key] = result; + taskComplete(key); + } + }); + + runningTasks++; + var taskFn = wrapAsync(task[task.length - 1]); + if (task.length > 1) { + taskFn(results, taskCallback); + } else { + taskFn(taskCallback); + } + } + + function checkForDeadlocks() { + // Kahn's algorithm + // https://en.wikipedia.org/wiki/Topological_sorting#Kahn.27s_algorithm + // http://connalle.blogspot.com/2013/10/topological-sortingkahn-algorithm.html + var currentTask; + var counter = 0; + while (readyToCheck.length) { + currentTask = readyToCheck.pop(); + counter++; + getDependents(currentTask).forEach(dependent => { + if (--uncheckedDependencies[dependent] === 0) { + readyToCheck.push(dependent); + } + }); + } + + if (counter !== numTasks) { + throw new Error( + 'async.auto cannot execute tasks due to a recursive dependency' + ); + } + } + + function getDependents(taskName) { + var result = []; + Object.keys(tasks).forEach(key => { + const task = tasks[key]; + if (Array.isArray(task) && task.indexOf(taskName) >= 0) { + result.push(key); + } + }); + return result; + } + + return callback[PROMISE_SYMBOL] +} + +var FN_ARGS = /^(?:async\s+)?(?:function)?\s*\w*\s*\(\s*([^)]+)\s*\)(?:\s*{)/; +var ARROW_FN_ARGS = /^(?:async\s+)?\(?\s*([^)=]+)\s*\)?(?:\s*=>)/; +var FN_ARG_SPLIT = /,/; +var FN_ARG = /(=.+)?(\s*)$/; + +function stripComments(string) { + let stripped = ''; + let index = 0; + let endBlockComment = string.indexOf('*/'); + while (index < string.length) { + if (string[index] === '/' && string[index+1] === '/') { + // inline comment + let endIndex = string.indexOf('\n', index); + index = (endIndex === -1) ? string.length : endIndex; + } else if ((endBlockComment !== -1) && (string[index] === '/') && (string[index+1] === '*')) { + // block comment + let endIndex = string.indexOf('*/', index); + if (endIndex !== -1) { + index = endIndex + 2; + endBlockComment = string.indexOf('*/', index); + } else { + stripped += string[index]; + index++; + } + } else { + stripped += string[index]; + index++; + } + } + return stripped; +} + +function parseParams(func) { + const src = stripComments(func.toString()); + let match = src.match(FN_ARGS); + if (!match) { + match = src.match(ARROW_FN_ARGS); + } + if (!match) throw new Error('could not parse args in autoInject\nSource:\n' + src) + let [, args] = match; + return args + .replace(/\s/g, '') + .split(FN_ARG_SPLIT) + .map((arg) => arg.replace(FN_ARG, '').trim()); +} + +/** + * A dependency-injected version of the [async.auto]{@link module:ControlFlow.auto} function. Dependent + * tasks are specified as parameters to the function, after the usual callback + * parameter, with the parameter names matching the names of the tasks it + * depends on. This can provide even more readable task graphs which can be + * easier to maintain. + * + * If a final callback is specified, the task results are similarly injected, + * specified as named parameters after the initial error parameter. + * + * The autoInject function is purely syntactic sugar and its semantics are + * otherwise equivalent to [async.auto]{@link module:ControlFlow.auto}. + * + * @name autoInject + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.auto]{@link module:ControlFlow.auto} + * @category Control Flow + * @param {Object} tasks - An object, each of whose properties is an {@link AsyncFunction} of + * the form 'func([dependencies...], callback). The object's key of a property + * serves as the name of the task defined by that property, i.e. can be used + * when specifying requirements for other tasks. + * * The `callback` parameter is a `callback(err, result)` which must be called + * when finished, passing an `error` (which can be `null`) and the result of + * the function's execution. The remaining parameters name other tasks on + * which the task is dependent, and the results from those tasks are the + * arguments of those parameters. + * @param {Function} [callback] - An optional callback which is called when all + * the tasks have been completed. It receives the `err` argument if any `tasks` + * pass an error to their callback, and a `results` object with any completed + * task results, similar to `auto`. + * @returns {Promise} a promise, if no callback is passed + * @example + * + * // The example from `auto` can be rewritten as follows: + * async.autoInject({ + * get_data: function(callback) { + * // async code to get some data + * callback(null, 'data', 'converted to array'); + * }, + * make_folder: function(callback) { + * // async code to create a directory to store a file in + * // this is run at the same time as getting the data + * callback(null, 'folder'); + * }, + * write_file: function(get_data, make_folder, callback) { + * // once there is some data and the directory exists, + * // write the data to a file in the directory + * callback(null, 'filename'); + * }, + * email_link: function(write_file, callback) { + * // once the file is written let's email a link to it... + * // write_file contains the filename returned by write_file. + * callback(null, {'file':write_file, 'email':'user@example.com'}); + * } + * }, function(err, results) { + * console.log('err = ', err); + * console.log('email_link = ', results.email_link); + * }); + * + * // If you are using a JS minifier that mangles parameter names, `autoInject` + * // will not work with plain functions, since the parameter names will be + * // collapsed to a single letter identifier. To work around this, you can + * // explicitly specify the names of the parameters your task function needs + * // in an array, similar to Angular.js dependency injection. + * + * // This still has an advantage over plain `auto`, since the results a task + * // depends on are still spread into arguments. + * async.autoInject({ + * //... + * write_file: ['get_data', 'make_folder', function(get_data, make_folder, callback) { + * callback(null, 'filename'); + * }], + * email_link: ['write_file', function(write_file, callback) { + * callback(null, {'file':write_file, 'email':'user@example.com'}); + * }] + * //... + * }, function(err, results) { + * console.log('err = ', err); + * console.log('email_link = ', results.email_link); + * }); + */ +function autoInject(tasks, callback) { + var newTasks = {}; + + Object.keys(tasks).forEach(key => { + var taskFn = tasks[key]; + var params; + var fnIsAsync = isAsync(taskFn); + var hasNoDeps = + (!fnIsAsync && taskFn.length === 1) || + (fnIsAsync && taskFn.length === 0); + + if (Array.isArray(taskFn)) { + params = [...taskFn]; + taskFn = params.pop(); + + newTasks[key] = params.concat(params.length > 0 ? newTask : taskFn); + } else if (hasNoDeps) { + // no dependencies, use the function as-is + newTasks[key] = taskFn; + } else { + params = parseParams(taskFn); + if ((taskFn.length === 0 && !fnIsAsync) && params.length === 0) { + throw new Error("autoInject task functions require explicit parameters."); + } + + // remove callback param + if (!fnIsAsync) params.pop(); + + newTasks[key] = params.concat(newTask); + } + + function newTask(results, taskCb) { + var newArgs = params.map(name => results[name]); + newArgs.push(taskCb); + wrapAsync(taskFn)(...newArgs); + } + }); + + return auto(newTasks, callback); +} + +// Simple doubly linked list (https://en.wikipedia.org/wiki/Doubly_linked_list) implementation +// used for queues. This implementation assumes that the node provided by the user can be modified +// to adjust the next and last properties. We implement only the minimal functionality +// for queue support. +class DLL { + constructor() { + this.head = this.tail = null; + this.length = 0; + } + + removeLink(node) { + if (node.prev) node.prev.next = node.next; + else this.head = node.next; + if (node.next) node.next.prev = node.prev; + else this.tail = node.prev; + + node.prev = node.next = null; + this.length -= 1; + return node; + } + + empty () { + while(this.head) this.shift(); + return this; + } + + insertAfter(node, newNode) { + newNode.prev = node; + newNode.next = node.next; + if (node.next) node.next.prev = newNode; + else this.tail = newNode; + node.next = newNode; + this.length += 1; + } + + insertBefore(node, newNode) { + newNode.prev = node.prev; + newNode.next = node; + if (node.prev) node.prev.next = newNode; + else this.head = newNode; + node.prev = newNode; + this.length += 1; + } + + unshift(node) { + if (this.head) this.insertBefore(this.head, node); + else setInitial(this, node); + } + + push(node) { + if (this.tail) this.insertAfter(this.tail, node); + else setInitial(this, node); + } + + shift() { + return this.head && this.removeLink(this.head); + } + + pop() { + return this.tail && this.removeLink(this.tail); + } + + toArray() { + return [...this] + } + + *[Symbol.iterator] () { + var cur = this.head; + while (cur) { + yield cur.data; + cur = cur.next; + } + } + + remove (testFn) { + var curr = this.head; + while(curr) { + var {next} = curr; + if (testFn(curr)) { + this.removeLink(curr); + } + curr = next; + } + return this; + } +} + +function setInitial(dll, node) { + dll.length = 1; + dll.head = dll.tail = node; +} + +function queue$1(worker, concurrency, payload) { + if (concurrency == null) { + concurrency = 1; + } + else if(concurrency === 0) { + throw new RangeError('Concurrency must not be zero'); + } + + var _worker = wrapAsync(worker); + var numRunning = 0; + var workersList = []; + const events = { + error: [], + drain: [], + saturated: [], + unsaturated: [], + empty: [] + }; + + function on (event, handler) { + events[event].push(handler); + } + + function once (event, handler) { + const handleAndRemove = (...args) => { + off(event, handleAndRemove); + handler(...args); + }; + events[event].push(handleAndRemove); + } + + function off (event, handler) { + if (!event) return Object.keys(events).forEach(ev => events[ev] = []) + if (!handler) return events[event] = [] + events[event] = events[event].filter(ev => ev !== handler); + } + + function trigger (event, ...args) { + events[event].forEach(handler => handler(...args)); + } + + var processingScheduled = false; + function _insert(data, insertAtFront, rejectOnError, callback) { + if (callback != null && typeof callback !== 'function') { + throw new Error('task callback must be a function'); + } + q.started = true; + + var res, rej; + function promiseCallback (err, ...args) { + // we don't care about the error, let the global error handler + // deal with it + if (err) return rejectOnError ? rej(err) : res() + if (args.length <= 1) return res(args[0]) + res(args); + } + + var item = q._createTaskItem( + data, + rejectOnError ? promiseCallback : + (callback || promiseCallback) + ); + + if (insertAtFront) { + q._tasks.unshift(item); + } else { + q._tasks.push(item); + } + + if (!processingScheduled) { + processingScheduled = true; + setImmediate$1(() => { + processingScheduled = false; + q.process(); + }); + } + + if (rejectOnError || !callback) { + return new Promise((resolve, reject) => { + res = resolve; + rej = reject; + }) + } + } + + function _createCB(tasks) { + return function (err, ...args) { + numRunning -= 1; + + for (var i = 0, l = tasks.length; i < l; i++) { + var task = tasks[i]; + + var index = workersList.indexOf(task); + if (index === 0) { + workersList.shift(); + } else if (index > 0) { + workersList.splice(index, 1); + } + + task.callback(err, ...args); + + if (err != null) { + trigger('error', err, task.data); + } + } + + if (numRunning <= (q.concurrency - q.buffer) ) { + trigger('unsaturated'); + } + + if (q.idle()) { + trigger('drain'); + } + q.process(); + }; + } + + function _maybeDrain(data) { + if (data.length === 0 && q.idle()) { + // call drain immediately if there are no tasks + setImmediate$1(() => trigger('drain')); + return true + } + return false + } + + const eventMethod = (name) => (handler) => { + if (!handler) { + return new Promise((resolve, reject) => { + once(name, (err, data) => { + if (err) return reject(err) + resolve(data); + }); + }) + } + off(name); + on(name, handler); + + }; + + var isProcessing = false; + var q = { + _tasks: new DLL(), + _createTaskItem (data, callback) { + return { + data, + callback + }; + }, + *[Symbol.iterator] () { + yield* q._tasks[Symbol.iterator](); + }, + concurrency, + payload, + buffer: concurrency / 4, + started: false, + paused: false, + push (data, callback) { + if (Array.isArray(data)) { + if (_maybeDrain(data)) return + return data.map(datum => _insert(datum, false, false, callback)) + } + return _insert(data, false, false, callback); + }, + pushAsync (data, callback) { + if (Array.isArray(data)) { + if (_maybeDrain(data)) return + return data.map(datum => _insert(datum, false, true, callback)) + } + return _insert(data, false, true, callback); + }, + kill () { + off(); + q._tasks.empty(); + }, + unshift (data, callback) { + if (Array.isArray(data)) { + if (_maybeDrain(data)) return + return data.map(datum => _insert(datum, true, false, callback)) + } + return _insert(data, true, false, callback); + }, + unshiftAsync (data, callback) { + if (Array.isArray(data)) { + if (_maybeDrain(data)) return + return data.map(datum => _insert(datum, true, true, callback)) + } + return _insert(data, true, true, callback); + }, + remove (testFn) { + q._tasks.remove(testFn); + }, + process () { + // Avoid trying to start too many processing operations. This can occur + // when callbacks resolve synchronously (#1267). + if (isProcessing) { + return; + } + isProcessing = true; + while(!q.paused && numRunning < q.concurrency && q._tasks.length){ + var tasks = [], data = []; + var l = q._tasks.length; + if (q.payload) l = Math.min(l, q.payload); + for (var i = 0; i < l; i++) { + var node = q._tasks.shift(); + tasks.push(node); + workersList.push(node); + data.push(node.data); + } + + numRunning += 1; + + if (q._tasks.length === 0) { + trigger('empty'); + } + + if (numRunning === q.concurrency) { + trigger('saturated'); + } + + var cb = onlyOnce(_createCB(tasks)); + _worker(data, cb); + } + isProcessing = false; + }, + length () { + return q._tasks.length; + }, + running () { + return numRunning; + }, + workersList () { + return workersList; + }, + idle() { + return q._tasks.length + numRunning === 0; + }, + pause () { + q.paused = true; + }, + resume () { + if (q.paused === false) { return; } + q.paused = false; + setImmediate$1(q.process); + } + }; + // define these as fixed properties, so people get useful errors when updating + Object.defineProperties(q, { + saturated: { + writable: false, + value: eventMethod('saturated') + }, + unsaturated: { + writable: false, + value: eventMethod('unsaturated') + }, + empty: { + writable: false, + value: eventMethod('empty') + }, + drain: { + writable: false, + value: eventMethod('drain') + }, + error: { + writable: false, + value: eventMethod('error') + }, + }); + return q; +} + +/** + * Creates a `cargo` object with the specified payload. Tasks added to the + * cargo will be processed altogether (up to the `payload` limit). If the + * `worker` is in progress, the task is queued until it becomes available. Once + * the `worker` has completed some tasks, each callback of those tasks is + * called. Check out [these](https://camo.githubusercontent.com/6bbd36f4cf5b35a0f11a96dcd2e97711ffc2fb37/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130382f62626330636662302d356632392d313165322d393734662d3333393763363464633835382e676966) [animations](https://camo.githubusercontent.com/f4810e00e1c5f5f8addbe3e9f49064fd5d102699/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130312f38346339323036362d356632392d313165322d383134662d3964336430323431336266642e676966) + * for how `cargo` and `queue` work. + * + * While [`queue`]{@link module:ControlFlow.queue} passes only one task to one of a group of workers + * at a time, cargo passes an array of tasks to a single worker, repeating + * when the worker is finished. + * + * @name cargo + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.queue]{@link module:ControlFlow.queue} + * @category Control Flow + * @param {AsyncFunction} worker - An asynchronous function for processing an array + * of queued tasks. Invoked with `(tasks, callback)`. + * @param {number} [payload=Infinity] - An optional `integer` for determining + * how many tasks should be processed per round; if omitted, the default is + * unlimited. + * @returns {module:ControlFlow.QueueObject} A cargo object to manage the tasks. Callbacks can + * attached as certain properties to listen for specific events during the + * lifecycle of the cargo and inner queue. + * @example + * + * // create a cargo object with payload 2 + * var cargo = async.cargo(function(tasks, callback) { + * for (var i=0; i { + * console.log(result); + * // 6000 + * // which is the sum of the file sizes of the three files + * }).catch( err => { + * console.log(err); + * }); + * + * // Error Handling + * async.reduce(withMissingFileList, 0, getFileSizeInBytes) + * .then( result => { + * console.log(result); + * }).catch( err => { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.reduce(fileList, 0, getFileSizeInBytes); + * console.log(result); + * // 6000 + * // which is the sum of the file sizes of the three files + * } + * catch (err) { + * console.log(err); + * } + * } + * + * // Error Handling + * async () => { + * try { + * let result = await async.reduce(withMissingFileList, 0, getFileSizeInBytes); + * console.log(result); + * } + * catch (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } + * } + * + */ +function reduce(coll, memo, iteratee, callback) { + callback = once(callback); + var _iteratee = wrapAsync(iteratee); + return eachOfSeries$1(coll, (x, i, iterCb) => { + _iteratee(memo, x, (err, v) => { + memo = v; + iterCb(err); + }); + }, err => callback(err, memo)); +} +var reduce$1 = awaitify(reduce, 4); + +/** + * Version of the compose function that is more natural to read. Each function + * consumes the return value of the previous function. It is the equivalent of + * [compose]{@link module:ControlFlow.compose} with the arguments reversed. + * + * Each function is executed with the `this` binding of the composed function. + * + * @name seq + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.compose]{@link module:ControlFlow.compose} + * @category Control Flow + * @param {...AsyncFunction} functions - the asynchronous functions to compose + * @returns {Function} a function that composes the `functions` in order + * @example + * + * // Requires lodash (or underscore), express3 and dresende's orm2. + * // Part of an app, that fetches cats of the logged user. + * // This example uses `seq` function to avoid overnesting and error + * // handling clutter. + * app.get('/cats', function(request, response) { + * var User = request.models.User; + * async.seq( + * User.get.bind(User), // 'User.get' has signature (id, callback(err, data)) + * function(user, fn) { + * user.getCats(fn); // 'getCats' has signature (callback(err, data)) + * } + * )(req.session.user_id, function (err, cats) { + * if (err) { + * console.error(err); + * response.json({ status: 'error', message: err.message }); + * } else { + * response.json({ status: 'ok', message: 'Cats found', data: cats }); + * } + * }); + * }); + */ +function seq(...functions) { + var _functions = functions.map(wrapAsync); + return function (...args) { + var that = this; + + var cb = args[args.length - 1]; + if (typeof cb == 'function') { + args.pop(); + } else { + cb = promiseCallback(); + } + + reduce$1(_functions, args, (newargs, fn, iterCb) => { + fn.apply(that, newargs.concat((err, ...nextargs) => { + iterCb(err, nextargs); + })); + }, + (err, results) => cb(err, ...results)); + + return cb[PROMISE_SYMBOL] + }; +} + +/** + * Creates a function which is a composition of the passed asynchronous + * functions. Each function consumes the return value of the function that + * follows. Composing functions `f()`, `g()`, and `h()` would produce the result + * of `f(g(h()))`, only this version uses callbacks to obtain the return values. + * + * If the last argument to the composed function is not a function, a promise + * is returned when you call it. + * + * Each function is executed with the `this` binding of the composed function. + * + * @name compose + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {...AsyncFunction} functions - the asynchronous functions to compose + * @returns {Function} an asynchronous function that is the composed + * asynchronous `functions` + * @example + * + * function add1(n, callback) { + * setTimeout(function () { + * callback(null, n + 1); + * }, 10); + * } + * + * function mul3(n, callback) { + * setTimeout(function () { + * callback(null, n * 3); + * }, 10); + * } + * + * var add1mul3 = async.compose(mul3, add1); + * add1mul3(4, function (err, result) { + * // result now equals 15 + * }); + */ +function compose(...args) { + return seq(...args.reverse()); +} + +/** + * The same as [`map`]{@link module:Collections.map} but runs a maximum of `limit` async operations at a time. + * + * @name mapLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.map]{@link module:Collections.map} + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The iteratee should complete with the transformed item. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. Results is an array of the + * transformed items from the `coll`. Invoked with (err, results). + * @returns {Promise} a promise, if no callback is passed + */ +function mapLimit (coll, limit, iteratee, callback) { + return _asyncMap(eachOfLimit$2(limit), coll, iteratee, callback) +} +var mapLimit$1 = awaitify(mapLimit, 4); + +/** + * The same as [`concat`]{@link module:Collections.concat} but runs a maximum of `limit` async operations at a time. + * + * @name concatLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.concat]{@link module:Collections.concat} + * @category Collection + * @alias flatMapLimit + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - A function to apply to each item in `coll`, + * which should use an array as its result. Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished, or an error occurs. Results is an array + * containing the concatenated results of the `iteratee` function. Invoked with + * (err, results). + * @returns A Promise, if no callback is passed + */ +function concatLimit(coll, limit, iteratee, callback) { + var _iteratee = wrapAsync(iteratee); + return mapLimit$1(coll, limit, (val, iterCb) => { + _iteratee(val, (err, ...args) => { + if (err) return iterCb(err); + return iterCb(err, args); + }); + }, (err, mapResults) => { + var result = []; + for (var i = 0; i < mapResults.length; i++) { + if (mapResults[i]) { + result = result.concat(...mapResults[i]); + } + } + + return callback(err, result); + }); +} +var concatLimit$1 = awaitify(concatLimit, 4); + +/** + * Applies `iteratee` to each item in `coll`, concatenating the results. Returns + * the concatenated list. The `iteratee`s are called in parallel, and the + * results are concatenated as they return. The results array will be returned in + * the original order of `coll` passed to the `iteratee` function. + * + * @name concat + * @static + * @memberOf module:Collections + * @method + * @category Collection + * @alias flatMap + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - A function to apply to each item in `coll`, + * which should use an array as its result. Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished, or an error occurs. Results is an array + * containing the concatenated results of the `iteratee` function. Invoked with + * (err, results). + * @returns A Promise, if no callback is passed + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * // dir4 does not exist + * + * let directoryList = ['dir1','dir2','dir3']; + * let withMissingDirectoryList = ['dir1','dir2','dir3', 'dir4']; + * + * // Using callbacks + * async.concat(directoryList, fs.readdir, function(err, results) { + * if (err) { + * console.log(err); + * } else { + * console.log(results); + * // [ 'file1.txt', 'file2.txt', 'file3.txt', 'file4.txt', file5.txt ] + * } + * }); + * + * // Error Handling + * async.concat(withMissingDirectoryList, fs.readdir, function(err, results) { + * if (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * // since dir4 does not exist + * } else { + * console.log(results); + * } + * }); + * + * // Using Promises + * async.concat(directoryList, fs.readdir) + * .then(results => { + * console.log(results); + * // [ 'file1.txt', 'file2.txt', 'file3.txt', 'file4.txt', file5.txt ] + * }).catch(err => { + * console.log(err); + * }); + * + * // Error Handling + * async.concat(withMissingDirectoryList, fs.readdir) + * .then(results => { + * console.log(results); + * }).catch(err => { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * // since dir4 does not exist + * }); + * + * // Using async/await + * async () => { + * try { + * let results = await async.concat(directoryList, fs.readdir); + * console.log(results); + * // [ 'file1.txt', 'file2.txt', 'file3.txt', 'file4.txt', file5.txt ] + * } catch (err) { + * console.log(err); + * } + * } + * + * // Error Handling + * async () => { + * try { + * let results = await async.concat(withMissingDirectoryList, fs.readdir); + * console.log(results); + * } catch (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * // since dir4 does not exist + * } + * } + * + */ +function concat(coll, iteratee, callback) { + return concatLimit$1(coll, Infinity, iteratee, callback) +} +var concat$1 = awaitify(concat, 3); + +/** + * The same as [`concat`]{@link module:Collections.concat} but runs only a single async operation at a time. + * + * @name concatSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.concat]{@link module:Collections.concat} + * @category Collection + * @alias flatMapSeries + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - A function to apply to each item in `coll`. + * The iteratee should complete with an array an array of results. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished, or an error occurs. Results is an array + * containing the concatenated results of the `iteratee` function. Invoked with + * (err, results). + * @returns A Promise, if no callback is passed + */ +function concatSeries(coll, iteratee, callback) { + return concatLimit$1(coll, 1, iteratee, callback) +} +var concatSeries$1 = awaitify(concatSeries, 3); + +/** + * Returns a function that when called, calls-back with the values provided. + * Useful as the first function in a [`waterfall`]{@link module:ControlFlow.waterfall}, or for plugging values in to + * [`auto`]{@link module:ControlFlow.auto}. + * + * @name constant + * @static + * @memberOf module:Utils + * @method + * @category Util + * @param {...*} arguments... - Any number of arguments to automatically invoke + * callback with. + * @returns {AsyncFunction} Returns a function that when invoked, automatically + * invokes the callback with the previous given arguments. + * @example + * + * async.waterfall([ + * async.constant(42), + * function (value, next) { + * // value === 42 + * }, + * //... + * ], callback); + * + * async.waterfall([ + * async.constant(filename, "utf8"), + * fs.readFile, + * function (fileData, next) { + * //... + * } + * //... + * ], callback); + * + * async.auto({ + * hostname: async.constant("https://server.net/"), + * port: findFreePort, + * launchServer: ["hostname", "port", function (options, cb) { + * startServer(options, cb); + * }], + * //... + * }, callback); + */ +function constant$1(...args) { + return function (...ignoredArgs/*, callback*/) { + var callback = ignoredArgs.pop(); + return callback(null, ...args); + }; +} + +function _createTester(check, getResult) { + return (eachfn, arr, _iteratee, cb) => { + var testPassed = false; + var testResult; + const iteratee = wrapAsync(_iteratee); + eachfn(arr, (value, _, callback) => { + iteratee(value, (err, result) => { + if (err || err === false) return callback(err); + + if (check(result) && !testResult) { + testPassed = true; + testResult = getResult(true, value); + return callback(null, breakLoop$1); + } + callback(); + }); + }, err => { + if (err) return cb(err); + cb(null, testPassed ? testResult : getResult(false)); + }); + }; +} + +/** + * Returns the first value in `coll` that passes an async truth test. The + * `iteratee` is applied in parallel, meaning the first iteratee to return + * `true` will fire the detect `callback` with that result. That means the + * result might not be the first item in the original `coll` (in terms of order) + * that passes the test. + + * If order within the original `coll` is important, then look at + * [`detectSeries`]{@link module:Collections.detectSeries}. + * + * @name detect + * @static + * @memberOf module:Collections + * @method + * @alias find + * @category Collections + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`. + * The iteratee must complete with a boolean value as its result. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called as soon as any + * iteratee returns `true`, or after all the `iteratee` functions have finished. + * Result will be the first item in the array that passes the truth test + * (iteratee) or the value `undefined` if none passed. Invoked with + * (err, result). + * @returns {Promise} a promise, if a callback is omitted + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * + * // asynchronous function that checks if a file exists + * function fileExists(file, callback) { + * fs.access(file, fs.constants.F_OK, (err) => { + * callback(null, !err); + * }); + * } + * + * async.detect(['file3.txt','file2.txt','dir1/file1.txt'], fileExists, + * function(err, result) { + * console.log(result); + * // dir1/file1.txt + * // result now equals the first file in the list that exists + * } + *); + * + * // Using Promises + * async.detect(['file3.txt','file2.txt','dir1/file1.txt'], fileExists) + * .then(result => { + * console.log(result); + * // dir1/file1.txt + * // result now equals the first file in the list that exists + * }).catch(err => { + * console.log(err); + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.detect(['file3.txt','file2.txt','dir1/file1.txt'], fileExists); + * console.log(result); + * // dir1/file1.txt + * // result now equals the file in the list that exists + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ +function detect(coll, iteratee, callback) { + return _createTester(bool => bool, (res, item) => item)(eachOf$1, coll, iteratee, callback) +} +var detect$1 = awaitify(detect, 3); + +/** + * The same as [`detect`]{@link module:Collections.detect} but runs a maximum of `limit` async operations at a + * time. + * + * @name detectLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.detect]{@link module:Collections.detect} + * @alias findLimit + * @category Collections + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`. + * The iteratee must complete with a boolean value as its result. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called as soon as any + * iteratee returns `true`, or after all the `iteratee` functions have finished. + * Result will be the first item in the array that passes the truth test + * (iteratee) or the value `undefined` if none passed. Invoked with + * (err, result). + * @returns {Promise} a promise, if a callback is omitted + */ +function detectLimit(coll, limit, iteratee, callback) { + return _createTester(bool => bool, (res, item) => item)(eachOfLimit$2(limit), coll, iteratee, callback) +} +var detectLimit$1 = awaitify(detectLimit, 4); + +/** + * The same as [`detect`]{@link module:Collections.detect} but runs only a single async operation at a time. + * + * @name detectSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.detect]{@link module:Collections.detect} + * @alias findSeries + * @category Collections + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`. + * The iteratee must complete with a boolean value as its result. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called as soon as any + * iteratee returns `true`, or after all the `iteratee` functions have finished. + * Result will be the first item in the array that passes the truth test + * (iteratee) or the value `undefined` if none passed. Invoked with + * (err, result). + * @returns {Promise} a promise, if a callback is omitted + */ +function detectSeries(coll, iteratee, callback) { + return _createTester(bool => bool, (res, item) => item)(eachOfLimit$2(1), coll, iteratee, callback) +} + +var detectSeries$1 = awaitify(detectSeries, 3); + +function consoleFunc(name) { + return (fn, ...args) => wrapAsync(fn)(...args, (err, ...resultArgs) => { + /* istanbul ignore else */ + if (typeof console === 'object') { + /* istanbul ignore else */ + if (err) { + /* istanbul ignore else */ + if (console.error) { + console.error(err); + } + } else if (console[name]) { /* istanbul ignore else */ + resultArgs.forEach(x => console[name](x)); + } + } + }) +} + +/** + * Logs the result of an [`async` function]{@link AsyncFunction} to the + * `console` using `console.dir` to display the properties of the resulting object. + * Only works in Node.js or in browsers that support `console.dir` and + * `console.error` (such as FF and Chrome). + * If multiple arguments are returned from the async function, + * `console.dir` is called on each argument in order. + * + * @name dir + * @static + * @memberOf module:Utils + * @method + * @category Util + * @param {AsyncFunction} function - The function you want to eventually apply + * all arguments to. + * @param {...*} arguments... - Any number of arguments to apply to the function. + * @example + * + * // in a module + * var hello = function(name, callback) { + * setTimeout(function() { + * callback(null, {hello: name}); + * }, 1000); + * }; + * + * // in the node repl + * node> async.dir(hello, 'world'); + * {hello: 'world'} + */ +var dir = consoleFunc('dir'); + +/** + * The post-check version of [`whilst`]{@link module:ControlFlow.whilst}. To reflect the difference in + * the order of operations, the arguments `test` and `iteratee` are switched. + * + * `doWhilst` is to `whilst` as `do while` is to `while` in plain JavaScript. + * + * @name doWhilst + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.whilst]{@link module:ControlFlow.whilst} + * @category Control Flow + * @param {AsyncFunction} iteratee - A function which is called each time `test` + * passes. Invoked with (callback). + * @param {AsyncFunction} test - asynchronous truth test to perform after each + * execution of `iteratee`. Invoked with (...args, callback), where `...args` are the + * non-error args from the previous callback of `iteratee`. + * @param {Function} [callback] - A callback which is called after the test + * function has failed and repeated execution of `iteratee` has stopped. + * `callback` will be passed an error and any arguments passed to the final + * `iteratee`'s callback. Invoked with (err, [results]); + * @returns {Promise} a promise, if no callback is passed + */ +function doWhilst(iteratee, test, callback) { + callback = onlyOnce(callback); + var _fn = wrapAsync(iteratee); + var _test = wrapAsync(test); + var results; + + function next(err, ...args) { + if (err) return callback(err); + if (err === false) return; + results = args; + _test(...args, check); + } + + function check(err, truth) { + if (err) return callback(err); + if (err === false) return; + if (!truth) return callback(null, ...results); + _fn(next); + } + + return check(null, true); +} + +var doWhilst$1 = awaitify(doWhilst, 3); + +/** + * Like ['doWhilst']{@link module:ControlFlow.doWhilst}, except the `test` is inverted. Note the + * argument ordering differs from `until`. + * + * @name doUntil + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.doWhilst]{@link module:ControlFlow.doWhilst} + * @category Control Flow + * @param {AsyncFunction} iteratee - An async function which is called each time + * `test` fails. Invoked with (callback). + * @param {AsyncFunction} test - asynchronous truth test to perform after each + * execution of `iteratee`. Invoked with (...args, callback), where `...args` are the + * non-error args from the previous callback of `iteratee` + * @param {Function} [callback] - A callback which is called after the test + * function has passed and repeated execution of `iteratee` has stopped. `callback` + * will be passed an error and any arguments passed to the final `iteratee`'s + * callback. Invoked with (err, [results]); + * @returns {Promise} a promise, if no callback is passed + */ +function doUntil(iteratee, test, callback) { + const _test = wrapAsync(test); + return doWhilst$1(iteratee, (...args) => { + const cb = args.pop(); + _test(...args, (err, truth) => cb (err, !truth)); + }, callback); +} + +function _withoutIndex(iteratee) { + return (value, index, callback) => iteratee(value, callback); +} + +/** + * Applies the function `iteratee` to each item in `coll`, in parallel. + * The `iteratee` is called with an item from the list, and a callback for when + * it has finished. If the `iteratee` passes an error to its `callback`, the + * main `callback` (for the `each` function) is immediately called with the + * error. + * + * Note, that since this function applies `iteratee` to each item in parallel, + * there is no guarantee that the iteratee functions will complete in order. + * + * @name each + * @static + * @memberOf module:Collections + * @method + * @alias forEach + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to + * each item in `coll`. Invoked with (item, callback). + * The array index is not passed to the iteratee. + * If you need the index, use `eachOf`. + * @param {Function} [callback] - A callback which is called when all + * `iteratee` functions have finished, or an error occurs. Invoked with (err). + * @returns {Promise} a promise, if a callback is omitted + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * // dir4 does not exist + * + * const fileList = [ 'dir1/file2.txt', 'dir2/file3.txt', 'dir/file5.txt']; + * const withMissingFileList = ['dir1/file1.txt', 'dir4/file2.txt']; + * + * // asynchronous function that deletes a file + * const deleteFile = function(file, callback) { + * fs.unlink(file, callback); + * }; + * + * // Using callbacks + * async.each(fileList, deleteFile, function(err) { + * if( err ) { + * console.log(err); + * } else { + * console.log('All files have been deleted successfully'); + * } + * }); + * + * // Error Handling + * async.each(withMissingFileList, deleteFile, function(err){ + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * // since dir4/file2.txt does not exist + * // dir1/file1.txt could have been deleted + * }); + * + * // Using Promises + * async.each(fileList, deleteFile) + * .then( () => { + * console.log('All files have been deleted successfully'); + * }).catch( err => { + * console.log(err); + * }); + * + * // Error Handling + * async.each(fileList, deleteFile) + * .then( () => { + * console.log('All files have been deleted successfully'); + * }).catch( err => { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * // since dir4/file2.txt does not exist + * // dir1/file1.txt could have been deleted + * }); + * + * // Using async/await + * async () => { + * try { + * await async.each(files, deleteFile); + * } + * catch (err) { + * console.log(err); + * } + * } + * + * // Error Handling + * async () => { + * try { + * await async.each(withMissingFileList, deleteFile); + * } + * catch (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * // since dir4/file2.txt does not exist + * // dir1/file1.txt could have been deleted + * } + * } + * + */ +function eachLimit$2(coll, iteratee, callback) { + return eachOf$1(coll, _withoutIndex(wrapAsync(iteratee)), callback); +} + +var each = awaitify(eachLimit$2, 3); + +/** + * The same as [`each`]{@link module:Collections.each} but runs a maximum of `limit` async operations at a time. + * + * @name eachLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.each]{@link module:Collections.each} + * @alias forEachLimit + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The array index is not passed to the iteratee. + * If you need the index, use `eachOfLimit`. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called when all + * `iteratee` functions have finished, or an error occurs. Invoked with (err). + * @returns {Promise} a promise, if a callback is omitted + */ +function eachLimit(coll, limit, iteratee, callback) { + return eachOfLimit$2(limit)(coll, _withoutIndex(wrapAsync(iteratee)), callback); +} +var eachLimit$1 = awaitify(eachLimit, 4); + +/** + * The same as [`each`]{@link module:Collections.each} but runs only a single async operation at a time. + * + * Note, that unlike [`each`]{@link module:Collections.each}, this function applies iteratee to each item + * in series and therefore the iteratee functions will complete in order. + + * @name eachSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.each]{@link module:Collections.each} + * @alias forEachSeries + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to each + * item in `coll`. + * The array index is not passed to the iteratee. + * If you need the index, use `eachOfSeries`. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called when all + * `iteratee` functions have finished, or an error occurs. Invoked with (err). + * @returns {Promise} a promise, if a callback is omitted + */ +function eachSeries(coll, iteratee, callback) { + return eachLimit$1(coll, 1, iteratee, callback) +} +var eachSeries$1 = awaitify(eachSeries, 3); + +/** + * Wrap an async function and ensure it calls its callback on a later tick of + * the event loop. If the function already calls its callback on a next tick, + * no extra deferral is added. This is useful for preventing stack overflows + * (`RangeError: Maximum call stack size exceeded`) and generally keeping + * [Zalgo](http://blog.izs.me/post/59142742143/designing-apis-for-asynchrony) + * contained. ES2017 `async` functions are returned as-is -- they are immune + * to Zalgo's corrupting influences, as they always resolve on a later tick. + * + * @name ensureAsync + * @static + * @memberOf module:Utils + * @method + * @category Util + * @param {AsyncFunction} fn - an async function, one that expects a node-style + * callback as its last argument. + * @returns {AsyncFunction} Returns a wrapped function with the exact same call + * signature as the function passed in. + * @example + * + * function sometimesAsync(arg, callback) { + * if (cache[arg]) { + * return callback(null, cache[arg]); // this would be synchronous!! + * } else { + * doSomeIO(arg, callback); // this IO would be asynchronous + * } + * } + * + * // this has a risk of stack overflows if many results are cached in a row + * async.mapSeries(args, sometimesAsync, done); + * + * // this will defer sometimesAsync's callback if necessary, + * // preventing stack overflows + * async.mapSeries(args, async.ensureAsync(sometimesAsync), done); + */ +function ensureAsync(fn) { + if (isAsync(fn)) return fn; + return function (...args/*, callback*/) { + var callback = args.pop(); + var sync = true; + args.push((...innerArgs) => { + if (sync) { + setImmediate$1(() => callback(...innerArgs)); + } else { + callback(...innerArgs); + } + }); + fn.apply(this, args); + sync = false; + }; +} + +/** + * Returns `true` if every element in `coll` satisfies an async test. If any + * iteratee call returns `false`, the main `callback` is immediately called. + * + * @name every + * @static + * @memberOf module:Collections + * @method + * @alias all + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collection in parallel. + * The iteratee must complete with a boolean result value. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Result will be either `true` or `false` + * depending on the values of the async tests. Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * // dir4 does not exist + * + * const fileList = ['dir1/file1.txt','dir2/file3.txt','dir3/file5.txt']; + * const withMissingFileList = ['file1.txt','file2.txt','file4.txt']; + * + * // asynchronous function that checks if a file exists + * function fileExists(file, callback) { + * fs.access(file, fs.constants.F_OK, (err) => { + * callback(null, !err); + * }); + * } + * + * // Using callbacks + * async.every(fileList, fileExists, function(err, result) { + * console.log(result); + * // true + * // result is true since every file exists + * }); + * + * async.every(withMissingFileList, fileExists, function(err, result) { + * console.log(result); + * // false + * // result is false since NOT every file exists + * }); + * + * // Using Promises + * async.every(fileList, fileExists) + * .then( result => { + * console.log(result); + * // true + * // result is true since every file exists + * }).catch( err => { + * console.log(err); + * }); + * + * async.every(withMissingFileList, fileExists) + * .then( result => { + * console.log(result); + * // false + * // result is false since NOT every file exists + * }).catch( err => { + * console.log(err); + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.every(fileList, fileExists); + * console.log(result); + * // true + * // result is true since every file exists + * } + * catch (err) { + * console.log(err); + * } + * } + * + * async () => { + * try { + * let result = await async.every(withMissingFileList, fileExists); + * console.log(result); + * // false + * // result is false since NOT every file exists + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ +function every(coll, iteratee, callback) { + return _createTester(bool => !bool, res => !res)(eachOf$1, coll, iteratee, callback) +} +var every$1 = awaitify(every, 3); + +/** + * The same as [`every`]{@link module:Collections.every} but runs a maximum of `limit` async operations at a time. + * + * @name everyLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.every]{@link module:Collections.every} + * @alias allLimit + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collection in parallel. + * The iteratee must complete with a boolean result value. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Result will be either `true` or `false` + * depending on the values of the async tests. Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + */ +function everyLimit(coll, limit, iteratee, callback) { + return _createTester(bool => !bool, res => !res)(eachOfLimit$2(limit), coll, iteratee, callback) +} +var everyLimit$1 = awaitify(everyLimit, 4); + +/** + * The same as [`every`]{@link module:Collections.every} but runs only a single async operation at a time. + * + * @name everySeries + * @static + * @memberOf module:Collections + * @method + * @see [async.every]{@link module:Collections.every} + * @alias allSeries + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collection in series. + * The iteratee must complete with a boolean result value. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Result will be either `true` or `false` + * depending on the values of the async tests. Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + */ +function everySeries(coll, iteratee, callback) { + return _createTester(bool => !bool, res => !res)(eachOfSeries$1, coll, iteratee, callback) +} +var everySeries$1 = awaitify(everySeries, 3); + +function filterArray(eachfn, arr, iteratee, callback) { + var truthValues = new Array(arr.length); + eachfn(arr, (x, index, iterCb) => { + iteratee(x, (err, v) => { + truthValues[index] = !!v; + iterCb(err); + }); + }, err => { + if (err) return callback(err); + var results = []; + for (var i = 0; i < arr.length; i++) { + if (truthValues[i]) results.push(arr[i]); + } + callback(null, results); + }); +} + +function filterGeneric(eachfn, coll, iteratee, callback) { + var results = []; + eachfn(coll, (x, index, iterCb) => { + iteratee(x, (err, v) => { + if (err) return iterCb(err); + if (v) { + results.push({index, value: x}); + } + iterCb(err); + }); + }, err => { + if (err) return callback(err); + callback(null, results + .sort((a, b) => a.index - b.index) + .map(v => v.value)); + }); +} + +function _filter(eachfn, coll, iteratee, callback) { + var filter = isArrayLike(coll) ? filterArray : filterGeneric; + return filter(eachfn, coll, wrapAsync(iteratee), callback); +} + +/** + * Returns a new array of all the values in `coll` which pass an async truth + * test. This operation is performed in parallel, but the results array will be + * in the same order as the original. + * + * @name filter + * @static + * @memberOf module:Collections + * @method + * @alias select + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {Function} iteratee - A truth test to apply to each item in `coll`. + * The `iteratee` is passed a `callback(err, truthValue)`, which must be called + * with a boolean argument once it has completed. Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Invoked with (err, results). + * @returns {Promise} a promise, if no callback provided + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * + * const files = ['dir1/file1.txt','dir2/file3.txt','dir3/file6.txt']; + * + * // asynchronous function that checks if a file exists + * function fileExists(file, callback) { + * fs.access(file, fs.constants.F_OK, (err) => { + * callback(null, !err); + * }); + * } + * + * // Using callbacks + * async.filter(files, fileExists, function(err, results) { + * if(err) { + * console.log(err); + * } else { + * console.log(results); + * // [ 'dir1/file1.txt', 'dir2/file3.txt' ] + * // results is now an array of the existing files + * } + * }); + * + * // Using Promises + * async.filter(files, fileExists) + * .then(results => { + * console.log(results); + * // [ 'dir1/file1.txt', 'dir2/file3.txt' ] + * // results is now an array of the existing files + * }).catch(err => { + * console.log(err); + * }); + * + * // Using async/await + * async () => { + * try { + * let results = await async.filter(files, fileExists); + * console.log(results); + * // [ 'dir1/file1.txt', 'dir2/file3.txt' ] + * // results is now an array of the existing files + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ +function filter (coll, iteratee, callback) { + return _filter(eachOf$1, coll, iteratee, callback) +} +var filter$1 = awaitify(filter, 3); + +/** + * The same as [`filter`]{@link module:Collections.filter} but runs a maximum of `limit` async operations at a + * time. + * + * @name filterLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.filter]{@link module:Collections.filter} + * @alias selectLimit + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {Function} iteratee - A truth test to apply to each item in `coll`. + * The `iteratee` is passed a `callback(err, truthValue)`, which must be called + * with a boolean argument once it has completed. Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Invoked with (err, results). + * @returns {Promise} a promise, if no callback provided + */ +function filterLimit (coll, limit, iteratee, callback) { + return _filter(eachOfLimit$2(limit), coll, iteratee, callback) +} +var filterLimit$1 = awaitify(filterLimit, 4); + +/** + * The same as [`filter`]{@link module:Collections.filter} but runs only a single async operation at a time. + * + * @name filterSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.filter]{@link module:Collections.filter} + * @alias selectSeries + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {Function} iteratee - A truth test to apply to each item in `coll`. + * The `iteratee` is passed a `callback(err, truthValue)`, which must be called + * with a boolean argument once it has completed. Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Invoked with (err, results) + * @returns {Promise} a promise, if no callback provided + */ +function filterSeries (coll, iteratee, callback) { + return _filter(eachOfSeries$1, coll, iteratee, callback) +} +var filterSeries$1 = awaitify(filterSeries, 3); + +/** + * Calls the asynchronous function `fn` with a callback parameter that allows it + * to call itself again, in series, indefinitely. + + * If an error is passed to the callback then `errback` is called with the + * error, and execution stops, otherwise it will never be called. + * + * @name forever + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {AsyncFunction} fn - an async function to call repeatedly. + * Invoked with (next). + * @param {Function} [errback] - when `fn` passes an error to it's callback, + * this function will be called, and execution stops. Invoked with (err). + * @returns {Promise} a promise that rejects if an error occurs and an errback + * is not passed + * @example + * + * async.forever( + * function(next) { + * // next is suitable for passing to things that need a callback(err [, whatever]); + * // it will result in this function being called again. + * }, + * function(err) { + * // if next is called with a value in its first parameter, it will appear + * // in here as 'err', and execution will stop. + * } + * ); + */ +function forever(fn, errback) { + var done = onlyOnce(errback); + var task = wrapAsync(ensureAsync(fn)); + + function next(err) { + if (err) return done(err); + if (err === false) return; + task(next); + } + return next(); +} +var forever$1 = awaitify(forever, 2); + +/** + * The same as [`groupBy`]{@link module:Collections.groupBy} but runs a maximum of `limit` async operations at a time. + * + * @name groupByLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.groupBy]{@link module:Collections.groupBy} + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The iteratee should complete with a `key` to group the value under. + * Invoked with (value, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. Result is an `Object` whoses + * properties are arrays of values which returned the corresponding key. + * @returns {Promise} a promise, if no callback is passed + */ +function groupByLimit(coll, limit, iteratee, callback) { + var _iteratee = wrapAsync(iteratee); + return mapLimit$1(coll, limit, (val, iterCb) => { + _iteratee(val, (err, key) => { + if (err) return iterCb(err); + return iterCb(err, {key, val}); + }); + }, (err, mapResults) => { + var result = {}; + // from MDN, handle object having an `hasOwnProperty` prop + var {hasOwnProperty} = Object.prototype; + + for (var i = 0; i < mapResults.length; i++) { + if (mapResults[i]) { + var {key} = mapResults[i]; + var {val} = mapResults[i]; + + if (hasOwnProperty.call(result, key)) { + result[key].push(val); + } else { + result[key] = [val]; + } + } + } + + return callback(err, result); + }); +} + +var groupByLimit$1 = awaitify(groupByLimit, 4); + +/** + * Returns a new object, where each value corresponds to an array of items, from + * `coll`, that returned the corresponding key. That is, the keys of the object + * correspond to the values passed to the `iteratee` callback. + * + * Note: Since this function applies the `iteratee` to each item in parallel, + * there is no guarantee that the `iteratee` functions will complete in order. + * However, the values for each key in the `result` will be in the same order as + * the original `coll`. For Objects, the values will roughly be in the order of + * the original Objects' keys (but this can vary across JavaScript engines). + * + * @name groupBy + * @static + * @memberOf module:Collections + * @method + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The iteratee should complete with a `key` to group the value under. + * Invoked with (value, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. Result is an `Object` whoses + * properties are arrays of values which returned the corresponding key. + * @returns {Promise} a promise, if no callback is passed + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * // dir4 does not exist + * + * const files = ['dir1/file1.txt','dir2','dir4'] + * + * // asynchronous function that detects file type as none, file, or directory + * function detectFile(file, callback) { + * fs.stat(file, function(err, stat) { + * if (err) { + * return callback(null, 'none'); + * } + * callback(null, stat.isDirectory() ? 'directory' : 'file'); + * }); + * } + * + * //Using callbacks + * async.groupBy(files, detectFile, function(err, result) { + * if(err) { + * console.log(err); + * } else { + * console.log(result); + * // { + * // file: [ 'dir1/file1.txt' ], + * // none: [ 'dir4' ], + * // directory: [ 'dir2'] + * // } + * // result is object containing the files grouped by type + * } + * }); + * + * // Using Promises + * async.groupBy(files, detectFile) + * .then( result => { + * console.log(result); + * // { + * // file: [ 'dir1/file1.txt' ], + * // none: [ 'dir4' ], + * // directory: [ 'dir2'] + * // } + * // result is object containing the files grouped by type + * }).catch( err => { + * console.log(err); + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.groupBy(files, detectFile); + * console.log(result); + * // { + * // file: [ 'dir1/file1.txt' ], + * // none: [ 'dir4' ], + * // directory: [ 'dir2'] + * // } + * // result is object containing the files grouped by type + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ +function groupBy (coll, iteratee, callback) { + return groupByLimit$1(coll, Infinity, iteratee, callback) +} + +/** + * The same as [`groupBy`]{@link module:Collections.groupBy} but runs only a single async operation at a time. + * + * @name groupBySeries + * @static + * @memberOf module:Collections + * @method + * @see [async.groupBy]{@link module:Collections.groupBy} + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The iteratee should complete with a `key` to group the value under. + * Invoked with (value, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. Result is an `Object` whose + * properties are arrays of values which returned the corresponding key. + * @returns {Promise} a promise, if no callback is passed + */ +function groupBySeries (coll, iteratee, callback) { + return groupByLimit$1(coll, 1, iteratee, callback) +} + +/** + * Logs the result of an `async` function to the `console`. Only works in + * Node.js or in browsers that support `console.log` and `console.error` (such + * as FF and Chrome). If multiple arguments are returned from the async + * function, `console.log` is called on each argument in order. + * + * @name log + * @static + * @memberOf module:Utils + * @method + * @category Util + * @param {AsyncFunction} function - The function you want to eventually apply + * all arguments to. + * @param {...*} arguments... - Any number of arguments to apply to the function. + * @example + * + * // in a module + * var hello = function(name, callback) { + * setTimeout(function() { + * callback(null, 'hello ' + name); + * }, 1000); + * }; + * + * // in the node repl + * node> async.log(hello, 'world'); + * 'hello world' + */ +var log = consoleFunc('log'); + +/** + * The same as [`mapValues`]{@link module:Collections.mapValues} but runs a maximum of `limit` async operations at a + * time. + * + * @name mapValuesLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.mapValues]{@link module:Collections.mapValues} + * @category Collection + * @param {Object} obj - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - A function to apply to each value and key + * in `coll`. + * The iteratee should complete with the transformed value as its result. + * Invoked with (value, key, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. `result` is a new object consisting + * of each key from `obj`, with each transformed value on the right-hand side. + * Invoked with (err, result). + * @returns {Promise} a promise, if no callback is passed + */ +function mapValuesLimit(obj, limit, iteratee, callback) { + callback = once(callback); + var newObj = {}; + var _iteratee = wrapAsync(iteratee); + return eachOfLimit$2(limit)(obj, (val, key, next) => { + _iteratee(val, key, (err, result) => { + if (err) return next(err); + newObj[key] = result; + next(err); + }); + }, err => callback(err, newObj)); +} + +var mapValuesLimit$1 = awaitify(mapValuesLimit, 4); + +/** + * A relative of [`map`]{@link module:Collections.map}, designed for use with objects. + * + * Produces a new Object by mapping each value of `obj` through the `iteratee` + * function. The `iteratee` is called each `value` and `key` from `obj` and a + * callback for when it has finished processing. Each of these callbacks takes + * two arguments: an `error`, and the transformed item from `obj`. If `iteratee` + * passes an error to its callback, the main `callback` (for the `mapValues` + * function) is immediately called with the error. + * + * Note, the order of the keys in the result is not guaranteed. The keys will + * be roughly in the order they complete, (but this is very engine-specific) + * + * @name mapValues + * @static + * @memberOf module:Collections + * @method + * @category Collection + * @param {Object} obj - A collection to iterate over. + * @param {AsyncFunction} iteratee - A function to apply to each value and key + * in `coll`. + * The iteratee should complete with the transformed value as its result. + * Invoked with (value, key, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. `result` is a new object consisting + * of each key from `obj`, with each transformed value on the right-hand side. + * Invoked with (err, result). + * @returns {Promise} a promise, if no callback is passed + * @example + * + * // file1.txt is a file that is 1000 bytes in size + * // file2.txt is a file that is 2000 bytes in size + * // file3.txt is a file that is 3000 bytes in size + * // file4.txt does not exist + * + * const fileMap = { + * f1: 'file1.txt', + * f2: 'file2.txt', + * f3: 'file3.txt' + * }; + * + * const withMissingFileMap = { + * f1: 'file1.txt', + * f2: 'file2.txt', + * f3: 'file4.txt' + * }; + * + * // asynchronous function that returns the file size in bytes + * function getFileSizeInBytes(file, key, callback) { + * fs.stat(file, function(err, stat) { + * if (err) { + * return callback(err); + * } + * callback(null, stat.size); + * }); + * } + * + * // Using callbacks + * async.mapValues(fileMap, getFileSizeInBytes, function(err, result) { + * if (err) { + * console.log(err); + * } else { + * console.log(result); + * // result is now a map of file size in bytes for each file, e.g. + * // { + * // f1: 1000, + * // f2: 2000, + * // f3: 3000 + * // } + * } + * }); + * + * // Error handling + * async.mapValues(withMissingFileMap, getFileSizeInBytes, function(err, result) { + * if (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } else { + * console.log(result); + * } + * }); + * + * // Using Promises + * async.mapValues(fileMap, getFileSizeInBytes) + * .then( result => { + * console.log(result); + * // result is now a map of file size in bytes for each file, e.g. + * // { + * // f1: 1000, + * // f2: 2000, + * // f3: 3000 + * // } + * }).catch (err => { + * console.log(err); + * }); + * + * // Error Handling + * async.mapValues(withMissingFileMap, getFileSizeInBytes) + * .then( result => { + * console.log(result); + * }).catch (err => { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.mapValues(fileMap, getFileSizeInBytes); + * console.log(result); + * // result is now a map of file size in bytes for each file, e.g. + * // { + * // f1: 1000, + * // f2: 2000, + * // f3: 3000 + * // } + * } + * catch (err) { + * console.log(err); + * } + * } + * + * // Error Handling + * async () => { + * try { + * let result = await async.mapValues(withMissingFileMap, getFileSizeInBytes); + * console.log(result); + * } + * catch (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } + * } + * + */ +function mapValues(obj, iteratee, callback) { + return mapValuesLimit$1(obj, Infinity, iteratee, callback) +} + +/** + * The same as [`mapValues`]{@link module:Collections.mapValues} but runs only a single async operation at a time. + * + * @name mapValuesSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.mapValues]{@link module:Collections.mapValues} + * @category Collection + * @param {Object} obj - A collection to iterate over. + * @param {AsyncFunction} iteratee - A function to apply to each value and key + * in `coll`. + * The iteratee should complete with the transformed value as its result. + * Invoked with (value, key, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. `result` is a new object consisting + * of each key from `obj`, with each transformed value on the right-hand side. + * Invoked with (err, result). + * @returns {Promise} a promise, if no callback is passed + */ +function mapValuesSeries(obj, iteratee, callback) { + return mapValuesLimit$1(obj, 1, iteratee, callback) +} + +/** + * Caches the results of an async function. When creating a hash to store + * function results against, the callback is omitted from the hash and an + * optional hash function can be used. + * + * **Note: if the async function errs, the result will not be cached and + * subsequent calls will call the wrapped function.** + * + * If no hash function is specified, the first argument is used as a hash key, + * which may work reasonably if it is a string or a data type that converts to a + * distinct string. Note that objects and arrays will not behave reasonably. + * Neither will cases where the other arguments are significant. In such cases, + * specify your own hash function. + * + * The cache of results is exposed as the `memo` property of the function + * returned by `memoize`. + * + * @name memoize + * @static + * @memberOf module:Utils + * @method + * @category Util + * @param {AsyncFunction} fn - The async function to proxy and cache results from. + * @param {Function} hasher - An optional function for generating a custom hash + * for storing results. It has all the arguments applied to it apart from the + * callback, and must be synchronous. + * @returns {AsyncFunction} a memoized version of `fn` + * @example + * + * var slow_fn = function(name, callback) { + * // do something + * callback(null, result); + * }; + * var fn = async.memoize(slow_fn); + * + * // fn can now be used as if it were slow_fn + * fn('some name', function() { + * // callback + * }); + */ +function memoize(fn, hasher = v => v) { + var memo = Object.create(null); + var queues = Object.create(null); + var _fn = wrapAsync(fn); + var memoized = initialParams((args, callback) => { + var key = hasher(...args); + if (key in memo) { + setImmediate$1(() => callback(null, ...memo[key])); + } else if (key in queues) { + queues[key].push(callback); + } else { + queues[key] = [callback]; + _fn(...args, (err, ...resultArgs) => { + // #1465 don't memoize if an error occurred + if (!err) { + memo[key] = resultArgs; + } + var q = queues[key]; + delete queues[key]; + for (var i = 0, l = q.length; i < l; i++) { + q[i](err, ...resultArgs); + } + }); + } + }); + memoized.memo = memo; + memoized.unmemoized = fn; + return memoized; +} + +/* istanbul ignore file */ + +/** + * Calls `callback` on a later loop around the event loop. In Node.js this just + * calls `process.nextTick`. In the browser it will use `setImmediate` if + * available, otherwise `setTimeout(callback, 0)`, which means other higher + * priority events may precede the execution of `callback`. + * + * This is used internally for browser-compatibility purposes. + * + * @name nextTick + * @static + * @memberOf module:Utils + * @method + * @see [async.setImmediate]{@link module:Utils.setImmediate} + * @category Util + * @param {Function} callback - The function to call on a later loop around + * the event loop. Invoked with (args...). + * @param {...*} args... - any number of additional arguments to pass to the + * callback on the next tick. + * @example + * + * var call_order = []; + * async.nextTick(function() { + * call_order.push('two'); + * // call_order now equals ['one','two'] + * }); + * call_order.push('one'); + * + * async.setImmediate(function (a, b, c) { + * // a, b, and c equal 1, 2, and 3 + * }, 1, 2, 3); + */ +var _defer; + +if (hasNextTick) { + _defer = process.nextTick; +} else if (hasSetImmediate) { + _defer = setImmediate; +} else { + _defer = fallback; +} + +var nextTick = wrap(_defer); + +var _parallel = awaitify((eachfn, tasks, callback) => { + var results = isArrayLike(tasks) ? [] : {}; + + eachfn(tasks, (task, key, taskCb) => { + wrapAsync(task)((err, ...result) => { + if (result.length < 2) { + [result] = result; + } + results[key] = result; + taskCb(err); + }); + }, err => callback(err, results)); +}, 3); + +/** + * Run the `tasks` collection of functions in parallel, without waiting until + * the previous function has completed. If any of the functions pass an error to + * its callback, the main `callback` is immediately called with the value of the + * error. Once the `tasks` have completed, the results are passed to the final + * `callback` as an array. + * + * **Note:** `parallel` is about kicking-off I/O tasks in parallel, not about + * parallel execution of code. If your tasks do not use any timers or perform + * any I/O, they will actually be executed in series. Any synchronous setup + * sections for each task will happen one after the other. JavaScript remains + * single-threaded. + * + * **Hint:** Use [`reflect`]{@link module:Utils.reflect} to continue the + * execution of other tasks when a task fails. + * + * It is also possible to use an object instead of an array. Each property will + * be run as a function and the results will be passed to the final `callback` + * as an object instead of an array. This can be a more readable way of handling + * results from {@link async.parallel}. + * + * @name parallel + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {Array|Iterable|AsyncIterable|Object} tasks - A collection of + * [async functions]{@link AsyncFunction} to run. + * Each async function can complete with any number of optional `result` values. + * @param {Function} [callback] - An optional callback to run once all the + * functions have completed successfully. This function gets a results array + * (or object) containing all the result arguments passed to the task callbacks. + * Invoked with (err, results). + * @returns {Promise} a promise, if a callback is not passed + * + * @example + * + * //Using Callbacks + * async.parallel([ + * function(callback) { + * setTimeout(function() { + * callback(null, 'one'); + * }, 200); + * }, + * function(callback) { + * setTimeout(function() { + * callback(null, 'two'); + * }, 100); + * } + * ], function(err, results) { + * console.log(results); + * // results is equal to ['one','two'] even though + * // the second function had a shorter timeout. + * }); + * + * // an example using an object instead of an array + * async.parallel({ + * one: function(callback) { + * setTimeout(function() { + * callback(null, 1); + * }, 200); + * }, + * two: function(callback) { + * setTimeout(function() { + * callback(null, 2); + * }, 100); + * } + * }, function(err, results) { + * console.log(results); + * // results is equal to: { one: 1, two: 2 } + * }); + * + * //Using Promises + * async.parallel([ + * function(callback) { + * setTimeout(function() { + * callback(null, 'one'); + * }, 200); + * }, + * function(callback) { + * setTimeout(function() { + * callback(null, 'two'); + * }, 100); + * } + * ]).then(results => { + * console.log(results); + * // results is equal to ['one','two'] even though + * // the second function had a shorter timeout. + * }).catch(err => { + * console.log(err); + * }); + * + * // an example using an object instead of an array + * async.parallel({ + * one: function(callback) { + * setTimeout(function() { + * callback(null, 1); + * }, 200); + * }, + * two: function(callback) { + * setTimeout(function() { + * callback(null, 2); + * }, 100); + * } + * }).then(results => { + * console.log(results); + * // results is equal to: { one: 1, two: 2 } + * }).catch(err => { + * console.log(err); + * }); + * + * //Using async/await + * async () => { + * try { + * let results = await async.parallel([ + * function(callback) { + * setTimeout(function() { + * callback(null, 'one'); + * }, 200); + * }, + * function(callback) { + * setTimeout(function() { + * callback(null, 'two'); + * }, 100); + * } + * ]); + * console.log(results); + * // results is equal to ['one','two'] even though + * // the second function had a shorter timeout. + * } + * catch (err) { + * console.log(err); + * } + * } + * + * // an example using an object instead of an array + * async () => { + * try { + * let results = await async.parallel({ + * one: function(callback) { + * setTimeout(function() { + * callback(null, 1); + * }, 200); + * }, + * two: function(callback) { + * setTimeout(function() { + * callback(null, 2); + * }, 100); + * } + * }); + * console.log(results); + * // results is equal to: { one: 1, two: 2 } + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ +function parallel(tasks, callback) { + return _parallel(eachOf$1, tasks, callback); +} + +/** + * The same as [`parallel`]{@link module:ControlFlow.parallel} but runs a maximum of `limit` async operations at a + * time. + * + * @name parallelLimit + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.parallel]{@link module:ControlFlow.parallel} + * @category Control Flow + * @param {Array|Iterable|AsyncIterable|Object} tasks - A collection of + * [async functions]{@link AsyncFunction} to run. + * Each async function can complete with any number of optional `result` values. + * @param {number} limit - The maximum number of async operations at a time. + * @param {Function} [callback] - An optional callback to run once all the + * functions have completed successfully. This function gets a results array + * (or object) containing all the result arguments passed to the task callbacks. + * Invoked with (err, results). + * @returns {Promise} a promise, if a callback is not passed + */ +function parallelLimit(tasks, limit, callback) { + return _parallel(eachOfLimit$2(limit), tasks, callback); +} + +/** + * A queue of tasks for the worker function to complete. + * @typedef {Iterable} QueueObject + * @memberOf module:ControlFlow + * @property {Function} length - a function returning the number of items + * waiting to be processed. Invoke with `queue.length()`. + * @property {boolean} started - a boolean indicating whether or not any + * items have been pushed and processed by the queue. + * @property {Function} running - a function returning the number of items + * currently being processed. Invoke with `queue.running()`. + * @property {Function} workersList - a function returning the array of items + * currently being processed. Invoke with `queue.workersList()`. + * @property {Function} idle - a function returning false if there are items + * waiting or being processed, or true if not. Invoke with `queue.idle()`. + * @property {number} concurrency - an integer for determining how many `worker` + * functions should be run in parallel. This property can be changed after a + * `queue` is created to alter the concurrency on-the-fly. + * @property {number} payload - an integer that specifies how many items are + * passed to the worker function at a time. only applies if this is a + * [cargo]{@link module:ControlFlow.cargo} object + * @property {AsyncFunction} push - add a new task to the `queue`. Calls `callback` + * once the `worker` has finished processing the task. Instead of a single task, + * a `tasks` array can be submitted. The respective callback is used for every + * task in the list. Invoke with `queue.push(task, [callback])`, + * @property {AsyncFunction} unshift - add a new task to the front of the `queue`. + * Invoke with `queue.unshift(task, [callback])`. + * @property {AsyncFunction} pushAsync - the same as `q.push`, except this returns + * a promise that rejects if an error occurs. + * @property {AsyncFunction} unshiftAsync - the same as `q.unshift`, except this returns + * a promise that rejects if an error occurs. + * @property {Function} remove - remove items from the queue that match a test + * function. The test function will be passed an object with a `data` property, + * and a `priority` property, if this is a + * [priorityQueue]{@link module:ControlFlow.priorityQueue} object. + * Invoked with `queue.remove(testFn)`, where `testFn` is of the form + * `function ({data, priority}) {}` and returns a Boolean. + * @property {Function} saturated - a function that sets a callback that is + * called when the number of running workers hits the `concurrency` limit, and + * further tasks will be queued. If the callback is omitted, `q.saturated()` + * returns a promise for the next occurrence. + * @property {Function} unsaturated - a function that sets a callback that is + * called when the number of running workers is less than the `concurrency` & + * `buffer` limits, and further tasks will not be queued. If the callback is + * omitted, `q.unsaturated()` returns a promise for the next occurrence. + * @property {number} buffer - A minimum threshold buffer in order to say that + * the `queue` is `unsaturated`. + * @property {Function} empty - a function that sets a callback that is called + * when the last item from the `queue` is given to a `worker`. If the callback + * is omitted, `q.empty()` returns a promise for the next occurrence. + * @property {Function} drain - a function that sets a callback that is called + * when the last item from the `queue` has returned from the `worker`. If the + * callback is omitted, `q.drain()` returns a promise for the next occurrence. + * @property {Function} error - a function that sets a callback that is called + * when a task errors. Has the signature `function(error, task)`. If the + * callback is omitted, `error()` returns a promise that rejects on the next + * error. + * @property {boolean} paused - a boolean for determining whether the queue is + * in a paused state. + * @property {Function} pause - a function that pauses the processing of tasks + * until `resume()` is called. Invoke with `queue.pause()`. + * @property {Function} resume - a function that resumes the processing of + * queued tasks when the queue is paused. Invoke with `queue.resume()`. + * @property {Function} kill - a function that removes the `drain` callback and + * empties remaining tasks from the queue forcing it to go idle. No more tasks + * should be pushed to the queue after calling this function. Invoke with `queue.kill()`. + * + * @example + * const q = async.queue(worker, 2) + * q.push(item1) + * q.push(item2) + * q.push(item3) + * // queues are iterable, spread into an array to inspect + * const items = [...q] // [item1, item2, item3] + * // or use for of + * for (let item of q) { + * console.log(item) + * } + * + * q.drain(() => { + * console.log('all done') + * }) + * // or + * await q.drain() + */ + +/** + * Creates a `queue` object with the specified `concurrency`. Tasks added to the + * `queue` are processed in parallel (up to the `concurrency` limit). If all + * `worker`s are in progress, the task is queued until one becomes available. + * Once a `worker` completes a `task`, that `task`'s callback is called. + * + * @name queue + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {AsyncFunction} worker - An async function for processing a queued task. + * If you want to handle errors from an individual task, pass a callback to + * `q.push()`. Invoked with (task, callback). + * @param {number} [concurrency=1] - An `integer` for determining how many + * `worker` functions should be run in parallel. If omitted, the concurrency + * defaults to `1`. If the concurrency is `0`, an error is thrown. + * @returns {module:ControlFlow.QueueObject} A queue object to manage the tasks. Callbacks can be + * attached as certain properties to listen for specific events during the + * lifecycle of the queue. + * @example + * + * // create a queue object with concurrency 2 + * var q = async.queue(function(task, callback) { + * console.log('hello ' + task.name); + * callback(); + * }, 2); + * + * // assign a callback + * q.drain(function() { + * console.log('all items have been processed'); + * }); + * // or await the end + * await q.drain() + * + * // assign an error callback + * q.error(function(err, task) { + * console.error('task experienced an error'); + * }); + * + * // add some items to the queue + * q.push({name: 'foo'}, function(err) { + * console.log('finished processing foo'); + * }); + * // callback is optional + * q.push({name: 'bar'}); + * + * // add some items to the queue (batch-wise) + * q.push([{name: 'baz'},{name: 'bay'},{name: 'bax'}], function(err) { + * console.log('finished processing item'); + * }); + * + * // add some items to the front of the queue + * q.unshift({name: 'bar'}, function (err) { + * console.log('finished processing bar'); + * }); + */ +function queue (worker, concurrency) { + var _worker = wrapAsync(worker); + return queue$1((items, cb) => { + _worker(items[0], cb); + }, concurrency, 1); +} + +// Binary min-heap implementation used for priority queue. +// Implementation is stable, i.e. push time is considered for equal priorities +class Heap { + constructor() { + this.heap = []; + this.pushCount = Number.MIN_SAFE_INTEGER; + } + + get length() { + return this.heap.length; + } + + empty () { + this.heap = []; + return this; + } + + percUp(index) { + let p; + + while (index > 0 && smaller(this.heap[index], this.heap[p=parent(index)])) { + let t = this.heap[index]; + this.heap[index] = this.heap[p]; + this.heap[p] = t; + + index = p; + } + } + + percDown(index) { + let l; + + while ((l=leftChi(index)) < this.heap.length) { + if (l+1 < this.heap.length && smaller(this.heap[l+1], this.heap[l])) { + l = l+1; + } + + if (smaller(this.heap[index], this.heap[l])) { + break; + } + + let t = this.heap[index]; + this.heap[index] = this.heap[l]; + this.heap[l] = t; + + index = l; + } + } + + push(node) { + node.pushCount = ++this.pushCount; + this.heap.push(node); + this.percUp(this.heap.length-1); + } + + unshift(node) { + return this.heap.push(node); + } + + shift() { + let [top] = this.heap; + + this.heap[0] = this.heap[this.heap.length-1]; + this.heap.pop(); + this.percDown(0); + + return top; + } + + toArray() { + return [...this]; + } + + *[Symbol.iterator] () { + for (let i = 0; i < this.heap.length; i++) { + yield this.heap[i].data; + } + } + + remove (testFn) { + let j = 0; + for (let i = 0; i < this.heap.length; i++) { + if (!testFn(this.heap[i])) { + this.heap[j] = this.heap[i]; + j++; + } + } + + this.heap.splice(j); + + for (let i = parent(this.heap.length-1); i >= 0; i--) { + this.percDown(i); + } + + return this; + } +} + +function leftChi(i) { + return (i<<1)+1; +} + +function parent(i) { + return ((i+1)>>1)-1; +} + +function smaller(x, y) { + if (x.priority !== y.priority) { + return x.priority < y.priority; + } + else { + return x.pushCount < y.pushCount; + } +} + +/** + * The same as [async.queue]{@link module:ControlFlow.queue} only tasks are assigned a priority and + * completed in ascending priority order. + * + * @name priorityQueue + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.queue]{@link module:ControlFlow.queue} + * @category Control Flow + * @param {AsyncFunction} worker - An async function for processing a queued task. + * If you want to handle errors from an individual task, pass a callback to + * `q.push()`. + * Invoked with (task, callback). + * @param {number} concurrency - An `integer` for determining how many `worker` + * functions should be run in parallel. If omitted, the concurrency defaults to + * `1`. If the concurrency is `0`, an error is thrown. + * @returns {module:ControlFlow.QueueObject} A priorityQueue object to manage the tasks. There are three + * differences between `queue` and `priorityQueue` objects: + * * `push(task, priority, [callback])` - `priority` should be a number. If an + * array of `tasks` is given, all tasks will be assigned the same priority. + * * `pushAsync(task, priority, [callback])` - the same as `priorityQueue.push`, + * except this returns a promise that rejects if an error occurs. + * * The `unshift` and `unshiftAsync` methods were removed. + */ +function priorityQueue(worker, concurrency) { + // Start with a normal queue + var q = queue(worker, concurrency); + + var { + push, + pushAsync + } = q; + + q._tasks = new Heap(); + q._createTaskItem = ({data, priority}, callback) => { + return { + data, + priority, + callback + }; + }; + + function createDataItems(tasks, priority) { + if (!Array.isArray(tasks)) { + return {data: tasks, priority}; + } + return tasks.map(data => { return {data, priority}; }); + } + + // Override push to accept second parameter representing priority + q.push = function(data, priority = 0, callback) { + return push(createDataItems(data, priority), callback); + }; + + q.pushAsync = function(data, priority = 0, callback) { + return pushAsync(createDataItems(data, priority), callback); + }; + + // Remove unshift functions + delete q.unshift; + delete q.unshiftAsync; + + return q; +} + +/** + * Runs the `tasks` array of functions in parallel, without waiting until the + * previous function has completed. Once any of the `tasks` complete or pass an + * error to its callback, the main `callback` is immediately called. It's + * equivalent to `Promise.race()`. + * + * @name race + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {Array} tasks - An array containing [async functions]{@link AsyncFunction} + * to run. Each function can complete with an optional `result` value. + * @param {Function} callback - A callback to run once any of the functions have + * completed. This function gets an error or result from the first function that + * completed. Invoked with (err, result). + * @returns {Promise} a promise, if a callback is omitted + * @example + * + * async.race([ + * function(callback) { + * setTimeout(function() { + * callback(null, 'one'); + * }, 200); + * }, + * function(callback) { + * setTimeout(function() { + * callback(null, 'two'); + * }, 100); + * } + * ], + * // main callback + * function(err, result) { + * // the result will be equal to 'two' as it finishes earlier + * }); + */ +function race(tasks, callback) { + callback = once(callback); + if (!Array.isArray(tasks)) return callback(new TypeError('First argument to race must be an array of functions')); + if (!tasks.length) return callback(); + for (var i = 0, l = tasks.length; i < l; i++) { + wrapAsync(tasks[i])(callback); + } +} + +var race$1 = awaitify(race, 2); + +/** + * Same as [`reduce`]{@link module:Collections.reduce}, only operates on `array` in reverse order. + * + * @name reduceRight + * @static + * @memberOf module:Collections + * @method + * @see [async.reduce]{@link module:Collections.reduce} + * @alias foldr + * @category Collection + * @param {Array} array - A collection to iterate over. + * @param {*} memo - The initial state of the reduction. + * @param {AsyncFunction} iteratee - A function applied to each item in the + * array to produce the next step in the reduction. + * The `iteratee` should complete with the next state of the reduction. + * If the iteratee completes with an error, the reduction is stopped and the + * main `callback` is immediately called with the error. + * Invoked with (memo, item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Result is the reduced value. Invoked with + * (err, result). + * @returns {Promise} a promise, if no callback is passed + */ +function reduceRight (array, memo, iteratee, callback) { + var reversed = [...array].reverse(); + return reduce$1(reversed, memo, iteratee, callback); +} + +/** + * Wraps the async function in another function that always completes with a + * result object, even when it errors. + * + * The result object has either the property `error` or `value`. + * + * @name reflect + * @static + * @memberOf module:Utils + * @method + * @category Util + * @param {AsyncFunction} fn - The async function you want to wrap + * @returns {Function} - A function that always passes null to it's callback as + * the error. The second argument to the callback will be an `object` with + * either an `error` or a `value` property. + * @example + * + * async.parallel([ + * async.reflect(function(callback) { + * // do some stuff ... + * callback(null, 'one'); + * }), + * async.reflect(function(callback) { + * // do some more stuff but error ... + * callback('bad stuff happened'); + * }), + * async.reflect(function(callback) { + * // do some more stuff ... + * callback(null, 'two'); + * }) + * ], + * // optional callback + * function(err, results) { + * // values + * // results[0].value = 'one' + * // results[1].error = 'bad stuff happened' + * // results[2].value = 'two' + * }); + */ +function reflect(fn) { + var _fn = wrapAsync(fn); + return initialParams(function reflectOn(args, reflectCallback) { + args.push((error, ...cbArgs) => { + let retVal = {}; + if (error) { + retVal.error = error; + } + if (cbArgs.length > 0){ + var value = cbArgs; + if (cbArgs.length <= 1) { + [value] = cbArgs; + } + retVal.value = value; + } + reflectCallback(null, retVal); + }); + + return _fn.apply(this, args); + }); +} + +/** + * A helper function that wraps an array or an object of functions with `reflect`. + * + * @name reflectAll + * @static + * @memberOf module:Utils + * @method + * @see [async.reflect]{@link module:Utils.reflect} + * @category Util + * @param {Array|Object|Iterable} tasks - The collection of + * [async functions]{@link AsyncFunction} to wrap in `async.reflect`. + * @returns {Array} Returns an array of async functions, each wrapped in + * `async.reflect` + * @example + * + * let tasks = [ + * function(callback) { + * setTimeout(function() { + * callback(null, 'one'); + * }, 200); + * }, + * function(callback) { + * // do some more stuff but error ... + * callback(new Error('bad stuff happened')); + * }, + * function(callback) { + * setTimeout(function() { + * callback(null, 'two'); + * }, 100); + * } + * ]; + * + * async.parallel(async.reflectAll(tasks), + * // optional callback + * function(err, results) { + * // values + * // results[0].value = 'one' + * // results[1].error = Error('bad stuff happened') + * // results[2].value = 'two' + * }); + * + * // an example using an object instead of an array + * let tasks = { + * one: function(callback) { + * setTimeout(function() { + * callback(null, 'one'); + * }, 200); + * }, + * two: function(callback) { + * callback('two'); + * }, + * three: function(callback) { + * setTimeout(function() { + * callback(null, 'three'); + * }, 100); + * } + * }; + * + * async.parallel(async.reflectAll(tasks), + * // optional callback + * function(err, results) { + * // values + * // results.one.value = 'one' + * // results.two.error = 'two' + * // results.three.value = 'three' + * }); + */ +function reflectAll(tasks) { + var results; + if (Array.isArray(tasks)) { + results = tasks.map(reflect); + } else { + results = {}; + Object.keys(tasks).forEach(key => { + results[key] = reflect.call(this, tasks[key]); + }); + } + return results; +} + +function reject$2(eachfn, arr, _iteratee, callback) { + const iteratee = wrapAsync(_iteratee); + return _filter(eachfn, arr, (value, cb) => { + iteratee(value, (err, v) => { + cb(err, !v); + }); + }, callback); +} + +/** + * The opposite of [`filter`]{@link module:Collections.filter}. Removes values that pass an `async` truth test. + * + * @name reject + * @static + * @memberOf module:Collections + * @method + * @see [async.filter]{@link module:Collections.filter} + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {Function} iteratee - An async truth test to apply to each item in + * `coll`. + * The should complete with a boolean value as its `result`. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Invoked with (err, results). + * @returns {Promise} a promise, if no callback is passed + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * + * const fileList = ['dir1/file1.txt','dir2/file3.txt','dir3/file6.txt']; + * + * // asynchronous function that checks if a file exists + * function fileExists(file, callback) { + * fs.access(file, fs.constants.F_OK, (err) => { + * callback(null, !err); + * }); + * } + * + * // Using callbacks + * async.reject(fileList, fileExists, function(err, results) { + * // [ 'dir3/file6.txt' ] + * // results now equals an array of the non-existing files + * }); + * + * // Using Promises + * async.reject(fileList, fileExists) + * .then( results => { + * console.log(results); + * // [ 'dir3/file6.txt' ] + * // results now equals an array of the non-existing files + * }).catch( err => { + * console.log(err); + * }); + * + * // Using async/await + * async () => { + * try { + * let results = await async.reject(fileList, fileExists); + * console.log(results); + * // [ 'dir3/file6.txt' ] + * // results now equals an array of the non-existing files + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ +function reject (coll, iteratee, callback) { + return reject$2(eachOf$1, coll, iteratee, callback) +} +var reject$1 = awaitify(reject, 3); + +/** + * The same as [`reject`]{@link module:Collections.reject} but runs a maximum of `limit` async operations at a + * time. + * + * @name rejectLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.reject]{@link module:Collections.reject} + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {Function} iteratee - An async truth test to apply to each item in + * `coll`. + * The should complete with a boolean value as its `result`. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Invoked with (err, results). + * @returns {Promise} a promise, if no callback is passed + */ +function rejectLimit (coll, limit, iteratee, callback) { + return reject$2(eachOfLimit$2(limit), coll, iteratee, callback) +} +var rejectLimit$1 = awaitify(rejectLimit, 4); + +/** + * The same as [`reject`]{@link module:Collections.reject} but runs only a single async operation at a time. + * + * @name rejectSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.reject]{@link module:Collections.reject} + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {Function} iteratee - An async truth test to apply to each item in + * `coll`. + * The should complete with a boolean value as its `result`. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Invoked with (err, results). + * @returns {Promise} a promise, if no callback is passed + */ +function rejectSeries (coll, iteratee, callback) { + return reject$2(eachOfSeries$1, coll, iteratee, callback) +} +var rejectSeries$1 = awaitify(rejectSeries, 3); + +function constant(value) { + return function () { + return value; + } +} + +/** + * Attempts to get a successful response from `task` no more than `times` times + * before returning an error. If the task is successful, the `callback` will be + * passed the result of the successful task. If all attempts fail, the callback + * will be passed the error and result (if any) of the final attempt. + * + * @name retry + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @see [async.retryable]{@link module:ControlFlow.retryable} + * @param {Object|number} [opts = {times: 5, interval: 0}| 5] - Can be either an + * object with `times` and `interval` or a number. + * * `times` - The number of attempts to make before giving up. The default + * is `5`. + * * `interval` - The time to wait between retries, in milliseconds. The + * default is `0`. The interval may also be specified as a function of the + * retry count (see example). + * * `errorFilter` - An optional synchronous function that is invoked on + * erroneous result. If it returns `true` the retry attempts will continue; + * if the function returns `false` the retry flow is aborted with the current + * attempt's error and result being returned to the final callback. + * Invoked with (err). + * * If `opts` is a number, the number specifies the number of times to retry, + * with the default interval of `0`. + * @param {AsyncFunction} task - An async function to retry. + * Invoked with (callback). + * @param {Function} [callback] - An optional callback which is called when the + * task has succeeded, or after the final failed attempt. It receives the `err` + * and `result` arguments of the last attempt at completing the `task`. Invoked + * with (err, results). + * @returns {Promise} a promise if no callback provided + * + * @example + * + * // The `retry` function can be used as a stand-alone control flow by passing + * // a callback, as shown below: + * + * // try calling apiMethod 3 times + * async.retry(3, apiMethod, function(err, result) { + * // do something with the result + * }); + * + * // try calling apiMethod 3 times, waiting 200 ms between each retry + * async.retry({times: 3, interval: 200}, apiMethod, function(err, result) { + * // do something with the result + * }); + * + * // try calling apiMethod 10 times with exponential backoff + * // (i.e. intervals of 100, 200, 400, 800, 1600, ... milliseconds) + * async.retry({ + * times: 10, + * interval: function(retryCount) { + * return 50 * Math.pow(2, retryCount); + * } + * }, apiMethod, function(err, result) { + * // do something with the result + * }); + * + * // try calling apiMethod the default 5 times no delay between each retry + * async.retry(apiMethod, function(err, result) { + * // do something with the result + * }); + * + * // try calling apiMethod only when error condition satisfies, all other + * // errors will abort the retry control flow and return to final callback + * async.retry({ + * errorFilter: function(err) { + * return err.message === 'Temporary error'; // only retry on a specific error + * } + * }, apiMethod, function(err, result) { + * // do something with the result + * }); + * + * // to retry individual methods that are not as reliable within other + * // control flow functions, use the `retryable` wrapper: + * async.auto({ + * users: api.getUsers.bind(api), + * payments: async.retryable(3, api.getPayments.bind(api)) + * }, function(err, results) { + * // do something with the results + * }); + * + */ +const DEFAULT_TIMES = 5; +const DEFAULT_INTERVAL = 0; + +function retry(opts, task, callback) { + var options = { + times: DEFAULT_TIMES, + intervalFunc: constant(DEFAULT_INTERVAL) + }; + + if (arguments.length < 3 && typeof opts === 'function') { + callback = task || promiseCallback(); + task = opts; + } else { + parseTimes(options, opts); + callback = callback || promiseCallback(); + } + + if (typeof task !== 'function') { + throw new Error("Invalid arguments for async.retry"); + } + + var _task = wrapAsync(task); + + var attempt = 1; + function retryAttempt() { + _task((err, ...args) => { + if (err === false) return + if (err && attempt++ < options.times && + (typeof options.errorFilter != 'function' || + options.errorFilter(err))) { + setTimeout(retryAttempt, options.intervalFunc(attempt - 1)); + } else { + callback(err, ...args); + } + }); + } + + retryAttempt(); + return callback[PROMISE_SYMBOL] +} + +function parseTimes(acc, t) { + if (typeof t === 'object') { + acc.times = +t.times || DEFAULT_TIMES; + + acc.intervalFunc = typeof t.interval === 'function' ? + t.interval : + constant(+t.interval || DEFAULT_INTERVAL); + + acc.errorFilter = t.errorFilter; + } else if (typeof t === 'number' || typeof t === 'string') { + acc.times = +t || DEFAULT_TIMES; + } else { + throw new Error("Invalid arguments for async.retry"); + } +} + +/** + * A close relative of [`retry`]{@link module:ControlFlow.retry}. This method + * wraps a task and makes it retryable, rather than immediately calling it + * with retries. + * + * @name retryable + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.retry]{@link module:ControlFlow.retry} + * @category Control Flow + * @param {Object|number} [opts = {times: 5, interval: 0}| 5] - optional + * options, exactly the same as from `retry`, except for a `opts.arity` that + * is the arity of the `task` function, defaulting to `task.length` + * @param {AsyncFunction} task - the asynchronous function to wrap. + * This function will be passed any arguments passed to the returned wrapper. + * Invoked with (...args, callback). + * @returns {AsyncFunction} The wrapped function, which when invoked, will + * retry on an error, based on the parameters specified in `opts`. + * This function will accept the same parameters as `task`. + * @example + * + * async.auto({ + * dep1: async.retryable(3, getFromFlakyService), + * process: ["dep1", async.retryable(3, function (results, cb) { + * maybeProcessData(results.dep1, cb); + * })] + * }, callback); + */ +function retryable (opts, task) { + if (!task) { + task = opts; + opts = null; + } + let arity = (opts && opts.arity) || task.length; + if (isAsync(task)) { + arity += 1; + } + var _task = wrapAsync(task); + return initialParams((args, callback) => { + if (args.length < arity - 1 || callback == null) { + args.push(callback); + callback = promiseCallback(); + } + function taskFn(cb) { + _task(...args, cb); + } + + if (opts) retry(opts, taskFn, callback); + else retry(taskFn, callback); + + return callback[PROMISE_SYMBOL] + }); +} + +/** + * Run the functions in the `tasks` collection in series, each one running once + * the previous function has completed. If any functions in the series pass an + * error to its callback, no more functions are run, and `callback` is + * immediately called with the value of the error. Otherwise, `callback` + * receives an array of results when `tasks` have completed. + * + * It is also possible to use an object instead of an array. Each property will + * be run as a function, and the results will be passed to the final `callback` + * as an object instead of an array. This can be a more readable way of handling + * results from {@link async.series}. + * + * **Note** that while many implementations preserve the order of object + * properties, the [ECMAScript Language Specification](http://www.ecma-international.org/ecma-262/5.1/#sec-8.6) + * explicitly states that + * + * > The mechanics and order of enumerating the properties is not specified. + * + * So if you rely on the order in which your series of functions are executed, + * and want this to work on all platforms, consider using an array. + * + * @name series + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {Array|Iterable|AsyncIterable|Object} tasks - A collection containing + * [async functions]{@link AsyncFunction} to run in series. + * Each function can complete with any number of optional `result` values. + * @param {Function} [callback] - An optional callback to run once all the + * functions have completed. This function gets a results array (or object) + * containing all the result arguments passed to the `task` callbacks. Invoked + * with (err, result). + * @return {Promise} a promise, if no callback is passed + * @example + * + * //Using Callbacks + * async.series([ + * function(callback) { + * setTimeout(function() { + * // do some async task + * callback(null, 'one'); + * }, 200); + * }, + * function(callback) { + * setTimeout(function() { + * // then do another async task + * callback(null, 'two'); + * }, 100); + * } + * ], function(err, results) { + * console.log(results); + * // results is equal to ['one','two'] + * }); + * + * // an example using objects instead of arrays + * async.series({ + * one: function(callback) { + * setTimeout(function() { + * // do some async task + * callback(null, 1); + * }, 200); + * }, + * two: function(callback) { + * setTimeout(function() { + * // then do another async task + * callback(null, 2); + * }, 100); + * } + * }, function(err, results) { + * console.log(results); + * // results is equal to: { one: 1, two: 2 } + * }); + * + * //Using Promises + * async.series([ + * function(callback) { + * setTimeout(function() { + * callback(null, 'one'); + * }, 200); + * }, + * function(callback) { + * setTimeout(function() { + * callback(null, 'two'); + * }, 100); + * } + * ]).then(results => { + * console.log(results); + * // results is equal to ['one','two'] + * }).catch(err => { + * console.log(err); + * }); + * + * // an example using an object instead of an array + * async.series({ + * one: function(callback) { + * setTimeout(function() { + * // do some async task + * callback(null, 1); + * }, 200); + * }, + * two: function(callback) { + * setTimeout(function() { + * // then do another async task + * callback(null, 2); + * }, 100); + * } + * }).then(results => { + * console.log(results); + * // results is equal to: { one: 1, two: 2 } + * }).catch(err => { + * console.log(err); + * }); + * + * //Using async/await + * async () => { + * try { + * let results = await async.series([ + * function(callback) { + * setTimeout(function() { + * // do some async task + * callback(null, 'one'); + * }, 200); + * }, + * function(callback) { + * setTimeout(function() { + * // then do another async task + * callback(null, 'two'); + * }, 100); + * } + * ]); + * console.log(results); + * // results is equal to ['one','two'] + * } + * catch (err) { + * console.log(err); + * } + * } + * + * // an example using an object instead of an array + * async () => { + * try { + * let results = await async.parallel({ + * one: function(callback) { + * setTimeout(function() { + * // do some async task + * callback(null, 1); + * }, 200); + * }, + * two: function(callback) { + * setTimeout(function() { + * // then do another async task + * callback(null, 2); + * }, 100); + * } + * }); + * console.log(results); + * // results is equal to: { one: 1, two: 2 } + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ +function series(tasks, callback) { + return _parallel(eachOfSeries$1, tasks, callback); +} + +/** + * Returns `true` if at least one element in the `coll` satisfies an async test. + * If any iteratee call returns `true`, the main `callback` is immediately + * called. + * + * @name some + * @static + * @memberOf module:Collections + * @method + * @alias any + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collections in parallel. + * The iteratee should complete with a boolean `result` value. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called as soon as any + * iteratee returns `true`, or after all the iteratee functions have finished. + * Result will be either `true` or `false` depending on the values of the async + * tests. Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * // dir4 does not exist + * + * // asynchronous function that checks if a file exists + * function fileExists(file, callback) { + * fs.access(file, fs.constants.F_OK, (err) => { + * callback(null, !err); + * }); + * } + * + * // Using callbacks + * async.some(['dir1/missing.txt','dir2/missing.txt','dir3/file5.txt'], fileExists, + * function(err, result) { + * console.log(result); + * // true + * // result is true since some file in the list exists + * } + *); + * + * async.some(['dir1/missing.txt','dir2/missing.txt','dir4/missing.txt'], fileExists, + * function(err, result) { + * console.log(result); + * // false + * // result is false since none of the files exists + * } + *); + * + * // Using Promises + * async.some(['dir1/missing.txt','dir2/missing.txt','dir3/file5.txt'], fileExists) + * .then( result => { + * console.log(result); + * // true + * // result is true since some file in the list exists + * }).catch( err => { + * console.log(err); + * }); + * + * async.some(['dir1/missing.txt','dir2/missing.txt','dir4/missing.txt'], fileExists) + * .then( result => { + * console.log(result); + * // false + * // result is false since none of the files exists + * }).catch( err => { + * console.log(err); + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.some(['dir1/missing.txt','dir2/missing.txt','dir3/file5.txt'], fileExists); + * console.log(result); + * // true + * // result is true since some file in the list exists + * } + * catch (err) { + * console.log(err); + * } + * } + * + * async () => { + * try { + * let result = await async.some(['dir1/missing.txt','dir2/missing.txt','dir4/missing.txt'], fileExists); + * console.log(result); + * // false + * // result is false since none of the files exists + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ +function some(coll, iteratee, callback) { + return _createTester(Boolean, res => res)(eachOf$1, coll, iteratee, callback) +} +var some$1 = awaitify(some, 3); + +/** + * The same as [`some`]{@link module:Collections.some} but runs a maximum of `limit` async operations at a time. + * + * @name someLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.some]{@link module:Collections.some} + * @alias anyLimit + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collections in parallel. + * The iteratee should complete with a boolean `result` value. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called as soon as any + * iteratee returns `true`, or after all the iteratee functions have finished. + * Result will be either `true` or `false` depending on the values of the async + * tests. Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + */ +function someLimit(coll, limit, iteratee, callback) { + return _createTester(Boolean, res => res)(eachOfLimit$2(limit), coll, iteratee, callback) +} +var someLimit$1 = awaitify(someLimit, 4); + +/** + * The same as [`some`]{@link module:Collections.some} but runs only a single async operation at a time. + * + * @name someSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.some]{@link module:Collections.some} + * @alias anySeries + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collections in series. + * The iteratee should complete with a boolean `result` value. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called as soon as any + * iteratee returns `true`, or after all the iteratee functions have finished. + * Result will be either `true` or `false` depending on the values of the async + * tests. Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + */ +function someSeries(coll, iteratee, callback) { + return _createTester(Boolean, res => res)(eachOfSeries$1, coll, iteratee, callback) +} +var someSeries$1 = awaitify(someSeries, 3); + +/** + * Sorts a list by the results of running each `coll` value through an async + * `iteratee`. + * + * @name sortBy + * @static + * @memberOf module:Collections + * @method + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The iteratee should complete with a value to use as the sort criteria as + * its `result`. + * Invoked with (item, callback). + * @param {Function} callback - A callback which is called after all the + * `iteratee` functions have finished, or an error occurs. Results is the items + * from the original `coll` sorted by the values returned by the `iteratee` + * calls. Invoked with (err, results). + * @returns {Promise} a promise, if no callback passed + * @example + * + * // bigfile.txt is a file that is 251100 bytes in size + * // mediumfile.txt is a file that is 11000 bytes in size + * // smallfile.txt is a file that is 121 bytes in size + * + * // asynchronous function that returns the file size in bytes + * function getFileSizeInBytes(file, callback) { + * fs.stat(file, function(err, stat) { + * if (err) { + * return callback(err); + * } + * callback(null, stat.size); + * }); + * } + * + * // Using callbacks + * async.sortBy(['mediumfile.txt','smallfile.txt','bigfile.txt'], getFileSizeInBytes, + * function(err, results) { + * if (err) { + * console.log(err); + * } else { + * console.log(results); + * // results is now the original array of files sorted by + * // file size (ascending by default), e.g. + * // [ 'smallfile.txt', 'mediumfile.txt', 'bigfile.txt'] + * } + * } + * ); + * + * // By modifying the callback parameter the + * // sorting order can be influenced: + * + * // ascending order + * async.sortBy(['mediumfile.txt','smallfile.txt','bigfile.txt'], function(file, callback) { + * getFileSizeInBytes(file, function(getFileSizeErr, fileSize) { + * if (getFileSizeErr) return callback(getFileSizeErr); + * callback(null, fileSize); + * }); + * }, function(err, results) { + * if (err) { + * console.log(err); + * } else { + * console.log(results); + * // results is now the original array of files sorted by + * // file size (ascending by default), e.g. + * // [ 'smallfile.txt', 'mediumfile.txt', 'bigfile.txt'] + * } + * } + * ); + * + * // descending order + * async.sortBy(['bigfile.txt','mediumfile.txt','smallfile.txt'], function(file, callback) { + * getFileSizeInBytes(file, function(getFileSizeErr, fileSize) { + * if (getFileSizeErr) { + * return callback(getFileSizeErr); + * } + * callback(null, fileSize * -1); + * }); + * }, function(err, results) { + * if (err) { + * console.log(err); + * } else { + * console.log(results); + * // results is now the original array of files sorted by + * // file size (ascending by default), e.g. + * // [ 'bigfile.txt', 'mediumfile.txt', 'smallfile.txt'] + * } + * } + * ); + * + * // Error handling + * async.sortBy(['mediumfile.txt','smallfile.txt','missingfile.txt'], getFileSizeInBytes, + * function(err, results) { + * if (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } else { + * console.log(results); + * } + * } + * ); + * + * // Using Promises + * async.sortBy(['mediumfile.txt','smallfile.txt','bigfile.txt'], getFileSizeInBytes) + * .then( results => { + * console.log(results); + * // results is now the original array of files sorted by + * // file size (ascending by default), e.g. + * // [ 'smallfile.txt', 'mediumfile.txt', 'bigfile.txt'] + * }).catch( err => { + * console.log(err); + * }); + * + * // Error handling + * async.sortBy(['mediumfile.txt','smallfile.txt','missingfile.txt'], getFileSizeInBytes) + * .then( results => { + * console.log(results); + * }).catch( err => { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * }); + * + * // Using async/await + * (async () => { + * try { + * let results = await async.sortBy(['bigfile.txt','mediumfile.txt','smallfile.txt'], getFileSizeInBytes); + * console.log(results); + * // results is now the original array of files sorted by + * // file size (ascending by default), e.g. + * // [ 'smallfile.txt', 'mediumfile.txt', 'bigfile.txt'] + * } + * catch (err) { + * console.log(err); + * } + * })(); + * + * // Error handling + * async () => { + * try { + * let results = await async.sortBy(['missingfile.txt','mediumfile.txt','smallfile.txt'], getFileSizeInBytes); + * console.log(results); + * } + * catch (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } + * } + * + */ +function sortBy (coll, iteratee, callback) { + var _iteratee = wrapAsync(iteratee); + return map$1(coll, (x, iterCb) => { + _iteratee(x, (err, criteria) => { + if (err) return iterCb(err); + iterCb(err, {value: x, criteria}); + }); + }, (err, results) => { + if (err) return callback(err); + callback(null, results.sort(comparator).map(v => v.value)); + }); + + function comparator(left, right) { + var a = left.criteria, b = right.criteria; + return a < b ? -1 : a > b ? 1 : 0; + } +} +var sortBy$1 = awaitify(sortBy, 3); + +/** + * Sets a time limit on an asynchronous function. If the function does not call + * its callback within the specified milliseconds, it will be called with a + * timeout error. The code property for the error object will be `'ETIMEDOUT'`. + * + * @name timeout + * @static + * @memberOf module:Utils + * @method + * @category Util + * @param {AsyncFunction} asyncFn - The async function to limit in time. + * @param {number} milliseconds - The specified time limit. + * @param {*} [info] - Any variable you want attached (`string`, `object`, etc) + * to timeout Error for more information.. + * @returns {AsyncFunction} Returns a wrapped function that can be used with any + * of the control flow functions. + * Invoke this function with the same parameters as you would `asyncFunc`. + * @example + * + * function myFunction(foo, callback) { + * doAsyncTask(foo, function(err, data) { + * // handle errors + * if (err) return callback(err); + * + * // do some stuff ... + * + * // return processed data + * return callback(null, data); + * }); + * } + * + * var wrapped = async.timeout(myFunction, 1000); + * + * // call `wrapped` as you would `myFunction` + * wrapped({ bar: 'bar' }, function(err, data) { + * // if `myFunction` takes < 1000 ms to execute, `err` + * // and `data` will have their expected values + * + * // else `err` will be an Error with the code 'ETIMEDOUT' + * }); + */ +function timeout(asyncFn, milliseconds, info) { + var fn = wrapAsync(asyncFn); + + return initialParams((args, callback) => { + var timedOut = false; + var timer; + + function timeoutCallback() { + var name = asyncFn.name || 'anonymous'; + var error = new Error('Callback function "' + name + '" timed out.'); + error.code = 'ETIMEDOUT'; + if (info) { + error.info = info; + } + timedOut = true; + callback(error); + } + + args.push((...cbArgs) => { + if (!timedOut) { + callback(...cbArgs); + clearTimeout(timer); + } + }); + + // setup timer and call original function + timer = setTimeout(timeoutCallback, milliseconds); + fn(...args); + }); +} + +function range(size) { + var result = Array(size); + while (size--) { + result[size] = size; + } + return result; +} + +/** + * The same as [times]{@link module:ControlFlow.times} but runs a maximum of `limit` async operations at a + * time. + * + * @name timesLimit + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.times]{@link module:ControlFlow.times} + * @category Control Flow + * @param {number} count - The number of times to run the function. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - The async function to call `n` times. + * Invoked with the iteration index and a callback: (n, next). + * @param {Function} callback - see [async.map]{@link module:Collections.map}. + * @returns {Promise} a promise, if no callback is provided + */ +function timesLimit(count, limit, iteratee, callback) { + var _iteratee = wrapAsync(iteratee); + return mapLimit$1(range(count), limit, _iteratee, callback); +} + +/** + * Calls the `iteratee` function `n` times, and accumulates results in the same + * manner you would use with [map]{@link module:Collections.map}. + * + * @name times + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.map]{@link module:Collections.map} + * @category Control Flow + * @param {number} n - The number of times to run the function. + * @param {AsyncFunction} iteratee - The async function to call `n` times. + * Invoked with the iteration index and a callback: (n, next). + * @param {Function} callback - see {@link module:Collections.map}. + * @returns {Promise} a promise, if no callback is provided + * @example + * + * // Pretend this is some complicated async factory + * var createUser = function(id, callback) { + * callback(null, { + * id: 'user' + id + * }); + * }; + * + * // generate 5 users + * async.times(5, function(n, next) { + * createUser(n, function(err, user) { + * next(err, user); + * }); + * }, function(err, users) { + * // we should now have 5 users + * }); + */ +function times (n, iteratee, callback) { + return timesLimit(n, Infinity, iteratee, callback) +} + +/** + * The same as [times]{@link module:ControlFlow.times} but runs only a single async operation at a time. + * + * @name timesSeries + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.times]{@link module:ControlFlow.times} + * @category Control Flow + * @param {number} n - The number of times to run the function. + * @param {AsyncFunction} iteratee - The async function to call `n` times. + * Invoked with the iteration index and a callback: (n, next). + * @param {Function} callback - see {@link module:Collections.map}. + * @returns {Promise} a promise, if no callback is provided + */ +function timesSeries (n, iteratee, callback) { + return timesLimit(n, 1, iteratee, callback) +} + +/** + * A relative of `reduce`. Takes an Object or Array, and iterates over each + * element in parallel, each step potentially mutating an `accumulator` value. + * The type of the accumulator defaults to the type of collection passed in. + * + * @name transform + * @static + * @memberOf module:Collections + * @method + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {*} [accumulator] - The initial state of the transform. If omitted, + * it will default to an empty Object or Array, depending on the type of `coll` + * @param {AsyncFunction} iteratee - A function applied to each item in the + * collection that potentially modifies the accumulator. + * Invoked with (accumulator, item, key, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Result is the transformed accumulator. + * Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + * @example + * + * // file1.txt is a file that is 1000 bytes in size + * // file2.txt is a file that is 2000 bytes in size + * // file3.txt is a file that is 3000 bytes in size + * + * // helper function that returns human-readable size format from bytes + * function formatBytes(bytes, decimals = 2) { + * // implementation not included for brevity + * return humanReadbleFilesize; + * } + * + * const fileList = ['file1.txt','file2.txt','file3.txt']; + * + * // asynchronous function that returns the file size, transformed to human-readable format + * // e.g. 1024 bytes = 1KB, 1234 bytes = 1.21 KB, 1048576 bytes = 1MB, etc. + * function transformFileSize(acc, value, key, callback) { + * fs.stat(value, function(err, stat) { + * if (err) { + * return callback(err); + * } + * acc[key] = formatBytes(stat.size); + * callback(null); + * }); + * } + * + * // Using callbacks + * async.transform(fileList, transformFileSize, function(err, result) { + * if(err) { + * console.log(err); + * } else { + * console.log(result); + * // [ '1000 Bytes', '1.95 KB', '2.93 KB' ] + * } + * }); + * + * // Using Promises + * async.transform(fileList, transformFileSize) + * .then(result => { + * console.log(result); + * // [ '1000 Bytes', '1.95 KB', '2.93 KB' ] + * }).catch(err => { + * console.log(err); + * }); + * + * // Using async/await + * (async () => { + * try { + * let result = await async.transform(fileList, transformFileSize); + * console.log(result); + * // [ '1000 Bytes', '1.95 KB', '2.93 KB' ] + * } + * catch (err) { + * console.log(err); + * } + * })(); + * + * @example + * + * // file1.txt is a file that is 1000 bytes in size + * // file2.txt is a file that is 2000 bytes in size + * // file3.txt is a file that is 3000 bytes in size + * + * // helper function that returns human-readable size format from bytes + * function formatBytes(bytes, decimals = 2) { + * // implementation not included for brevity + * return humanReadbleFilesize; + * } + * + * const fileMap = { f1: 'file1.txt', f2: 'file2.txt', f3: 'file3.txt' }; + * + * // asynchronous function that returns the file size, transformed to human-readable format + * // e.g. 1024 bytes = 1KB, 1234 bytes = 1.21 KB, 1048576 bytes = 1MB, etc. + * function transformFileSize(acc, value, key, callback) { + * fs.stat(value, function(err, stat) { + * if (err) { + * return callback(err); + * } + * acc[key] = formatBytes(stat.size); + * callback(null); + * }); + * } + * + * // Using callbacks + * async.transform(fileMap, transformFileSize, function(err, result) { + * if(err) { + * console.log(err); + * } else { + * console.log(result); + * // { f1: '1000 Bytes', f2: '1.95 KB', f3: '2.93 KB' } + * } + * }); + * + * // Using Promises + * async.transform(fileMap, transformFileSize) + * .then(result => { + * console.log(result); + * // { f1: '1000 Bytes', f2: '1.95 KB', f3: '2.93 KB' } + * }).catch(err => { + * console.log(err); + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.transform(fileMap, transformFileSize); + * console.log(result); + * // { f1: '1000 Bytes', f2: '1.95 KB', f3: '2.93 KB' } + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ +function transform (coll, accumulator, iteratee, callback) { + if (arguments.length <= 3 && typeof accumulator === 'function') { + callback = iteratee; + iteratee = accumulator; + accumulator = Array.isArray(coll) ? [] : {}; + } + callback = once(callback || promiseCallback()); + var _iteratee = wrapAsync(iteratee); + + eachOf$1(coll, (v, k, cb) => { + _iteratee(accumulator, v, k, cb); + }, err => callback(err, accumulator)); + return callback[PROMISE_SYMBOL] +} + +/** + * It runs each task in series but stops whenever any of the functions were + * successful. If one of the tasks were successful, the `callback` will be + * passed the result of the successful task. If all tasks fail, the callback + * will be passed the error and result (if any) of the final attempt. + * + * @name tryEach + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {Array|Iterable|AsyncIterable|Object} tasks - A collection containing functions to + * run, each function is passed a `callback(err, result)` it must call on + * completion with an error `err` (which can be `null`) and an optional `result` + * value. + * @param {Function} [callback] - An optional callback which is called when one + * of the tasks has succeeded, or all have failed. It receives the `err` and + * `result` arguments of the last attempt at completing the `task`. Invoked with + * (err, results). + * @returns {Promise} a promise, if no callback is passed + * @example + * async.tryEach([ + * function getDataFromFirstWebsite(callback) { + * // Try getting the data from the first website + * callback(err, data); + * }, + * function getDataFromSecondWebsite(callback) { + * // First website failed, + * // Try getting the data from the backup website + * callback(err, data); + * } + * ], + * // optional callback + * function(err, results) { + * Now do something with the data. + * }); + * + */ +function tryEach(tasks, callback) { + var error = null; + var result; + return eachSeries$1(tasks, (task, taskCb) => { + wrapAsync(task)((err, ...args) => { + if (err === false) return taskCb(err); + + if (args.length < 2) { + [result] = args; + } else { + result = args; + } + error = err; + taskCb(err ? null : {}); + }); + }, () => callback(error, result)); +} + +var tryEach$1 = awaitify(tryEach); + +/** + * Undoes a [memoize]{@link module:Utils.memoize}d function, reverting it to the original, + * unmemoized form. Handy for testing. + * + * @name unmemoize + * @static + * @memberOf module:Utils + * @method + * @see [async.memoize]{@link module:Utils.memoize} + * @category Util + * @param {AsyncFunction} fn - the memoized function + * @returns {AsyncFunction} a function that calls the original unmemoized function + */ +function unmemoize(fn) { + return (...args) => { + return (fn.unmemoized || fn)(...args); + }; +} + +/** + * Repeatedly call `iteratee`, while `test` returns `true`. Calls `callback` when + * stopped, or an error occurs. + * + * @name whilst + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {AsyncFunction} test - asynchronous truth test to perform before each + * execution of `iteratee`. Invoked with (callback). + * @param {AsyncFunction} iteratee - An async function which is called each time + * `test` passes. Invoked with (callback). + * @param {Function} [callback] - A callback which is called after the test + * function has failed and repeated execution of `iteratee` has stopped. `callback` + * will be passed an error and any arguments passed to the final `iteratee`'s + * callback. Invoked with (err, [results]); + * @returns {Promise} a promise, if no callback is passed + * @example + * + * var count = 0; + * async.whilst( + * function test(cb) { cb(null, count < 5); }, + * function iter(callback) { + * count++; + * setTimeout(function() { + * callback(null, count); + * }, 1000); + * }, + * function (err, n) { + * // 5 seconds have passed, n = 5 + * } + * ); + */ +function whilst(test, iteratee, callback) { + callback = onlyOnce(callback); + var _fn = wrapAsync(iteratee); + var _test = wrapAsync(test); + var results = []; + + function next(err, ...rest) { + if (err) return callback(err); + results = rest; + if (err === false) return; + _test(check); + } + + function check(err, truth) { + if (err) return callback(err); + if (err === false) return; + if (!truth) return callback(null, ...results); + _fn(next); + } + + return _test(check); +} +var whilst$1 = awaitify(whilst, 3); + +/** + * Repeatedly call `iteratee` until `test` returns `true`. Calls `callback` when + * stopped, or an error occurs. `callback` will be passed an error and any + * arguments passed to the final `iteratee`'s callback. + * + * The inverse of [whilst]{@link module:ControlFlow.whilst}. + * + * @name until + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.whilst]{@link module:ControlFlow.whilst} + * @category Control Flow + * @param {AsyncFunction} test - asynchronous truth test to perform before each + * execution of `iteratee`. Invoked with (callback). + * @param {AsyncFunction} iteratee - An async function which is called each time + * `test` fails. Invoked with (callback). + * @param {Function} [callback] - A callback which is called after the test + * function has passed and repeated execution of `iteratee` has stopped. `callback` + * will be passed an error and any arguments passed to the final `iteratee`'s + * callback. Invoked with (err, [results]); + * @returns {Promise} a promise, if a callback is not passed + * + * @example + * const results = [] + * let finished = false + * async.until(function test(cb) { + * cb(null, finished) + * }, function iter(next) { + * fetchPage(url, (err, body) => { + * if (err) return next(err) + * results = results.concat(body.objects) + * finished = !!body.next + * next(err) + * }) + * }, function done (err) { + * // all pages have been fetched + * }) + */ +function until(test, iteratee, callback) { + const _test = wrapAsync(test); + return whilst$1((cb) => _test((err, truth) => cb (err, !truth)), iteratee, callback); +} + +/** + * Runs the `tasks` array of functions in series, each passing their results to + * the next in the array. However, if any of the `tasks` pass an error to their + * own callback, the next function is not executed, and the main `callback` is + * immediately called with the error. + * + * @name waterfall + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {Array} tasks - An array of [async functions]{@link AsyncFunction} + * to run. + * Each function should complete with any number of `result` values. + * The `result` values will be passed as arguments, in order, to the next task. + * @param {Function} [callback] - An optional callback to run once all the + * functions have completed. This will be passed the results of the last task's + * callback. Invoked with (err, [results]). + * @returns {Promise} a promise, if a callback is omitted + * @example + * + * async.waterfall([ + * function(callback) { + * callback(null, 'one', 'two'); + * }, + * function(arg1, arg2, callback) { + * // arg1 now equals 'one' and arg2 now equals 'two' + * callback(null, 'three'); + * }, + * function(arg1, callback) { + * // arg1 now equals 'three' + * callback(null, 'done'); + * } + * ], function (err, result) { + * // result now equals 'done' + * }); + * + * // Or, with named functions: + * async.waterfall([ + * myFirstFunction, + * mySecondFunction, + * myLastFunction, + * ], function (err, result) { + * // result now equals 'done' + * }); + * function myFirstFunction(callback) { + * callback(null, 'one', 'two'); + * } + * function mySecondFunction(arg1, arg2, callback) { + * // arg1 now equals 'one' and arg2 now equals 'two' + * callback(null, 'three'); + * } + * function myLastFunction(arg1, callback) { + * // arg1 now equals 'three' + * callback(null, 'done'); + * } + */ +function waterfall (tasks, callback) { + callback = once(callback); + if (!Array.isArray(tasks)) return callback(new Error('First argument to waterfall must be an array of functions')); + if (!tasks.length) return callback(); + var taskIndex = 0; + + function nextTask(args) { + var task = wrapAsync(tasks[taskIndex++]); + task(...args, onlyOnce(next)); + } + + function next(err, ...args) { + if (err === false) return + if (err || taskIndex === tasks.length) { + return callback(err, ...args); + } + nextTask(args); + } + + nextTask([]); +} + +var waterfall$1 = awaitify(waterfall); + +/** + * An "async function" in the context of Async is an asynchronous function with + * a variable number of parameters, with the final parameter being a callback. + * (`function (arg1, arg2, ..., callback) {}`) + * The final callback is of the form `callback(err, results...)`, which must be + * called once the function is completed. The callback should be called with a + * Error as its first argument to signal that an error occurred. + * Otherwise, if no error occurred, it should be called with `null` as the first + * argument, and any additional `result` arguments that may apply, to signal + * successful completion. + * The callback must be called exactly once, ideally on a later tick of the + * JavaScript event loop. + * + * This type of function is also referred to as a "Node-style async function", + * or a "continuation passing-style function" (CPS). Most of the methods of this + * library are themselves CPS/Node-style async functions, or functions that + * return CPS/Node-style async functions. + * + * Wherever we accept a Node-style async function, we also directly accept an + * [ES2017 `async` function]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function}. + * In this case, the `async` function will not be passed a final callback + * argument, and any thrown error will be used as the `err` argument of the + * implicit callback, and the return value will be used as the `result` value. + * (i.e. a `rejected` of the returned Promise becomes the `err` callback + * argument, and a `resolved` value becomes the `result`.) + * + * Note, due to JavaScript limitations, we can only detect native `async` + * functions and not transpilied implementations. + * Your environment must have `async`/`await` support for this to work. + * (e.g. Node > v7.6, or a recent version of a modern browser). + * If you are using `async` functions through a transpiler (e.g. Babel), you + * must still wrap the function with [asyncify]{@link module:Utils.asyncify}, + * because the `async function` will be compiled to an ordinary function that + * returns a promise. + * + * @typedef {Function} AsyncFunction + * @static + */ + + +var index = { + apply, + applyEach, + applyEachSeries, + asyncify, + auto, + autoInject, + cargo: cargo$1, + cargoQueue: cargo, + compose, + concat: concat$1, + concatLimit: concatLimit$1, + concatSeries: concatSeries$1, + constant: constant$1, + detect: detect$1, + detectLimit: detectLimit$1, + detectSeries: detectSeries$1, + dir, + doUntil, + doWhilst: doWhilst$1, + each, + eachLimit: eachLimit$1, + eachOf: eachOf$1, + eachOfLimit: eachOfLimit$1, + eachOfSeries: eachOfSeries$1, + eachSeries: eachSeries$1, + ensureAsync, + every: every$1, + everyLimit: everyLimit$1, + everySeries: everySeries$1, + filter: filter$1, + filterLimit: filterLimit$1, + filterSeries: filterSeries$1, + forever: forever$1, + groupBy, + groupByLimit: groupByLimit$1, + groupBySeries, + log, + map: map$1, + mapLimit: mapLimit$1, + mapSeries: mapSeries$1, + mapValues, + mapValuesLimit: mapValuesLimit$1, + mapValuesSeries, + memoize, + nextTick, + parallel, + parallelLimit, + priorityQueue, + queue, + race: race$1, + reduce: reduce$1, + reduceRight, + reflect, + reflectAll, + reject: reject$1, + rejectLimit: rejectLimit$1, + rejectSeries: rejectSeries$1, + retry, + retryable, + seq, + series, + setImmediate: setImmediate$1, + some: some$1, + someLimit: someLimit$1, + someSeries: someSeries$1, + sortBy: sortBy$1, + timeout, + times, + timesLimit, + timesSeries, + transform, + tryEach: tryEach$1, + unmemoize, + until, + waterfall: waterfall$1, + whilst: whilst$1, + + // aliases + all: every$1, + allLimit: everyLimit$1, + allSeries: everySeries$1, + any: some$1, + anyLimit: someLimit$1, + anySeries: someSeries$1, + find: detect$1, + findLimit: detectLimit$1, + findSeries: detectSeries$1, + flatMap: concat$1, + flatMapLimit: concatLimit$1, + flatMapSeries: concatSeries$1, + forEach: each, + forEachSeries: eachSeries$1, + forEachLimit: eachLimit$1, + forEachOf: eachOf$1, + forEachOfSeries: eachOfSeries$1, + forEachOfLimit: eachOfLimit$1, + inject: reduce$1, + foldl: reduce$1, + foldr: reduceRight, + select: filter$1, + selectLimit: filterLimit$1, + selectSeries: filterSeries$1, + wrapSync: asyncify, + during: whilst$1, + doDuring: doWhilst$1 +}; + +export { every$1 as all, everyLimit$1 as allLimit, everySeries$1 as allSeries, some$1 as any, someLimit$1 as anyLimit, someSeries$1 as anySeries, apply, applyEach, applyEachSeries, asyncify, auto, autoInject, cargo$1 as cargo, cargo as cargoQueue, compose, concat$1 as concat, concatLimit$1 as concatLimit, concatSeries$1 as concatSeries, constant$1 as constant, index as default, detect$1 as detect, detectLimit$1 as detectLimit, detectSeries$1 as detectSeries, dir, doWhilst$1 as doDuring, doUntil, doWhilst$1 as doWhilst, whilst$1 as during, each, eachLimit$1 as eachLimit, eachOf$1 as eachOf, eachOfLimit$1 as eachOfLimit, eachOfSeries$1 as eachOfSeries, eachSeries$1 as eachSeries, ensureAsync, every$1 as every, everyLimit$1 as everyLimit, everySeries$1 as everySeries, filter$1 as filter, filterLimit$1 as filterLimit, filterSeries$1 as filterSeries, detect$1 as find, detectLimit$1 as findLimit, detectSeries$1 as findSeries, concat$1 as flatMap, concatLimit$1 as flatMapLimit, concatSeries$1 as flatMapSeries, reduce$1 as foldl, reduceRight as foldr, each as forEach, eachLimit$1 as forEachLimit, eachOf$1 as forEachOf, eachOfLimit$1 as forEachOfLimit, eachOfSeries$1 as forEachOfSeries, eachSeries$1 as forEachSeries, forever$1 as forever, groupBy, groupByLimit$1 as groupByLimit, groupBySeries, reduce$1 as inject, log, map$1 as map, mapLimit$1 as mapLimit, mapSeries$1 as mapSeries, mapValues, mapValuesLimit$1 as mapValuesLimit, mapValuesSeries, memoize, nextTick, parallel, parallelLimit, priorityQueue, queue, race$1 as race, reduce$1 as reduce, reduceRight, reflect, reflectAll, reject$1 as reject, rejectLimit$1 as rejectLimit, rejectSeries$1 as rejectSeries, retry, retryable, filter$1 as select, filterLimit$1 as selectLimit, filterSeries$1 as selectSeries, seq, series, setImmediate$1 as setImmediate, some$1 as some, someLimit$1 as someLimit, someSeries$1 as someSeries, sortBy$1 as sortBy, timeout, times, timesLimit, timesSeries, transform, tryEach$1 as tryEach, unmemoize, until, waterfall$1 as waterfall, whilst$1 as whilst, asyncify as wrapSync }; diff --git a/node_modules/async/doDuring.js b/node_modules/async/doDuring.js new file mode 100644 index 0000000..c72766d --- /dev/null +++ b/node_modules/async/doDuring.js @@ -0,0 +1,68 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _onlyOnce = require('./internal/onlyOnce.js'); + +var _onlyOnce2 = _interopRequireDefault(_onlyOnce); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The post-check version of [`whilst`]{@link module:ControlFlow.whilst}. To reflect the difference in + * the order of operations, the arguments `test` and `iteratee` are switched. + * + * `doWhilst` is to `whilst` as `do while` is to `while` in plain JavaScript. + * + * @name doWhilst + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.whilst]{@link module:ControlFlow.whilst} + * @category Control Flow + * @param {AsyncFunction} iteratee - A function which is called each time `test` + * passes. Invoked with (callback). + * @param {AsyncFunction} test - asynchronous truth test to perform after each + * execution of `iteratee`. Invoked with (...args, callback), where `...args` are the + * non-error args from the previous callback of `iteratee`. + * @param {Function} [callback] - A callback which is called after the test + * function has failed and repeated execution of `iteratee` has stopped. + * `callback` will be passed an error and any arguments passed to the final + * `iteratee`'s callback. Invoked with (err, [results]); + * @returns {Promise} a promise, if no callback is passed + */ +function doWhilst(iteratee, test, callback) { + callback = (0, _onlyOnce2.default)(callback); + var _fn = (0, _wrapAsync2.default)(iteratee); + var _test = (0, _wrapAsync2.default)(test); + var results; + + function next(err, ...args) { + if (err) return callback(err); + if (err === false) return; + results = args; + _test(...args, check); + } + + function check(err, truth) { + if (err) return callback(err); + if (err === false) return; + if (!truth) return callback(null, ...results); + _fn(next); + } + + return check(null, true); +} + +exports.default = (0, _awaitify2.default)(doWhilst, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/doUntil.js b/node_modules/async/doUntil.js new file mode 100644 index 0000000..519900e --- /dev/null +++ b/node_modules/async/doUntil.js @@ -0,0 +1,46 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = doUntil; + +var _doWhilst = require('./doWhilst.js'); + +var _doWhilst2 = _interopRequireDefault(_doWhilst); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Like ['doWhilst']{@link module:ControlFlow.doWhilst}, except the `test` is inverted. Note the + * argument ordering differs from `until`. + * + * @name doUntil + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.doWhilst]{@link module:ControlFlow.doWhilst} + * @category Control Flow + * @param {AsyncFunction} iteratee - An async function which is called each time + * `test` fails. Invoked with (callback). + * @param {AsyncFunction} test - asynchronous truth test to perform after each + * execution of `iteratee`. Invoked with (...args, callback), where `...args` are the + * non-error args from the previous callback of `iteratee` + * @param {Function} [callback] - A callback which is called after the test + * function has passed and repeated execution of `iteratee` has stopped. `callback` + * will be passed an error and any arguments passed to the final `iteratee`'s + * callback. Invoked with (err, [results]); + * @returns {Promise} a promise, if no callback is passed + */ +function doUntil(iteratee, test, callback) { + const _test = (0, _wrapAsync2.default)(test); + return (0, _doWhilst2.default)(iteratee, (...args) => { + const cb = args.pop(); + _test(...args, (err, truth) => cb(err, !truth)); + }, callback); +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/doWhilst.js b/node_modules/async/doWhilst.js new file mode 100644 index 0000000..c72766d --- /dev/null +++ b/node_modules/async/doWhilst.js @@ -0,0 +1,68 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _onlyOnce = require('./internal/onlyOnce.js'); + +var _onlyOnce2 = _interopRequireDefault(_onlyOnce); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The post-check version of [`whilst`]{@link module:ControlFlow.whilst}. To reflect the difference in + * the order of operations, the arguments `test` and `iteratee` are switched. + * + * `doWhilst` is to `whilst` as `do while` is to `while` in plain JavaScript. + * + * @name doWhilst + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.whilst]{@link module:ControlFlow.whilst} + * @category Control Flow + * @param {AsyncFunction} iteratee - A function which is called each time `test` + * passes. Invoked with (callback). + * @param {AsyncFunction} test - asynchronous truth test to perform after each + * execution of `iteratee`. Invoked with (...args, callback), where `...args` are the + * non-error args from the previous callback of `iteratee`. + * @param {Function} [callback] - A callback which is called after the test + * function has failed and repeated execution of `iteratee` has stopped. + * `callback` will be passed an error and any arguments passed to the final + * `iteratee`'s callback. Invoked with (err, [results]); + * @returns {Promise} a promise, if no callback is passed + */ +function doWhilst(iteratee, test, callback) { + callback = (0, _onlyOnce2.default)(callback); + var _fn = (0, _wrapAsync2.default)(iteratee); + var _test = (0, _wrapAsync2.default)(test); + var results; + + function next(err, ...args) { + if (err) return callback(err); + if (err === false) return; + results = args; + _test(...args, check); + } + + function check(err, truth) { + if (err) return callback(err); + if (err === false) return; + if (!truth) return callback(null, ...results); + _fn(next); + } + + return check(null, true); +} + +exports.default = (0, _awaitify2.default)(doWhilst, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/during.js b/node_modules/async/during.js new file mode 100644 index 0000000..4165543 --- /dev/null +++ b/node_modules/async/during.js @@ -0,0 +1,78 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _onlyOnce = require('./internal/onlyOnce.js'); + +var _onlyOnce2 = _interopRequireDefault(_onlyOnce); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Repeatedly call `iteratee`, while `test` returns `true`. Calls `callback` when + * stopped, or an error occurs. + * + * @name whilst + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {AsyncFunction} test - asynchronous truth test to perform before each + * execution of `iteratee`. Invoked with (callback). + * @param {AsyncFunction} iteratee - An async function which is called each time + * `test` passes. Invoked with (callback). + * @param {Function} [callback] - A callback which is called after the test + * function has failed and repeated execution of `iteratee` has stopped. `callback` + * will be passed an error and any arguments passed to the final `iteratee`'s + * callback. Invoked with (err, [results]); + * @returns {Promise} a promise, if no callback is passed + * @example + * + * var count = 0; + * async.whilst( + * function test(cb) { cb(null, count < 5); }, + * function iter(callback) { + * count++; + * setTimeout(function() { + * callback(null, count); + * }, 1000); + * }, + * function (err, n) { + * // 5 seconds have passed, n = 5 + * } + * ); + */ +function whilst(test, iteratee, callback) { + callback = (0, _onlyOnce2.default)(callback); + var _fn = (0, _wrapAsync2.default)(iteratee); + var _test = (0, _wrapAsync2.default)(test); + var results = []; + + function next(err, ...rest) { + if (err) return callback(err); + results = rest; + if (err === false) return; + _test(check); + } + + function check(err, truth) { + if (err) return callback(err); + if (err === false) return; + if (!truth) return callback(null, ...results); + _fn(next); + } + + return _test(check); +} +exports.default = (0, _awaitify2.default)(whilst, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/each.js b/node_modules/async/each.js new file mode 100644 index 0000000..fdfcbd8 --- /dev/null +++ b/node_modules/async/each.js @@ -0,0 +1,129 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _eachOf = require('./eachOf.js'); + +var _eachOf2 = _interopRequireDefault(_eachOf); + +var _withoutIndex = require('./internal/withoutIndex.js'); + +var _withoutIndex2 = _interopRequireDefault(_withoutIndex); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Applies the function `iteratee` to each item in `coll`, in parallel. + * The `iteratee` is called with an item from the list, and a callback for when + * it has finished. If the `iteratee` passes an error to its `callback`, the + * main `callback` (for the `each` function) is immediately called with the + * error. + * + * Note, that since this function applies `iteratee` to each item in parallel, + * there is no guarantee that the iteratee functions will complete in order. + * + * @name each + * @static + * @memberOf module:Collections + * @method + * @alias forEach + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to + * each item in `coll`. Invoked with (item, callback). + * The array index is not passed to the iteratee. + * If you need the index, use `eachOf`. + * @param {Function} [callback] - A callback which is called when all + * `iteratee` functions have finished, or an error occurs. Invoked with (err). + * @returns {Promise} a promise, if a callback is omitted + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * // dir4 does not exist + * + * const fileList = [ 'dir1/file2.txt', 'dir2/file3.txt', 'dir/file5.txt']; + * const withMissingFileList = ['dir1/file1.txt', 'dir4/file2.txt']; + * + * // asynchronous function that deletes a file + * const deleteFile = function(file, callback) { + * fs.unlink(file, callback); + * }; + * + * // Using callbacks + * async.each(fileList, deleteFile, function(err) { + * if( err ) { + * console.log(err); + * } else { + * console.log('All files have been deleted successfully'); + * } + * }); + * + * // Error Handling + * async.each(withMissingFileList, deleteFile, function(err){ + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * // since dir4/file2.txt does not exist + * // dir1/file1.txt could have been deleted + * }); + * + * // Using Promises + * async.each(fileList, deleteFile) + * .then( () => { + * console.log('All files have been deleted successfully'); + * }).catch( err => { + * console.log(err); + * }); + * + * // Error Handling + * async.each(fileList, deleteFile) + * .then( () => { + * console.log('All files have been deleted successfully'); + * }).catch( err => { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * // since dir4/file2.txt does not exist + * // dir1/file1.txt could have been deleted + * }); + * + * // Using async/await + * async () => { + * try { + * await async.each(files, deleteFile); + * } + * catch (err) { + * console.log(err); + * } + * } + * + * // Error Handling + * async () => { + * try { + * await async.each(withMissingFileList, deleteFile); + * } + * catch (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * // since dir4/file2.txt does not exist + * // dir1/file1.txt could have been deleted + * } + * } + * + */ +function eachLimit(coll, iteratee, callback) { + return (0, _eachOf2.default)(coll, (0, _withoutIndex2.default)((0, _wrapAsync2.default)(iteratee)), callback); +} + +exports.default = (0, _awaitify2.default)(eachLimit, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/eachLimit.js b/node_modules/async/eachLimit.js new file mode 100644 index 0000000..7f5928c --- /dev/null +++ b/node_modules/async/eachLimit.js @@ -0,0 +1,50 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _eachOfLimit = require('./internal/eachOfLimit.js'); + +var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit); + +var _withoutIndex = require('./internal/withoutIndex.js'); + +var _withoutIndex2 = _interopRequireDefault(_withoutIndex); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`each`]{@link module:Collections.each} but runs a maximum of `limit` async operations at a time. + * + * @name eachLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.each]{@link module:Collections.each} + * @alias forEachLimit + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The array index is not passed to the iteratee. + * If you need the index, use `eachOfLimit`. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called when all + * `iteratee` functions have finished, or an error occurs. Invoked with (err). + * @returns {Promise} a promise, if a callback is omitted + */ +function eachLimit(coll, limit, iteratee, callback) { + return (0, _eachOfLimit2.default)(limit)(coll, (0, _withoutIndex2.default)((0, _wrapAsync2.default)(iteratee)), callback); +} +exports.default = (0, _awaitify2.default)(eachLimit, 4); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/eachOf.js b/node_modules/async/eachOf.js new file mode 100644 index 0000000..9ed20f6 --- /dev/null +++ b/node_modules/async/eachOf.js @@ -0,0 +1,185 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _isArrayLike = require('./internal/isArrayLike.js'); + +var _isArrayLike2 = _interopRequireDefault(_isArrayLike); + +var _breakLoop = require('./internal/breakLoop.js'); + +var _breakLoop2 = _interopRequireDefault(_breakLoop); + +var _eachOfLimit = require('./eachOfLimit.js'); + +var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit); + +var _once = require('./internal/once.js'); + +var _once2 = _interopRequireDefault(_once); + +var _onlyOnce = require('./internal/onlyOnce.js'); + +var _onlyOnce2 = _interopRequireDefault(_onlyOnce); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +// eachOf implementation optimized for array-likes +function eachOfArrayLike(coll, iteratee, callback) { + callback = (0, _once2.default)(callback); + var index = 0, + completed = 0, + { length } = coll, + canceled = false; + if (length === 0) { + callback(null); + } + + function iteratorCallback(err, value) { + if (err === false) { + canceled = true; + } + if (canceled === true) return; + if (err) { + callback(err); + } else if (++completed === length || value === _breakLoop2.default) { + callback(null); + } + } + + for (; index < length; index++) { + iteratee(coll[index], index, (0, _onlyOnce2.default)(iteratorCallback)); + } +} + +// a generic version of eachOf which can handle array, object, and iterator cases. +function eachOfGeneric(coll, iteratee, callback) { + return (0, _eachOfLimit2.default)(coll, Infinity, iteratee, callback); +} + +/** + * Like [`each`]{@link module:Collections.each}, except that it passes the key (or index) as the second argument + * to the iteratee. + * + * @name eachOf + * @static + * @memberOf module:Collections + * @method + * @alias forEachOf + * @category Collection + * @see [async.each]{@link module:Collections.each} + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - A function to apply to each + * item in `coll`. + * The `key` is the item's key, or index in the case of an array. + * Invoked with (item, key, callback). + * @param {Function} [callback] - A callback which is called when all + * `iteratee` functions have finished, or an error occurs. Invoked with (err). + * @returns {Promise} a promise, if a callback is omitted + * @example + * + * // dev.json is a file containing a valid json object config for dev environment + * // dev.json is a file containing a valid json object config for test environment + * // prod.json is a file containing a valid json object config for prod environment + * // invalid.json is a file with a malformed json object + * + * let configs = {}; //global variable + * let validConfigFileMap = {dev: 'dev.json', test: 'test.json', prod: 'prod.json'}; + * let invalidConfigFileMap = {dev: 'dev.json', test: 'test.json', invalid: 'invalid.json'}; + * + * // asynchronous function that reads a json file and parses the contents as json object + * function parseFile(file, key, callback) { + * fs.readFile(file, "utf8", function(err, data) { + * if (err) return calback(err); + * try { + * configs[key] = JSON.parse(data); + * } catch (e) { + * return callback(e); + * } + * callback(); + * }); + * } + * + * // Using callbacks + * async.forEachOf(validConfigFileMap, parseFile, function (err) { + * if (err) { + * console.error(err); + * } else { + * console.log(configs); + * // configs is now a map of JSON data, e.g. + * // { dev: //parsed dev.json, test: //parsed test.json, prod: //parsed prod.json} + * } + * }); + * + * //Error handing + * async.forEachOf(invalidConfigFileMap, parseFile, function (err) { + * if (err) { + * console.error(err); + * // JSON parse error exception + * } else { + * console.log(configs); + * } + * }); + * + * // Using Promises + * async.forEachOf(validConfigFileMap, parseFile) + * .then( () => { + * console.log(configs); + * // configs is now a map of JSON data, e.g. + * // { dev: //parsed dev.json, test: //parsed test.json, prod: //parsed prod.json} + * }).catch( err => { + * console.error(err); + * }); + * + * //Error handing + * async.forEachOf(invalidConfigFileMap, parseFile) + * .then( () => { + * console.log(configs); + * }).catch( err => { + * console.error(err); + * // JSON parse error exception + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.forEachOf(validConfigFileMap, parseFile); + * console.log(configs); + * // configs is now a map of JSON data, e.g. + * // { dev: //parsed dev.json, test: //parsed test.json, prod: //parsed prod.json} + * } + * catch (err) { + * console.log(err); + * } + * } + * + * //Error handing + * async () => { + * try { + * let result = await async.forEachOf(invalidConfigFileMap, parseFile); + * console.log(configs); + * } + * catch (err) { + * console.log(err); + * // JSON parse error exception + * } + * } + * + */ +function eachOf(coll, iteratee, callback) { + var eachOfImplementation = (0, _isArrayLike2.default)(coll) ? eachOfArrayLike : eachOfGeneric; + return eachOfImplementation(coll, (0, _wrapAsync2.default)(iteratee), callback); +} + +exports.default = (0, _awaitify2.default)(eachOf, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/eachOfLimit.js b/node_modules/async/eachOfLimit.js new file mode 100644 index 0000000..a596e5a --- /dev/null +++ b/node_modules/async/eachOfLimit.js @@ -0,0 +1,47 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _eachOfLimit2 = require('./internal/eachOfLimit.js'); + +var _eachOfLimit3 = _interopRequireDefault(_eachOfLimit2); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`eachOf`]{@link module:Collections.eachOf} but runs a maximum of `limit` async operations at a + * time. + * + * @name eachOfLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.eachOf]{@link module:Collections.eachOf} + * @alias forEachOfLimit + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - An async function to apply to each + * item in `coll`. The `key` is the item's key, or index in the case of an + * array. + * Invoked with (item, key, callback). + * @param {Function} [callback] - A callback which is called when all + * `iteratee` functions have finished, or an error occurs. Invoked with (err). + * @returns {Promise} a promise, if a callback is omitted + */ +function eachOfLimit(coll, limit, iteratee, callback) { + return (0, _eachOfLimit3.default)(limit)(coll, (0, _wrapAsync2.default)(iteratee), callback); +} + +exports.default = (0, _awaitify2.default)(eachOfLimit, 4); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/eachOfSeries.js b/node_modules/async/eachOfSeries.js new file mode 100644 index 0000000..04243ad --- /dev/null +++ b/node_modules/async/eachOfSeries.js @@ -0,0 +1,39 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _eachOfLimit = require('./eachOfLimit.js'); + +var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`eachOf`]{@link module:Collections.eachOf} but runs only a single async operation at a time. + * + * @name eachOfSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.eachOf]{@link module:Collections.eachOf} + * @alias forEachOfSeries + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * Invoked with (item, key, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. Invoked with (err). + * @returns {Promise} a promise, if a callback is omitted + */ +function eachOfSeries(coll, iteratee, callback) { + return (0, _eachOfLimit2.default)(coll, 1, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(eachOfSeries, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/eachSeries.js b/node_modules/async/eachSeries.js new file mode 100644 index 0000000..b04896e --- /dev/null +++ b/node_modules/async/eachSeries.js @@ -0,0 +1,44 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _eachLimit = require('./eachLimit.js'); + +var _eachLimit2 = _interopRequireDefault(_eachLimit); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`each`]{@link module:Collections.each} but runs only a single async operation at a time. + * + * Note, that unlike [`each`]{@link module:Collections.each}, this function applies iteratee to each item + * in series and therefore the iteratee functions will complete in order. + + * @name eachSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.each]{@link module:Collections.each} + * @alias forEachSeries + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to each + * item in `coll`. + * The array index is not passed to the iteratee. + * If you need the index, use `eachOfSeries`. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called when all + * `iteratee` functions have finished, or an error occurs. Invoked with (err). + * @returns {Promise} a promise, if a callback is omitted + */ +function eachSeries(coll, iteratee, callback) { + return (0, _eachLimit2.default)(coll, 1, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(eachSeries, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/ensureAsync.js b/node_modules/async/ensureAsync.js new file mode 100644 index 0000000..749c5da --- /dev/null +++ b/node_modules/async/ensureAsync.js @@ -0,0 +1,67 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = ensureAsync; + +var _setImmediate = require('./internal/setImmediate.js'); + +var _setImmediate2 = _interopRequireDefault(_setImmediate); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Wrap an async function and ensure it calls its callback on a later tick of + * the event loop. If the function already calls its callback on a next tick, + * no extra deferral is added. This is useful for preventing stack overflows + * (`RangeError: Maximum call stack size exceeded`) and generally keeping + * [Zalgo](http://blog.izs.me/post/59142742143/designing-apis-for-asynchrony) + * contained. ES2017 `async` functions are returned as-is -- they are immune + * to Zalgo's corrupting influences, as they always resolve on a later tick. + * + * @name ensureAsync + * @static + * @memberOf module:Utils + * @method + * @category Util + * @param {AsyncFunction} fn - an async function, one that expects a node-style + * callback as its last argument. + * @returns {AsyncFunction} Returns a wrapped function with the exact same call + * signature as the function passed in. + * @example + * + * function sometimesAsync(arg, callback) { + * if (cache[arg]) { + * return callback(null, cache[arg]); // this would be synchronous!! + * } else { + * doSomeIO(arg, callback); // this IO would be asynchronous + * } + * } + * + * // this has a risk of stack overflows if many results are cached in a row + * async.mapSeries(args, sometimesAsync, done); + * + * // this will defer sometimesAsync's callback if necessary, + * // preventing stack overflows + * async.mapSeries(args, async.ensureAsync(sometimesAsync), done); + */ +function ensureAsync(fn) { + if ((0, _wrapAsync.isAsync)(fn)) return fn; + return function (...args /*, callback*/) { + var callback = args.pop(); + var sync = true; + args.push((...innerArgs) => { + if (sync) { + (0, _setImmediate2.default)(() => callback(...innerArgs)); + } else { + callback(...innerArgs); + } + }); + fn.apply(this, args); + sync = false; + }; +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/every.js b/node_modules/async/every.js new file mode 100644 index 0000000..622b301 --- /dev/null +++ b/node_modules/async/every.js @@ -0,0 +1,119 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createTester = require('./internal/createTester.js'); + +var _createTester2 = _interopRequireDefault(_createTester); + +var _eachOf = require('./eachOf.js'); + +var _eachOf2 = _interopRequireDefault(_eachOf); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Returns `true` if every element in `coll` satisfies an async test. If any + * iteratee call returns `false`, the main `callback` is immediately called. + * + * @name every + * @static + * @memberOf module:Collections + * @method + * @alias all + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collection in parallel. + * The iteratee must complete with a boolean result value. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Result will be either `true` or `false` + * depending on the values of the async tests. Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * // dir4 does not exist + * + * const fileList = ['dir1/file1.txt','dir2/file3.txt','dir3/file5.txt']; + * const withMissingFileList = ['file1.txt','file2.txt','file4.txt']; + * + * // asynchronous function that checks if a file exists + * function fileExists(file, callback) { + * fs.access(file, fs.constants.F_OK, (err) => { + * callback(null, !err); + * }); + * } + * + * // Using callbacks + * async.every(fileList, fileExists, function(err, result) { + * console.log(result); + * // true + * // result is true since every file exists + * }); + * + * async.every(withMissingFileList, fileExists, function(err, result) { + * console.log(result); + * // false + * // result is false since NOT every file exists + * }); + * + * // Using Promises + * async.every(fileList, fileExists) + * .then( result => { + * console.log(result); + * // true + * // result is true since every file exists + * }).catch( err => { + * console.log(err); + * }); + * + * async.every(withMissingFileList, fileExists) + * .then( result => { + * console.log(result); + * // false + * // result is false since NOT every file exists + * }).catch( err => { + * console.log(err); + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.every(fileList, fileExists); + * console.log(result); + * // true + * // result is true since every file exists + * } + * catch (err) { + * console.log(err); + * } + * } + * + * async () => { + * try { + * let result = await async.every(withMissingFileList, fileExists); + * console.log(result); + * // false + * // result is false since NOT every file exists + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ +function every(coll, iteratee, callback) { + return (0, _createTester2.default)(bool => !bool, res => !res)(_eachOf2.default, coll, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(every, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/everyLimit.js b/node_modules/async/everyLimit.js new file mode 100644 index 0000000..375e126 --- /dev/null +++ b/node_modules/async/everyLimit.js @@ -0,0 +1,46 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createTester = require('./internal/createTester.js'); + +var _createTester2 = _interopRequireDefault(_createTester); + +var _eachOfLimit = require('./internal/eachOfLimit.js'); + +var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`every`]{@link module:Collections.every} but runs a maximum of `limit` async operations at a time. + * + * @name everyLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.every]{@link module:Collections.every} + * @alias allLimit + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collection in parallel. + * The iteratee must complete with a boolean result value. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Result will be either `true` or `false` + * depending on the values of the async tests. Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + */ +function everyLimit(coll, limit, iteratee, callback) { + return (0, _createTester2.default)(bool => !bool, res => !res)((0, _eachOfLimit2.default)(limit), coll, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(everyLimit, 4); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/everySeries.js b/node_modules/async/everySeries.js new file mode 100644 index 0000000..9a6bf7d --- /dev/null +++ b/node_modules/async/everySeries.js @@ -0,0 +1,45 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createTester = require('./internal/createTester.js'); + +var _createTester2 = _interopRequireDefault(_createTester); + +var _eachOfSeries = require('./eachOfSeries.js'); + +var _eachOfSeries2 = _interopRequireDefault(_eachOfSeries); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`every`]{@link module:Collections.every} but runs only a single async operation at a time. + * + * @name everySeries + * @static + * @memberOf module:Collections + * @method + * @see [async.every]{@link module:Collections.every} + * @alias allSeries + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collection in series. + * The iteratee must complete with a boolean result value. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Result will be either `true` or `false` + * depending on the values of the async tests. Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + */ +function everySeries(coll, iteratee, callback) { + return (0, _createTester2.default)(bool => !bool, res => !res)(_eachOfSeries2.default, coll, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(everySeries, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/filter.js b/node_modules/async/filter.js new file mode 100644 index 0000000..2c9a63d --- /dev/null +++ b/node_modules/async/filter.js @@ -0,0 +1,93 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _filter2 = require('./internal/filter.js'); + +var _filter3 = _interopRequireDefault(_filter2); + +var _eachOf = require('./eachOf.js'); + +var _eachOf2 = _interopRequireDefault(_eachOf); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Returns a new array of all the values in `coll` which pass an async truth + * test. This operation is performed in parallel, but the results array will be + * in the same order as the original. + * + * @name filter + * @static + * @memberOf module:Collections + * @method + * @alias select + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {Function} iteratee - A truth test to apply to each item in `coll`. + * The `iteratee` is passed a `callback(err, truthValue)`, which must be called + * with a boolean argument once it has completed. Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Invoked with (err, results). + * @returns {Promise} a promise, if no callback provided + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * + * const files = ['dir1/file1.txt','dir2/file3.txt','dir3/file6.txt']; + * + * // asynchronous function that checks if a file exists + * function fileExists(file, callback) { + * fs.access(file, fs.constants.F_OK, (err) => { + * callback(null, !err); + * }); + * } + * + * // Using callbacks + * async.filter(files, fileExists, function(err, results) { + * if(err) { + * console.log(err); + * } else { + * console.log(results); + * // [ 'dir1/file1.txt', 'dir2/file3.txt' ] + * // results is now an array of the existing files + * } + * }); + * + * // Using Promises + * async.filter(files, fileExists) + * .then(results => { + * console.log(results); + * // [ 'dir1/file1.txt', 'dir2/file3.txt' ] + * // results is now an array of the existing files + * }).catch(err => { + * console.log(err); + * }); + * + * // Using async/await + * async () => { + * try { + * let results = await async.filter(files, fileExists); + * console.log(results); + * // [ 'dir1/file1.txt', 'dir2/file3.txt' ] + * // results is now an array of the existing files + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ +function filter(coll, iteratee, callback) { + return (0, _filter3.default)(_eachOf2.default, coll, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(filter, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/filterLimit.js b/node_modules/async/filterLimit.js new file mode 100644 index 0000000..d3b3f50 --- /dev/null +++ b/node_modules/async/filterLimit.js @@ -0,0 +1,45 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _filter2 = require('./internal/filter.js'); + +var _filter3 = _interopRequireDefault(_filter2); + +var _eachOfLimit = require('./internal/eachOfLimit.js'); + +var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`filter`]{@link module:Collections.filter} but runs a maximum of `limit` async operations at a + * time. + * + * @name filterLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.filter]{@link module:Collections.filter} + * @alias selectLimit + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {Function} iteratee - A truth test to apply to each item in `coll`. + * The `iteratee` is passed a `callback(err, truthValue)`, which must be called + * with a boolean argument once it has completed. Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Invoked with (err, results). + * @returns {Promise} a promise, if no callback provided + */ +function filterLimit(coll, limit, iteratee, callback) { + return (0, _filter3.default)((0, _eachOfLimit2.default)(limit), coll, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(filterLimit, 4); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/filterSeries.js b/node_modules/async/filterSeries.js new file mode 100644 index 0000000..019a2d0 --- /dev/null +++ b/node_modules/async/filterSeries.js @@ -0,0 +1,43 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _filter2 = require('./internal/filter.js'); + +var _filter3 = _interopRequireDefault(_filter2); + +var _eachOfSeries = require('./eachOfSeries.js'); + +var _eachOfSeries2 = _interopRequireDefault(_eachOfSeries); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`filter`]{@link module:Collections.filter} but runs only a single async operation at a time. + * + * @name filterSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.filter]{@link module:Collections.filter} + * @alias selectSeries + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {Function} iteratee - A truth test to apply to each item in `coll`. + * The `iteratee` is passed a `callback(err, truthValue)`, which must be called + * with a boolean argument once it has completed. Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Invoked with (err, results) + * @returns {Promise} a promise, if no callback provided + */ +function filterSeries(coll, iteratee, callback) { + return (0, _filter3.default)(_eachOfSeries2.default, coll, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(filterSeries, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/find.js b/node_modules/async/find.js new file mode 100644 index 0000000..d5896ef --- /dev/null +++ b/node_modules/async/find.js @@ -0,0 +1,96 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createTester = require('./internal/createTester.js'); + +var _createTester2 = _interopRequireDefault(_createTester); + +var _eachOf = require('./eachOf.js'); + +var _eachOf2 = _interopRequireDefault(_eachOf); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Returns the first value in `coll` that passes an async truth test. The + * `iteratee` is applied in parallel, meaning the first iteratee to return + * `true` will fire the detect `callback` with that result. That means the + * result might not be the first item in the original `coll` (in terms of order) + * that passes the test. + + * If order within the original `coll` is important, then look at + * [`detectSeries`]{@link module:Collections.detectSeries}. + * + * @name detect + * @static + * @memberOf module:Collections + * @method + * @alias find + * @category Collections + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`. + * The iteratee must complete with a boolean value as its result. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called as soon as any + * iteratee returns `true`, or after all the `iteratee` functions have finished. + * Result will be the first item in the array that passes the truth test + * (iteratee) or the value `undefined` if none passed. Invoked with + * (err, result). + * @returns {Promise} a promise, if a callback is omitted + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * + * // asynchronous function that checks if a file exists + * function fileExists(file, callback) { + * fs.access(file, fs.constants.F_OK, (err) => { + * callback(null, !err); + * }); + * } + * + * async.detect(['file3.txt','file2.txt','dir1/file1.txt'], fileExists, + * function(err, result) { + * console.log(result); + * // dir1/file1.txt + * // result now equals the first file in the list that exists + * } + *); + * + * // Using Promises + * async.detect(['file3.txt','file2.txt','dir1/file1.txt'], fileExists) + * .then(result => { + * console.log(result); + * // dir1/file1.txt + * // result now equals the first file in the list that exists + * }).catch(err => { + * console.log(err); + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.detect(['file3.txt','file2.txt','dir1/file1.txt'], fileExists); + * console.log(result); + * // dir1/file1.txt + * // result now equals the file in the list that exists + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ +function detect(coll, iteratee, callback) { + return (0, _createTester2.default)(bool => bool, (res, item) => item)(_eachOf2.default, coll, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(detect, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/findLimit.js b/node_modules/async/findLimit.js new file mode 100644 index 0000000..c59843b --- /dev/null +++ b/node_modules/async/findLimit.js @@ -0,0 +1,48 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createTester = require('./internal/createTester.js'); + +var _createTester2 = _interopRequireDefault(_createTester); + +var _eachOfLimit = require('./internal/eachOfLimit.js'); + +var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`detect`]{@link module:Collections.detect} but runs a maximum of `limit` async operations at a + * time. + * + * @name detectLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.detect]{@link module:Collections.detect} + * @alias findLimit + * @category Collections + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`. + * The iteratee must complete with a boolean value as its result. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called as soon as any + * iteratee returns `true`, or after all the `iteratee` functions have finished. + * Result will be the first item in the array that passes the truth test + * (iteratee) or the value `undefined` if none passed. Invoked with + * (err, result). + * @returns {Promise} a promise, if a callback is omitted + */ +function detectLimit(coll, limit, iteratee, callback) { + return (0, _createTester2.default)(bool => bool, (res, item) => item)((0, _eachOfLimit2.default)(limit), coll, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(detectLimit, 4); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/findSeries.js b/node_modules/async/findSeries.js new file mode 100644 index 0000000..b486899 --- /dev/null +++ b/node_modules/async/findSeries.js @@ -0,0 +1,47 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createTester = require('./internal/createTester.js'); + +var _createTester2 = _interopRequireDefault(_createTester); + +var _eachOfLimit = require('./internal/eachOfLimit.js'); + +var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`detect`]{@link module:Collections.detect} but runs only a single async operation at a time. + * + * @name detectSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.detect]{@link module:Collections.detect} + * @alias findSeries + * @category Collections + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`. + * The iteratee must complete with a boolean value as its result. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called as soon as any + * iteratee returns `true`, or after all the `iteratee` functions have finished. + * Result will be the first item in the array that passes the truth test + * (iteratee) or the value `undefined` if none passed. Invoked with + * (err, result). + * @returns {Promise} a promise, if a callback is omitted + */ +function detectSeries(coll, iteratee, callback) { + return (0, _createTester2.default)(bool => bool, (res, item) => item)((0, _eachOfLimit2.default)(1), coll, iteratee, callback); +} + +exports.default = (0, _awaitify2.default)(detectSeries, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/flatMap.js b/node_modules/async/flatMap.js new file mode 100644 index 0000000..4540a79 --- /dev/null +++ b/node_modules/async/flatMap.js @@ -0,0 +1,115 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _concatLimit = require('./concatLimit.js'); + +var _concatLimit2 = _interopRequireDefault(_concatLimit); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Applies `iteratee` to each item in `coll`, concatenating the results. Returns + * the concatenated list. The `iteratee`s are called in parallel, and the + * results are concatenated as they return. The results array will be returned in + * the original order of `coll` passed to the `iteratee` function. + * + * @name concat + * @static + * @memberOf module:Collections + * @method + * @category Collection + * @alias flatMap + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - A function to apply to each item in `coll`, + * which should use an array as its result. Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished, or an error occurs. Results is an array + * containing the concatenated results of the `iteratee` function. Invoked with + * (err, results). + * @returns A Promise, if no callback is passed + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * // dir4 does not exist + * + * let directoryList = ['dir1','dir2','dir3']; + * let withMissingDirectoryList = ['dir1','dir2','dir3', 'dir4']; + * + * // Using callbacks + * async.concat(directoryList, fs.readdir, function(err, results) { + * if (err) { + * console.log(err); + * } else { + * console.log(results); + * // [ 'file1.txt', 'file2.txt', 'file3.txt', 'file4.txt', file5.txt ] + * } + * }); + * + * // Error Handling + * async.concat(withMissingDirectoryList, fs.readdir, function(err, results) { + * if (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * // since dir4 does not exist + * } else { + * console.log(results); + * } + * }); + * + * // Using Promises + * async.concat(directoryList, fs.readdir) + * .then(results => { + * console.log(results); + * // [ 'file1.txt', 'file2.txt', 'file3.txt', 'file4.txt', file5.txt ] + * }).catch(err => { + * console.log(err); + * }); + * + * // Error Handling + * async.concat(withMissingDirectoryList, fs.readdir) + * .then(results => { + * console.log(results); + * }).catch(err => { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * // since dir4 does not exist + * }); + * + * // Using async/await + * async () => { + * try { + * let results = await async.concat(directoryList, fs.readdir); + * console.log(results); + * // [ 'file1.txt', 'file2.txt', 'file3.txt', 'file4.txt', file5.txt ] + * } catch (err) { + * console.log(err); + * } + * } + * + * // Error Handling + * async () => { + * try { + * let results = await async.concat(withMissingDirectoryList, fs.readdir); + * console.log(results); + * } catch (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * // since dir4 does not exist + * } + * } + * + */ +function concat(coll, iteratee, callback) { + return (0, _concatLimit2.default)(coll, Infinity, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(concat, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/flatMapLimit.js b/node_modules/async/flatMapLimit.js new file mode 100644 index 0000000..a27cc7d --- /dev/null +++ b/node_modules/async/flatMapLimit.js @@ -0,0 +1,60 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _mapLimit = require('./mapLimit.js'); + +var _mapLimit2 = _interopRequireDefault(_mapLimit); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`concat`]{@link module:Collections.concat} but runs a maximum of `limit` async operations at a time. + * + * @name concatLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.concat]{@link module:Collections.concat} + * @category Collection + * @alias flatMapLimit + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - A function to apply to each item in `coll`, + * which should use an array as its result. Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished, or an error occurs. Results is an array + * containing the concatenated results of the `iteratee` function. Invoked with + * (err, results). + * @returns A Promise, if no callback is passed + */ +function concatLimit(coll, limit, iteratee, callback) { + var _iteratee = (0, _wrapAsync2.default)(iteratee); + return (0, _mapLimit2.default)(coll, limit, (val, iterCb) => { + _iteratee(val, (err, ...args) => { + if (err) return iterCb(err); + return iterCb(err, args); + }); + }, (err, mapResults) => { + var result = []; + for (var i = 0; i < mapResults.length; i++) { + if (mapResults[i]) { + result = result.concat(...mapResults[i]); + } + } + + return callback(err, result); + }); +} +exports.default = (0, _awaitify2.default)(concatLimit, 4); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/flatMapSeries.js b/node_modules/async/flatMapSeries.js new file mode 100644 index 0000000..332de3f --- /dev/null +++ b/node_modules/async/flatMapSeries.js @@ -0,0 +1,41 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _concatLimit = require('./concatLimit.js'); + +var _concatLimit2 = _interopRequireDefault(_concatLimit); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`concat`]{@link module:Collections.concat} but runs only a single async operation at a time. + * + * @name concatSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.concat]{@link module:Collections.concat} + * @category Collection + * @alias flatMapSeries + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - A function to apply to each item in `coll`. + * The iteratee should complete with an array an array of results. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished, or an error occurs. Results is an array + * containing the concatenated results of the `iteratee` function. Invoked with + * (err, results). + * @returns A Promise, if no callback is passed + */ +function concatSeries(coll, iteratee, callback) { + return (0, _concatLimit2.default)(coll, 1, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(concatSeries, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/foldl.js b/node_modules/async/foldl.js new file mode 100644 index 0000000..8a69548 --- /dev/null +++ b/node_modules/async/foldl.js @@ -0,0 +1,153 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _eachOfSeries = require('./eachOfSeries.js'); + +var _eachOfSeries2 = _interopRequireDefault(_eachOfSeries); + +var _once = require('./internal/once.js'); + +var _once2 = _interopRequireDefault(_once); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Reduces `coll` into a single value using an async `iteratee` to return each + * successive step. `memo` is the initial state of the reduction. This function + * only operates in series. + * + * For performance reasons, it may make sense to split a call to this function + * into a parallel map, and then use the normal `Array.prototype.reduce` on the + * results. This function is for situations where each step in the reduction + * needs to be async; if you can get the data before reducing it, then it's + * probably a good idea to do so. + * + * @name reduce + * @static + * @memberOf module:Collections + * @method + * @alias inject + * @alias foldl + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {*} memo - The initial state of the reduction. + * @param {AsyncFunction} iteratee - A function applied to each item in the + * array to produce the next step in the reduction. + * The `iteratee` should complete with the next state of the reduction. + * If the iteratee completes with an error, the reduction is stopped and the + * main `callback` is immediately called with the error. + * Invoked with (memo, item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Result is the reduced value. Invoked with + * (err, result). + * @returns {Promise} a promise, if no callback is passed + * @example + * + * // file1.txt is a file that is 1000 bytes in size + * // file2.txt is a file that is 2000 bytes in size + * // file3.txt is a file that is 3000 bytes in size + * // file4.txt does not exist + * + * const fileList = ['file1.txt','file2.txt','file3.txt']; + * const withMissingFileList = ['file1.txt','file2.txt','file3.txt', 'file4.txt']; + * + * // asynchronous function that computes the file size in bytes + * // file size is added to the memoized value, then returned + * function getFileSizeInBytes(memo, file, callback) { + * fs.stat(file, function(err, stat) { + * if (err) { + * return callback(err); + * } + * callback(null, memo + stat.size); + * }); + * } + * + * // Using callbacks + * async.reduce(fileList, 0, getFileSizeInBytes, function(err, result) { + * if (err) { + * console.log(err); + * } else { + * console.log(result); + * // 6000 + * // which is the sum of the file sizes of the three files + * } + * }); + * + * // Error Handling + * async.reduce(withMissingFileList, 0, getFileSizeInBytes, function(err, result) { + * if (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } else { + * console.log(result); + * } + * }); + * + * // Using Promises + * async.reduce(fileList, 0, getFileSizeInBytes) + * .then( result => { + * console.log(result); + * // 6000 + * // which is the sum of the file sizes of the three files + * }).catch( err => { + * console.log(err); + * }); + * + * // Error Handling + * async.reduce(withMissingFileList, 0, getFileSizeInBytes) + * .then( result => { + * console.log(result); + * }).catch( err => { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.reduce(fileList, 0, getFileSizeInBytes); + * console.log(result); + * // 6000 + * // which is the sum of the file sizes of the three files + * } + * catch (err) { + * console.log(err); + * } + * } + * + * // Error Handling + * async () => { + * try { + * let result = await async.reduce(withMissingFileList, 0, getFileSizeInBytes); + * console.log(result); + * } + * catch (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } + * } + * + */ +function reduce(coll, memo, iteratee, callback) { + callback = (0, _once2.default)(callback); + var _iteratee = (0, _wrapAsync2.default)(iteratee); + return (0, _eachOfSeries2.default)(coll, (x, i, iterCb) => { + _iteratee(memo, x, (err, v) => { + memo = v; + iterCb(err); + }); + }, err => callback(err, memo)); +} +exports.default = (0, _awaitify2.default)(reduce, 4); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/foldr.js b/node_modules/async/foldr.js new file mode 100644 index 0000000..5be1b68 --- /dev/null +++ b/node_modules/async/foldr.js @@ -0,0 +1,41 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = reduceRight; + +var _reduce = require('./reduce.js'); + +var _reduce2 = _interopRequireDefault(_reduce); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Same as [`reduce`]{@link module:Collections.reduce}, only operates on `array` in reverse order. + * + * @name reduceRight + * @static + * @memberOf module:Collections + * @method + * @see [async.reduce]{@link module:Collections.reduce} + * @alias foldr + * @category Collection + * @param {Array} array - A collection to iterate over. + * @param {*} memo - The initial state of the reduction. + * @param {AsyncFunction} iteratee - A function applied to each item in the + * array to produce the next step in the reduction. + * The `iteratee` should complete with the next state of the reduction. + * If the iteratee completes with an error, the reduction is stopped and the + * main `callback` is immediately called with the error. + * Invoked with (memo, item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Result is the reduced value. Invoked with + * (err, result). + * @returns {Promise} a promise, if no callback is passed + */ +function reduceRight(array, memo, iteratee, callback) { + var reversed = [...array].reverse(); + return (0, _reduce2.default)(reversed, memo, iteratee, callback); +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/forEach.js b/node_modules/async/forEach.js new file mode 100644 index 0000000..fdfcbd8 --- /dev/null +++ b/node_modules/async/forEach.js @@ -0,0 +1,129 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _eachOf = require('./eachOf.js'); + +var _eachOf2 = _interopRequireDefault(_eachOf); + +var _withoutIndex = require('./internal/withoutIndex.js'); + +var _withoutIndex2 = _interopRequireDefault(_withoutIndex); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Applies the function `iteratee` to each item in `coll`, in parallel. + * The `iteratee` is called with an item from the list, and a callback for when + * it has finished. If the `iteratee` passes an error to its `callback`, the + * main `callback` (for the `each` function) is immediately called with the + * error. + * + * Note, that since this function applies `iteratee` to each item in parallel, + * there is no guarantee that the iteratee functions will complete in order. + * + * @name each + * @static + * @memberOf module:Collections + * @method + * @alias forEach + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to + * each item in `coll`. Invoked with (item, callback). + * The array index is not passed to the iteratee. + * If you need the index, use `eachOf`. + * @param {Function} [callback] - A callback which is called when all + * `iteratee` functions have finished, or an error occurs. Invoked with (err). + * @returns {Promise} a promise, if a callback is omitted + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * // dir4 does not exist + * + * const fileList = [ 'dir1/file2.txt', 'dir2/file3.txt', 'dir/file5.txt']; + * const withMissingFileList = ['dir1/file1.txt', 'dir4/file2.txt']; + * + * // asynchronous function that deletes a file + * const deleteFile = function(file, callback) { + * fs.unlink(file, callback); + * }; + * + * // Using callbacks + * async.each(fileList, deleteFile, function(err) { + * if( err ) { + * console.log(err); + * } else { + * console.log('All files have been deleted successfully'); + * } + * }); + * + * // Error Handling + * async.each(withMissingFileList, deleteFile, function(err){ + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * // since dir4/file2.txt does not exist + * // dir1/file1.txt could have been deleted + * }); + * + * // Using Promises + * async.each(fileList, deleteFile) + * .then( () => { + * console.log('All files have been deleted successfully'); + * }).catch( err => { + * console.log(err); + * }); + * + * // Error Handling + * async.each(fileList, deleteFile) + * .then( () => { + * console.log('All files have been deleted successfully'); + * }).catch( err => { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * // since dir4/file2.txt does not exist + * // dir1/file1.txt could have been deleted + * }); + * + * // Using async/await + * async () => { + * try { + * await async.each(files, deleteFile); + * } + * catch (err) { + * console.log(err); + * } + * } + * + * // Error Handling + * async () => { + * try { + * await async.each(withMissingFileList, deleteFile); + * } + * catch (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * // since dir4/file2.txt does not exist + * // dir1/file1.txt could have been deleted + * } + * } + * + */ +function eachLimit(coll, iteratee, callback) { + return (0, _eachOf2.default)(coll, (0, _withoutIndex2.default)((0, _wrapAsync2.default)(iteratee)), callback); +} + +exports.default = (0, _awaitify2.default)(eachLimit, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/forEachLimit.js b/node_modules/async/forEachLimit.js new file mode 100644 index 0000000..7f5928c --- /dev/null +++ b/node_modules/async/forEachLimit.js @@ -0,0 +1,50 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _eachOfLimit = require('./internal/eachOfLimit.js'); + +var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit); + +var _withoutIndex = require('./internal/withoutIndex.js'); + +var _withoutIndex2 = _interopRequireDefault(_withoutIndex); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`each`]{@link module:Collections.each} but runs a maximum of `limit` async operations at a time. + * + * @name eachLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.each]{@link module:Collections.each} + * @alias forEachLimit + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The array index is not passed to the iteratee. + * If you need the index, use `eachOfLimit`. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called when all + * `iteratee` functions have finished, or an error occurs. Invoked with (err). + * @returns {Promise} a promise, if a callback is omitted + */ +function eachLimit(coll, limit, iteratee, callback) { + return (0, _eachOfLimit2.default)(limit)(coll, (0, _withoutIndex2.default)((0, _wrapAsync2.default)(iteratee)), callback); +} +exports.default = (0, _awaitify2.default)(eachLimit, 4); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/forEachOf.js b/node_modules/async/forEachOf.js new file mode 100644 index 0000000..9ed20f6 --- /dev/null +++ b/node_modules/async/forEachOf.js @@ -0,0 +1,185 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _isArrayLike = require('./internal/isArrayLike.js'); + +var _isArrayLike2 = _interopRequireDefault(_isArrayLike); + +var _breakLoop = require('./internal/breakLoop.js'); + +var _breakLoop2 = _interopRequireDefault(_breakLoop); + +var _eachOfLimit = require('./eachOfLimit.js'); + +var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit); + +var _once = require('./internal/once.js'); + +var _once2 = _interopRequireDefault(_once); + +var _onlyOnce = require('./internal/onlyOnce.js'); + +var _onlyOnce2 = _interopRequireDefault(_onlyOnce); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +// eachOf implementation optimized for array-likes +function eachOfArrayLike(coll, iteratee, callback) { + callback = (0, _once2.default)(callback); + var index = 0, + completed = 0, + { length } = coll, + canceled = false; + if (length === 0) { + callback(null); + } + + function iteratorCallback(err, value) { + if (err === false) { + canceled = true; + } + if (canceled === true) return; + if (err) { + callback(err); + } else if (++completed === length || value === _breakLoop2.default) { + callback(null); + } + } + + for (; index < length; index++) { + iteratee(coll[index], index, (0, _onlyOnce2.default)(iteratorCallback)); + } +} + +// a generic version of eachOf which can handle array, object, and iterator cases. +function eachOfGeneric(coll, iteratee, callback) { + return (0, _eachOfLimit2.default)(coll, Infinity, iteratee, callback); +} + +/** + * Like [`each`]{@link module:Collections.each}, except that it passes the key (or index) as the second argument + * to the iteratee. + * + * @name eachOf + * @static + * @memberOf module:Collections + * @method + * @alias forEachOf + * @category Collection + * @see [async.each]{@link module:Collections.each} + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - A function to apply to each + * item in `coll`. + * The `key` is the item's key, or index in the case of an array. + * Invoked with (item, key, callback). + * @param {Function} [callback] - A callback which is called when all + * `iteratee` functions have finished, or an error occurs. Invoked with (err). + * @returns {Promise} a promise, if a callback is omitted + * @example + * + * // dev.json is a file containing a valid json object config for dev environment + * // dev.json is a file containing a valid json object config for test environment + * // prod.json is a file containing a valid json object config for prod environment + * // invalid.json is a file with a malformed json object + * + * let configs = {}; //global variable + * let validConfigFileMap = {dev: 'dev.json', test: 'test.json', prod: 'prod.json'}; + * let invalidConfigFileMap = {dev: 'dev.json', test: 'test.json', invalid: 'invalid.json'}; + * + * // asynchronous function that reads a json file and parses the contents as json object + * function parseFile(file, key, callback) { + * fs.readFile(file, "utf8", function(err, data) { + * if (err) return calback(err); + * try { + * configs[key] = JSON.parse(data); + * } catch (e) { + * return callback(e); + * } + * callback(); + * }); + * } + * + * // Using callbacks + * async.forEachOf(validConfigFileMap, parseFile, function (err) { + * if (err) { + * console.error(err); + * } else { + * console.log(configs); + * // configs is now a map of JSON data, e.g. + * // { dev: //parsed dev.json, test: //parsed test.json, prod: //parsed prod.json} + * } + * }); + * + * //Error handing + * async.forEachOf(invalidConfigFileMap, parseFile, function (err) { + * if (err) { + * console.error(err); + * // JSON parse error exception + * } else { + * console.log(configs); + * } + * }); + * + * // Using Promises + * async.forEachOf(validConfigFileMap, parseFile) + * .then( () => { + * console.log(configs); + * // configs is now a map of JSON data, e.g. + * // { dev: //parsed dev.json, test: //parsed test.json, prod: //parsed prod.json} + * }).catch( err => { + * console.error(err); + * }); + * + * //Error handing + * async.forEachOf(invalidConfigFileMap, parseFile) + * .then( () => { + * console.log(configs); + * }).catch( err => { + * console.error(err); + * // JSON parse error exception + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.forEachOf(validConfigFileMap, parseFile); + * console.log(configs); + * // configs is now a map of JSON data, e.g. + * // { dev: //parsed dev.json, test: //parsed test.json, prod: //parsed prod.json} + * } + * catch (err) { + * console.log(err); + * } + * } + * + * //Error handing + * async () => { + * try { + * let result = await async.forEachOf(invalidConfigFileMap, parseFile); + * console.log(configs); + * } + * catch (err) { + * console.log(err); + * // JSON parse error exception + * } + * } + * + */ +function eachOf(coll, iteratee, callback) { + var eachOfImplementation = (0, _isArrayLike2.default)(coll) ? eachOfArrayLike : eachOfGeneric; + return eachOfImplementation(coll, (0, _wrapAsync2.default)(iteratee), callback); +} + +exports.default = (0, _awaitify2.default)(eachOf, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/forEachOfLimit.js b/node_modules/async/forEachOfLimit.js new file mode 100644 index 0000000..a596e5a --- /dev/null +++ b/node_modules/async/forEachOfLimit.js @@ -0,0 +1,47 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _eachOfLimit2 = require('./internal/eachOfLimit.js'); + +var _eachOfLimit3 = _interopRequireDefault(_eachOfLimit2); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`eachOf`]{@link module:Collections.eachOf} but runs a maximum of `limit` async operations at a + * time. + * + * @name eachOfLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.eachOf]{@link module:Collections.eachOf} + * @alias forEachOfLimit + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - An async function to apply to each + * item in `coll`. The `key` is the item's key, or index in the case of an + * array. + * Invoked with (item, key, callback). + * @param {Function} [callback] - A callback which is called when all + * `iteratee` functions have finished, or an error occurs. Invoked with (err). + * @returns {Promise} a promise, if a callback is omitted + */ +function eachOfLimit(coll, limit, iteratee, callback) { + return (0, _eachOfLimit3.default)(limit)(coll, (0, _wrapAsync2.default)(iteratee), callback); +} + +exports.default = (0, _awaitify2.default)(eachOfLimit, 4); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/forEachOfSeries.js b/node_modules/async/forEachOfSeries.js new file mode 100644 index 0000000..04243ad --- /dev/null +++ b/node_modules/async/forEachOfSeries.js @@ -0,0 +1,39 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _eachOfLimit = require('./eachOfLimit.js'); + +var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`eachOf`]{@link module:Collections.eachOf} but runs only a single async operation at a time. + * + * @name eachOfSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.eachOf]{@link module:Collections.eachOf} + * @alias forEachOfSeries + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * Invoked with (item, key, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. Invoked with (err). + * @returns {Promise} a promise, if a callback is omitted + */ +function eachOfSeries(coll, iteratee, callback) { + return (0, _eachOfLimit2.default)(coll, 1, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(eachOfSeries, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/forEachSeries.js b/node_modules/async/forEachSeries.js new file mode 100644 index 0000000..b04896e --- /dev/null +++ b/node_modules/async/forEachSeries.js @@ -0,0 +1,44 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _eachLimit = require('./eachLimit.js'); + +var _eachLimit2 = _interopRequireDefault(_eachLimit); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`each`]{@link module:Collections.each} but runs only a single async operation at a time. + * + * Note, that unlike [`each`]{@link module:Collections.each}, this function applies iteratee to each item + * in series and therefore the iteratee functions will complete in order. + + * @name eachSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.each]{@link module:Collections.each} + * @alias forEachSeries + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to each + * item in `coll`. + * The array index is not passed to the iteratee. + * If you need the index, use `eachOfSeries`. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called when all + * `iteratee` functions have finished, or an error occurs. Invoked with (err). + * @returns {Promise} a promise, if a callback is omitted + */ +function eachSeries(coll, iteratee, callback) { + return (0, _eachLimit2.default)(coll, 1, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(eachSeries, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/forever.js b/node_modules/async/forever.js new file mode 100644 index 0000000..2292518 --- /dev/null +++ b/node_modules/async/forever.js @@ -0,0 +1,68 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _onlyOnce = require('./internal/onlyOnce.js'); + +var _onlyOnce2 = _interopRequireDefault(_onlyOnce); + +var _ensureAsync = require('./ensureAsync.js'); + +var _ensureAsync2 = _interopRequireDefault(_ensureAsync); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Calls the asynchronous function `fn` with a callback parameter that allows it + * to call itself again, in series, indefinitely. + + * If an error is passed to the callback then `errback` is called with the + * error, and execution stops, otherwise it will never be called. + * + * @name forever + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {AsyncFunction} fn - an async function to call repeatedly. + * Invoked with (next). + * @param {Function} [errback] - when `fn` passes an error to it's callback, + * this function will be called, and execution stops. Invoked with (err). + * @returns {Promise} a promise that rejects if an error occurs and an errback + * is not passed + * @example + * + * async.forever( + * function(next) { + * // next is suitable for passing to things that need a callback(err [, whatever]); + * // it will result in this function being called again. + * }, + * function(err) { + * // if next is called with a value in its first parameter, it will appear + * // in here as 'err', and execution will stop. + * } + * ); + */ +function forever(fn, errback) { + var done = (0, _onlyOnce2.default)(errback); + var task = (0, _wrapAsync2.default)((0, _ensureAsync2.default)(fn)); + + function next(err) { + if (err) return done(err); + if (err === false) return; + task(next); + } + return next(); +} +exports.default = (0, _awaitify2.default)(forever, 2); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/groupBy.js b/node_modules/async/groupBy.js new file mode 100644 index 0000000..f295763 --- /dev/null +++ b/node_modules/async/groupBy.js @@ -0,0 +1,108 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = groupBy; + +var _groupByLimit = require('./groupByLimit.js'); + +var _groupByLimit2 = _interopRequireDefault(_groupByLimit); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Returns a new object, where each value corresponds to an array of items, from + * `coll`, that returned the corresponding key. That is, the keys of the object + * correspond to the values passed to the `iteratee` callback. + * + * Note: Since this function applies the `iteratee` to each item in parallel, + * there is no guarantee that the `iteratee` functions will complete in order. + * However, the values for each key in the `result` will be in the same order as + * the original `coll`. For Objects, the values will roughly be in the order of + * the original Objects' keys (but this can vary across JavaScript engines). + * + * @name groupBy + * @static + * @memberOf module:Collections + * @method + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The iteratee should complete with a `key` to group the value under. + * Invoked with (value, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. Result is an `Object` whoses + * properties are arrays of values which returned the corresponding key. + * @returns {Promise} a promise, if no callback is passed + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * // dir4 does not exist + * + * const files = ['dir1/file1.txt','dir2','dir4'] + * + * // asynchronous function that detects file type as none, file, or directory + * function detectFile(file, callback) { + * fs.stat(file, function(err, stat) { + * if (err) { + * return callback(null, 'none'); + * } + * callback(null, stat.isDirectory() ? 'directory' : 'file'); + * }); + * } + * + * //Using callbacks + * async.groupBy(files, detectFile, function(err, result) { + * if(err) { + * console.log(err); + * } else { + * console.log(result); + * // { + * // file: [ 'dir1/file1.txt' ], + * // none: [ 'dir4' ], + * // directory: [ 'dir2'] + * // } + * // result is object containing the files grouped by type + * } + * }); + * + * // Using Promises + * async.groupBy(files, detectFile) + * .then( result => { + * console.log(result); + * // { + * // file: [ 'dir1/file1.txt' ], + * // none: [ 'dir4' ], + * // directory: [ 'dir2'] + * // } + * // result is object containing the files grouped by type + * }).catch( err => { + * console.log(err); + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.groupBy(files, detectFile); + * console.log(result); + * // { + * // file: [ 'dir1/file1.txt' ], + * // none: [ 'dir4' ], + * // directory: [ 'dir2'] + * // } + * // result is object containing the files grouped by type + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ +function groupBy(coll, iteratee, callback) { + return (0, _groupByLimit2.default)(coll, Infinity, iteratee, callback); +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/groupByLimit.js b/node_modules/async/groupByLimit.js new file mode 100644 index 0000000..30fd290 --- /dev/null +++ b/node_modules/async/groupByLimit.js @@ -0,0 +1,71 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _mapLimit = require('./mapLimit.js'); + +var _mapLimit2 = _interopRequireDefault(_mapLimit); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`groupBy`]{@link module:Collections.groupBy} but runs a maximum of `limit` async operations at a time. + * + * @name groupByLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.groupBy]{@link module:Collections.groupBy} + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The iteratee should complete with a `key` to group the value under. + * Invoked with (value, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. Result is an `Object` whoses + * properties are arrays of values which returned the corresponding key. + * @returns {Promise} a promise, if no callback is passed + */ +function groupByLimit(coll, limit, iteratee, callback) { + var _iteratee = (0, _wrapAsync2.default)(iteratee); + return (0, _mapLimit2.default)(coll, limit, (val, iterCb) => { + _iteratee(val, (err, key) => { + if (err) return iterCb(err); + return iterCb(err, { key, val }); + }); + }, (err, mapResults) => { + var result = {}; + // from MDN, handle object having an `hasOwnProperty` prop + var { hasOwnProperty } = Object.prototype; + + for (var i = 0; i < mapResults.length; i++) { + if (mapResults[i]) { + var { key } = mapResults[i]; + var { val } = mapResults[i]; + + if (hasOwnProperty.call(result, key)) { + result[key].push(val); + } else { + result[key] = [val]; + } + } + } + + return callback(err, result); + }); +} + +exports.default = (0, _awaitify2.default)(groupByLimit, 4); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/groupBySeries.js b/node_modules/async/groupBySeries.js new file mode 100644 index 0000000..e2a5287 --- /dev/null +++ b/node_modules/async/groupBySeries.js @@ -0,0 +1,36 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = groupBySeries; + +var _groupByLimit = require('./groupByLimit.js'); + +var _groupByLimit2 = _interopRequireDefault(_groupByLimit); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`groupBy`]{@link module:Collections.groupBy} but runs only a single async operation at a time. + * + * @name groupBySeries + * @static + * @memberOf module:Collections + * @method + * @see [async.groupBy]{@link module:Collections.groupBy} + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The iteratee should complete with a `key` to group the value under. + * Invoked with (value, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. Result is an `Object` whose + * properties are arrays of values which returned the corresponding key. + * @returns {Promise} a promise, if no callback is passed + */ +function groupBySeries(coll, iteratee, callback) { + return (0, _groupByLimit2.default)(coll, 1, iteratee, callback); +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/index.js b/node_modules/async/index.js new file mode 100644 index 0000000..6154647 --- /dev/null +++ b/node_modules/async/index.js @@ -0,0 +1,588 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.doDuring = exports.during = exports.wrapSync = undefined; +exports.selectSeries = exports.selectLimit = exports.select = exports.foldr = exports.foldl = exports.inject = exports.forEachOfLimit = exports.forEachOfSeries = exports.forEachOf = exports.forEachLimit = exports.forEachSeries = exports.forEach = exports.flatMapSeries = exports.flatMapLimit = exports.flatMap = exports.findSeries = exports.findLimit = exports.find = exports.anySeries = exports.anyLimit = exports.any = exports.allSeries = exports.allLimit = exports.all = exports.whilst = exports.waterfall = exports.until = exports.unmemoize = exports.tryEach = exports.transform = exports.timesSeries = exports.timesLimit = exports.times = exports.timeout = exports.sortBy = exports.someSeries = exports.someLimit = exports.some = exports.setImmediate = exports.series = exports.seq = exports.retryable = exports.retry = exports.rejectSeries = exports.rejectLimit = exports.reject = exports.reflectAll = exports.reflect = exports.reduceRight = exports.reduce = exports.race = exports.queue = exports.priorityQueue = exports.parallelLimit = exports.parallel = exports.nextTick = exports.memoize = exports.mapValuesSeries = exports.mapValuesLimit = exports.mapValues = exports.mapSeries = exports.mapLimit = exports.map = exports.log = exports.groupBySeries = exports.groupByLimit = exports.groupBy = exports.forever = exports.filterSeries = exports.filterLimit = exports.filter = exports.everySeries = exports.everyLimit = exports.every = exports.ensureAsync = exports.eachSeries = exports.eachOfSeries = exports.eachOfLimit = exports.eachOf = exports.eachLimit = exports.each = exports.doWhilst = exports.doUntil = exports.dir = exports.detectSeries = exports.detectLimit = exports.detect = exports.constant = exports.concatSeries = exports.concatLimit = exports.concat = exports.compose = exports.cargoQueue = exports.cargo = exports.autoInject = exports.auto = exports.asyncify = exports.applyEachSeries = exports.applyEach = exports.apply = undefined; + +var _apply = require('./apply'); + +var _apply2 = _interopRequireDefault(_apply); + +var _applyEach = require('./applyEach'); + +var _applyEach2 = _interopRequireDefault(_applyEach); + +var _applyEachSeries = require('./applyEachSeries'); + +var _applyEachSeries2 = _interopRequireDefault(_applyEachSeries); + +var _asyncify = require('./asyncify'); + +var _asyncify2 = _interopRequireDefault(_asyncify); + +var _auto = require('./auto'); + +var _auto2 = _interopRequireDefault(_auto); + +var _autoInject = require('./autoInject'); + +var _autoInject2 = _interopRequireDefault(_autoInject); + +var _cargo = require('./cargo'); + +var _cargo2 = _interopRequireDefault(_cargo); + +var _cargoQueue = require('./cargoQueue'); + +var _cargoQueue2 = _interopRequireDefault(_cargoQueue); + +var _compose = require('./compose'); + +var _compose2 = _interopRequireDefault(_compose); + +var _concat = require('./concat'); + +var _concat2 = _interopRequireDefault(_concat); + +var _concatLimit = require('./concatLimit'); + +var _concatLimit2 = _interopRequireDefault(_concatLimit); + +var _concatSeries = require('./concatSeries'); + +var _concatSeries2 = _interopRequireDefault(_concatSeries); + +var _constant = require('./constant'); + +var _constant2 = _interopRequireDefault(_constant); + +var _detect = require('./detect'); + +var _detect2 = _interopRequireDefault(_detect); + +var _detectLimit = require('./detectLimit'); + +var _detectLimit2 = _interopRequireDefault(_detectLimit); + +var _detectSeries = require('./detectSeries'); + +var _detectSeries2 = _interopRequireDefault(_detectSeries); + +var _dir = require('./dir'); + +var _dir2 = _interopRequireDefault(_dir); + +var _doUntil = require('./doUntil'); + +var _doUntil2 = _interopRequireDefault(_doUntil); + +var _doWhilst = require('./doWhilst'); + +var _doWhilst2 = _interopRequireDefault(_doWhilst); + +var _each = require('./each'); + +var _each2 = _interopRequireDefault(_each); + +var _eachLimit = require('./eachLimit'); + +var _eachLimit2 = _interopRequireDefault(_eachLimit); + +var _eachOf = require('./eachOf'); + +var _eachOf2 = _interopRequireDefault(_eachOf); + +var _eachOfLimit = require('./eachOfLimit'); + +var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit); + +var _eachOfSeries = require('./eachOfSeries'); + +var _eachOfSeries2 = _interopRequireDefault(_eachOfSeries); + +var _eachSeries = require('./eachSeries'); + +var _eachSeries2 = _interopRequireDefault(_eachSeries); + +var _ensureAsync = require('./ensureAsync'); + +var _ensureAsync2 = _interopRequireDefault(_ensureAsync); + +var _every = require('./every'); + +var _every2 = _interopRequireDefault(_every); + +var _everyLimit = require('./everyLimit'); + +var _everyLimit2 = _interopRequireDefault(_everyLimit); + +var _everySeries = require('./everySeries'); + +var _everySeries2 = _interopRequireDefault(_everySeries); + +var _filter = require('./filter'); + +var _filter2 = _interopRequireDefault(_filter); + +var _filterLimit = require('./filterLimit'); + +var _filterLimit2 = _interopRequireDefault(_filterLimit); + +var _filterSeries = require('./filterSeries'); + +var _filterSeries2 = _interopRequireDefault(_filterSeries); + +var _forever = require('./forever'); + +var _forever2 = _interopRequireDefault(_forever); + +var _groupBy = require('./groupBy'); + +var _groupBy2 = _interopRequireDefault(_groupBy); + +var _groupByLimit = require('./groupByLimit'); + +var _groupByLimit2 = _interopRequireDefault(_groupByLimit); + +var _groupBySeries = require('./groupBySeries'); + +var _groupBySeries2 = _interopRequireDefault(_groupBySeries); + +var _log = require('./log'); + +var _log2 = _interopRequireDefault(_log); + +var _map = require('./map'); + +var _map2 = _interopRequireDefault(_map); + +var _mapLimit = require('./mapLimit'); + +var _mapLimit2 = _interopRequireDefault(_mapLimit); + +var _mapSeries = require('./mapSeries'); + +var _mapSeries2 = _interopRequireDefault(_mapSeries); + +var _mapValues = require('./mapValues'); + +var _mapValues2 = _interopRequireDefault(_mapValues); + +var _mapValuesLimit = require('./mapValuesLimit'); + +var _mapValuesLimit2 = _interopRequireDefault(_mapValuesLimit); + +var _mapValuesSeries = require('./mapValuesSeries'); + +var _mapValuesSeries2 = _interopRequireDefault(_mapValuesSeries); + +var _memoize = require('./memoize'); + +var _memoize2 = _interopRequireDefault(_memoize); + +var _nextTick = require('./nextTick'); + +var _nextTick2 = _interopRequireDefault(_nextTick); + +var _parallel = require('./parallel'); + +var _parallel2 = _interopRequireDefault(_parallel); + +var _parallelLimit = require('./parallelLimit'); + +var _parallelLimit2 = _interopRequireDefault(_parallelLimit); + +var _priorityQueue = require('./priorityQueue'); + +var _priorityQueue2 = _interopRequireDefault(_priorityQueue); + +var _queue = require('./queue'); + +var _queue2 = _interopRequireDefault(_queue); + +var _race = require('./race'); + +var _race2 = _interopRequireDefault(_race); + +var _reduce = require('./reduce'); + +var _reduce2 = _interopRequireDefault(_reduce); + +var _reduceRight = require('./reduceRight'); + +var _reduceRight2 = _interopRequireDefault(_reduceRight); + +var _reflect = require('./reflect'); + +var _reflect2 = _interopRequireDefault(_reflect); + +var _reflectAll = require('./reflectAll'); + +var _reflectAll2 = _interopRequireDefault(_reflectAll); + +var _reject = require('./reject'); + +var _reject2 = _interopRequireDefault(_reject); + +var _rejectLimit = require('./rejectLimit'); + +var _rejectLimit2 = _interopRequireDefault(_rejectLimit); + +var _rejectSeries = require('./rejectSeries'); + +var _rejectSeries2 = _interopRequireDefault(_rejectSeries); + +var _retry = require('./retry'); + +var _retry2 = _interopRequireDefault(_retry); + +var _retryable = require('./retryable'); + +var _retryable2 = _interopRequireDefault(_retryable); + +var _seq = require('./seq'); + +var _seq2 = _interopRequireDefault(_seq); + +var _series = require('./series'); + +var _series2 = _interopRequireDefault(_series); + +var _setImmediate = require('./setImmediate'); + +var _setImmediate2 = _interopRequireDefault(_setImmediate); + +var _some = require('./some'); + +var _some2 = _interopRequireDefault(_some); + +var _someLimit = require('./someLimit'); + +var _someLimit2 = _interopRequireDefault(_someLimit); + +var _someSeries = require('./someSeries'); + +var _someSeries2 = _interopRequireDefault(_someSeries); + +var _sortBy = require('./sortBy'); + +var _sortBy2 = _interopRequireDefault(_sortBy); + +var _timeout = require('./timeout'); + +var _timeout2 = _interopRequireDefault(_timeout); + +var _times = require('./times'); + +var _times2 = _interopRequireDefault(_times); + +var _timesLimit = require('./timesLimit'); + +var _timesLimit2 = _interopRequireDefault(_timesLimit); + +var _timesSeries = require('./timesSeries'); + +var _timesSeries2 = _interopRequireDefault(_timesSeries); + +var _transform = require('./transform'); + +var _transform2 = _interopRequireDefault(_transform); + +var _tryEach = require('./tryEach'); + +var _tryEach2 = _interopRequireDefault(_tryEach); + +var _unmemoize = require('./unmemoize'); + +var _unmemoize2 = _interopRequireDefault(_unmemoize); + +var _until = require('./until'); + +var _until2 = _interopRequireDefault(_until); + +var _waterfall = require('./waterfall'); + +var _waterfall2 = _interopRequireDefault(_waterfall); + +var _whilst = require('./whilst'); + +var _whilst2 = _interopRequireDefault(_whilst); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * An "async function" in the context of Async is an asynchronous function with + * a variable number of parameters, with the final parameter being a callback. + * (`function (arg1, arg2, ..., callback) {}`) + * The final callback is of the form `callback(err, results...)`, which must be + * called once the function is completed. The callback should be called with a + * Error as its first argument to signal that an error occurred. + * Otherwise, if no error occurred, it should be called with `null` as the first + * argument, and any additional `result` arguments that may apply, to signal + * successful completion. + * The callback must be called exactly once, ideally on a later tick of the + * JavaScript event loop. + * + * This type of function is also referred to as a "Node-style async function", + * or a "continuation passing-style function" (CPS). Most of the methods of this + * library are themselves CPS/Node-style async functions, or functions that + * return CPS/Node-style async functions. + * + * Wherever we accept a Node-style async function, we also directly accept an + * [ES2017 `async` function]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function}. + * In this case, the `async` function will not be passed a final callback + * argument, and any thrown error will be used as the `err` argument of the + * implicit callback, and the return value will be used as the `result` value. + * (i.e. a `rejected` of the returned Promise becomes the `err` callback + * argument, and a `resolved` value becomes the `result`.) + * + * Note, due to JavaScript limitations, we can only detect native `async` + * functions and not transpilied implementations. + * Your environment must have `async`/`await` support for this to work. + * (e.g. Node > v7.6, or a recent version of a modern browser). + * If you are using `async` functions through a transpiler (e.g. Babel), you + * must still wrap the function with [asyncify]{@link module:Utils.asyncify}, + * because the `async function` will be compiled to an ordinary function that + * returns a promise. + * + * @typedef {Function} AsyncFunction + * @static + */ + +/** + * Async is a utility module which provides straight-forward, powerful functions + * for working with asynchronous JavaScript. Although originally designed for + * use with [Node.js](http://nodejs.org) and installable via + * `npm install --save async`, it can also be used directly in the browser. + * @module async + * @see AsyncFunction + */ + +/** + * A collection of `async` functions for manipulating collections, such as + * arrays and objects. + * @module Collections + */ + +/** + * A collection of `async` functions for controlling the flow through a script. + * @module ControlFlow + */ + +/** + * A collection of `async` utility functions. + * @module Utils + */ + +exports.default = { + apply: _apply2.default, + applyEach: _applyEach2.default, + applyEachSeries: _applyEachSeries2.default, + asyncify: _asyncify2.default, + auto: _auto2.default, + autoInject: _autoInject2.default, + cargo: _cargo2.default, + cargoQueue: _cargoQueue2.default, + compose: _compose2.default, + concat: _concat2.default, + concatLimit: _concatLimit2.default, + concatSeries: _concatSeries2.default, + constant: _constant2.default, + detect: _detect2.default, + detectLimit: _detectLimit2.default, + detectSeries: _detectSeries2.default, + dir: _dir2.default, + doUntil: _doUntil2.default, + doWhilst: _doWhilst2.default, + each: _each2.default, + eachLimit: _eachLimit2.default, + eachOf: _eachOf2.default, + eachOfLimit: _eachOfLimit2.default, + eachOfSeries: _eachOfSeries2.default, + eachSeries: _eachSeries2.default, + ensureAsync: _ensureAsync2.default, + every: _every2.default, + everyLimit: _everyLimit2.default, + everySeries: _everySeries2.default, + filter: _filter2.default, + filterLimit: _filterLimit2.default, + filterSeries: _filterSeries2.default, + forever: _forever2.default, + groupBy: _groupBy2.default, + groupByLimit: _groupByLimit2.default, + groupBySeries: _groupBySeries2.default, + log: _log2.default, + map: _map2.default, + mapLimit: _mapLimit2.default, + mapSeries: _mapSeries2.default, + mapValues: _mapValues2.default, + mapValuesLimit: _mapValuesLimit2.default, + mapValuesSeries: _mapValuesSeries2.default, + memoize: _memoize2.default, + nextTick: _nextTick2.default, + parallel: _parallel2.default, + parallelLimit: _parallelLimit2.default, + priorityQueue: _priorityQueue2.default, + queue: _queue2.default, + race: _race2.default, + reduce: _reduce2.default, + reduceRight: _reduceRight2.default, + reflect: _reflect2.default, + reflectAll: _reflectAll2.default, + reject: _reject2.default, + rejectLimit: _rejectLimit2.default, + rejectSeries: _rejectSeries2.default, + retry: _retry2.default, + retryable: _retryable2.default, + seq: _seq2.default, + series: _series2.default, + setImmediate: _setImmediate2.default, + some: _some2.default, + someLimit: _someLimit2.default, + someSeries: _someSeries2.default, + sortBy: _sortBy2.default, + timeout: _timeout2.default, + times: _times2.default, + timesLimit: _timesLimit2.default, + timesSeries: _timesSeries2.default, + transform: _transform2.default, + tryEach: _tryEach2.default, + unmemoize: _unmemoize2.default, + until: _until2.default, + waterfall: _waterfall2.default, + whilst: _whilst2.default, + + // aliases + all: _every2.default, + allLimit: _everyLimit2.default, + allSeries: _everySeries2.default, + any: _some2.default, + anyLimit: _someLimit2.default, + anySeries: _someSeries2.default, + find: _detect2.default, + findLimit: _detectLimit2.default, + findSeries: _detectSeries2.default, + flatMap: _concat2.default, + flatMapLimit: _concatLimit2.default, + flatMapSeries: _concatSeries2.default, + forEach: _each2.default, + forEachSeries: _eachSeries2.default, + forEachLimit: _eachLimit2.default, + forEachOf: _eachOf2.default, + forEachOfSeries: _eachOfSeries2.default, + forEachOfLimit: _eachOfLimit2.default, + inject: _reduce2.default, + foldl: _reduce2.default, + foldr: _reduceRight2.default, + select: _filter2.default, + selectLimit: _filterLimit2.default, + selectSeries: _filterSeries2.default, + wrapSync: _asyncify2.default, + during: _whilst2.default, + doDuring: _doWhilst2.default +}; +exports.apply = _apply2.default; +exports.applyEach = _applyEach2.default; +exports.applyEachSeries = _applyEachSeries2.default; +exports.asyncify = _asyncify2.default; +exports.auto = _auto2.default; +exports.autoInject = _autoInject2.default; +exports.cargo = _cargo2.default; +exports.cargoQueue = _cargoQueue2.default; +exports.compose = _compose2.default; +exports.concat = _concat2.default; +exports.concatLimit = _concatLimit2.default; +exports.concatSeries = _concatSeries2.default; +exports.constant = _constant2.default; +exports.detect = _detect2.default; +exports.detectLimit = _detectLimit2.default; +exports.detectSeries = _detectSeries2.default; +exports.dir = _dir2.default; +exports.doUntil = _doUntil2.default; +exports.doWhilst = _doWhilst2.default; +exports.each = _each2.default; +exports.eachLimit = _eachLimit2.default; +exports.eachOf = _eachOf2.default; +exports.eachOfLimit = _eachOfLimit2.default; +exports.eachOfSeries = _eachOfSeries2.default; +exports.eachSeries = _eachSeries2.default; +exports.ensureAsync = _ensureAsync2.default; +exports.every = _every2.default; +exports.everyLimit = _everyLimit2.default; +exports.everySeries = _everySeries2.default; +exports.filter = _filter2.default; +exports.filterLimit = _filterLimit2.default; +exports.filterSeries = _filterSeries2.default; +exports.forever = _forever2.default; +exports.groupBy = _groupBy2.default; +exports.groupByLimit = _groupByLimit2.default; +exports.groupBySeries = _groupBySeries2.default; +exports.log = _log2.default; +exports.map = _map2.default; +exports.mapLimit = _mapLimit2.default; +exports.mapSeries = _mapSeries2.default; +exports.mapValues = _mapValues2.default; +exports.mapValuesLimit = _mapValuesLimit2.default; +exports.mapValuesSeries = _mapValuesSeries2.default; +exports.memoize = _memoize2.default; +exports.nextTick = _nextTick2.default; +exports.parallel = _parallel2.default; +exports.parallelLimit = _parallelLimit2.default; +exports.priorityQueue = _priorityQueue2.default; +exports.queue = _queue2.default; +exports.race = _race2.default; +exports.reduce = _reduce2.default; +exports.reduceRight = _reduceRight2.default; +exports.reflect = _reflect2.default; +exports.reflectAll = _reflectAll2.default; +exports.reject = _reject2.default; +exports.rejectLimit = _rejectLimit2.default; +exports.rejectSeries = _rejectSeries2.default; +exports.retry = _retry2.default; +exports.retryable = _retryable2.default; +exports.seq = _seq2.default; +exports.series = _series2.default; +exports.setImmediate = _setImmediate2.default; +exports.some = _some2.default; +exports.someLimit = _someLimit2.default; +exports.someSeries = _someSeries2.default; +exports.sortBy = _sortBy2.default; +exports.timeout = _timeout2.default; +exports.times = _times2.default; +exports.timesLimit = _timesLimit2.default; +exports.timesSeries = _timesSeries2.default; +exports.transform = _transform2.default; +exports.tryEach = _tryEach2.default; +exports.unmemoize = _unmemoize2.default; +exports.until = _until2.default; +exports.waterfall = _waterfall2.default; +exports.whilst = _whilst2.default; +exports.all = _every2.default; +exports.allLimit = _everyLimit2.default; +exports.allSeries = _everySeries2.default; +exports.any = _some2.default; +exports.anyLimit = _someLimit2.default; +exports.anySeries = _someSeries2.default; +exports.find = _detect2.default; +exports.findLimit = _detectLimit2.default; +exports.findSeries = _detectSeries2.default; +exports.flatMap = _concat2.default; +exports.flatMapLimit = _concatLimit2.default; +exports.flatMapSeries = _concatSeries2.default; +exports.forEach = _each2.default; +exports.forEachSeries = _eachSeries2.default; +exports.forEachLimit = _eachLimit2.default; +exports.forEachOf = _eachOf2.default; +exports.forEachOfSeries = _eachOfSeries2.default; +exports.forEachOfLimit = _eachOfLimit2.default; +exports.inject = _reduce2.default; +exports.foldl = _reduce2.default; +exports.foldr = _reduceRight2.default; +exports.select = _filter2.default; +exports.selectLimit = _filterLimit2.default; +exports.selectSeries = _filterSeries2.default; +exports.wrapSync = _asyncify2.default; +exports.during = _whilst2.default; +exports.doDuring = _doWhilst2.default; \ No newline at end of file diff --git a/node_modules/async/inject.js b/node_modules/async/inject.js new file mode 100644 index 0000000..8a69548 --- /dev/null +++ b/node_modules/async/inject.js @@ -0,0 +1,153 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _eachOfSeries = require('./eachOfSeries.js'); + +var _eachOfSeries2 = _interopRequireDefault(_eachOfSeries); + +var _once = require('./internal/once.js'); + +var _once2 = _interopRequireDefault(_once); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Reduces `coll` into a single value using an async `iteratee` to return each + * successive step. `memo` is the initial state of the reduction. This function + * only operates in series. + * + * For performance reasons, it may make sense to split a call to this function + * into a parallel map, and then use the normal `Array.prototype.reduce` on the + * results. This function is for situations where each step in the reduction + * needs to be async; if you can get the data before reducing it, then it's + * probably a good idea to do so. + * + * @name reduce + * @static + * @memberOf module:Collections + * @method + * @alias inject + * @alias foldl + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {*} memo - The initial state of the reduction. + * @param {AsyncFunction} iteratee - A function applied to each item in the + * array to produce the next step in the reduction. + * The `iteratee` should complete with the next state of the reduction. + * If the iteratee completes with an error, the reduction is stopped and the + * main `callback` is immediately called with the error. + * Invoked with (memo, item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Result is the reduced value. Invoked with + * (err, result). + * @returns {Promise} a promise, if no callback is passed + * @example + * + * // file1.txt is a file that is 1000 bytes in size + * // file2.txt is a file that is 2000 bytes in size + * // file3.txt is a file that is 3000 bytes in size + * // file4.txt does not exist + * + * const fileList = ['file1.txt','file2.txt','file3.txt']; + * const withMissingFileList = ['file1.txt','file2.txt','file3.txt', 'file4.txt']; + * + * // asynchronous function that computes the file size in bytes + * // file size is added to the memoized value, then returned + * function getFileSizeInBytes(memo, file, callback) { + * fs.stat(file, function(err, stat) { + * if (err) { + * return callback(err); + * } + * callback(null, memo + stat.size); + * }); + * } + * + * // Using callbacks + * async.reduce(fileList, 0, getFileSizeInBytes, function(err, result) { + * if (err) { + * console.log(err); + * } else { + * console.log(result); + * // 6000 + * // which is the sum of the file sizes of the three files + * } + * }); + * + * // Error Handling + * async.reduce(withMissingFileList, 0, getFileSizeInBytes, function(err, result) { + * if (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } else { + * console.log(result); + * } + * }); + * + * // Using Promises + * async.reduce(fileList, 0, getFileSizeInBytes) + * .then( result => { + * console.log(result); + * // 6000 + * // which is the sum of the file sizes of the three files + * }).catch( err => { + * console.log(err); + * }); + * + * // Error Handling + * async.reduce(withMissingFileList, 0, getFileSizeInBytes) + * .then( result => { + * console.log(result); + * }).catch( err => { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.reduce(fileList, 0, getFileSizeInBytes); + * console.log(result); + * // 6000 + * // which is the sum of the file sizes of the three files + * } + * catch (err) { + * console.log(err); + * } + * } + * + * // Error Handling + * async () => { + * try { + * let result = await async.reduce(withMissingFileList, 0, getFileSizeInBytes); + * console.log(result); + * } + * catch (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } + * } + * + */ +function reduce(coll, memo, iteratee, callback) { + callback = (0, _once2.default)(callback); + var _iteratee = (0, _wrapAsync2.default)(iteratee); + return (0, _eachOfSeries2.default)(coll, (x, i, iterCb) => { + _iteratee(memo, x, (err, v) => { + memo = v; + iterCb(err); + }); + }, err => callback(err, memo)); +} +exports.default = (0, _awaitify2.default)(reduce, 4); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/internal/DoublyLinkedList.js b/node_modules/async/internal/DoublyLinkedList.js new file mode 100644 index 0000000..419ce44 --- /dev/null +++ b/node_modules/async/internal/DoublyLinkedList.js @@ -0,0 +1,92 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +// Simple doubly linked list (https://en.wikipedia.org/wiki/Doubly_linked_list) implementation +// used for queues. This implementation assumes that the node provided by the user can be modified +// to adjust the next and last properties. We implement only the minimal functionality +// for queue support. +class DLL { + constructor() { + this.head = this.tail = null; + this.length = 0; + } + + removeLink(node) { + if (node.prev) node.prev.next = node.next;else this.head = node.next; + if (node.next) node.next.prev = node.prev;else this.tail = node.prev; + + node.prev = node.next = null; + this.length -= 1; + return node; + } + + empty() { + while (this.head) this.shift(); + return this; + } + + insertAfter(node, newNode) { + newNode.prev = node; + newNode.next = node.next; + if (node.next) node.next.prev = newNode;else this.tail = newNode; + node.next = newNode; + this.length += 1; + } + + insertBefore(node, newNode) { + newNode.prev = node.prev; + newNode.next = node; + if (node.prev) node.prev.next = newNode;else this.head = newNode; + node.prev = newNode; + this.length += 1; + } + + unshift(node) { + if (this.head) this.insertBefore(this.head, node);else setInitial(this, node); + } + + push(node) { + if (this.tail) this.insertAfter(this.tail, node);else setInitial(this, node); + } + + shift() { + return this.head && this.removeLink(this.head); + } + + pop() { + return this.tail && this.removeLink(this.tail); + } + + toArray() { + return [...this]; + } + + *[Symbol.iterator]() { + var cur = this.head; + while (cur) { + yield cur.data; + cur = cur.next; + } + } + + remove(testFn) { + var curr = this.head; + while (curr) { + var { next } = curr; + if (testFn(curr)) { + this.removeLink(curr); + } + curr = next; + } + return this; + } +} + +exports.default = DLL; +function setInitial(dll, node) { + dll.length = 1; + dll.head = dll.tail = node; +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/internal/Heap.js b/node_modules/async/internal/Heap.js new file mode 100644 index 0000000..7867c92 --- /dev/null +++ b/node_modules/async/internal/Heap.js @@ -0,0 +1,120 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +// Binary min-heap implementation used for priority queue. +// Implementation is stable, i.e. push time is considered for equal priorities +class Heap { + constructor() { + this.heap = []; + this.pushCount = Number.MIN_SAFE_INTEGER; + } + + get length() { + return this.heap.length; + } + + empty() { + this.heap = []; + return this; + } + + percUp(index) { + let p; + + while (index > 0 && smaller(this.heap[index], this.heap[p = parent(index)])) { + let t = this.heap[index]; + this.heap[index] = this.heap[p]; + this.heap[p] = t; + + index = p; + } + } + + percDown(index) { + let l; + + while ((l = leftChi(index)) < this.heap.length) { + if (l + 1 < this.heap.length && smaller(this.heap[l + 1], this.heap[l])) { + l = l + 1; + } + + if (smaller(this.heap[index], this.heap[l])) { + break; + } + + let t = this.heap[index]; + this.heap[index] = this.heap[l]; + this.heap[l] = t; + + index = l; + } + } + + push(node) { + node.pushCount = ++this.pushCount; + this.heap.push(node); + this.percUp(this.heap.length - 1); + } + + unshift(node) { + return this.heap.push(node); + } + + shift() { + let [top] = this.heap; + + this.heap[0] = this.heap[this.heap.length - 1]; + this.heap.pop(); + this.percDown(0); + + return top; + } + + toArray() { + return [...this]; + } + + *[Symbol.iterator]() { + for (let i = 0; i < this.heap.length; i++) { + yield this.heap[i].data; + } + } + + remove(testFn) { + let j = 0; + for (let i = 0; i < this.heap.length; i++) { + if (!testFn(this.heap[i])) { + this.heap[j] = this.heap[i]; + j++; + } + } + + this.heap.splice(j); + + for (let i = parent(this.heap.length - 1); i >= 0; i--) { + this.percDown(i); + } + + return this; + } +} + +exports.default = Heap; +function leftChi(i) { + return (i << 1) + 1; +} + +function parent(i) { + return (i + 1 >> 1) - 1; +} + +function smaller(x, y) { + if (x.priority !== y.priority) { + return x.priority < y.priority; + } else { + return x.pushCount < y.pushCount; + } +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/internal/applyEach.js b/node_modules/async/internal/applyEach.js new file mode 100644 index 0000000..5444912 --- /dev/null +++ b/node_modules/async/internal/applyEach.js @@ -0,0 +1,29 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +exports.default = function (eachfn) { + return function applyEach(fns, ...callArgs) { + const go = (0, _awaitify2.default)(function (callback) { + var that = this; + return eachfn(fns, (fn, cb) => { + (0, _wrapAsync2.default)(fn).apply(that, callArgs.concat(cb)); + }, callback); + }); + return go; + }; +}; + +var _wrapAsync = require('./wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _awaitify = require('./awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/internal/asyncEachOfLimit.js b/node_modules/async/internal/asyncEachOfLimit.js new file mode 100644 index 0000000..34dd82b --- /dev/null +++ b/node_modules/async/internal/asyncEachOfLimit.js @@ -0,0 +1,75 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = asyncEachOfLimit; + +var _breakLoop = require('./breakLoop.js'); + +var _breakLoop2 = _interopRequireDefault(_breakLoop); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +// for async generators +function asyncEachOfLimit(generator, limit, iteratee, callback) { + let done = false; + let canceled = false; + let awaiting = false; + let running = 0; + let idx = 0; + + function replenish() { + //console.log('replenish') + if (running >= limit || awaiting || done) return; + //console.log('replenish awaiting') + awaiting = true; + generator.next().then(({ value, done: iterDone }) => { + //console.log('got value', value) + if (canceled || done) return; + awaiting = false; + if (iterDone) { + done = true; + if (running <= 0) { + //console.log('done nextCb') + callback(null); + } + return; + } + running++; + iteratee(value, idx, iterateeCallback); + idx++; + replenish(); + }).catch(handleError); + } + + function iterateeCallback(err, result) { + //console.log('iterateeCallback') + running -= 1; + if (canceled) return; + if (err) return handleError(err); + + if (err === false) { + done = true; + canceled = true; + return; + } + + if (result === _breakLoop2.default || done && running <= 0) { + done = true; + //console.log('done iterCb') + return callback(null); + } + replenish(); + } + + function handleError(err) { + if (canceled) return; + awaiting = false; + done = true; + callback(err); + } + + replenish(); +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/internal/awaitify.js b/node_modules/async/internal/awaitify.js new file mode 100644 index 0000000..bb7a609 --- /dev/null +++ b/node_modules/async/internal/awaitify.js @@ -0,0 +1,28 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = awaitify; +// conditionally promisify a function. +// only return a promise if a callback is omitted +function awaitify(asyncFn, arity) { + if (!arity) arity = asyncFn.length; + if (!arity) throw new Error('arity is undefined'); + function awaitable(...args) { + if (typeof args[arity - 1] === 'function') { + return asyncFn.apply(this, args); + } + + return new Promise((resolve, reject) => { + args[arity - 1] = (err, ...cbArgs) => { + if (err) return reject(err); + resolve(cbArgs.length > 1 ? cbArgs : cbArgs[0]); + }; + asyncFn.apply(this, args); + }); + } + + return awaitable; +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/internal/breakLoop.js b/node_modules/async/internal/breakLoop.js new file mode 100644 index 0000000..87413dd --- /dev/null +++ b/node_modules/async/internal/breakLoop.js @@ -0,0 +1,10 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +// A temporary value used to identify if the loop should be broken. +// See #1064, #1293 +const breakLoop = {}; +exports.default = breakLoop; +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/internal/consoleFunc.js b/node_modules/async/internal/consoleFunc.js new file mode 100644 index 0000000..748d54b --- /dev/null +++ b/node_modules/async/internal/consoleFunc.js @@ -0,0 +1,31 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = consoleFunc; + +var _wrapAsync = require('./wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function consoleFunc(name) { + return (fn, ...args) => (0, _wrapAsync2.default)(fn)(...args, (err, ...resultArgs) => { + /* istanbul ignore else */ + if (typeof console === 'object') { + /* istanbul ignore else */ + if (err) { + /* istanbul ignore else */ + if (console.error) { + console.error(err); + } + } else if (console[name]) { + /* istanbul ignore else */ + resultArgs.forEach(x => console[name](x)); + } + } + }); +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/internal/createTester.js b/node_modules/async/internal/createTester.js new file mode 100644 index 0000000..cafdf62 --- /dev/null +++ b/node_modules/async/internal/createTester.js @@ -0,0 +1,40 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _createTester; + +var _breakLoop = require('./breakLoop.js'); + +var _breakLoop2 = _interopRequireDefault(_breakLoop); + +var _wrapAsync = require('./wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _createTester(check, getResult) { + return (eachfn, arr, _iteratee, cb) => { + var testPassed = false; + var testResult; + const iteratee = (0, _wrapAsync2.default)(_iteratee); + eachfn(arr, (value, _, callback) => { + iteratee(value, (err, result) => { + if (err || err === false) return callback(err); + + if (check(result) && !testResult) { + testPassed = true; + testResult = getResult(true, value); + return callback(null, _breakLoop2.default); + } + callback(); + }); + }, err => { + if (err) return cb(err); + cb(null, testPassed ? testResult : getResult(false)); + }); + }; +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/internal/eachOfLimit.js b/node_modules/async/internal/eachOfLimit.js new file mode 100644 index 0000000..ceed60f --- /dev/null +++ b/node_modules/async/internal/eachOfLimit.js @@ -0,0 +1,90 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _once = require('./once.js'); + +var _once2 = _interopRequireDefault(_once); + +var _iterator = require('./iterator.js'); + +var _iterator2 = _interopRequireDefault(_iterator); + +var _onlyOnce = require('./onlyOnce.js'); + +var _onlyOnce2 = _interopRequireDefault(_onlyOnce); + +var _wrapAsync = require('./wrapAsync.js'); + +var _asyncEachOfLimit = require('./asyncEachOfLimit.js'); + +var _asyncEachOfLimit2 = _interopRequireDefault(_asyncEachOfLimit); + +var _breakLoop = require('./breakLoop.js'); + +var _breakLoop2 = _interopRequireDefault(_breakLoop); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +exports.default = limit => { + return (obj, iteratee, callback) => { + callback = (0, _once2.default)(callback); + if (limit <= 0) { + throw new RangeError('concurrency limit cannot be less than 1'); + } + if (!obj) { + return callback(null); + } + if ((0, _wrapAsync.isAsyncGenerator)(obj)) { + return (0, _asyncEachOfLimit2.default)(obj, limit, iteratee, callback); + } + if ((0, _wrapAsync.isAsyncIterable)(obj)) { + return (0, _asyncEachOfLimit2.default)(obj[Symbol.asyncIterator](), limit, iteratee, callback); + } + var nextElem = (0, _iterator2.default)(obj); + var done = false; + var canceled = false; + var running = 0; + var looping = false; + + function iterateeCallback(err, value) { + if (canceled) return; + running -= 1; + if (err) { + done = true; + callback(err); + } else if (err === false) { + done = true; + canceled = true; + } else if (value === _breakLoop2.default || done && running <= 0) { + done = true; + return callback(null); + } else if (!looping) { + replenish(); + } + } + + function replenish() { + looping = true; + while (running < limit && !done) { + var elem = nextElem(); + if (elem === null) { + done = true; + if (running <= 0) { + callback(null); + } + return; + } + running += 1; + iteratee(elem.value, elem.key, (0, _onlyOnce2.default)(iterateeCallback)); + } + looping = false; + } + + replenish(); + }; +}; + +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/internal/filter.js b/node_modules/async/internal/filter.js new file mode 100644 index 0000000..065c211 --- /dev/null +++ b/node_modules/async/internal/filter.js @@ -0,0 +1,55 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _filter; + +var _isArrayLike = require('./isArrayLike.js'); + +var _isArrayLike2 = _interopRequireDefault(_isArrayLike); + +var _wrapAsync = require('./wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function filterArray(eachfn, arr, iteratee, callback) { + var truthValues = new Array(arr.length); + eachfn(arr, (x, index, iterCb) => { + iteratee(x, (err, v) => { + truthValues[index] = !!v; + iterCb(err); + }); + }, err => { + if (err) return callback(err); + var results = []; + for (var i = 0; i < arr.length; i++) { + if (truthValues[i]) results.push(arr[i]); + } + callback(null, results); + }); +} + +function filterGeneric(eachfn, coll, iteratee, callback) { + var results = []; + eachfn(coll, (x, index, iterCb) => { + iteratee(x, (err, v) => { + if (err) return iterCb(err); + if (v) { + results.push({ index, value: x }); + } + iterCb(err); + }); + }, err => { + if (err) return callback(err); + callback(null, results.sort((a, b) => a.index - b.index).map(v => v.value)); + }); +} + +function _filter(eachfn, coll, iteratee, callback) { + var filter = (0, _isArrayLike2.default)(coll) ? filterArray : filterGeneric; + return filter(eachfn, coll, (0, _wrapAsync2.default)(iteratee), callback); +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/internal/getIterator.js b/node_modules/async/internal/getIterator.js new file mode 100644 index 0000000..f518fce --- /dev/null +++ b/node_modules/async/internal/getIterator.js @@ -0,0 +1,11 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +exports.default = function (coll) { + return coll[Symbol.iterator] && coll[Symbol.iterator](); +}; + +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/internal/initialParams.js b/node_modules/async/internal/initialParams.js new file mode 100644 index 0000000..04c0eff --- /dev/null +++ b/node_modules/async/internal/initialParams.js @@ -0,0 +1,14 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +exports.default = function (fn) { + return function (...args /*, callback*/) { + var callback = args.pop(); + return fn.call(this, args, callback); + }; +}; + +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/internal/isArrayLike.js b/node_modules/async/internal/isArrayLike.js new file mode 100644 index 0000000..a4c4c8a --- /dev/null +++ b/node_modules/async/internal/isArrayLike.js @@ -0,0 +1,10 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isArrayLike; +function isArrayLike(value) { + return value && typeof value.length === 'number' && value.length >= 0 && value.length % 1 === 0; +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/internal/iterator.js b/node_modules/async/internal/iterator.js new file mode 100644 index 0000000..5778b1e --- /dev/null +++ b/node_modules/async/internal/iterator.js @@ -0,0 +1,57 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = createIterator; + +var _isArrayLike = require('./isArrayLike.js'); + +var _isArrayLike2 = _interopRequireDefault(_isArrayLike); + +var _getIterator = require('./getIterator.js'); + +var _getIterator2 = _interopRequireDefault(_getIterator); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function createArrayIterator(coll) { + var i = -1; + var len = coll.length; + return function next() { + return ++i < len ? { value: coll[i], key: i } : null; + }; +} + +function createES2015Iterator(iterator) { + var i = -1; + return function next() { + var item = iterator.next(); + if (item.done) return null; + i++; + return { value: item.value, key: i }; + }; +} + +function createObjectIterator(obj) { + var okeys = obj ? Object.keys(obj) : []; + var i = -1; + var len = okeys.length; + return function next() { + var key = okeys[++i]; + if (key === '__proto__') { + return next(); + } + return i < len ? { value: obj[key], key } : null; + }; +} + +function createIterator(coll) { + if ((0, _isArrayLike2.default)(coll)) { + return createArrayIterator(coll); + } + + var iterator = (0, _getIterator2.default)(coll); + return iterator ? createES2015Iterator(iterator) : createObjectIterator(coll); +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/internal/map.js b/node_modules/async/internal/map.js new file mode 100644 index 0000000..acab1e7 --- /dev/null +++ b/node_modules/async/internal/map.js @@ -0,0 +1,30 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _asyncMap; + +var _wrapAsync = require('./wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _asyncMap(eachfn, arr, iteratee, callback) { + arr = arr || []; + var results = []; + var counter = 0; + var _iteratee = (0, _wrapAsync2.default)(iteratee); + + return eachfn(arr, (value, _, iterCb) => { + var index = counter++; + _iteratee(value, (err, v) => { + results[index] = v; + iterCb(err); + }); + }, err => { + callback(err, results); + }); +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/internal/once.js b/node_modules/async/internal/once.js new file mode 100644 index 0000000..a8b5792 --- /dev/null +++ b/node_modules/async/internal/once.js @@ -0,0 +1,17 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = once; +function once(fn) { + function wrapper(...args) { + if (fn === null) return; + var callFn = fn; + fn = null; + callFn.apply(this, args); + } + Object.assign(wrapper, fn); + return wrapper; +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/internal/onlyOnce.js b/node_modules/async/internal/onlyOnce.js new file mode 100644 index 0000000..c95a92d --- /dev/null +++ b/node_modules/async/internal/onlyOnce.js @@ -0,0 +1,15 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = onlyOnce; +function onlyOnce(fn) { + return function (...args) { + if (fn === null) throw new Error("Callback was already called."); + var callFn = fn; + fn = null; + callFn.apply(this, args); + }; +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/internal/parallel.js b/node_modules/async/internal/parallel.js new file mode 100644 index 0000000..57fbd0d --- /dev/null +++ b/node_modules/async/internal/parallel.js @@ -0,0 +1,34 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _isArrayLike = require('./isArrayLike.js'); + +var _isArrayLike2 = _interopRequireDefault(_isArrayLike); + +var _wrapAsync = require('./wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _awaitify = require('./awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +exports.default = (0, _awaitify2.default)((eachfn, tasks, callback) => { + var results = (0, _isArrayLike2.default)(tasks) ? [] : {}; + + eachfn(tasks, (task, key, taskCb) => { + (0, _wrapAsync2.default)(task)((err, ...result) => { + if (result.length < 2) { + [result] = result; + } + results[key] = result; + taskCb(err); + }); + }, err => callback(err, results)); +}, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/internal/promiseCallback.js b/node_modules/async/internal/promiseCallback.js new file mode 100644 index 0000000..17a8301 --- /dev/null +++ b/node_modules/async/internal/promiseCallback.js @@ -0,0 +1,23 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +const PROMISE_SYMBOL = Symbol('promiseCallback'); + +function promiseCallback() { + let resolve, reject; + function callback(err, ...args) { + if (err) return reject(err); + resolve(args.length > 1 ? args : args[0]); + } + + callback[PROMISE_SYMBOL] = new Promise((res, rej) => { + resolve = res, reject = rej; + }); + + return callback; +} + +exports.promiseCallback = promiseCallback; +exports.PROMISE_SYMBOL = PROMISE_SYMBOL; \ No newline at end of file diff --git a/node_modules/async/internal/queue.js b/node_modules/async/internal/queue.js new file mode 100644 index 0000000..7414e03 --- /dev/null +++ b/node_modules/async/internal/queue.js @@ -0,0 +1,294 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = queue; + +var _onlyOnce = require('./onlyOnce.js'); + +var _onlyOnce2 = _interopRequireDefault(_onlyOnce); + +var _setImmediate = require('./setImmediate.js'); + +var _setImmediate2 = _interopRequireDefault(_setImmediate); + +var _DoublyLinkedList = require('./DoublyLinkedList.js'); + +var _DoublyLinkedList2 = _interopRequireDefault(_DoublyLinkedList); + +var _wrapAsync = require('./wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function queue(worker, concurrency, payload) { + if (concurrency == null) { + concurrency = 1; + } else if (concurrency === 0) { + throw new RangeError('Concurrency must not be zero'); + } + + var _worker = (0, _wrapAsync2.default)(worker); + var numRunning = 0; + var workersList = []; + const events = { + error: [], + drain: [], + saturated: [], + unsaturated: [], + empty: [] + }; + + function on(event, handler) { + events[event].push(handler); + } + + function once(event, handler) { + const handleAndRemove = (...args) => { + off(event, handleAndRemove); + handler(...args); + }; + events[event].push(handleAndRemove); + } + + function off(event, handler) { + if (!event) return Object.keys(events).forEach(ev => events[ev] = []); + if (!handler) return events[event] = []; + events[event] = events[event].filter(ev => ev !== handler); + } + + function trigger(event, ...args) { + events[event].forEach(handler => handler(...args)); + } + + var processingScheduled = false; + function _insert(data, insertAtFront, rejectOnError, callback) { + if (callback != null && typeof callback !== 'function') { + throw new Error('task callback must be a function'); + } + q.started = true; + + var res, rej; + function promiseCallback(err, ...args) { + // we don't care about the error, let the global error handler + // deal with it + if (err) return rejectOnError ? rej(err) : res(); + if (args.length <= 1) return res(args[0]); + res(args); + } + + var item = q._createTaskItem(data, rejectOnError ? promiseCallback : callback || promiseCallback); + + if (insertAtFront) { + q._tasks.unshift(item); + } else { + q._tasks.push(item); + } + + if (!processingScheduled) { + processingScheduled = true; + (0, _setImmediate2.default)(() => { + processingScheduled = false; + q.process(); + }); + } + + if (rejectOnError || !callback) { + return new Promise((resolve, reject) => { + res = resolve; + rej = reject; + }); + } + } + + function _createCB(tasks) { + return function (err, ...args) { + numRunning -= 1; + + for (var i = 0, l = tasks.length; i < l; i++) { + var task = tasks[i]; + + var index = workersList.indexOf(task); + if (index === 0) { + workersList.shift(); + } else if (index > 0) { + workersList.splice(index, 1); + } + + task.callback(err, ...args); + + if (err != null) { + trigger('error', err, task.data); + } + } + + if (numRunning <= q.concurrency - q.buffer) { + trigger('unsaturated'); + } + + if (q.idle()) { + trigger('drain'); + } + q.process(); + }; + } + + function _maybeDrain(data) { + if (data.length === 0 && q.idle()) { + // call drain immediately if there are no tasks + (0, _setImmediate2.default)(() => trigger('drain')); + return true; + } + return false; + } + + const eventMethod = name => handler => { + if (!handler) { + return new Promise((resolve, reject) => { + once(name, (err, data) => { + if (err) return reject(err); + resolve(data); + }); + }); + } + off(name); + on(name, handler); + }; + + var isProcessing = false; + var q = { + _tasks: new _DoublyLinkedList2.default(), + _createTaskItem(data, callback) { + return { + data, + callback + }; + }, + *[Symbol.iterator]() { + yield* q._tasks[Symbol.iterator](); + }, + concurrency, + payload, + buffer: concurrency / 4, + started: false, + paused: false, + push(data, callback) { + if (Array.isArray(data)) { + if (_maybeDrain(data)) return; + return data.map(datum => _insert(datum, false, false, callback)); + } + return _insert(data, false, false, callback); + }, + pushAsync(data, callback) { + if (Array.isArray(data)) { + if (_maybeDrain(data)) return; + return data.map(datum => _insert(datum, false, true, callback)); + } + return _insert(data, false, true, callback); + }, + kill() { + off(); + q._tasks.empty(); + }, + unshift(data, callback) { + if (Array.isArray(data)) { + if (_maybeDrain(data)) return; + return data.map(datum => _insert(datum, true, false, callback)); + } + return _insert(data, true, false, callback); + }, + unshiftAsync(data, callback) { + if (Array.isArray(data)) { + if (_maybeDrain(data)) return; + return data.map(datum => _insert(datum, true, true, callback)); + } + return _insert(data, true, true, callback); + }, + remove(testFn) { + q._tasks.remove(testFn); + }, + process() { + // Avoid trying to start too many processing operations. This can occur + // when callbacks resolve synchronously (#1267). + if (isProcessing) { + return; + } + isProcessing = true; + while (!q.paused && numRunning < q.concurrency && q._tasks.length) { + var tasks = [], + data = []; + var l = q._tasks.length; + if (q.payload) l = Math.min(l, q.payload); + for (var i = 0; i < l; i++) { + var node = q._tasks.shift(); + tasks.push(node); + workersList.push(node); + data.push(node.data); + } + + numRunning += 1; + + if (q._tasks.length === 0) { + trigger('empty'); + } + + if (numRunning === q.concurrency) { + trigger('saturated'); + } + + var cb = (0, _onlyOnce2.default)(_createCB(tasks)); + _worker(data, cb); + } + isProcessing = false; + }, + length() { + return q._tasks.length; + }, + running() { + return numRunning; + }, + workersList() { + return workersList; + }, + idle() { + return q._tasks.length + numRunning === 0; + }, + pause() { + q.paused = true; + }, + resume() { + if (q.paused === false) { + return; + } + q.paused = false; + (0, _setImmediate2.default)(q.process); + } + }; + // define these as fixed properties, so people get useful errors when updating + Object.defineProperties(q, { + saturated: { + writable: false, + value: eventMethod('saturated') + }, + unsaturated: { + writable: false, + value: eventMethod('unsaturated') + }, + empty: { + writable: false, + value: eventMethod('empty') + }, + drain: { + writable: false, + value: eventMethod('drain') + }, + error: { + writable: false, + value: eventMethod('error') + } + }); + return q; +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/internal/range.js b/node_modules/async/internal/range.js new file mode 100644 index 0000000..cc7b3a9 --- /dev/null +++ b/node_modules/async/internal/range.js @@ -0,0 +1,14 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = range; +function range(size) { + var result = Array(size); + while (size--) { + result[size] = size; + } + return result; +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/internal/reject.js b/node_modules/async/internal/reject.js new file mode 100644 index 0000000..9d9bc80 --- /dev/null +++ b/node_modules/async/internal/reject.js @@ -0,0 +1,26 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = reject; + +var _filter = require('./filter.js'); + +var _filter2 = _interopRequireDefault(_filter); + +var _wrapAsync = require('./wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function reject(eachfn, arr, _iteratee, callback) { + const iteratee = (0, _wrapAsync2.default)(_iteratee); + return (0, _filter2.default)(eachfn, arr, (value, cb) => { + iteratee(value, (err, v) => { + cb(err, !v); + }); + }, callback); +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/internal/setImmediate.js b/node_modules/async/internal/setImmediate.js new file mode 100644 index 0000000..513efd1 --- /dev/null +++ b/node_modules/async/internal/setImmediate.js @@ -0,0 +1,34 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.fallback = fallback; +exports.wrap = wrap; +/* istanbul ignore file */ + +var hasQueueMicrotask = exports.hasQueueMicrotask = typeof queueMicrotask === 'function' && queueMicrotask; +var hasSetImmediate = exports.hasSetImmediate = typeof setImmediate === 'function' && setImmediate; +var hasNextTick = exports.hasNextTick = typeof process === 'object' && typeof process.nextTick === 'function'; + +function fallback(fn) { + setTimeout(fn, 0); +} + +function wrap(defer) { + return (fn, ...args) => defer(() => fn(...args)); +} + +var _defer; + +if (hasQueueMicrotask) { + _defer = queueMicrotask; +} else if (hasSetImmediate) { + _defer = setImmediate; +} else if (hasNextTick) { + _defer = process.nextTick; +} else { + _defer = fallback; +} + +exports.default = wrap(_defer); \ No newline at end of file diff --git a/node_modules/async/internal/withoutIndex.js b/node_modules/async/internal/withoutIndex.js new file mode 100644 index 0000000..fa91c2d --- /dev/null +++ b/node_modules/async/internal/withoutIndex.js @@ -0,0 +1,10 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _withoutIndex; +function _withoutIndex(iteratee) { + return (value, index, callback) => iteratee(value, callback); +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/internal/wrapAsync.js b/node_modules/async/internal/wrapAsync.js new file mode 100644 index 0000000..ad4d619 --- /dev/null +++ b/node_modules/async/internal/wrapAsync.js @@ -0,0 +1,34 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.isAsyncIterable = exports.isAsyncGenerator = exports.isAsync = undefined; + +var _asyncify = require('../asyncify.js'); + +var _asyncify2 = _interopRequireDefault(_asyncify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function isAsync(fn) { + return fn[Symbol.toStringTag] === 'AsyncFunction'; +} + +function isAsyncGenerator(fn) { + return fn[Symbol.toStringTag] === 'AsyncGenerator'; +} + +function isAsyncIterable(obj) { + return typeof obj[Symbol.asyncIterator] === 'function'; +} + +function wrapAsync(asyncFn) { + if (typeof asyncFn !== 'function') throw new Error('expected a function'); + return isAsync(asyncFn) ? (0, _asyncify2.default)(asyncFn) : asyncFn; +} + +exports.default = wrapAsync; +exports.isAsync = isAsync; +exports.isAsyncGenerator = isAsyncGenerator; +exports.isAsyncIterable = isAsyncIterable; \ No newline at end of file diff --git a/node_modules/async/log.js b/node_modules/async/log.js new file mode 100644 index 0000000..332b9da --- /dev/null +++ b/node_modules/async/log.js @@ -0,0 +1,41 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _consoleFunc = require('./internal/consoleFunc.js'); + +var _consoleFunc2 = _interopRequireDefault(_consoleFunc); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Logs the result of an `async` function to the `console`. Only works in + * Node.js or in browsers that support `console.log` and `console.error` (such + * as FF and Chrome). If multiple arguments are returned from the async + * function, `console.log` is called on each argument in order. + * + * @name log + * @static + * @memberOf module:Utils + * @method + * @category Util + * @param {AsyncFunction} function - The function you want to eventually apply + * all arguments to. + * @param {...*} arguments... - Any number of arguments to apply to the function. + * @example + * + * // in a module + * var hello = function(name, callback) { + * setTimeout(function() { + * callback(null, 'hello ' + name); + * }, 1000); + * }; + * + * // in the node repl + * node> async.log(hello, 'world'); + * 'hello world' + */ +exports.default = (0, _consoleFunc2.default)('log'); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/map.js b/node_modules/async/map.js new file mode 100644 index 0000000..c4b7a5a --- /dev/null +++ b/node_modules/async/map.js @@ -0,0 +1,142 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _map2 = require('./internal/map.js'); + +var _map3 = _interopRequireDefault(_map2); + +var _eachOf = require('./eachOf.js'); + +var _eachOf2 = _interopRequireDefault(_eachOf); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Produces a new collection of values by mapping each value in `coll` through + * the `iteratee` function. The `iteratee` is called with an item from `coll` + * and a callback for when it has finished processing. Each of these callbacks + * takes 2 arguments: an `error`, and the transformed item from `coll`. If + * `iteratee` passes an error to its callback, the main `callback` (for the + * `map` function) is immediately called with the error. + * + * Note, that since this function applies the `iteratee` to each item in + * parallel, there is no guarantee that the `iteratee` functions will complete + * in order. However, the results array will be in the same order as the + * original `coll`. + * + * If `map` is passed an Object, the results will be an Array. The results + * will roughly be in the order of the original Objects' keys (but this can + * vary across JavaScript engines). + * + * @name map + * @static + * @memberOf module:Collections + * @method + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The iteratee should complete with the transformed item. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. Results is an Array of the + * transformed items from the `coll`. Invoked with (err, results). + * @returns {Promise} a promise, if no callback is passed + * @example + * + * // file1.txt is a file that is 1000 bytes in size + * // file2.txt is a file that is 2000 bytes in size + * // file3.txt is a file that is 3000 bytes in size + * // file4.txt does not exist + * + * const fileList = ['file1.txt','file2.txt','file3.txt']; + * const withMissingFileList = ['file1.txt','file2.txt','file4.txt']; + * + * // asynchronous function that returns the file size in bytes + * function getFileSizeInBytes(file, callback) { + * fs.stat(file, function(err, stat) { + * if (err) { + * return callback(err); + * } + * callback(null, stat.size); + * }); + * } + * + * // Using callbacks + * async.map(fileList, getFileSizeInBytes, function(err, results) { + * if (err) { + * console.log(err); + * } else { + * console.log(results); + * // results is now an array of the file size in bytes for each file, e.g. + * // [ 1000, 2000, 3000] + * } + * }); + * + * // Error Handling + * async.map(withMissingFileList, getFileSizeInBytes, function(err, results) { + * if (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } else { + * console.log(results); + * } + * }); + * + * // Using Promises + * async.map(fileList, getFileSizeInBytes) + * .then( results => { + * console.log(results); + * // results is now an array of the file size in bytes for each file, e.g. + * // [ 1000, 2000, 3000] + * }).catch( err => { + * console.log(err); + * }); + * + * // Error Handling + * async.map(withMissingFileList, getFileSizeInBytes) + * .then( results => { + * console.log(results); + * }).catch( err => { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * }); + * + * // Using async/await + * async () => { + * try { + * let results = await async.map(fileList, getFileSizeInBytes); + * console.log(results); + * // results is now an array of the file size in bytes for each file, e.g. + * // [ 1000, 2000, 3000] + * } + * catch (err) { + * console.log(err); + * } + * } + * + * // Error Handling + * async () => { + * try { + * let results = await async.map(withMissingFileList, getFileSizeInBytes); + * console.log(results); + * } + * catch (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } + * } + * + */ +function map(coll, iteratee, callback) { + return (0, _map3.default)(_eachOf2.default, coll, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(map, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/mapLimit.js b/node_modules/async/mapLimit.js new file mode 100644 index 0000000..6ad3572 --- /dev/null +++ b/node_modules/async/mapLimit.js @@ -0,0 +1,45 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _map2 = require('./internal/map.js'); + +var _map3 = _interopRequireDefault(_map2); + +var _eachOfLimit = require('./internal/eachOfLimit.js'); + +var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`map`]{@link module:Collections.map} but runs a maximum of `limit` async operations at a time. + * + * @name mapLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.map]{@link module:Collections.map} + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The iteratee should complete with the transformed item. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. Results is an array of the + * transformed items from the `coll`. Invoked with (err, results). + * @returns {Promise} a promise, if no callback is passed + */ +function mapLimit(coll, limit, iteratee, callback) { + return (0, _map3.default)((0, _eachOfLimit2.default)(limit), coll, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(mapLimit, 4); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/mapSeries.js b/node_modules/async/mapSeries.js new file mode 100644 index 0000000..8dfdd8a --- /dev/null +++ b/node_modules/async/mapSeries.js @@ -0,0 +1,44 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _map2 = require('./internal/map.js'); + +var _map3 = _interopRequireDefault(_map2); + +var _eachOfSeries = require('./eachOfSeries.js'); + +var _eachOfSeries2 = _interopRequireDefault(_eachOfSeries); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`map`]{@link module:Collections.map} but runs only a single async operation at a time. + * + * @name mapSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.map]{@link module:Collections.map} + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The iteratee should complete with the transformed item. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. Results is an array of the + * transformed items from the `coll`. Invoked with (err, results). + * @returns {Promise} a promise, if no callback is passed + */ +function mapSeries(coll, iteratee, callback) { + return (0, _map3.default)(_eachOfSeries2.default, coll, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(mapSeries, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/mapValues.js b/node_modules/async/mapValues.js new file mode 100644 index 0000000..3d0470e --- /dev/null +++ b/node_modules/async/mapValues.js @@ -0,0 +1,152 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = mapValues; + +var _mapValuesLimit = require('./mapValuesLimit.js'); + +var _mapValuesLimit2 = _interopRequireDefault(_mapValuesLimit); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * A relative of [`map`]{@link module:Collections.map}, designed for use with objects. + * + * Produces a new Object by mapping each value of `obj` through the `iteratee` + * function. The `iteratee` is called each `value` and `key` from `obj` and a + * callback for when it has finished processing. Each of these callbacks takes + * two arguments: an `error`, and the transformed item from `obj`. If `iteratee` + * passes an error to its callback, the main `callback` (for the `mapValues` + * function) is immediately called with the error. + * + * Note, the order of the keys in the result is not guaranteed. The keys will + * be roughly in the order they complete, (but this is very engine-specific) + * + * @name mapValues + * @static + * @memberOf module:Collections + * @method + * @category Collection + * @param {Object} obj - A collection to iterate over. + * @param {AsyncFunction} iteratee - A function to apply to each value and key + * in `coll`. + * The iteratee should complete with the transformed value as its result. + * Invoked with (value, key, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. `result` is a new object consisting + * of each key from `obj`, with each transformed value on the right-hand side. + * Invoked with (err, result). + * @returns {Promise} a promise, if no callback is passed + * @example + * + * // file1.txt is a file that is 1000 bytes in size + * // file2.txt is a file that is 2000 bytes in size + * // file3.txt is a file that is 3000 bytes in size + * // file4.txt does not exist + * + * const fileMap = { + * f1: 'file1.txt', + * f2: 'file2.txt', + * f3: 'file3.txt' + * }; + * + * const withMissingFileMap = { + * f1: 'file1.txt', + * f2: 'file2.txt', + * f3: 'file4.txt' + * }; + * + * // asynchronous function that returns the file size in bytes + * function getFileSizeInBytes(file, key, callback) { + * fs.stat(file, function(err, stat) { + * if (err) { + * return callback(err); + * } + * callback(null, stat.size); + * }); + * } + * + * // Using callbacks + * async.mapValues(fileMap, getFileSizeInBytes, function(err, result) { + * if (err) { + * console.log(err); + * } else { + * console.log(result); + * // result is now a map of file size in bytes for each file, e.g. + * // { + * // f1: 1000, + * // f2: 2000, + * // f3: 3000 + * // } + * } + * }); + * + * // Error handling + * async.mapValues(withMissingFileMap, getFileSizeInBytes, function(err, result) { + * if (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } else { + * console.log(result); + * } + * }); + * + * // Using Promises + * async.mapValues(fileMap, getFileSizeInBytes) + * .then( result => { + * console.log(result); + * // result is now a map of file size in bytes for each file, e.g. + * // { + * // f1: 1000, + * // f2: 2000, + * // f3: 3000 + * // } + * }).catch (err => { + * console.log(err); + * }); + * + * // Error Handling + * async.mapValues(withMissingFileMap, getFileSizeInBytes) + * .then( result => { + * console.log(result); + * }).catch (err => { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.mapValues(fileMap, getFileSizeInBytes); + * console.log(result); + * // result is now a map of file size in bytes for each file, e.g. + * // { + * // f1: 1000, + * // f2: 2000, + * // f3: 3000 + * // } + * } + * catch (err) { + * console.log(err); + * } + * } + * + * // Error Handling + * async () => { + * try { + * let result = await async.mapValues(withMissingFileMap, getFileSizeInBytes); + * console.log(result); + * } + * catch (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } + * } + * + */ +function mapValues(obj, iteratee, callback) { + return (0, _mapValuesLimit2.default)(obj, Infinity, iteratee, callback); +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/mapValuesLimit.js b/node_modules/async/mapValuesLimit.js new file mode 100644 index 0000000..f59e36f --- /dev/null +++ b/node_modules/async/mapValuesLimit.js @@ -0,0 +1,61 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _eachOfLimit = require('./internal/eachOfLimit.js'); + +var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +var _once = require('./internal/once.js'); + +var _once2 = _interopRequireDefault(_once); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`mapValues`]{@link module:Collections.mapValues} but runs a maximum of `limit` async operations at a + * time. + * + * @name mapValuesLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.mapValues]{@link module:Collections.mapValues} + * @category Collection + * @param {Object} obj - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - A function to apply to each value and key + * in `coll`. + * The iteratee should complete with the transformed value as its result. + * Invoked with (value, key, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. `result` is a new object consisting + * of each key from `obj`, with each transformed value on the right-hand side. + * Invoked with (err, result). + * @returns {Promise} a promise, if no callback is passed + */ +function mapValuesLimit(obj, limit, iteratee, callback) { + callback = (0, _once2.default)(callback); + var newObj = {}; + var _iteratee = (0, _wrapAsync2.default)(iteratee); + return (0, _eachOfLimit2.default)(limit)(obj, (val, key, next) => { + _iteratee(val, key, (err, result) => { + if (err) return next(err); + newObj[key] = result; + next(err); + }); + }, err => callback(err, newObj)); +} + +exports.default = (0, _awaitify2.default)(mapValuesLimit, 4); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/mapValuesSeries.js b/node_modules/async/mapValuesSeries.js new file mode 100644 index 0000000..5f05bf2 --- /dev/null +++ b/node_modules/async/mapValuesSeries.js @@ -0,0 +1,37 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = mapValuesSeries; + +var _mapValuesLimit = require('./mapValuesLimit.js'); + +var _mapValuesLimit2 = _interopRequireDefault(_mapValuesLimit); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`mapValues`]{@link module:Collections.mapValues} but runs only a single async operation at a time. + * + * @name mapValuesSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.mapValues]{@link module:Collections.mapValues} + * @category Collection + * @param {Object} obj - A collection to iterate over. + * @param {AsyncFunction} iteratee - A function to apply to each value and key + * in `coll`. + * The iteratee should complete with the transformed value as its result. + * Invoked with (value, key, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. `result` is a new object consisting + * of each key from `obj`, with each transformed value on the right-hand side. + * Invoked with (err, result). + * @returns {Promise} a promise, if no callback is passed + */ +function mapValuesSeries(obj, iteratee, callback) { + return (0, _mapValuesLimit2.default)(obj, 1, iteratee, callback); +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/memoize.js b/node_modules/async/memoize.js new file mode 100644 index 0000000..6535d4e --- /dev/null +++ b/node_modules/async/memoize.js @@ -0,0 +1,91 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = memoize; + +var _setImmediate = require('./internal/setImmediate.js'); + +var _setImmediate2 = _interopRequireDefault(_setImmediate); + +var _initialParams = require('./internal/initialParams.js'); + +var _initialParams2 = _interopRequireDefault(_initialParams); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Caches the results of an async function. When creating a hash to store + * function results against, the callback is omitted from the hash and an + * optional hash function can be used. + * + * **Note: if the async function errs, the result will not be cached and + * subsequent calls will call the wrapped function.** + * + * If no hash function is specified, the first argument is used as a hash key, + * which may work reasonably if it is a string or a data type that converts to a + * distinct string. Note that objects and arrays will not behave reasonably. + * Neither will cases where the other arguments are significant. In such cases, + * specify your own hash function. + * + * The cache of results is exposed as the `memo` property of the function + * returned by `memoize`. + * + * @name memoize + * @static + * @memberOf module:Utils + * @method + * @category Util + * @param {AsyncFunction} fn - The async function to proxy and cache results from. + * @param {Function} hasher - An optional function for generating a custom hash + * for storing results. It has all the arguments applied to it apart from the + * callback, and must be synchronous. + * @returns {AsyncFunction} a memoized version of `fn` + * @example + * + * var slow_fn = function(name, callback) { + * // do something + * callback(null, result); + * }; + * var fn = async.memoize(slow_fn); + * + * // fn can now be used as if it were slow_fn + * fn('some name', function() { + * // callback + * }); + */ +function memoize(fn, hasher = v => v) { + var memo = Object.create(null); + var queues = Object.create(null); + var _fn = (0, _wrapAsync2.default)(fn); + var memoized = (0, _initialParams2.default)((args, callback) => { + var key = hasher(...args); + if (key in memo) { + (0, _setImmediate2.default)(() => callback(null, ...memo[key])); + } else if (key in queues) { + queues[key].push(callback); + } else { + queues[key] = [callback]; + _fn(...args, (err, ...resultArgs) => { + // #1465 don't memoize if an error occurred + if (!err) { + memo[key] = resultArgs; + } + var q = queues[key]; + delete queues[key]; + for (var i = 0, l = q.length; i < l; i++) { + q[i](err, ...resultArgs); + } + }); + } + }); + memoized.memo = memo; + memoized.unmemoized = fn; + return memoized; +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/nextTick.js b/node_modules/async/nextTick.js new file mode 100644 index 0000000..8ebfda9 --- /dev/null +++ b/node_modules/async/nextTick.js @@ -0,0 +1,52 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _setImmediate = require('./internal/setImmediate.js'); + +/** + * Calls `callback` on a later loop around the event loop. In Node.js this just + * calls `process.nextTick`. In the browser it will use `setImmediate` if + * available, otherwise `setTimeout(callback, 0)`, which means other higher + * priority events may precede the execution of `callback`. + * + * This is used internally for browser-compatibility purposes. + * + * @name nextTick + * @static + * @memberOf module:Utils + * @method + * @see [async.setImmediate]{@link module:Utils.setImmediate} + * @category Util + * @param {Function} callback - The function to call on a later loop around + * the event loop. Invoked with (args...). + * @param {...*} args... - any number of additional arguments to pass to the + * callback on the next tick. + * @example + * + * var call_order = []; + * async.nextTick(function() { + * call_order.push('two'); + * // call_order now equals ['one','two'] + * }); + * call_order.push('one'); + * + * async.setImmediate(function (a, b, c) { + * // a, b, and c equal 1, 2, and 3 + * }, 1, 2, 3); + */ +var _defer; /* istanbul ignore file */ + + +if (_setImmediate.hasNextTick) { + _defer = process.nextTick; +} else if (_setImmediate.hasSetImmediate) { + _defer = setImmediate; +} else { + _defer = _setImmediate.fallback; +} + +exports.default = (0, _setImmediate.wrap)(_defer); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/package.json b/node_modules/async/package.json new file mode 100644 index 0000000..af98905 --- /dev/null +++ b/node_modules/async/package.json @@ -0,0 +1,75 @@ +{ + "name": "async", + "description": "Higher-order functions and common patterns for asynchronous code", + "version": "3.2.5", + "main": "dist/async.js", + "author": "Caolan McMahon", + "homepage": "https://caolan.github.io/async/", + "repository": { + "type": "git", + "url": "https://github.com/caolan/async.git" + }, + "bugs": { + "url": "https://github.com/caolan/async/issues" + }, + "keywords": [ + "async", + "callback", + "module", + "utility" + ], + "devDependencies": { + "@babel/eslint-parser": "^7.16.5", + "@babel/core": "7.23.2", + "babel-minify": "^0.5.0", + "babel-plugin-add-module-exports": "^1.0.4", + "babel-plugin-istanbul": "^6.1.1", + "babel-plugin-syntax-async-generators": "^6.13.0", + "babel-plugin-transform-es2015-modules-commonjs": "^6.26.2", + "babel-preset-es2015": "^6.3.13", + "babel-preset-es2017": "^6.22.0", + "babel-register": "^6.26.0", + "babelify": "^10.0.0", + "benchmark": "^2.1.1", + "bluebird": "^3.4.6", + "browserify": "^17.0.0", + "chai": "^4.2.0", + "cheerio": "^0.22.0", + "es6-promise": "^4.2.8", + "eslint": "^8.6.0", + "eslint-plugin-prefer-arrow": "^1.2.3", + "fs-extra": "^11.1.1", + "jsdoc": "^3.6.2", + "karma": "^6.3.12", + "karma-browserify": "^8.1.0", + "karma-firefox-launcher": "^2.1.2", + "karma-mocha": "^2.0.1", + "karma-mocha-reporter": "^2.2.0", + "karma-safari-launcher": "^1.0.0", + "mocha": "^6.1.4", + "native-promise-only": "^0.8.0-a", + "nyc": "^15.1.0", + "rollup": "^4.2.0", + "rollup-plugin-node-resolve": "^5.2.0", + "rollup-plugin-npm": "^2.0.0", + "rsvp": "^4.8.5", + "semver": "^7.3.5", + "yargs": "^17.3.1" + }, + "scripts": { + "coverage": "nyc npm run mocha-node-test -- --grep @nycinvalid --invert", + "jsdoc": "jsdoc -c ./support/jsdoc/jsdoc.json && node support/jsdoc/jsdoc-fix-html.js", + "lint": "eslint --fix .", + "mocha-browser-test": "karma start", + "mocha-node-test": "mocha", + "mocha-test": "npm run mocha-node-test && npm run mocha-browser-test", + "test": "npm run lint && npm run mocha-node-test" + }, + "license": "MIT", + "nyc": { + "exclude": [ + "test" + ] + }, + "module": "dist/async.mjs" +} \ No newline at end of file diff --git a/node_modules/async/parallel.js b/node_modules/async/parallel.js new file mode 100644 index 0000000..2c7976f --- /dev/null +++ b/node_modules/async/parallel.js @@ -0,0 +1,180 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = parallel; + +var _eachOf = require('./eachOf.js'); + +var _eachOf2 = _interopRequireDefault(_eachOf); + +var _parallel2 = require('./internal/parallel.js'); + +var _parallel3 = _interopRequireDefault(_parallel2); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Run the `tasks` collection of functions in parallel, without waiting until + * the previous function has completed. If any of the functions pass an error to + * its callback, the main `callback` is immediately called with the value of the + * error. Once the `tasks` have completed, the results are passed to the final + * `callback` as an array. + * + * **Note:** `parallel` is about kicking-off I/O tasks in parallel, not about + * parallel execution of code. If your tasks do not use any timers or perform + * any I/O, they will actually be executed in series. Any synchronous setup + * sections for each task will happen one after the other. JavaScript remains + * single-threaded. + * + * **Hint:** Use [`reflect`]{@link module:Utils.reflect} to continue the + * execution of other tasks when a task fails. + * + * It is also possible to use an object instead of an array. Each property will + * be run as a function and the results will be passed to the final `callback` + * as an object instead of an array. This can be a more readable way of handling + * results from {@link async.parallel}. + * + * @name parallel + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {Array|Iterable|AsyncIterable|Object} tasks - A collection of + * [async functions]{@link AsyncFunction} to run. + * Each async function can complete with any number of optional `result` values. + * @param {Function} [callback] - An optional callback to run once all the + * functions have completed successfully. This function gets a results array + * (or object) containing all the result arguments passed to the task callbacks. + * Invoked with (err, results). + * @returns {Promise} a promise, if a callback is not passed + * + * @example + * + * //Using Callbacks + * async.parallel([ + * function(callback) { + * setTimeout(function() { + * callback(null, 'one'); + * }, 200); + * }, + * function(callback) { + * setTimeout(function() { + * callback(null, 'two'); + * }, 100); + * } + * ], function(err, results) { + * console.log(results); + * // results is equal to ['one','two'] even though + * // the second function had a shorter timeout. + * }); + * + * // an example using an object instead of an array + * async.parallel({ + * one: function(callback) { + * setTimeout(function() { + * callback(null, 1); + * }, 200); + * }, + * two: function(callback) { + * setTimeout(function() { + * callback(null, 2); + * }, 100); + * } + * }, function(err, results) { + * console.log(results); + * // results is equal to: { one: 1, two: 2 } + * }); + * + * //Using Promises + * async.parallel([ + * function(callback) { + * setTimeout(function() { + * callback(null, 'one'); + * }, 200); + * }, + * function(callback) { + * setTimeout(function() { + * callback(null, 'two'); + * }, 100); + * } + * ]).then(results => { + * console.log(results); + * // results is equal to ['one','two'] even though + * // the second function had a shorter timeout. + * }).catch(err => { + * console.log(err); + * }); + * + * // an example using an object instead of an array + * async.parallel({ + * one: function(callback) { + * setTimeout(function() { + * callback(null, 1); + * }, 200); + * }, + * two: function(callback) { + * setTimeout(function() { + * callback(null, 2); + * }, 100); + * } + * }).then(results => { + * console.log(results); + * // results is equal to: { one: 1, two: 2 } + * }).catch(err => { + * console.log(err); + * }); + * + * //Using async/await + * async () => { + * try { + * let results = await async.parallel([ + * function(callback) { + * setTimeout(function() { + * callback(null, 'one'); + * }, 200); + * }, + * function(callback) { + * setTimeout(function() { + * callback(null, 'two'); + * }, 100); + * } + * ]); + * console.log(results); + * // results is equal to ['one','two'] even though + * // the second function had a shorter timeout. + * } + * catch (err) { + * console.log(err); + * } + * } + * + * // an example using an object instead of an array + * async () => { + * try { + * let results = await async.parallel({ + * one: function(callback) { + * setTimeout(function() { + * callback(null, 1); + * }, 200); + * }, + * two: function(callback) { + * setTimeout(function() { + * callback(null, 2); + * }, 100); + * } + * }); + * console.log(results); + * // results is equal to: { one: 1, two: 2 } + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ +function parallel(tasks, callback) { + return (0, _parallel3.default)(_eachOf2.default, tasks, callback); +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/parallelLimit.js b/node_modules/async/parallelLimit.js new file mode 100644 index 0000000..4337957 --- /dev/null +++ b/node_modules/async/parallelLimit.js @@ -0,0 +1,41 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = parallelLimit; + +var _eachOfLimit = require('./internal/eachOfLimit.js'); + +var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit); + +var _parallel = require('./internal/parallel.js'); + +var _parallel2 = _interopRequireDefault(_parallel); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`parallel`]{@link module:ControlFlow.parallel} but runs a maximum of `limit` async operations at a + * time. + * + * @name parallelLimit + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.parallel]{@link module:ControlFlow.parallel} + * @category Control Flow + * @param {Array|Iterable|AsyncIterable|Object} tasks - A collection of + * [async functions]{@link AsyncFunction} to run. + * Each async function can complete with any number of optional `result` values. + * @param {number} limit - The maximum number of async operations at a time. + * @param {Function} [callback] - An optional callback to run once all the + * functions have completed successfully. This function gets a results array + * (or object) containing all the result arguments passed to the task callbacks. + * Invoked with (err, results). + * @returns {Promise} a promise, if a callback is not passed + */ +function parallelLimit(tasks, limit, callback) { + return (0, _parallel2.default)((0, _eachOfLimit2.default)(limit), tasks, callback); +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/priorityQueue.js b/node_modules/async/priorityQueue.js new file mode 100644 index 0000000..16c4daa --- /dev/null +++ b/node_modules/async/priorityQueue.js @@ -0,0 +1,60 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +exports.default = function (worker, concurrency) { + // Start with a normal queue + var q = (0, _queue2.default)(worker, concurrency); + + var { + push, + pushAsync + } = q; + + q._tasks = new _Heap2.default(); + q._createTaskItem = ({ data, priority }, callback) => { + return { + data, + priority, + callback + }; + }; + + function createDataItems(tasks, priority) { + if (!Array.isArray(tasks)) { + return { data: tasks, priority }; + } + return tasks.map(data => { + return { data, priority }; + }); + } + + // Override push to accept second parameter representing priority + q.push = function (data, priority = 0, callback) { + return push(createDataItems(data, priority), callback); + }; + + q.pushAsync = function (data, priority = 0, callback) { + return pushAsync(createDataItems(data, priority), callback); + }; + + // Remove unshift functions + delete q.unshift; + delete q.unshiftAsync; + + return q; +}; + +var _queue = require('./queue.js'); + +var _queue2 = _interopRequireDefault(_queue); + +var _Heap = require('./internal/Heap.js'); + +var _Heap2 = _interopRequireDefault(_Heap); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/queue.js b/node_modules/async/queue.js new file mode 100644 index 0000000..c01340d --- /dev/null +++ b/node_modules/async/queue.js @@ -0,0 +1,24 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +exports.default = function (worker, concurrency) { + var _worker = (0, _wrapAsync2.default)(worker); + return (0, _queue2.default)((items, cb) => { + _worker(items[0], cb); + }, concurrency, 1); +}; + +var _queue = require('./internal/queue.js'); + +var _queue2 = _interopRequireDefault(_queue); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/race.js b/node_modules/async/race.js new file mode 100644 index 0000000..aa167be --- /dev/null +++ b/node_modules/async/race.js @@ -0,0 +1,67 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _once = require('./internal/once.js'); + +var _once2 = _interopRequireDefault(_once); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Runs the `tasks` array of functions in parallel, without waiting until the + * previous function has completed. Once any of the `tasks` complete or pass an + * error to its callback, the main `callback` is immediately called. It's + * equivalent to `Promise.race()`. + * + * @name race + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {Array} tasks - An array containing [async functions]{@link AsyncFunction} + * to run. Each function can complete with an optional `result` value. + * @param {Function} callback - A callback to run once any of the functions have + * completed. This function gets an error or result from the first function that + * completed. Invoked with (err, result). + * @returns {Promise} a promise, if a callback is omitted + * @example + * + * async.race([ + * function(callback) { + * setTimeout(function() { + * callback(null, 'one'); + * }, 200); + * }, + * function(callback) { + * setTimeout(function() { + * callback(null, 'two'); + * }, 100); + * } + * ], + * // main callback + * function(err, result) { + * // the result will be equal to 'two' as it finishes earlier + * }); + */ +function race(tasks, callback) { + callback = (0, _once2.default)(callback); + if (!Array.isArray(tasks)) return callback(new TypeError('First argument to race must be an array of functions')); + if (!tasks.length) return callback(); + for (var i = 0, l = tasks.length; i < l; i++) { + (0, _wrapAsync2.default)(tasks[i])(callback); + } +} + +exports.default = (0, _awaitify2.default)(race, 2); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/reduce.js b/node_modules/async/reduce.js new file mode 100644 index 0000000..8a69548 --- /dev/null +++ b/node_modules/async/reduce.js @@ -0,0 +1,153 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _eachOfSeries = require('./eachOfSeries.js'); + +var _eachOfSeries2 = _interopRequireDefault(_eachOfSeries); + +var _once = require('./internal/once.js'); + +var _once2 = _interopRequireDefault(_once); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Reduces `coll` into a single value using an async `iteratee` to return each + * successive step. `memo` is the initial state of the reduction. This function + * only operates in series. + * + * For performance reasons, it may make sense to split a call to this function + * into a parallel map, and then use the normal `Array.prototype.reduce` on the + * results. This function is for situations where each step in the reduction + * needs to be async; if you can get the data before reducing it, then it's + * probably a good idea to do so. + * + * @name reduce + * @static + * @memberOf module:Collections + * @method + * @alias inject + * @alias foldl + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {*} memo - The initial state of the reduction. + * @param {AsyncFunction} iteratee - A function applied to each item in the + * array to produce the next step in the reduction. + * The `iteratee` should complete with the next state of the reduction. + * If the iteratee completes with an error, the reduction is stopped and the + * main `callback` is immediately called with the error. + * Invoked with (memo, item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Result is the reduced value. Invoked with + * (err, result). + * @returns {Promise} a promise, if no callback is passed + * @example + * + * // file1.txt is a file that is 1000 bytes in size + * // file2.txt is a file that is 2000 bytes in size + * // file3.txt is a file that is 3000 bytes in size + * // file4.txt does not exist + * + * const fileList = ['file1.txt','file2.txt','file3.txt']; + * const withMissingFileList = ['file1.txt','file2.txt','file3.txt', 'file4.txt']; + * + * // asynchronous function that computes the file size in bytes + * // file size is added to the memoized value, then returned + * function getFileSizeInBytes(memo, file, callback) { + * fs.stat(file, function(err, stat) { + * if (err) { + * return callback(err); + * } + * callback(null, memo + stat.size); + * }); + * } + * + * // Using callbacks + * async.reduce(fileList, 0, getFileSizeInBytes, function(err, result) { + * if (err) { + * console.log(err); + * } else { + * console.log(result); + * // 6000 + * // which is the sum of the file sizes of the three files + * } + * }); + * + * // Error Handling + * async.reduce(withMissingFileList, 0, getFileSizeInBytes, function(err, result) { + * if (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } else { + * console.log(result); + * } + * }); + * + * // Using Promises + * async.reduce(fileList, 0, getFileSizeInBytes) + * .then( result => { + * console.log(result); + * // 6000 + * // which is the sum of the file sizes of the three files + * }).catch( err => { + * console.log(err); + * }); + * + * // Error Handling + * async.reduce(withMissingFileList, 0, getFileSizeInBytes) + * .then( result => { + * console.log(result); + * }).catch( err => { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.reduce(fileList, 0, getFileSizeInBytes); + * console.log(result); + * // 6000 + * // which is the sum of the file sizes of the three files + * } + * catch (err) { + * console.log(err); + * } + * } + * + * // Error Handling + * async () => { + * try { + * let result = await async.reduce(withMissingFileList, 0, getFileSizeInBytes); + * console.log(result); + * } + * catch (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } + * } + * + */ +function reduce(coll, memo, iteratee, callback) { + callback = (0, _once2.default)(callback); + var _iteratee = (0, _wrapAsync2.default)(iteratee); + return (0, _eachOfSeries2.default)(coll, (x, i, iterCb) => { + _iteratee(memo, x, (err, v) => { + memo = v; + iterCb(err); + }); + }, err => callback(err, memo)); +} +exports.default = (0, _awaitify2.default)(reduce, 4); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/reduceRight.js b/node_modules/async/reduceRight.js new file mode 100644 index 0000000..5be1b68 --- /dev/null +++ b/node_modules/async/reduceRight.js @@ -0,0 +1,41 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = reduceRight; + +var _reduce = require('./reduce.js'); + +var _reduce2 = _interopRequireDefault(_reduce); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Same as [`reduce`]{@link module:Collections.reduce}, only operates on `array` in reverse order. + * + * @name reduceRight + * @static + * @memberOf module:Collections + * @method + * @see [async.reduce]{@link module:Collections.reduce} + * @alias foldr + * @category Collection + * @param {Array} array - A collection to iterate over. + * @param {*} memo - The initial state of the reduction. + * @param {AsyncFunction} iteratee - A function applied to each item in the + * array to produce the next step in the reduction. + * The `iteratee` should complete with the next state of the reduction. + * If the iteratee completes with an error, the reduction is stopped and the + * main `callback` is immediately called with the error. + * Invoked with (memo, item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Result is the reduced value. Invoked with + * (err, result). + * @returns {Promise} a promise, if no callback is passed + */ +function reduceRight(array, memo, iteratee, callback) { + var reversed = [...array].reverse(); + return (0, _reduce2.default)(reversed, memo, iteratee, callback); +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/reflect.js b/node_modules/async/reflect.js new file mode 100644 index 0000000..3954495 --- /dev/null +++ b/node_modules/async/reflect.js @@ -0,0 +1,78 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = reflect; + +var _initialParams = require('./internal/initialParams.js'); + +var _initialParams2 = _interopRequireDefault(_initialParams); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Wraps the async function in another function that always completes with a + * result object, even when it errors. + * + * The result object has either the property `error` or `value`. + * + * @name reflect + * @static + * @memberOf module:Utils + * @method + * @category Util + * @param {AsyncFunction} fn - The async function you want to wrap + * @returns {Function} - A function that always passes null to it's callback as + * the error. The second argument to the callback will be an `object` with + * either an `error` or a `value` property. + * @example + * + * async.parallel([ + * async.reflect(function(callback) { + * // do some stuff ... + * callback(null, 'one'); + * }), + * async.reflect(function(callback) { + * // do some more stuff but error ... + * callback('bad stuff happened'); + * }), + * async.reflect(function(callback) { + * // do some more stuff ... + * callback(null, 'two'); + * }) + * ], + * // optional callback + * function(err, results) { + * // values + * // results[0].value = 'one' + * // results[1].error = 'bad stuff happened' + * // results[2].value = 'two' + * }); + */ +function reflect(fn) { + var _fn = (0, _wrapAsync2.default)(fn); + return (0, _initialParams2.default)(function reflectOn(args, reflectCallback) { + args.push((error, ...cbArgs) => { + let retVal = {}; + if (error) { + retVal.error = error; + } + if (cbArgs.length > 0) { + var value = cbArgs; + if (cbArgs.length <= 1) { + [value] = cbArgs; + } + retVal.value = value; + } + reflectCallback(null, retVal); + }); + + return _fn.apply(this, args); + }); +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/reflectAll.js b/node_modules/async/reflectAll.js new file mode 100644 index 0000000..b78d598 --- /dev/null +++ b/node_modules/async/reflectAll.js @@ -0,0 +1,93 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = reflectAll; + +var _reflect = require('./reflect.js'); + +var _reflect2 = _interopRequireDefault(_reflect); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * A helper function that wraps an array or an object of functions with `reflect`. + * + * @name reflectAll + * @static + * @memberOf module:Utils + * @method + * @see [async.reflect]{@link module:Utils.reflect} + * @category Util + * @param {Array|Object|Iterable} tasks - The collection of + * [async functions]{@link AsyncFunction} to wrap in `async.reflect`. + * @returns {Array} Returns an array of async functions, each wrapped in + * `async.reflect` + * @example + * + * let tasks = [ + * function(callback) { + * setTimeout(function() { + * callback(null, 'one'); + * }, 200); + * }, + * function(callback) { + * // do some more stuff but error ... + * callback(new Error('bad stuff happened')); + * }, + * function(callback) { + * setTimeout(function() { + * callback(null, 'two'); + * }, 100); + * } + * ]; + * + * async.parallel(async.reflectAll(tasks), + * // optional callback + * function(err, results) { + * // values + * // results[0].value = 'one' + * // results[1].error = Error('bad stuff happened') + * // results[2].value = 'two' + * }); + * + * // an example using an object instead of an array + * let tasks = { + * one: function(callback) { + * setTimeout(function() { + * callback(null, 'one'); + * }, 200); + * }, + * two: function(callback) { + * callback('two'); + * }, + * three: function(callback) { + * setTimeout(function() { + * callback(null, 'three'); + * }, 100); + * } + * }; + * + * async.parallel(async.reflectAll(tasks), + * // optional callback + * function(err, results) { + * // values + * // results.one.value = 'one' + * // results.two.error = 'two' + * // results.three.value = 'three' + * }); + */ +function reflectAll(tasks) { + var results; + if (Array.isArray(tasks)) { + results = tasks.map(_reflect2.default); + } else { + results = {}; + Object.keys(tasks).forEach(key => { + results[key] = _reflect2.default.call(this, tasks[key]); + }); + } + return results; +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/reject.js b/node_modules/async/reject.js new file mode 100644 index 0000000..895949b --- /dev/null +++ b/node_modules/async/reject.js @@ -0,0 +1,87 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _reject2 = require('./internal/reject.js'); + +var _reject3 = _interopRequireDefault(_reject2); + +var _eachOf = require('./eachOf.js'); + +var _eachOf2 = _interopRequireDefault(_eachOf); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The opposite of [`filter`]{@link module:Collections.filter}. Removes values that pass an `async` truth test. + * + * @name reject + * @static + * @memberOf module:Collections + * @method + * @see [async.filter]{@link module:Collections.filter} + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {Function} iteratee - An async truth test to apply to each item in + * `coll`. + * The should complete with a boolean value as its `result`. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Invoked with (err, results). + * @returns {Promise} a promise, if no callback is passed + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * + * const fileList = ['dir1/file1.txt','dir2/file3.txt','dir3/file6.txt']; + * + * // asynchronous function that checks if a file exists + * function fileExists(file, callback) { + * fs.access(file, fs.constants.F_OK, (err) => { + * callback(null, !err); + * }); + * } + * + * // Using callbacks + * async.reject(fileList, fileExists, function(err, results) { + * // [ 'dir3/file6.txt' ] + * // results now equals an array of the non-existing files + * }); + * + * // Using Promises + * async.reject(fileList, fileExists) + * .then( results => { + * console.log(results); + * // [ 'dir3/file6.txt' ] + * // results now equals an array of the non-existing files + * }).catch( err => { + * console.log(err); + * }); + * + * // Using async/await + * async () => { + * try { + * let results = await async.reject(fileList, fileExists); + * console.log(results); + * // [ 'dir3/file6.txt' ] + * // results now equals an array of the non-existing files + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ +function reject(coll, iteratee, callback) { + return (0, _reject3.default)(_eachOf2.default, coll, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(reject, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/rejectLimit.js b/node_modules/async/rejectLimit.js new file mode 100644 index 0000000..ce10edf --- /dev/null +++ b/node_modules/async/rejectLimit.js @@ -0,0 +1,45 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _reject2 = require('./internal/reject.js'); + +var _reject3 = _interopRequireDefault(_reject2); + +var _eachOfLimit = require('./internal/eachOfLimit.js'); + +var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`reject`]{@link module:Collections.reject} but runs a maximum of `limit` async operations at a + * time. + * + * @name rejectLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.reject]{@link module:Collections.reject} + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {Function} iteratee - An async truth test to apply to each item in + * `coll`. + * The should complete with a boolean value as its `result`. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Invoked with (err, results). + * @returns {Promise} a promise, if no callback is passed + */ +function rejectLimit(coll, limit, iteratee, callback) { + return (0, _reject3.default)((0, _eachOfLimit2.default)(limit), coll, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(rejectLimit, 4); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/rejectSeries.js b/node_modules/async/rejectSeries.js new file mode 100644 index 0000000..c08e413 --- /dev/null +++ b/node_modules/async/rejectSeries.js @@ -0,0 +1,43 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _reject2 = require('./internal/reject.js'); + +var _reject3 = _interopRequireDefault(_reject2); + +var _eachOfSeries = require('./eachOfSeries.js'); + +var _eachOfSeries2 = _interopRequireDefault(_eachOfSeries); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`reject`]{@link module:Collections.reject} but runs only a single async operation at a time. + * + * @name rejectSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.reject]{@link module:Collections.reject} + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {Function} iteratee - An async truth test to apply to each item in + * `coll`. + * The should complete with a boolean value as its `result`. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Invoked with (err, results). + * @returns {Promise} a promise, if no callback is passed + */ +function rejectSeries(coll, iteratee, callback) { + return (0, _reject3.default)(_eachOfSeries2.default, coll, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(rejectSeries, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/retry.js b/node_modules/async/retry.js new file mode 100644 index 0000000..a4b0235 --- /dev/null +++ b/node_modules/async/retry.js @@ -0,0 +1,159 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = retry; + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _promiseCallback = require('./internal/promiseCallback.js'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function constant(value) { + return function () { + return value; + }; +} + +/** + * Attempts to get a successful response from `task` no more than `times` times + * before returning an error. If the task is successful, the `callback` will be + * passed the result of the successful task. If all attempts fail, the callback + * will be passed the error and result (if any) of the final attempt. + * + * @name retry + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @see [async.retryable]{@link module:ControlFlow.retryable} + * @param {Object|number} [opts = {times: 5, interval: 0}| 5] - Can be either an + * object with `times` and `interval` or a number. + * * `times` - The number of attempts to make before giving up. The default + * is `5`. + * * `interval` - The time to wait between retries, in milliseconds. The + * default is `0`. The interval may also be specified as a function of the + * retry count (see example). + * * `errorFilter` - An optional synchronous function that is invoked on + * erroneous result. If it returns `true` the retry attempts will continue; + * if the function returns `false` the retry flow is aborted with the current + * attempt's error and result being returned to the final callback. + * Invoked with (err). + * * If `opts` is a number, the number specifies the number of times to retry, + * with the default interval of `0`. + * @param {AsyncFunction} task - An async function to retry. + * Invoked with (callback). + * @param {Function} [callback] - An optional callback which is called when the + * task has succeeded, or after the final failed attempt. It receives the `err` + * and `result` arguments of the last attempt at completing the `task`. Invoked + * with (err, results). + * @returns {Promise} a promise if no callback provided + * + * @example + * + * // The `retry` function can be used as a stand-alone control flow by passing + * // a callback, as shown below: + * + * // try calling apiMethod 3 times + * async.retry(3, apiMethod, function(err, result) { + * // do something with the result + * }); + * + * // try calling apiMethod 3 times, waiting 200 ms between each retry + * async.retry({times: 3, interval: 200}, apiMethod, function(err, result) { + * // do something with the result + * }); + * + * // try calling apiMethod 10 times with exponential backoff + * // (i.e. intervals of 100, 200, 400, 800, 1600, ... milliseconds) + * async.retry({ + * times: 10, + * interval: function(retryCount) { + * return 50 * Math.pow(2, retryCount); + * } + * }, apiMethod, function(err, result) { + * // do something with the result + * }); + * + * // try calling apiMethod the default 5 times no delay between each retry + * async.retry(apiMethod, function(err, result) { + * // do something with the result + * }); + * + * // try calling apiMethod only when error condition satisfies, all other + * // errors will abort the retry control flow and return to final callback + * async.retry({ + * errorFilter: function(err) { + * return err.message === 'Temporary error'; // only retry on a specific error + * } + * }, apiMethod, function(err, result) { + * // do something with the result + * }); + * + * // to retry individual methods that are not as reliable within other + * // control flow functions, use the `retryable` wrapper: + * async.auto({ + * users: api.getUsers.bind(api), + * payments: async.retryable(3, api.getPayments.bind(api)) + * }, function(err, results) { + * // do something with the results + * }); + * + */ +const DEFAULT_TIMES = 5; +const DEFAULT_INTERVAL = 0; + +function retry(opts, task, callback) { + var options = { + times: DEFAULT_TIMES, + intervalFunc: constant(DEFAULT_INTERVAL) + }; + + if (arguments.length < 3 && typeof opts === 'function') { + callback = task || (0, _promiseCallback.promiseCallback)(); + task = opts; + } else { + parseTimes(options, opts); + callback = callback || (0, _promiseCallback.promiseCallback)(); + } + + if (typeof task !== 'function') { + throw new Error("Invalid arguments for async.retry"); + } + + var _task = (0, _wrapAsync2.default)(task); + + var attempt = 1; + function retryAttempt() { + _task((err, ...args) => { + if (err === false) return; + if (err && attempt++ < options.times && (typeof options.errorFilter != 'function' || options.errorFilter(err))) { + setTimeout(retryAttempt, options.intervalFunc(attempt - 1)); + } else { + callback(err, ...args); + } + }); + } + + retryAttempt(); + return callback[_promiseCallback.PROMISE_SYMBOL]; +} + +function parseTimes(acc, t) { + if (typeof t === 'object') { + acc.times = +t.times || DEFAULT_TIMES; + + acc.intervalFunc = typeof t.interval === 'function' ? t.interval : constant(+t.interval || DEFAULT_INTERVAL); + + acc.errorFilter = t.errorFilter; + } else if (typeof t === 'number' || typeof t === 'string') { + acc.times = +t || DEFAULT_TIMES; + } else { + throw new Error("Invalid arguments for async.retry"); + } +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/retryable.js b/node_modules/async/retryable.js new file mode 100644 index 0000000..68256c3 --- /dev/null +++ b/node_modules/async/retryable.js @@ -0,0 +1,77 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = retryable; + +var _retry = require('./retry.js'); + +var _retry2 = _interopRequireDefault(_retry); + +var _initialParams = require('./internal/initialParams.js'); + +var _initialParams2 = _interopRequireDefault(_initialParams); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _promiseCallback = require('./internal/promiseCallback.js'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * A close relative of [`retry`]{@link module:ControlFlow.retry}. This method + * wraps a task and makes it retryable, rather than immediately calling it + * with retries. + * + * @name retryable + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.retry]{@link module:ControlFlow.retry} + * @category Control Flow + * @param {Object|number} [opts = {times: 5, interval: 0}| 5] - optional + * options, exactly the same as from `retry`, except for a `opts.arity` that + * is the arity of the `task` function, defaulting to `task.length` + * @param {AsyncFunction} task - the asynchronous function to wrap. + * This function will be passed any arguments passed to the returned wrapper. + * Invoked with (...args, callback). + * @returns {AsyncFunction} The wrapped function, which when invoked, will + * retry on an error, based on the parameters specified in `opts`. + * This function will accept the same parameters as `task`. + * @example + * + * async.auto({ + * dep1: async.retryable(3, getFromFlakyService), + * process: ["dep1", async.retryable(3, function (results, cb) { + * maybeProcessData(results.dep1, cb); + * })] + * }, callback); + */ +function retryable(opts, task) { + if (!task) { + task = opts; + opts = null; + } + let arity = opts && opts.arity || task.length; + if ((0, _wrapAsync.isAsync)(task)) { + arity += 1; + } + var _task = (0, _wrapAsync2.default)(task); + return (0, _initialParams2.default)((args, callback) => { + if (args.length < arity - 1 || callback == null) { + args.push(callback); + callback = (0, _promiseCallback.promiseCallback)(); + } + function taskFn(cb) { + _task(...args, cb); + } + + if (opts) (0, _retry2.default)(opts, taskFn, callback);else (0, _retry2.default)(taskFn, callback); + + return callback[_promiseCallback.PROMISE_SYMBOL]; + }); +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/select.js b/node_modules/async/select.js new file mode 100644 index 0000000..2c9a63d --- /dev/null +++ b/node_modules/async/select.js @@ -0,0 +1,93 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _filter2 = require('./internal/filter.js'); + +var _filter3 = _interopRequireDefault(_filter2); + +var _eachOf = require('./eachOf.js'); + +var _eachOf2 = _interopRequireDefault(_eachOf); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Returns a new array of all the values in `coll` which pass an async truth + * test. This operation is performed in parallel, but the results array will be + * in the same order as the original. + * + * @name filter + * @static + * @memberOf module:Collections + * @method + * @alias select + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {Function} iteratee - A truth test to apply to each item in `coll`. + * The `iteratee` is passed a `callback(err, truthValue)`, which must be called + * with a boolean argument once it has completed. Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Invoked with (err, results). + * @returns {Promise} a promise, if no callback provided + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * + * const files = ['dir1/file1.txt','dir2/file3.txt','dir3/file6.txt']; + * + * // asynchronous function that checks if a file exists + * function fileExists(file, callback) { + * fs.access(file, fs.constants.F_OK, (err) => { + * callback(null, !err); + * }); + * } + * + * // Using callbacks + * async.filter(files, fileExists, function(err, results) { + * if(err) { + * console.log(err); + * } else { + * console.log(results); + * // [ 'dir1/file1.txt', 'dir2/file3.txt' ] + * // results is now an array of the existing files + * } + * }); + * + * // Using Promises + * async.filter(files, fileExists) + * .then(results => { + * console.log(results); + * // [ 'dir1/file1.txt', 'dir2/file3.txt' ] + * // results is now an array of the existing files + * }).catch(err => { + * console.log(err); + * }); + * + * // Using async/await + * async () => { + * try { + * let results = await async.filter(files, fileExists); + * console.log(results); + * // [ 'dir1/file1.txt', 'dir2/file3.txt' ] + * // results is now an array of the existing files + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ +function filter(coll, iteratee, callback) { + return (0, _filter3.default)(_eachOf2.default, coll, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(filter, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/selectLimit.js b/node_modules/async/selectLimit.js new file mode 100644 index 0000000..d3b3f50 --- /dev/null +++ b/node_modules/async/selectLimit.js @@ -0,0 +1,45 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _filter2 = require('./internal/filter.js'); + +var _filter3 = _interopRequireDefault(_filter2); + +var _eachOfLimit = require('./internal/eachOfLimit.js'); + +var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`filter`]{@link module:Collections.filter} but runs a maximum of `limit` async operations at a + * time. + * + * @name filterLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.filter]{@link module:Collections.filter} + * @alias selectLimit + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {Function} iteratee - A truth test to apply to each item in `coll`. + * The `iteratee` is passed a `callback(err, truthValue)`, which must be called + * with a boolean argument once it has completed. Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Invoked with (err, results). + * @returns {Promise} a promise, if no callback provided + */ +function filterLimit(coll, limit, iteratee, callback) { + return (0, _filter3.default)((0, _eachOfLimit2.default)(limit), coll, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(filterLimit, 4); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/selectSeries.js b/node_modules/async/selectSeries.js new file mode 100644 index 0000000..019a2d0 --- /dev/null +++ b/node_modules/async/selectSeries.js @@ -0,0 +1,43 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _filter2 = require('./internal/filter.js'); + +var _filter3 = _interopRequireDefault(_filter2); + +var _eachOfSeries = require('./eachOfSeries.js'); + +var _eachOfSeries2 = _interopRequireDefault(_eachOfSeries); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`filter`]{@link module:Collections.filter} but runs only a single async operation at a time. + * + * @name filterSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.filter]{@link module:Collections.filter} + * @alias selectSeries + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {Function} iteratee - A truth test to apply to each item in `coll`. + * The `iteratee` is passed a `callback(err, truthValue)`, which must be called + * with a boolean argument once it has completed. Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Invoked with (err, results) + * @returns {Promise} a promise, if no callback provided + */ +function filterSeries(coll, iteratee, callback) { + return (0, _filter3.default)(_eachOfSeries2.default, coll, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(filterSeries, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/seq.js b/node_modules/async/seq.js new file mode 100644 index 0000000..e7881cd --- /dev/null +++ b/node_modules/async/seq.js @@ -0,0 +1,79 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = seq; + +var _reduce = require('./reduce.js'); + +var _reduce2 = _interopRequireDefault(_reduce); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _promiseCallback = require('./internal/promiseCallback.js'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Version of the compose function that is more natural to read. Each function + * consumes the return value of the previous function. It is the equivalent of + * [compose]{@link module:ControlFlow.compose} with the arguments reversed. + * + * Each function is executed with the `this` binding of the composed function. + * + * @name seq + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.compose]{@link module:ControlFlow.compose} + * @category Control Flow + * @param {...AsyncFunction} functions - the asynchronous functions to compose + * @returns {Function} a function that composes the `functions` in order + * @example + * + * // Requires lodash (or underscore), express3 and dresende's orm2. + * // Part of an app, that fetches cats of the logged user. + * // This example uses `seq` function to avoid overnesting and error + * // handling clutter. + * app.get('/cats', function(request, response) { + * var User = request.models.User; + * async.seq( + * User.get.bind(User), // 'User.get' has signature (id, callback(err, data)) + * function(user, fn) { + * user.getCats(fn); // 'getCats' has signature (callback(err, data)) + * } + * )(req.session.user_id, function (err, cats) { + * if (err) { + * console.error(err); + * response.json({ status: 'error', message: err.message }); + * } else { + * response.json({ status: 'ok', message: 'Cats found', data: cats }); + * } + * }); + * }); + */ +function seq(...functions) { + var _functions = functions.map(_wrapAsync2.default); + return function (...args) { + var that = this; + + var cb = args[args.length - 1]; + if (typeof cb == 'function') { + args.pop(); + } else { + cb = (0, _promiseCallback.promiseCallback)(); + } + + (0, _reduce2.default)(_functions, args, (newargs, fn, iterCb) => { + fn.apply(that, newargs.concat((err, ...nextargs) => { + iterCb(err, nextargs); + })); + }, (err, results) => cb(err, ...results)); + + return cb[_promiseCallback.PROMISE_SYMBOL]; + }; +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/series.js b/node_modules/async/series.js new file mode 100644 index 0000000..60c17ed --- /dev/null +++ b/node_modules/async/series.js @@ -0,0 +1,186 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = series; + +var _parallel2 = require('./internal/parallel.js'); + +var _parallel3 = _interopRequireDefault(_parallel2); + +var _eachOfSeries = require('./eachOfSeries.js'); + +var _eachOfSeries2 = _interopRequireDefault(_eachOfSeries); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Run the functions in the `tasks` collection in series, each one running once + * the previous function has completed. If any functions in the series pass an + * error to its callback, no more functions are run, and `callback` is + * immediately called with the value of the error. Otherwise, `callback` + * receives an array of results when `tasks` have completed. + * + * It is also possible to use an object instead of an array. Each property will + * be run as a function, and the results will be passed to the final `callback` + * as an object instead of an array. This can be a more readable way of handling + * results from {@link async.series}. + * + * **Note** that while many implementations preserve the order of object + * properties, the [ECMAScript Language Specification](http://www.ecma-international.org/ecma-262/5.1/#sec-8.6) + * explicitly states that + * + * > The mechanics and order of enumerating the properties is not specified. + * + * So if you rely on the order in which your series of functions are executed, + * and want this to work on all platforms, consider using an array. + * + * @name series + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {Array|Iterable|AsyncIterable|Object} tasks - A collection containing + * [async functions]{@link AsyncFunction} to run in series. + * Each function can complete with any number of optional `result` values. + * @param {Function} [callback] - An optional callback to run once all the + * functions have completed. This function gets a results array (or object) + * containing all the result arguments passed to the `task` callbacks. Invoked + * with (err, result). + * @return {Promise} a promise, if no callback is passed + * @example + * + * //Using Callbacks + * async.series([ + * function(callback) { + * setTimeout(function() { + * // do some async task + * callback(null, 'one'); + * }, 200); + * }, + * function(callback) { + * setTimeout(function() { + * // then do another async task + * callback(null, 'two'); + * }, 100); + * } + * ], function(err, results) { + * console.log(results); + * // results is equal to ['one','two'] + * }); + * + * // an example using objects instead of arrays + * async.series({ + * one: function(callback) { + * setTimeout(function() { + * // do some async task + * callback(null, 1); + * }, 200); + * }, + * two: function(callback) { + * setTimeout(function() { + * // then do another async task + * callback(null, 2); + * }, 100); + * } + * }, function(err, results) { + * console.log(results); + * // results is equal to: { one: 1, two: 2 } + * }); + * + * //Using Promises + * async.series([ + * function(callback) { + * setTimeout(function() { + * callback(null, 'one'); + * }, 200); + * }, + * function(callback) { + * setTimeout(function() { + * callback(null, 'two'); + * }, 100); + * } + * ]).then(results => { + * console.log(results); + * // results is equal to ['one','two'] + * }).catch(err => { + * console.log(err); + * }); + * + * // an example using an object instead of an array + * async.series({ + * one: function(callback) { + * setTimeout(function() { + * // do some async task + * callback(null, 1); + * }, 200); + * }, + * two: function(callback) { + * setTimeout(function() { + * // then do another async task + * callback(null, 2); + * }, 100); + * } + * }).then(results => { + * console.log(results); + * // results is equal to: { one: 1, two: 2 } + * }).catch(err => { + * console.log(err); + * }); + * + * //Using async/await + * async () => { + * try { + * let results = await async.series([ + * function(callback) { + * setTimeout(function() { + * // do some async task + * callback(null, 'one'); + * }, 200); + * }, + * function(callback) { + * setTimeout(function() { + * // then do another async task + * callback(null, 'two'); + * }, 100); + * } + * ]); + * console.log(results); + * // results is equal to ['one','two'] + * } + * catch (err) { + * console.log(err); + * } + * } + * + * // an example using an object instead of an array + * async () => { + * try { + * let results = await async.parallel({ + * one: function(callback) { + * setTimeout(function() { + * // do some async task + * callback(null, 1); + * }, 200); + * }, + * two: function(callback) { + * setTimeout(function() { + * // then do another async task + * callback(null, 2); + * }, 100); + * } + * }); + * console.log(results); + * // results is equal to: { one: 1, two: 2 } + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ +function series(tasks, callback) { + return (0, _parallel3.default)(_eachOfSeries2.default, tasks, callback); +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/setImmediate.js b/node_modules/async/setImmediate.js new file mode 100644 index 0000000..eea8677 --- /dev/null +++ b/node_modules/async/setImmediate.js @@ -0,0 +1,45 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _setImmediate = require('./internal/setImmediate.js'); + +var _setImmediate2 = _interopRequireDefault(_setImmediate); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Calls `callback` on a later loop around the event loop. In Node.js this just + * calls `setImmediate`. In the browser it will use `setImmediate` if + * available, otherwise `setTimeout(callback, 0)`, which means other higher + * priority events may precede the execution of `callback`. + * + * This is used internally for browser-compatibility purposes. + * + * @name setImmediate + * @static + * @memberOf module:Utils + * @method + * @see [async.nextTick]{@link module:Utils.nextTick} + * @category Util + * @param {Function} callback - The function to call on a later loop around + * the event loop. Invoked with (args...). + * @param {...*} args... - any number of additional arguments to pass to the + * callback on the next tick. + * @example + * + * var call_order = []; + * async.nextTick(function() { + * call_order.push('two'); + * // call_order now equals ['one','two'] + * }); + * call_order.push('one'); + * + * async.setImmediate(function (a, b, c) { + * // a, b, and c equal 1, 2, and 3 + * }, 1, 2, 3); + */ +exports.default = _setImmediate2.default; +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/some.js b/node_modules/async/some.js new file mode 100644 index 0000000..a5bd328 --- /dev/null +++ b/node_modules/async/some.js @@ -0,0 +1,122 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createTester = require('./internal/createTester.js'); + +var _createTester2 = _interopRequireDefault(_createTester); + +var _eachOf = require('./eachOf.js'); + +var _eachOf2 = _interopRequireDefault(_eachOf); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Returns `true` if at least one element in the `coll` satisfies an async test. + * If any iteratee call returns `true`, the main `callback` is immediately + * called. + * + * @name some + * @static + * @memberOf module:Collections + * @method + * @alias any + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collections in parallel. + * The iteratee should complete with a boolean `result` value. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called as soon as any + * iteratee returns `true`, or after all the iteratee functions have finished. + * Result will be either `true` or `false` depending on the values of the async + * tests. Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + * @example + * + * // dir1 is a directory that contains file1.txt, file2.txt + * // dir2 is a directory that contains file3.txt, file4.txt + * // dir3 is a directory that contains file5.txt + * // dir4 does not exist + * + * // asynchronous function that checks if a file exists + * function fileExists(file, callback) { + * fs.access(file, fs.constants.F_OK, (err) => { + * callback(null, !err); + * }); + * } + * + * // Using callbacks + * async.some(['dir1/missing.txt','dir2/missing.txt','dir3/file5.txt'], fileExists, + * function(err, result) { + * console.log(result); + * // true + * // result is true since some file in the list exists + * } + *); + * + * async.some(['dir1/missing.txt','dir2/missing.txt','dir4/missing.txt'], fileExists, + * function(err, result) { + * console.log(result); + * // false + * // result is false since none of the files exists + * } + *); + * + * // Using Promises + * async.some(['dir1/missing.txt','dir2/missing.txt','dir3/file5.txt'], fileExists) + * .then( result => { + * console.log(result); + * // true + * // result is true since some file in the list exists + * }).catch( err => { + * console.log(err); + * }); + * + * async.some(['dir1/missing.txt','dir2/missing.txt','dir4/missing.txt'], fileExists) + * .then( result => { + * console.log(result); + * // false + * // result is false since none of the files exists + * }).catch( err => { + * console.log(err); + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.some(['dir1/missing.txt','dir2/missing.txt','dir3/file5.txt'], fileExists); + * console.log(result); + * // true + * // result is true since some file in the list exists + * } + * catch (err) { + * console.log(err); + * } + * } + * + * async () => { + * try { + * let result = await async.some(['dir1/missing.txt','dir2/missing.txt','dir4/missing.txt'], fileExists); + * console.log(result); + * // false + * // result is false since none of the files exists + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ +function some(coll, iteratee, callback) { + return (0, _createTester2.default)(Boolean, res => res)(_eachOf2.default, coll, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(some, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/someLimit.js b/node_modules/async/someLimit.js new file mode 100644 index 0000000..3a8096f --- /dev/null +++ b/node_modules/async/someLimit.js @@ -0,0 +1,47 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createTester = require('./internal/createTester.js'); + +var _createTester2 = _interopRequireDefault(_createTester); + +var _eachOfLimit = require('./internal/eachOfLimit.js'); + +var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`some`]{@link module:Collections.some} but runs a maximum of `limit` async operations at a time. + * + * @name someLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.some]{@link module:Collections.some} + * @alias anyLimit + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collections in parallel. + * The iteratee should complete with a boolean `result` value. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called as soon as any + * iteratee returns `true`, or after all the iteratee functions have finished. + * Result will be either `true` or `false` depending on the values of the async + * tests. Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + */ +function someLimit(coll, limit, iteratee, callback) { + return (0, _createTester2.default)(Boolean, res => res)((0, _eachOfLimit2.default)(limit), coll, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(someLimit, 4); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/someSeries.js b/node_modules/async/someSeries.js new file mode 100644 index 0000000..51aad19 --- /dev/null +++ b/node_modules/async/someSeries.js @@ -0,0 +1,46 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createTester = require('./internal/createTester.js'); + +var _createTester2 = _interopRequireDefault(_createTester); + +var _eachOfSeries = require('./eachOfSeries.js'); + +var _eachOfSeries2 = _interopRequireDefault(_eachOfSeries); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [`some`]{@link module:Collections.some} but runs only a single async operation at a time. + * + * @name someSeries + * @static + * @memberOf module:Collections + * @method + * @see [async.some]{@link module:Collections.some} + * @alias anySeries + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collections in series. + * The iteratee should complete with a boolean `result` value. + * Invoked with (item, callback). + * @param {Function} [callback] - A callback which is called as soon as any + * iteratee returns `true`, or after all the iteratee functions have finished. + * Result will be either `true` or `false` depending on the values of the async + * tests. Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + */ +function someSeries(coll, iteratee, callback) { + return (0, _createTester2.default)(Boolean, res => res)(_eachOfSeries2.default, coll, iteratee, callback); +} +exports.default = (0, _awaitify2.default)(someSeries, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/sortBy.js b/node_modules/async/sortBy.js new file mode 100644 index 0000000..0988b61 --- /dev/null +++ b/node_modules/async/sortBy.js @@ -0,0 +1,190 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _map = require('./map.js'); + +var _map2 = _interopRequireDefault(_map); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Sorts a list by the results of running each `coll` value through an async + * `iteratee`. + * + * @name sortBy + * @static + * @memberOf module:Collections + * @method + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The iteratee should complete with a value to use as the sort criteria as + * its `result`. + * Invoked with (item, callback). + * @param {Function} callback - A callback which is called after all the + * `iteratee` functions have finished, or an error occurs. Results is the items + * from the original `coll` sorted by the values returned by the `iteratee` + * calls. Invoked with (err, results). + * @returns {Promise} a promise, if no callback passed + * @example + * + * // bigfile.txt is a file that is 251100 bytes in size + * // mediumfile.txt is a file that is 11000 bytes in size + * // smallfile.txt is a file that is 121 bytes in size + * + * // asynchronous function that returns the file size in bytes + * function getFileSizeInBytes(file, callback) { + * fs.stat(file, function(err, stat) { + * if (err) { + * return callback(err); + * } + * callback(null, stat.size); + * }); + * } + * + * // Using callbacks + * async.sortBy(['mediumfile.txt','smallfile.txt','bigfile.txt'], getFileSizeInBytes, + * function(err, results) { + * if (err) { + * console.log(err); + * } else { + * console.log(results); + * // results is now the original array of files sorted by + * // file size (ascending by default), e.g. + * // [ 'smallfile.txt', 'mediumfile.txt', 'bigfile.txt'] + * } + * } + * ); + * + * // By modifying the callback parameter the + * // sorting order can be influenced: + * + * // ascending order + * async.sortBy(['mediumfile.txt','smallfile.txt','bigfile.txt'], function(file, callback) { + * getFileSizeInBytes(file, function(getFileSizeErr, fileSize) { + * if (getFileSizeErr) return callback(getFileSizeErr); + * callback(null, fileSize); + * }); + * }, function(err, results) { + * if (err) { + * console.log(err); + * } else { + * console.log(results); + * // results is now the original array of files sorted by + * // file size (ascending by default), e.g. + * // [ 'smallfile.txt', 'mediumfile.txt', 'bigfile.txt'] + * } + * } + * ); + * + * // descending order + * async.sortBy(['bigfile.txt','mediumfile.txt','smallfile.txt'], function(file, callback) { + * getFileSizeInBytes(file, function(getFileSizeErr, fileSize) { + * if (getFileSizeErr) { + * return callback(getFileSizeErr); + * } + * callback(null, fileSize * -1); + * }); + * }, function(err, results) { + * if (err) { + * console.log(err); + * } else { + * console.log(results); + * // results is now the original array of files sorted by + * // file size (ascending by default), e.g. + * // [ 'bigfile.txt', 'mediumfile.txt', 'smallfile.txt'] + * } + * } + * ); + * + * // Error handling + * async.sortBy(['mediumfile.txt','smallfile.txt','missingfile.txt'], getFileSizeInBytes, + * function(err, results) { + * if (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } else { + * console.log(results); + * } + * } + * ); + * + * // Using Promises + * async.sortBy(['mediumfile.txt','smallfile.txt','bigfile.txt'], getFileSizeInBytes) + * .then( results => { + * console.log(results); + * // results is now the original array of files sorted by + * // file size (ascending by default), e.g. + * // [ 'smallfile.txt', 'mediumfile.txt', 'bigfile.txt'] + * }).catch( err => { + * console.log(err); + * }); + * + * // Error handling + * async.sortBy(['mediumfile.txt','smallfile.txt','missingfile.txt'], getFileSizeInBytes) + * .then( results => { + * console.log(results); + * }).catch( err => { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * }); + * + * // Using async/await + * (async () => { + * try { + * let results = await async.sortBy(['bigfile.txt','mediumfile.txt','smallfile.txt'], getFileSizeInBytes); + * console.log(results); + * // results is now the original array of files sorted by + * // file size (ascending by default), e.g. + * // [ 'smallfile.txt', 'mediumfile.txt', 'bigfile.txt'] + * } + * catch (err) { + * console.log(err); + * } + * })(); + * + * // Error handling + * async () => { + * try { + * let results = await async.sortBy(['missingfile.txt','mediumfile.txt','smallfile.txt'], getFileSizeInBytes); + * console.log(results); + * } + * catch (err) { + * console.log(err); + * // [ Error: ENOENT: no such file or directory ] + * } + * } + * + */ +function sortBy(coll, iteratee, callback) { + var _iteratee = (0, _wrapAsync2.default)(iteratee); + return (0, _map2.default)(coll, (x, iterCb) => { + _iteratee(x, (err, criteria) => { + if (err) return iterCb(err); + iterCb(err, { value: x, criteria }); + }); + }, (err, results) => { + if (err) return callback(err); + callback(null, results.sort(comparator).map(v => v.value)); + }); + + function comparator(left, right) { + var a = left.criteria, + b = right.criteria; + return a < b ? -1 : a > b ? 1 : 0; + } +} +exports.default = (0, _awaitify2.default)(sortBy, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/timeout.js b/node_modules/async/timeout.js new file mode 100644 index 0000000..46bb233 --- /dev/null +++ b/node_modules/async/timeout.js @@ -0,0 +1,89 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = timeout; + +var _initialParams = require('./internal/initialParams.js'); + +var _initialParams2 = _interopRequireDefault(_initialParams); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Sets a time limit on an asynchronous function. If the function does not call + * its callback within the specified milliseconds, it will be called with a + * timeout error. The code property for the error object will be `'ETIMEDOUT'`. + * + * @name timeout + * @static + * @memberOf module:Utils + * @method + * @category Util + * @param {AsyncFunction} asyncFn - The async function to limit in time. + * @param {number} milliseconds - The specified time limit. + * @param {*} [info] - Any variable you want attached (`string`, `object`, etc) + * to timeout Error for more information.. + * @returns {AsyncFunction} Returns a wrapped function that can be used with any + * of the control flow functions. + * Invoke this function with the same parameters as you would `asyncFunc`. + * @example + * + * function myFunction(foo, callback) { + * doAsyncTask(foo, function(err, data) { + * // handle errors + * if (err) return callback(err); + * + * // do some stuff ... + * + * // return processed data + * return callback(null, data); + * }); + * } + * + * var wrapped = async.timeout(myFunction, 1000); + * + * // call `wrapped` as you would `myFunction` + * wrapped({ bar: 'bar' }, function(err, data) { + * // if `myFunction` takes < 1000 ms to execute, `err` + * // and `data` will have their expected values + * + * // else `err` will be an Error with the code 'ETIMEDOUT' + * }); + */ +function timeout(asyncFn, milliseconds, info) { + var fn = (0, _wrapAsync2.default)(asyncFn); + + return (0, _initialParams2.default)((args, callback) => { + var timedOut = false; + var timer; + + function timeoutCallback() { + var name = asyncFn.name || 'anonymous'; + var error = new Error('Callback function "' + name + '" timed out.'); + error.code = 'ETIMEDOUT'; + if (info) { + error.info = info; + } + timedOut = true; + callback(error); + } + + args.push((...cbArgs) => { + if (!timedOut) { + callback(...cbArgs); + clearTimeout(timer); + } + }); + + // setup timer and call original function + timer = setTimeout(timeoutCallback, milliseconds); + fn(...args); + }); +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/times.js b/node_modules/async/times.js new file mode 100644 index 0000000..ca7df51 --- /dev/null +++ b/node_modules/async/times.js @@ -0,0 +1,50 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = times; + +var _timesLimit = require('./timesLimit.js'); + +var _timesLimit2 = _interopRequireDefault(_timesLimit); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Calls the `iteratee` function `n` times, and accumulates results in the same + * manner you would use with [map]{@link module:Collections.map}. + * + * @name times + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.map]{@link module:Collections.map} + * @category Control Flow + * @param {number} n - The number of times to run the function. + * @param {AsyncFunction} iteratee - The async function to call `n` times. + * Invoked with the iteration index and a callback: (n, next). + * @param {Function} callback - see {@link module:Collections.map}. + * @returns {Promise} a promise, if no callback is provided + * @example + * + * // Pretend this is some complicated async factory + * var createUser = function(id, callback) { + * callback(null, { + * id: 'user' + id + * }); + * }; + * + * // generate 5 users + * async.times(5, function(n, next) { + * createUser(n, function(err, user) { + * next(err, user); + * }); + * }, function(err, users) { + * // we should now have 5 users + * }); + */ +function times(n, iteratee, callback) { + return (0, _timesLimit2.default)(n, Infinity, iteratee, callback); +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/timesLimit.js b/node_modules/async/timesLimit.js new file mode 100644 index 0000000..f76de25 --- /dev/null +++ b/node_modules/async/timesLimit.js @@ -0,0 +1,43 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = timesLimit; + +var _mapLimit = require('./mapLimit.js'); + +var _mapLimit2 = _interopRequireDefault(_mapLimit); + +var _range = require('./internal/range.js'); + +var _range2 = _interopRequireDefault(_range); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [times]{@link module:ControlFlow.times} but runs a maximum of `limit` async operations at a + * time. + * + * @name timesLimit + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.times]{@link module:ControlFlow.times} + * @category Control Flow + * @param {number} count - The number of times to run the function. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - The async function to call `n` times. + * Invoked with the iteration index and a callback: (n, next). + * @param {Function} callback - see [async.map]{@link module:Collections.map}. + * @returns {Promise} a promise, if no callback is provided + */ +function timesLimit(count, limit, iteratee, callback) { + var _iteratee = (0, _wrapAsync2.default)(iteratee); + return (0, _mapLimit2.default)((0, _range2.default)(count), limit, _iteratee, callback); +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/timesSeries.js b/node_modules/async/timesSeries.js new file mode 100644 index 0000000..776b4f3 --- /dev/null +++ b/node_modules/async/timesSeries.js @@ -0,0 +1,32 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = timesSeries; + +var _timesLimit = require('./timesLimit.js'); + +var _timesLimit2 = _interopRequireDefault(_timesLimit); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * The same as [times]{@link module:ControlFlow.times} but runs only a single async operation at a time. + * + * @name timesSeries + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.times]{@link module:ControlFlow.times} + * @category Control Flow + * @param {number} n - The number of times to run the function. + * @param {AsyncFunction} iteratee - The async function to call `n` times. + * Invoked with the iteration index and a callback: (n, next). + * @param {Function} callback - see {@link module:Collections.map}. + * @returns {Promise} a promise, if no callback is provided + */ +function timesSeries(n, iteratee, callback) { + return (0, _timesLimit2.default)(n, 1, iteratee, callback); +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/transform.js b/node_modules/async/transform.js new file mode 100644 index 0000000..75dadea --- /dev/null +++ b/node_modules/async/transform.js @@ -0,0 +1,173 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = transform; + +var _eachOf = require('./eachOf.js'); + +var _eachOf2 = _interopRequireDefault(_eachOf); + +var _once = require('./internal/once.js'); + +var _once2 = _interopRequireDefault(_once); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _promiseCallback = require('./internal/promiseCallback.js'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * A relative of `reduce`. Takes an Object or Array, and iterates over each + * element in parallel, each step potentially mutating an `accumulator` value. + * The type of the accumulator defaults to the type of collection passed in. + * + * @name transform + * @static + * @memberOf module:Collections + * @method + * @category Collection + * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over. + * @param {*} [accumulator] - The initial state of the transform. If omitted, + * it will default to an empty Object or Array, depending on the type of `coll` + * @param {AsyncFunction} iteratee - A function applied to each item in the + * collection that potentially modifies the accumulator. + * Invoked with (accumulator, item, key, callback). + * @param {Function} [callback] - A callback which is called after all the + * `iteratee` functions have finished. Result is the transformed accumulator. + * Invoked with (err, result). + * @returns {Promise} a promise, if no callback provided + * @example + * + * // file1.txt is a file that is 1000 bytes in size + * // file2.txt is a file that is 2000 bytes in size + * // file3.txt is a file that is 3000 bytes in size + * + * // helper function that returns human-readable size format from bytes + * function formatBytes(bytes, decimals = 2) { + * // implementation not included for brevity + * return humanReadbleFilesize; + * } + * + * const fileList = ['file1.txt','file2.txt','file3.txt']; + * + * // asynchronous function that returns the file size, transformed to human-readable format + * // e.g. 1024 bytes = 1KB, 1234 bytes = 1.21 KB, 1048576 bytes = 1MB, etc. + * function transformFileSize(acc, value, key, callback) { + * fs.stat(value, function(err, stat) { + * if (err) { + * return callback(err); + * } + * acc[key] = formatBytes(stat.size); + * callback(null); + * }); + * } + * + * // Using callbacks + * async.transform(fileList, transformFileSize, function(err, result) { + * if(err) { + * console.log(err); + * } else { + * console.log(result); + * // [ '1000 Bytes', '1.95 KB', '2.93 KB' ] + * } + * }); + * + * // Using Promises + * async.transform(fileList, transformFileSize) + * .then(result => { + * console.log(result); + * // [ '1000 Bytes', '1.95 KB', '2.93 KB' ] + * }).catch(err => { + * console.log(err); + * }); + * + * // Using async/await + * (async () => { + * try { + * let result = await async.transform(fileList, transformFileSize); + * console.log(result); + * // [ '1000 Bytes', '1.95 KB', '2.93 KB' ] + * } + * catch (err) { + * console.log(err); + * } + * })(); + * + * @example + * + * // file1.txt is a file that is 1000 bytes in size + * // file2.txt is a file that is 2000 bytes in size + * // file3.txt is a file that is 3000 bytes in size + * + * // helper function that returns human-readable size format from bytes + * function formatBytes(bytes, decimals = 2) { + * // implementation not included for brevity + * return humanReadbleFilesize; + * } + * + * const fileMap = { f1: 'file1.txt', f2: 'file2.txt', f3: 'file3.txt' }; + * + * // asynchronous function that returns the file size, transformed to human-readable format + * // e.g. 1024 bytes = 1KB, 1234 bytes = 1.21 KB, 1048576 bytes = 1MB, etc. + * function transformFileSize(acc, value, key, callback) { + * fs.stat(value, function(err, stat) { + * if (err) { + * return callback(err); + * } + * acc[key] = formatBytes(stat.size); + * callback(null); + * }); + * } + * + * // Using callbacks + * async.transform(fileMap, transformFileSize, function(err, result) { + * if(err) { + * console.log(err); + * } else { + * console.log(result); + * // { f1: '1000 Bytes', f2: '1.95 KB', f3: '2.93 KB' } + * } + * }); + * + * // Using Promises + * async.transform(fileMap, transformFileSize) + * .then(result => { + * console.log(result); + * // { f1: '1000 Bytes', f2: '1.95 KB', f3: '2.93 KB' } + * }).catch(err => { + * console.log(err); + * }); + * + * // Using async/await + * async () => { + * try { + * let result = await async.transform(fileMap, transformFileSize); + * console.log(result); + * // { f1: '1000 Bytes', f2: '1.95 KB', f3: '2.93 KB' } + * } + * catch (err) { + * console.log(err); + * } + * } + * + */ +function transform(coll, accumulator, iteratee, callback) { + if (arguments.length <= 3 && typeof accumulator === 'function') { + callback = iteratee; + iteratee = accumulator; + accumulator = Array.isArray(coll) ? [] : {}; + } + callback = (0, _once2.default)(callback || (0, _promiseCallback.promiseCallback)()); + var _iteratee = (0, _wrapAsync2.default)(iteratee); + + (0, _eachOf2.default)(coll, (v, k, cb) => { + _iteratee(accumulator, v, k, cb); + }, err => callback(err, accumulator)); + return callback[_promiseCallback.PROMISE_SYMBOL]; +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/tryEach.js b/node_modules/async/tryEach.js new file mode 100644 index 0000000..7e63f9d --- /dev/null +++ b/node_modules/async/tryEach.js @@ -0,0 +1,78 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _eachSeries = require('./eachSeries.js'); + +var _eachSeries2 = _interopRequireDefault(_eachSeries); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * It runs each task in series but stops whenever any of the functions were + * successful. If one of the tasks were successful, the `callback` will be + * passed the result of the successful task. If all tasks fail, the callback + * will be passed the error and result (if any) of the final attempt. + * + * @name tryEach + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {Array|Iterable|AsyncIterable|Object} tasks - A collection containing functions to + * run, each function is passed a `callback(err, result)` it must call on + * completion with an error `err` (which can be `null`) and an optional `result` + * value. + * @param {Function} [callback] - An optional callback which is called when one + * of the tasks has succeeded, or all have failed. It receives the `err` and + * `result` arguments of the last attempt at completing the `task`. Invoked with + * (err, results). + * @returns {Promise} a promise, if no callback is passed + * @example + * async.tryEach([ + * function getDataFromFirstWebsite(callback) { + * // Try getting the data from the first website + * callback(err, data); + * }, + * function getDataFromSecondWebsite(callback) { + * // First website failed, + * // Try getting the data from the backup website + * callback(err, data); + * } + * ], + * // optional callback + * function(err, results) { + * Now do something with the data. + * }); + * + */ +function tryEach(tasks, callback) { + var error = null; + var result; + return (0, _eachSeries2.default)(tasks, (task, taskCb) => { + (0, _wrapAsync2.default)(task)((err, ...args) => { + if (err === false) return taskCb(err); + + if (args.length < 2) { + [result] = args; + } else { + result = args; + } + error = err; + taskCb(err ? null : {}); + }); + }, () => callback(error, result)); +} + +exports.default = (0, _awaitify2.default)(tryEach); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/unmemoize.js b/node_modules/async/unmemoize.js new file mode 100644 index 0000000..badd7ae --- /dev/null +++ b/node_modules/async/unmemoize.js @@ -0,0 +1,25 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = unmemoize; +/** + * Undoes a [memoize]{@link module:Utils.memoize}d function, reverting it to the original, + * unmemoized form. Handy for testing. + * + * @name unmemoize + * @static + * @memberOf module:Utils + * @method + * @see [async.memoize]{@link module:Utils.memoize} + * @category Util + * @param {AsyncFunction} fn - the memoized function + * @returns {AsyncFunction} a function that calls the original unmemoized function + */ +function unmemoize(fn) { + return (...args) => { + return (fn.unmemoized || fn)(...args); + }; +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/until.js b/node_modules/async/until.js new file mode 100644 index 0000000..4b69b97 --- /dev/null +++ b/node_modules/async/until.js @@ -0,0 +1,61 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = until; + +var _whilst = require('./whilst.js'); + +var _whilst2 = _interopRequireDefault(_whilst); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Repeatedly call `iteratee` until `test` returns `true`. Calls `callback` when + * stopped, or an error occurs. `callback` will be passed an error and any + * arguments passed to the final `iteratee`'s callback. + * + * The inverse of [whilst]{@link module:ControlFlow.whilst}. + * + * @name until + * @static + * @memberOf module:ControlFlow + * @method + * @see [async.whilst]{@link module:ControlFlow.whilst} + * @category Control Flow + * @param {AsyncFunction} test - asynchronous truth test to perform before each + * execution of `iteratee`. Invoked with (callback). + * @param {AsyncFunction} iteratee - An async function which is called each time + * `test` fails. Invoked with (callback). + * @param {Function} [callback] - A callback which is called after the test + * function has passed and repeated execution of `iteratee` has stopped. `callback` + * will be passed an error and any arguments passed to the final `iteratee`'s + * callback. Invoked with (err, [results]); + * @returns {Promise} a promise, if a callback is not passed + * + * @example + * const results = [] + * let finished = false + * async.until(function test(cb) { + * cb(null, finished) + * }, function iter(next) { + * fetchPage(url, (err, body) => { + * if (err) return next(err) + * results = results.concat(body.objects) + * finished = !!body.next + * next(err) + * }) + * }, function done (err) { + * // all pages have been fetched + * }) + */ +function until(test, iteratee, callback) { + const _test = (0, _wrapAsync2.default)(test); + return (0, _whilst2.default)(cb => _test((err, truth) => cb(err, !truth)), iteratee, callback); +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/waterfall.js b/node_modules/async/waterfall.js new file mode 100644 index 0000000..c3242f7 --- /dev/null +++ b/node_modules/async/waterfall.js @@ -0,0 +1,105 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _once = require('./internal/once.js'); + +var _once2 = _interopRequireDefault(_once); + +var _onlyOnce = require('./internal/onlyOnce.js'); + +var _onlyOnce2 = _interopRequireDefault(_onlyOnce); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Runs the `tasks` array of functions in series, each passing their results to + * the next in the array. However, if any of the `tasks` pass an error to their + * own callback, the next function is not executed, and the main `callback` is + * immediately called with the error. + * + * @name waterfall + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {Array} tasks - An array of [async functions]{@link AsyncFunction} + * to run. + * Each function should complete with any number of `result` values. + * The `result` values will be passed as arguments, in order, to the next task. + * @param {Function} [callback] - An optional callback to run once all the + * functions have completed. This will be passed the results of the last task's + * callback. Invoked with (err, [results]). + * @returns {Promise} a promise, if a callback is omitted + * @example + * + * async.waterfall([ + * function(callback) { + * callback(null, 'one', 'two'); + * }, + * function(arg1, arg2, callback) { + * // arg1 now equals 'one' and arg2 now equals 'two' + * callback(null, 'three'); + * }, + * function(arg1, callback) { + * // arg1 now equals 'three' + * callback(null, 'done'); + * } + * ], function (err, result) { + * // result now equals 'done' + * }); + * + * // Or, with named functions: + * async.waterfall([ + * myFirstFunction, + * mySecondFunction, + * myLastFunction, + * ], function (err, result) { + * // result now equals 'done' + * }); + * function myFirstFunction(callback) { + * callback(null, 'one', 'two'); + * } + * function mySecondFunction(arg1, arg2, callback) { + * // arg1 now equals 'one' and arg2 now equals 'two' + * callback(null, 'three'); + * } + * function myLastFunction(arg1, callback) { + * // arg1 now equals 'three' + * callback(null, 'done'); + * } + */ +function waterfall(tasks, callback) { + callback = (0, _once2.default)(callback); + if (!Array.isArray(tasks)) return callback(new Error('First argument to waterfall must be an array of functions')); + if (!tasks.length) return callback(); + var taskIndex = 0; + + function nextTask(args) { + var task = (0, _wrapAsync2.default)(tasks[taskIndex++]); + task(...args, (0, _onlyOnce2.default)(next)); + } + + function next(err, ...args) { + if (err === false) return; + if (err || taskIndex === tasks.length) { + return callback(err, ...args); + } + nextTask(args); + } + + nextTask([]); +} + +exports.default = (0, _awaitify2.default)(waterfall); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/whilst.js b/node_modules/async/whilst.js new file mode 100644 index 0000000..4165543 --- /dev/null +++ b/node_modules/async/whilst.js @@ -0,0 +1,78 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _onlyOnce = require('./internal/onlyOnce.js'); + +var _onlyOnce2 = _interopRequireDefault(_onlyOnce); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +var _wrapAsync2 = _interopRequireDefault(_wrapAsync); + +var _awaitify = require('./internal/awaitify.js'); + +var _awaitify2 = _interopRequireDefault(_awaitify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Repeatedly call `iteratee`, while `test` returns `true`. Calls `callback` when + * stopped, or an error occurs. + * + * @name whilst + * @static + * @memberOf module:ControlFlow + * @method + * @category Control Flow + * @param {AsyncFunction} test - asynchronous truth test to perform before each + * execution of `iteratee`. Invoked with (callback). + * @param {AsyncFunction} iteratee - An async function which is called each time + * `test` passes. Invoked with (callback). + * @param {Function} [callback] - A callback which is called after the test + * function has failed and repeated execution of `iteratee` has stopped. `callback` + * will be passed an error and any arguments passed to the final `iteratee`'s + * callback. Invoked with (err, [results]); + * @returns {Promise} a promise, if no callback is passed + * @example + * + * var count = 0; + * async.whilst( + * function test(cb) { cb(null, count < 5); }, + * function iter(callback) { + * count++; + * setTimeout(function() { + * callback(null, count); + * }, 1000); + * }, + * function (err, n) { + * // 5 seconds have passed, n = 5 + * } + * ); + */ +function whilst(test, iteratee, callback) { + callback = (0, _onlyOnce2.default)(callback); + var _fn = (0, _wrapAsync2.default)(iteratee); + var _test = (0, _wrapAsync2.default)(test); + var results = []; + + function next(err, ...rest) { + if (err) return callback(err); + results = rest; + if (err === false) return; + _test(check); + } + + function check(err, truth) { + if (err) return callback(err); + if (err === false) return; + if (!truth) return callback(null, ...results); + _fn(next); + } + + return _test(check); +} +exports.default = (0, _awaitify2.default)(whilst, 3); +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/async/wrapSync.js b/node_modules/async/wrapSync.js new file mode 100644 index 0000000..ddc3f02 --- /dev/null +++ b/node_modules/async/wrapSync.js @@ -0,0 +1,118 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = asyncify; + +var _initialParams = require('./internal/initialParams.js'); + +var _initialParams2 = _interopRequireDefault(_initialParams); + +var _setImmediate = require('./internal/setImmediate.js'); + +var _setImmediate2 = _interopRequireDefault(_setImmediate); + +var _wrapAsync = require('./internal/wrapAsync.js'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Take a sync function and make it async, passing its return value to a + * callback. This is useful for plugging sync functions into a waterfall, + * series, or other async functions. Any arguments passed to the generated + * function will be passed to the wrapped function (except for the final + * callback argument). Errors thrown will be passed to the callback. + * + * If the function passed to `asyncify` returns a Promise, that promises's + * resolved/rejected state will be used to call the callback, rather than simply + * the synchronous return value. + * + * This also means you can asyncify ES2017 `async` functions. + * + * @name asyncify + * @static + * @memberOf module:Utils + * @method + * @alias wrapSync + * @category Util + * @param {Function} func - The synchronous function, or Promise-returning + * function to convert to an {@link AsyncFunction}. + * @returns {AsyncFunction} An asynchronous wrapper of the `func`. To be + * invoked with `(args..., callback)`. + * @example + * + * // passing a regular synchronous function + * async.waterfall([ + * async.apply(fs.readFile, filename, "utf8"), + * async.asyncify(JSON.parse), + * function (data, next) { + * // data is the result of parsing the text. + * // If there was a parsing error, it would have been caught. + * } + * ], callback); + * + * // passing a function returning a promise + * async.waterfall([ + * async.apply(fs.readFile, filename, "utf8"), + * async.asyncify(function (contents) { + * return db.model.create(contents); + * }), + * function (model, next) { + * // `model` is the instantiated model object. + * // If there was an error, this function would be skipped. + * } + * ], callback); + * + * // es2017 example, though `asyncify` is not needed if your JS environment + * // supports async functions out of the box + * var q = async.queue(async.asyncify(async function(file) { + * var intermediateStep = await processFile(file); + * return await somePromise(intermediateStep) + * })); + * + * q.push(files); + */ +function asyncify(func) { + if ((0, _wrapAsync.isAsync)(func)) { + return function (...args /*, callback*/) { + const callback = args.pop(); + const promise = func.apply(this, args); + return handlePromise(promise, callback); + }; + } + + return (0, _initialParams2.default)(function (args, callback) { + var result; + try { + result = func.apply(this, args); + } catch (e) { + return callback(e); + } + // if result is Promise object + if (result && typeof result.then === 'function') { + return handlePromise(result, callback); + } else { + callback(null, result); + } + }); +} + +function handlePromise(promise, callback) { + return promise.then(value => { + invokeCallback(callback, null, value); + }, err => { + invokeCallback(callback, err && (err instanceof Error || err.message) ? err : new Error(err)); + }); +} + +function invokeCallback(callback, error, value) { + try { + callback(error, value); + } catch (err) { + (0, _setImmediate2.default)(e => { + throw e; + }, err); + } +} +module.exports = exports.default; \ No newline at end of file diff --git a/node_modules/asynckit/LICENSE b/node_modules/asynckit/LICENSE new file mode 100644 index 0000000..c9eca5d --- /dev/null +++ b/node_modules/asynckit/LICENSE @@ -0,0 +1,21 @@ +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 new file mode 100644 index 0000000..ddcc7e6 --- /dev/null +++ b/node_modules/asynckit/README.md @@ -0,0 +1,233 @@ +# 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 new file mode 100644 index 0000000..c612f1a --- /dev/null +++ b/node_modules/asynckit/bench.js @@ -0,0 +1,76 @@ +/* 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 new file mode 100644 index 0000000..455f945 --- /dev/null +++ b/node_modules/asynckit/index.js @@ -0,0 +1,6 @@ +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 new file mode 100644 index 0000000..114367e --- /dev/null +++ b/node_modules/asynckit/lib/abort.js @@ -0,0 +1,29 @@ +// 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 new file mode 100644 index 0000000..7f1288a --- /dev/null +++ b/node_modules/asynckit/lib/async.js @@ -0,0 +1,34 @@ +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 new file mode 100644 index 0000000..b67110c --- /dev/null +++ b/node_modules/asynckit/lib/defer.js @@ -0,0 +1,26 @@ +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 new file mode 100644 index 0000000..5d2839a --- /dev/null +++ b/node_modules/asynckit/lib/iterate.js @@ -0,0 +1,75 @@ +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 new file mode 100644 index 0000000..78ad240 --- /dev/null +++ b/node_modules/asynckit/lib/readable_asynckit.js @@ -0,0 +1,91 @@ +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 new file mode 100644 index 0000000..5d2929f --- /dev/null +++ b/node_modules/asynckit/lib/readable_parallel.js @@ -0,0 +1,25 @@ +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 new file mode 100644 index 0000000..7822698 --- /dev/null +++ b/node_modules/asynckit/lib/readable_serial.js @@ -0,0 +1,25 @@ +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 new file mode 100644 index 0000000..3de89c4 --- /dev/null +++ b/node_modules/asynckit/lib/readable_serial_ordered.js @@ -0,0 +1,29 @@ +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 new file mode 100644 index 0000000..cbea7ad --- /dev/null +++ b/node_modules/asynckit/lib/state.js @@ -0,0 +1,37 @@ +// 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 new file mode 100644 index 0000000..f56a1c9 --- /dev/null +++ b/node_modules/asynckit/lib/streamify.js @@ -0,0 +1,141 @@ +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 new file mode 100644 index 0000000..d6eb992 --- /dev/null +++ b/node_modules/asynckit/lib/terminator.js @@ -0,0 +1,29 @@ +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 new file mode 100644 index 0000000..51147d6 --- /dev/null +++ b/node_modules/asynckit/package.json @@ -0,0 +1,63 @@ +{ + "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 new file mode 100644 index 0000000..3c50344 --- /dev/null +++ b/node_modules/asynckit/parallel.js @@ -0,0 +1,43 @@ +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 new file mode 100644 index 0000000..6cd949a --- /dev/null +++ b/node_modules/asynckit/serial.js @@ -0,0 +1,17 @@ +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 new file mode 100644 index 0000000..607eafe --- /dev/null +++ b/node_modules/asynckit/serialOrdered.js @@ -0,0 +1,75 @@ +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 new file mode 100644 index 0000000..d43465f --- /dev/null +++ b/node_modules/asynckit/stream.js @@ -0,0 +1,21 @@ +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 new file mode 100644 index 0000000..87a1407 --- /dev/null +++ b/node_modules/axios/CHANGELOG.md @@ -0,0 +1,874 @@ +# Changelog + +## [1.6.8](https://github.com/axios/axios/compare/v1.6.7...v1.6.8) (2024-03-15) + + +### Bug Fixes + +* **AxiosHeaders:** fix AxiosHeaders conversion to an object during config merging ([#6243](https://github.com/axios/axios/issues/6243)) ([2656612](https://github.com/axios/axios/commit/2656612bc10fe2757e9832b708ed773ab340b5cb)) +* **import:** use named export for EventEmitter; ([7320430](https://github.com/axios/axios/commit/7320430aef2e1ba2b89488a0eaf42681165498b1)) +* **vulnerability:** update follow-redirects to 1.15.6 ([#6300](https://github.com/axios/axios/issues/6300)) ([8786e0f](https://github.com/axios/axios/commit/8786e0ff55a8c68d4ca989801ad26df924042e27)) + +### Contributors to this release + +- avatar [Jay](https://github.com/jasonsaayman "+4572/-3446 (#6238 )") +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+30/-0 (#6231 )") +- avatar [Mitchell](https://github.com/Creaous "+9/-9 (#6300 )") +- avatar [Emmanuel](https://github.com/mannoeu "+2/-2 (#6196 )") +- avatar [Lucas Keller](https://github.com/ljkeller "+3/-0 (#6194 )") +- avatar [Aditya Mogili](https://github.com/ADITYA-176 "+1/-1 ()") +- avatar [Miroslav Petrov](https://github.com/petrovmiroslav "+1/-1 (#6243 )") + +## [1.6.7](https://github.com/axios/axios/compare/v1.6.6...v1.6.7) (2024-01-25) + + +### 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 + +- [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 +``` + +## [1.2.0] - 2022-11-10 + +### Changed + +- 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) + +### Fixed + +- 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) + +### Refactors +- refactor: allowing adapters to be loaded by name [#5277](https://github.com/axios/axios/pull/5277) + +### Chores + +- 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) + +### Contributors to this release + +- [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) +- [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) + +### 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.1.3] - 2022-10-15 + +### Added + +- Added custom params serializer support [#5113](https://github.com/axios/axios/pull/5113) + +### Fixed + +- 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) + +### Chores + +- 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) + +### Contributors to this release + +- [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) + +### 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.1.2] - 2022-10-07 + +### Fixed + +- Fixed broken exports for UMD builds. + +### Contributors to this release + +- [Jason Saayman](https://github.com/jasonsaayman) + +### 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.1.1] - 2022-10-07 + +### Fixed + +- 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. + +### Contributors to this release + +- [Jason Saayman](https://github.com/jasonsaayman) + +### 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.1.0] - 2022-10-06 + +### Fixed + +- 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) + +### Contributors to this release + +- [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) + +### 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.0.0] - 2022-10-04 + +### Added + +- 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) + +### Changed + +- 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) + + +### 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. + +### Removed + +- 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) + +### Fixed + +- 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) + +### 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) + +### Security + +- Update SECURITY.md [#4687](https://github.com/axios/axios/pull/4687) + +### Contributors to this release + +- [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 diff --git a/node_modules/axios/LICENSE b/node_modules/axios/LICENSE new file mode 100644 index 0000000..05006a5 --- /dev/null +++ b/node_modules/axios/LICENSE @@ -0,0 +1,7 @@ +# Copyright (c) 2014-present Matt Zabriskie & Collaborators + +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/axios/MIGRATION_GUIDE.md b/node_modules/axios/MIGRATION_GUIDE.md new file mode 100644 index 0000000..ec3ae0d --- /dev/null +++ b/node_modules/axios/MIGRATION_GUIDE.md @@ -0,0 +1,3 @@ +# Migration Guide + +## 0.x.x -> 1.1.0 diff --git a/node_modules/axios/README.md b/node_modules/axios/README.md new file mode 100644 index 0000000..04e7601 --- /dev/null +++ b/node_modules/axios/README.md @@ -0,0 +1,1650 @@ +

    + 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 +

    + +
    + +[![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) +[![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) +[![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) + + + + +
    + +## 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) + - [Creating an instance](#creating-an-instance) + - [Instance methods](#instance-methods) + - [Request Config](#request-config) + - [Response Schema](#response-schema) + - [Config Defaults](#config-defaults) + - [Global axios defaults](#global-axios-defaults) + - [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) + - [Semver](#semver) + - [Promises](#promises) + - [TypeScript](#typescript) + - [Resources](#resources) + - [Credits](#credits) + - [License](#license) + +## 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 +- 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) + +## 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) | +--- | --- | --- | --- | --- | --- | +Latest ✔ | Latest ✔ | Latest ✔ | Latest ✔ | Latest ✔ | 11 ✔ | + +[![Browser Matrix](https://saucelabs.com/open_sauce/build_matrix/axios.svg)](https://saucelabs.com/u/axios) + +## Installing + +### Package manager + +Using npm: + +```bash +$ npm install axios +``` + +Using bower: + +```bash +$ bower install axios +``` + +Using yarn: + +```bash +$ 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): + +```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: + +```js +import axios from 'axios'; +//const axios = require('axios'); // legacy way + +// Make a request for a user with a given ID +axios.get('/user?ID=12345') + .then(function (response) { + // handle success + console.log(response); + }) + .catch(function (error) { + // handle error + console.log(error); + }) + .finally(function () { + // always executed + }); + +// Optionally the request above could also be done as +axios.get('/user', { + params: { + ID: 12345 + } + }) + .then(function (response) { + console.log(response); + }) + .catch(function (error) { + console.log(error); + }) + .finally(function () { + // always executed + }); + +// Want to use async/await? Add the `async` keyword to your outer function/method. +async function getUser() { + try { + const response = await axios.get('/user?ID=12345'); + console.log(response); + } catch (error) { + console.error(error); + } +} +``` + +> **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 + +```js +axios.post('/user', { + firstName: 'Fred', + lastName: 'Flintstone' + }) + .then(function (response) { + console.log(response); + }) + .catch(function (error) { + console.log(error); + }); +``` + +Performing multiple concurrent requests + +```js +function getUserAccount() { + return axios.get('/user/12345'); +} + +function getUserPermissions() { + return axios.get('/user/12345/permissions'); +} + +Promise.all([getUserAccount(), getUserPermissions()]) + .then(function (results) { + const acct = results[0]; + const perm = results[1]; + }); +``` + +## axios API + +Requests can be made by passing the relevant config to `axios`. + +##### axios(config) + +```js +// Send a POST request +axios({ + method: 'post', + url: '/user/12345', + data: { + firstName: 'Fred', + lastName: 'Flintstone' + } +}); +``` + +```js +// GET request for remote image in node.js +axios({ + method: 'get', + url: 'https://bit.ly/2mTM3nY', + responseType: 'stream' +}) + .then(function (response) { + response.data.pipe(fs.createWriteStream('ada_lovelace.jpg')) + }); +``` + +##### axios(url[, config]) + +```js +// Send a GET request (default method) +axios('/user/12345'); +``` + +### Request method aliases + +For convenience, aliases have been provided for all common request methods. + +##### axios.request(config) +##### axios.get(url[, config]) +##### axios.delete(url[, config]) +##### axios.head(url[, config]) +##### axios.options(url[, config]) +##### axios.post(url[, data[, config]]) +##### axios.put(url[, data[, config]]) +##### axios.patch(url[, data[, config]]) + +###### NOTE +When using the alias methods `url`, `method`, and `data` properties don't need to be specified in config. + +### Concurrency (Deprecated) +Please use `Promise.all` to replace the below functions. + +Helper functions for dealing with concurrent requests. + +axios.all(iterable) +axios.spread(callback) + +### Creating an instance + +You can create a new instance of axios with a custom config. + +##### axios.create([config]) + +```js +const instance = axios.create({ + baseURL: 'https://some-domain.com/api/', + timeout: 1000, + headers: {'X-Custom-Header': 'foobar'} +}); +``` + +### Instance methods + +The available instance methods are listed below. The specified config will be merged with the instance config. + +##### axios#request(config) +##### axios#get(url[, config]) +##### axios#delete(url[, config]) +##### axios#head(url[, config]) +##### axios#options(url[, config]) +##### axios#post(url[, data[, config]]) +##### axios#put(url[, data[, config]]) +##### axios#patch(url[, data[, config]]) +##### axios#getUri([config]) + +## Request Config + +These are the available config options for making requests. Only the `url` is required. Requests will default to `GET` if `method` is not specified. + +```js +{ + // `url` is the server URL that will be used for the request + url: '/user', + + // `method` is the request method to be used when making the request + method: 'get', // default + + // `baseURL` will be prepended to `url` unless `url` is absolute. + // It can be convenient to set `baseURL` for an instance of axios to pass relative URLs + // to methods of that instance. + baseURL: 'https://some-domain.com/api/', + + // `transformRequest` allows changes to the request data before it is sent to the server + // This is only applicable for request methods 'PUT', 'POST', 'PATCH' and 'DELETE' + // The last function in the array must return a string or an instance of Buffer, ArrayBuffer, + // FormData or Stream + // You may modify the headers object. + transformRequest: [function (data, headers) { + // Do whatever you want to transform the data + + return data; + }], + + // `transformResponse` allows changes to the response data to be made before + // it is passed to then/catch + transformResponse: [function (data) { + // Do whatever you want to transform the data + + return data; + }], + + // `headers` are custom headers to be sent + headers: {'X-Requested-With': 'XMLHttpRequest'}, + + // `params` are the URL parameters to be sent with the request + // Must be a plain object or a URLSearchParams object + 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). + }, + + // `data` is the data to be sent as the request body + // Only applicable for request methods 'PUT', 'POST', 'DELETE , and 'PATCH' + // 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) + data: { + firstName: 'Fred' + }, + + // syntax alternative to send data into the body + // method post + // only the value is sent, not the key + data: 'Country=Brasil&City=Belo Horizonte', + + // `timeout` specifies the number of milliseconds before the request times out. + // If the request takes longer than `timeout`, the request will be aborted. + timeout: 1000, // default is `0` (no timeout) + + // `withCredentials` indicates whether or not cross-site Access-Control requests + // should be made using credentials + withCredentials: false, // default + + // `adapter` allows custom handling of requests which makes testing easier. + // Return a promise and supply a valid response (see lib/adapters/README.md). + adapter: function (config) { + /* ... */ + }, + + // `auth` indicates that HTTP Basic auth should be used, and supplies credentials. + // This will set an `Authorization` header, overwriting any existing + // `Authorization` custom headers you have set using `headers`. + // Please note that only HTTP Basic auth is configurable through this parameter. + // For Bearer tokens and such, use `Authorization` custom headers instead. + auth: { + username: 'janedoe', + password: 's00pers3cret' + }, + + // `responseType` indicates the type of data that the server will respond with + // options are: 'arraybuffer', 'document', 'json', 'text', 'stream' + // browser only: 'blob' + responseType: 'json', // default + + // `responseEncoding` indicates encoding to use for decoding responses (Node.js only) + // Note: Ignored for `responseType` of 'stream' or client-side requests + // options are: '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' + responseEncoding: 'utf8', // default + + // `xsrfCookieName` is the name of the cookie to use as a value for xsrf token + xsrfCookieName: 'XSRF-TOKEN', // default + + // `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 + }, + + // `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 + }, + + // `maxContentLength` defines the max size of the http response content in bytes allowed in node.js + maxContentLength: 2000, + + // `maxBodyLength` (Node only option) defines the max size of the http request content in bytes allowed + maxBodyLength: 2000, + + // `validateStatus` defines whether to resolve or reject the promise for a given + // HTTP response status code. If `validateStatus` returns `true` (or is set to `null` + // or `undefined`), the promise will be resolved; otherwise, the promise will be + // rejected. + validateStatus: function (status) { + return status >= 200 && status < 300; // default + }, + + // `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"; + } + }, + + // `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 + // `keepAlive` that are not enabled by default. + httpAgent: new http.Agent({ keepAlive: true }), + httpsAgent: new https.Agent({ keepAlive: true }), + + // `proxy` defines the hostname, port, and protocol of the proxy server. + // You can also define your proxy using the conventional `http_proxy` and + // `https_proxy` environment variables. If you are using environment variables + // for your proxy configuration, you can also define a `no_proxy` environment + // variable as a comma-separated list of domains that should not be proxied. + // Use `false` to disable proxies, ignoring environment variables. + // `auth` indicates that HTTP Basic auth should be used to connect to the proxy, and + // 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`. + 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', + password: 'rapunz3l' + } + }, + + // `cancelToken` specifies a cancel token that can be used to cancel the request + // (see Cancellation section below for details) + 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 + // 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 + // `true` - ignore JSON parsing errors and set response.data to null if parsing failed (old behaviour) + // `false` - throw SyntaxError if JSON parsing failed (Note: responseType must be set to 'json') + silentJSONParsing: true, // default value for the current Axios version + + // 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 + ] +} +``` + +## Response Schema + +The response for a request contains the following information. + +```js +{ + // `data` is the response that was provided by the server + data: {}, + + // `status` is the HTTP status code from the server response + status: 200, + + // `statusText` is the HTTP status message from the server response + statusText: 'OK', + + // `headers` the HTTP headers that the server responded with + // All header names are lowercase and can be accessed using the bracket notation. + // Example: `response.headers['content-type']` + headers: {}, + + // `config` is the config that was provided to `axios` for the request + config: {}, + + // `request` is the request that generated this response + // It is the last ClientRequest instance in node.js (in redirects) + // and an XMLHttpRequest instance in the browser + request: {} +} +``` + +When using `then`, you will receive the response as follows: + +```js +axios.get('/user/12345') + .then(function (response) { + console.log(response.data); + console.log(response.status); + console.log(response.statusText); + console.log(response.headers); + console.log(response.config); + }); +``` + +When using `catch`, or passing a [rejection callback](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/then) as second parameter of `then`, the response will be available through the `error` object as explained in the [Handling Errors](#handling-errors) section. + +## Config Defaults + +You can specify config defaults that will be applied to every request. + +### Global axios defaults + +```js +axios.defaults.baseURL = 'https://api.example.com'; + +// Important: If axios is used with multiple domains, the AUTH_TOKEN will be sent to all of them. +// See below for an example using Custom instance defaults instead. +axios.defaults.headers.common['Authorization'] = AUTH_TOKEN; + +axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'; +``` + +### Custom instance defaults + +```js +// Set config defaults when creating the instance +const instance = axios.create({ + baseURL: 'https://api.example.com' +}); + +// Alter defaults after instance has been created +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. + +```js +// Create an instance using the config defaults provided by the library +// At this point the timeout config value is `0` as is the default for the library +const instance = axios.create(); + +// Override timeout default for the library +// Now all requests using this instance will wait 2.5 seconds before timing out +instance.defaults.timeout = 2500; + +// Override timeout for this request as it's known to take a long time +instance.get('/longRequest', { + timeout: 5000 +}); +``` + +## Interceptors + +You can intercept requests or responses before they are handled by `then` or `catch`. + +```js +// Add a request interceptor +axios.interceptors.request.use(function (config) { + // Do something before request is sent + return config; + }, function (error) { + // Do something with request error + return Promise.reject(error); + }); + +// Add a response interceptor +axios.interceptors.response.use(function (response) { + // Any status code that lie within the range of 2xx cause this function to trigger + // Do something with response data + return response; + }, function (error) { + // Any status codes that falls outside the range of 2xx cause this function to trigger + // Do something with response error + return Promise.reject(error); + }); +``` + +If you need to remove an interceptor later you can. + +```js +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 +const instance = axios.create(); +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 +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. + +```js +axios.interceptors.request.use(function (config) { + config.headers.test = 'I am only a header!'; + return config; +}, null, { synchronous: true }); +``` + +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 +asynchronous request interceptor that only needs to run at certain times. + +```js +function onGetCall(config) { + return config.method === 'get'; +} +axios.interceptors.request.use(function (config) { + config.headers.test = 'special get headers'; + return 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) { + if (error.response) { + // The request was made and the server responded with a status code + // that falls out of the range of 2xx + console.log(error.response.data); + console.log(error.response.status); + console.log(error.response.headers); + } else if (error.request) { + // The request was made but no response was received + // `error.request` is an instance of XMLHttpRequest in the browser and an instance of + // http.ClientRequest in node.js + console.log(error.request); + } else { + // Something happened in setting up the request that triggered an Error + console.log('Error', error.message); + } + console.log(error.config); + }); +``` + +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. + +```js +axios.get('/user/12345', { + validateStatus: function (status) { + return status < 500; // Resolve only if the status code is less than 500 + } +}) +``` + +Using `toJSON` you get an object with more information about the HTTP error. + +```js +axios.get('/user/12345') + .catch(function (error) { + console.log(error.toJSON()); + }); +``` + +## Cancellation + +### AbortController + +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 + +You can create a cancel token using the `CancelToken.source` factory as shown below: + +```js +const CancelToken = axios.CancelToken; +const source = CancelToken.source(); + +axios.get('/user/12345', { + cancelToken: source.token +}).catch(function (thrown) { + if (axios.isCancel(thrown)) { + console.log('Request canceled', thrown.message); + } else { + // handle error + } +}); + +axios.post('/user/12345', { + name: 'new name' +}, { + cancelToken: source.token +}) + +// cancel the request (the message parameter is optional) +source.cancel('Operation canceled by the user.'); +``` + +You can also create a cancel token by passing an executor function to the `CancelToken` constructor: + +```js +const CancelToken = axios.CancelToken; +let cancel; + +axios.get('/user/12345', { + cancelToken: new CancelToken(function executor(c) { + // An executor function receives a cancel function as a parameter + cancel = c; + }) +}); + +// cancel the request +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. + +> During the transition period, you can use both cancellation APIs, even for the same request: + +## Using `application/x-www-form-urlencoded` format + +### URLSearchParams + +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). + +```js +const params = new URLSearchParams({ foo: 'bar' }); +params.append('extraparam', 'value'); +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). + +Alternatively, you can encode data using the [`qs`](https://github.com/ljharb/qs) library: + +```js +const qs = require('qs'); +axios.post('/foo', qs.stringify({ 'bar': 123 })); +``` + +Or in another way (ES6), + +```js +import qs from 'qs'; +const data = { 'bar': 123 }; +const options = { + method: 'POST', + headers: { 'content-type': 'application/x-www-form-urlencoded' }, + data: qs.stringify(data), + url, +}; +axios(options); +``` + +### Older Node.js versions + +For older Node.js engines, 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' })); +``` + +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. + +### 🆕 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); +``` + +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) +``` + +### 🆕 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): + +```js +import axios from 'axios'; + +axios.post('https://httpbin.org/post', {x: 1}, { + headers: { + 'Content-Type': 'multipart/form-data' + } +}).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] +}); +``` + +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). +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. + +```typescript +let user: User = null; +try { + const { data } = await axios.get('/user?ID=12345'); + user = data.userDetails; +} catch (error) { + if (axios.isAxiosError(error)) { + handleAxiosError(error); + } else { + handleUnexpectedError(error); + } +} +``` + +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. + +[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/axios/axios/blob/main/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) + +## 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. + +## License + +[MIT](LICENSE) diff --git a/node_modules/axios/SECURITY.md b/node_modules/axios/SECURITY.md new file mode 100644 index 0000000..a5a2b7d --- /dev/null +++ b/node_modules/axios/SECURITY.md @@ -0,0 +1,6 @@ +# Reporting a Vulnerability + +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. + + +Thank you for improving the security of axios. diff --git a/node_modules/axios/dist/axios.js b/node_modules/axios/dist/axios.js new file mode 100644 index 0000000..2649e27 --- /dev/null +++ b/node_modules/axios/dist/axios.js @@ -0,0 +1,3448 @@ +// Axios v1.6.8 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'; + + function _iterableToArrayLimit(r, l) { + var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; + if (null != t) { + var e, + n, + i, + u, + a = [], + f = !0, + o = !1; + try { + if (i = (t = t.call(r)).next, 0 === l) { + if (Object(t) !== t) return; + f = !1; + } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); + } catch (r) { + o = !0, n = r; + } finally { + try { + if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; + } finally { + if (o) throw n; + } + } + return a; + } + } + function ownKeys(e, r) { + var t = Object.keys(e); + if (Object.getOwnPropertySymbols) { + var o = Object.getOwnPropertySymbols(e); + r && (o = o.filter(function (r) { + return Object.getOwnPropertyDescriptor(e, r).enumerable; + })), t.push.apply(t, o); + } + return t; + } + function _objectSpread2(e) { + for (var r = 1; r < arguments.length; r++) { + var t = null != arguments[r] ? arguments[r] : {}; + r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { + _defineProperty(e, r, t[r]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { + Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); + }); + } + return e; + } + function _regeneratorRuntime() { + _regeneratorRuntime = function () { + return e; + }; + var t, + e = {}, + r = Object.prototype, + n = r.hasOwnProperty, + o = Object.defineProperty || function (t, e, r) { + t[e] = r.value; + }, + i = "function" == typeof Symbol ? Symbol : {}, + a = i.iterator || "@@iterator", + c = i.asyncIterator || "@@asyncIterator", + u = i.toStringTag || "@@toStringTag"; + function define(t, e, r) { + return Object.defineProperty(t, e, { + value: r, + enumerable: !0, + configurable: !0, + writable: !0 + }), t[e]; + } + try { + define({}, ""); + } catch (t) { + define = function (t, e, r) { + return t[e] = r; + }; + } + function wrap(t, e, r, n) { + var i = e && e.prototype instanceof Generator ? e : Generator, + a = Object.create(i.prototype), + c = new Context(n || []); + return o(a, "_invoke", { + value: makeInvokeMethod(t, r, c) + }), a; + } + function tryCatch(t, e, r) { + try { + return { + type: "normal", + arg: t.call(e, r) + }; + } catch (t) { + return { + type: "throw", + arg: t + }; + } + } + e.wrap = wrap; + var h = "suspendedStart", + l = "suspendedYield", + f = "executing", + s = "completed", + y = {}; + function Generator() {} + function GeneratorFunction() {} + function GeneratorFunctionPrototype() {} + var p = {}; + define(p, a, function () { + return this; + }); + var d = Object.getPrototypeOf, + v = d && d(d(values([]))); + v && v !== r && n.call(v, a) && (p = v); + var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); + function defineIteratorMethods(t) { + ["next", "throw", "return"].forEach(function (e) { + define(t, e, function (t) { + return this._invoke(e, t); + }); + }); + } + function AsyncIterator(t, e) { + function invoke(r, o, i, a) { + var c = tryCatch(t[r], t, o); + if ("throw" !== c.type) { + var u = c.arg, + h = u.value; + return h && "object" == typeof h && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { + invoke("next", t, i, a); + }, function (t) { + invoke("throw", t, i, a); + }) : e.resolve(h).then(function (t) { + u.value = t, i(u); + }, function (t) { + return invoke("throw", t, i, a); + }); + } + a(c.arg); + } + var r; + o(this, "_invoke", { + value: function (t, n) { + function callInvokeWithMethodAndArg() { + return new e(function (e, r) { + invoke(t, n, e, r); + }); + } + return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); + } + }); + } + function makeInvokeMethod(e, r, n) { + var o = h; + return function (i, a) { + if (o === f) throw new Error("Generator is already running"); + if (o === s) { + if ("throw" === i) throw a; + return { + value: t, + done: !0 + }; + } + for (n.method = i, n.arg = a;;) { + var c = n.delegate; + if (c) { + var u = maybeInvokeDelegate(c, n); + if (u) { + if (u === y) continue; + return u; + } + } + if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { + if (o === h) throw o = s, n.arg; + n.dispatchException(n.arg); + } else "return" === n.method && n.abrupt("return", n.arg); + o = f; + var p = tryCatch(e, r, n); + if ("normal" === p.type) { + if (o = n.done ? s : l, p.arg === y) continue; + return { + value: p.arg, + done: n.done + }; + } + "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); + } + }; + } + function maybeInvokeDelegate(e, r) { + var n = r.method, + o = e.iterator[n]; + if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; + var i = tryCatch(o, e.iterator, r.arg); + if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; + var a = i.arg; + return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); + } + function pushTryEntry(t) { + var e = { + tryLoc: t[0] + }; + 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); + } + function resetTryEntry(t) { + var e = t.completion || {}; + e.type = "normal", delete e.arg, t.completion = e; + } + function Context(t) { + this.tryEntries = [{ + tryLoc: "root" + }], t.forEach(pushTryEntry, this), this.reset(!0); + } + function values(e) { + if (e || "" === e) { + var r = e[a]; + if (r) return r.call(e); + if ("function" == typeof e.next) return e; + if (!isNaN(e.length)) { + var o = -1, + i = function next() { + for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; + return next.value = t, next.done = !0, next; + }; + return i.next = i; + } + } + throw new TypeError(typeof e + " is not iterable"); + } + return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { + value: GeneratorFunctionPrototype, + configurable: !0 + }), o(GeneratorFunctionPrototype, "constructor", { + value: GeneratorFunction, + configurable: !0 + }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { + var e = "function" == typeof t && t.constructor; + return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); + }, e.mark = function (t) { + return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; + }, e.awrap = function (t) { + return { + __await: t + }; + }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { + return this; + }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { + void 0 === i && (i = Promise); + var a = new AsyncIterator(wrap(t, r, n, o), i); + return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { + return t.done ? t.value : a.next(); + }); + }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { + return this; + }), define(g, "toString", function () { + return "[object Generator]"; + }), e.keys = function (t) { + var e = Object(t), + r = []; + for (var n in e) r.push(n); + return r.reverse(), function next() { + for (; r.length;) { + var t = r.pop(); + if (t in e) return next.value = t, next.done = !1, next; + } + return next.done = !0, next; + }; + }, e.values = values, Context.prototype = { + constructor: Context, + reset: function (e) { + if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); + }, + stop: function () { + this.done = !0; + var t = this.tryEntries[0].completion; + if ("throw" === t.type) throw t.arg; + return this.rval; + }, + dispatchException: function (e) { + if (this.done) throw e; + var r = this; + function handle(n, o) { + return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; + } + for (var o = this.tryEntries.length - 1; o >= 0; --o) { + var i = this.tryEntries[o], + a = i.completion; + if ("root" === i.tryLoc) return handle("end"); + if (i.tryLoc <= this.prev) { + var c = n.call(i, "catchLoc"), + u = n.call(i, "finallyLoc"); + if (c && u) { + if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); + if (this.prev < i.finallyLoc) return handle(i.finallyLoc); + } else if (c) { + if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); + } else { + if (!u) throw new Error("try statement without catch or finally"); + if (this.prev < i.finallyLoc) return handle(i.finallyLoc); + } + } + } + }, + abrupt: function (t, e) { + for (var r = this.tryEntries.length - 1; r >= 0; --r) { + var o = this.tryEntries[r]; + if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { + var i = o; + break; + } + } + i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); + var a = i ? i.completion : {}; + return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); + }, + complete: function (t, e) { + if ("throw" === t.type) throw t.arg; + return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; + }, + finish: function (t) { + for (var e = this.tryEntries.length - 1; e >= 0; --e) { + var r = this.tryEntries[e]; + if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; + } + }, + catch: function (t) { + for (var e = this.tryEntries.length - 1; e >= 0; --e) { + var r = this.tryEntries[e]; + if (r.tryLoc === t) { + var n = r.completion; + if ("throw" === n.type) { + var o = n.arg; + resetTryEntry(r); + } + return o; + } + } + throw new Error("illegal catch attempt"); + }, + delegateYield: function (e, r, n) { + return this.delegate = { + iterator: values(e), + resultName: r, + nextLoc: n + }, "next" === this.method && (this.arg = t), y; + } + }, e; + } + function _toPrimitive(t, r) { + if ("object" != typeof t || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != typeof i) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == typeof i ? i : String(i); + } + function _typeof(o) { + "@babel/helpers - typeof"; + + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { + return typeof o; + } : function (o) { + return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; + }, _typeof(o); + } + 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, _toPropertyKey(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) { + key = _toPropertyKey(key); + 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 _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."); + } + + function bind(fn, thisArg) { + return function wrap() { + return fn.apply(thisArg, arguments); + }; + } + + // 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 merge( /* obj1, obj2, obj3, ... */ + ) { + 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; + 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; + }; + + /** + * 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) { + 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 + }; + } + }); + 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 + }; + }); + 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; + }; + + // 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); + } + 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'); + } + + // 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]); + } + }); + 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) { + var 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); + } + 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('&'); + }; + + /** + * 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; + } + 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 = { + 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'] + }; + + 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]; + } + 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$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; + } + 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); + } + 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']); + + /** + * 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 = (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]) { + 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 + }); + }); + } + var AxiosHeaders = /*#__PURE__*/function (_Symbol$iterator, _Symbol$toStringTag) { + function AxiosHeaders(headers) { + _classCallCheck(this, AxiosHeaders); + headers && this.set(headers); + } + _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; + } + + 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) { + 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)); + } + } + + 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() {} + }; + + /** + * 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() { + var msie = /(msie|trident)/i.test(navigator.userAgent); + var urlParsingNode = document.createElement('a'); + var originURL; + + /** + * Parse a URL to discover its components + * + * @param {String} url The URL to be parsed + * @returns {Object} + */ + 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); + + // 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) { + var 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) { + 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 + }; + 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; + } + + // 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() { + 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 + }); + } + }); + 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(); + } + 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); + } + 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); + }); + } + + var headersToObject = function headersToObject(thing) { + return thing instanceof AxiosHeaders$1 ? _objectSpread2({}, thing) : 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.8"; + + 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 : ''); + } + + // 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; + }; + }; + + /** + * 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); + } + 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; + } + if (allowUnknown !== true) { + throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION); + } + } + } + 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() + }; + } + + /** + * 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; + } + + 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; + }); + 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) { + 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; + } + + // Create the default instance to be exported + var 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 = 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 diff --git a/node_modules/axios/dist/axios.js.map b/node_modules/axios/dist/axios.js.map new file mode 100644 index 0000000..d8022a2 --- /dev/null +++ b/node_modules/axios/dist/axios.js.map @@ -0,0 +1 @@ +{"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 } : 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.8\";","'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","_typeof","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","_ref","length","undefined","_ref$allOwnKeys","allOwnKeys","i","l","keys","getOwnPropertyNames","len","key","findKey","_key","_global","globalThis","self","window","global","isContextDefined","context","merge","_ref2","caseless","assignValue","targetKey","extend","a","b","_ref3","stripBOM","content","charCodeAt","inherits","superConstructor","props","descriptors","defineProperty","value","assign","toFlatObject","sourceObj","destObj","filter","propFilter","prop","merged","endsWith","searchString","position","String","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","_ref4","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","_classCallCheck","handlers","_createClass","use","fulfilled","rejected","synchronous","runWhen","eject","id","clear","forEachHandler","h","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","URLSearchParams","isBrowser","classes","protocols","hasBrowserEnv","document","hasStandardBrowserEnv","product","navigator","hasStandardBrowserWebWorkerEnv","WorkerGlobalScope","importScripts","_objectSpread","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","_Symbol$iterator","_Symbol$toStringTag","valueOrRewrite","rewrite","setHeader","_value","_header","_rewrite","lHeader","setHeaders","parseHeaders","get","has","matcher","_delete","deleted","deleteHeader","normalize","format","normalized","_this$constructor","_len","targets","asStrings","_slicedToArray","first","computed","_len2","_key2","accessor","internals","accessors","defineAccessor","mapped","headerValue","transformData","fns","transform","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","_toArray","_toConsumableArray","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","_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","_request2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","configOrUrl","dummy","_callee$","_context","prev","_request","abrupt","sent","t0","stop","_x","_x2","_config","contextHeaders","requestInterceptorChain","synchronousRequestInterceptors","unshiftRequestInterceptors","interceptor","unshift","responseInterceptorChain","pushResponseInterceptors","promise","chain","newConfig","onFulfilled","onRejected","getUri","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 new file mode 100644 index 0000000..06a84e7 --- /dev/null +++ b/node_modules/axios/dist/axios.min.js @@ -0,0 +1,2 @@ +!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;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return n("end");if(a.tryLoc<=this.prev){var u=o.call(a,"catchLoc"),c=o.call(a,"finallyLoc");if(u&&c){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&o.call(n,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),P(r),v}},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;P(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:k(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),v}},t}function n(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}function o(e){return o="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},o(e)}function i(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 a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(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"!==o(e)&&(e=[e]),j(e))for(r=0,n=e.length;r0;)if(t===(r=n[o]).toLowerCase())return r;return null}var I="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,q=function(e){return!R(e)&&e!==I};var z,M=(z="undefined"!=typeof Uint8Array&&w(Uint8Array),function(e){return z&&e instanceof z}),H=O("HTMLFormElement"),J=function(e){var t=Object.prototype.hasOwnProperty;return function(e,r){return t.call(e,r)}}(),G=O("RegExp"),W=function(e,t){var r=Object.getOwnPropertyDescriptors(e),n={};D(r,(function(r,o){var i;!1!==(i=t(r,o,e))&&(n[o]=i||r)})),Object.defineProperties(e,n)},K="abcdefghijklmnopqrstuvwxyz",V="0123456789",X={DIGIT:V,ALPHA:K,ALPHA_DIGIT:K+K.toUpperCase()+V};var $=O("AsyncFunction"),Q={isArray:j,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=E(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:T,isNumber:P,isBoolean:function(e){return!0===e||!1===e},isObject:N,isPlainObject:k,isUndefined:R,isDate:_,isFile:L,isBlob:C,isRegExp:G,isFunction:x,isStream:function(e){return N(e)&&x(e.pipe)},isURLSearchParams:U,isTypedArray:M,isFileList:F,forEach:D,merge:function e(){for(var t=q(this)&&this||{},r=t.caseless,n={},o=function(t,o){var i=r&&B(n,o)||o;k(n[i])&&k(t)?n[i]=e(n[i],t):k(t)?n[i]=e({},t):j(t)?n[i]=t.slice():n[i]=t},i=0,a=arguments.length;i3&&void 0!==arguments[3]?arguments[3]:{},o=n.allOwnKeys;return D(t,(function(t,n){r&&x(t)?e[n]=m(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&&w(e)}while(e&&(!r||r(e,t))&&e!==Object.prototype);return t},kindOf:E,kindOfTest:O,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(j(e))return e;var t=e.length;if(!P(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:H,hasOwnProperty:J,hasOwnProp:J,reduceDescriptors:W,freezeMethods:function(e){W(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 j(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:B,global:I,isContextDefined:q,ALPHABET:X,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]:X.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(N(r)){if(t.indexOf(r)>=0)return;if(!("toJSON"in r)){t[n]=r;var o=j(r)?[]:{};return D(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:$,isThenable:function(e){return e&&(N(e)||x(e))&&x(e.then)&&x(e.catch)}};function Y(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)}Q.inherits(Y,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:Q.toJSONObject(this.config),code:this.code,status:this.response&&this.response.status?this.response.status:null}}});var Z=Y.prototype,ee={};["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){ee[e]={value:e}})),Object.defineProperties(Y,ee),Object.defineProperty(Z,"isAxiosError",{value:!0}),Y.from=function(e,t,r,n,o,i){var a=Object.create(Z);return Q.toFlatObject(e,a,(function(e){return e!==Error.prototype}),(function(e){return"isAxiosError"!==e})),Y.call(a,e.message,t,r,n,o),a.cause=e,a.name=e.name,i&&Object.assign(a,i),a};function te(e){return Q.isPlainObject(e)||Q.isArray(e)}function re(e){return Q.endsWith(e,"[]")?e.slice(0,-2):e}function ne(e,t,r){return e?e.concat(t).map((function(e,t){return e=re(e),!r&&t?"["+e+"]":e})).join(r?".":""):t}var oe=Q.toFlatObject(Q,{},null,(function(e){return/^is[A-Z]/.test(e)}));function ie(e,t,r){if(!Q.isObject(e))throw new TypeError("target must be an object");t=t||new FormData;var n=(r=Q.toFlatObject(r,{metaTokens:!0,dots:!1,indexes:!1},!1,(function(e,t){return!Q.isUndefined(t[e])}))).metaTokens,i=r.visitor||f,a=r.dots,s=r.indexes,u=(r.Blob||"undefined"!=typeof Blob&&Blob)&&Q.isSpecCompliantForm(t);if(!Q.isFunction(i))throw new TypeError("visitor must be a function");function c(e){if(null===e)return"";if(Q.isDate(e))return e.toISOString();if(!u&&Q.isBlob(e))throw new Y("Blob is not supported. Use a Buffer instead.");return Q.isArrayBuffer(e)||Q.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"===o(e))if(Q.endsWith(r,"{}"))r=n?r:r.slice(0,-2),e=JSON.stringify(e);else if(Q.isArray(e)&&function(e){return Q.isArray(e)&&!e.some(te)}(e)||(Q.isFileList(e)||Q.endsWith(r,"[]"))&&(u=Q.toArray(e)))return r=re(r),u.forEach((function(e,n){!Q.isUndefined(e)&&null!==e&&t.append(!0===s?ne([r],n,a):null===s?r:r+"[]",c(e))})),!1;return!!te(e)||(t.append(ne(i,r,a),c(e)),!1)}var l=[],h=Object.assign(oe,{defaultVisitor:f,convertValue:c,isVisitable:te});if(!Q.isObject(e))throw new TypeError("data must be an object");return function e(r,n){if(!Q.isUndefined(r)){if(-1!==l.indexOf(r))throw Error("Circular reference detected in "+n.join("."));l.push(r),Q.forEach(r,(function(r,o){!0===(!(Q.isUndefined(r)||null===r)&&i.call(t,r,Q.isString(o)?o.trim():o,n,h))&&e(r,n?n.concat(o):[o])})),l.pop()}}(e),t}function ae(e){var t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,(function(e){return t[e]}))}function se(e,t){this._pairs=[],e&&ie(e,this,t)}var ue=se.prototype;function ce(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function fe(e,t,r){if(!t)return e;var n,o=r&&r.encode||ce,i=r&&r.serialize;if(n=i?i(t,r):Q.isURLSearchParams(t)?t.toString():new se(t,r).toString(o)){var a=e.indexOf("#");-1!==a&&(e=e.slice(0,a)),e+=(-1===e.indexOf("?")?"?":"&")+n}return e}ue.append=function(e,t){this._pairs.push([e,t])},ue.toString=function(e){var t=e?function(t){return e.call(this,t,ae)}:ae;return this._pairs.map((function(e){return t(e[0])+"="+t(e[1])}),"").join("&")};var le,he=function(){function e(){a(this,e),this.handlers=[]}return u(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){Q.forEach(this.handlers,(function(t){null!==t&&e(t)}))}}]),e}(),pe={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},de={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:se,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},protocols:["http","https","file","blob","url","data"]},ye="undefined"!=typeof window&&"undefined"!=typeof document,ve=(le="undefined"!=typeof navigator&&navigator.product,ye&&["ReactNative","NativeScript","NS"].indexOf(le)<0),me="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,ge=t(t({},Object.freeze({__proto__:null,hasBrowserEnv:ye,hasStandardBrowserWebWorkerEnv:me,hasStandardBrowserEnv:ve})),de);function be(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&&Q.isArray(n)?n.length:i,s?(Q.hasOwnProp(n,i)?n[i]=[n[i],r]:n[i]=r,!a):(n[i]&&Q.isObject(n[i])||(n[i]=[]),t(e,r,n[i],o)&&Q.isArray(n[i])&&(n[i]=function(e){var t,r,n={},o=Object.keys(e),i=o.length;for(t=0;t-1,i=Q.isObject(e);if(i&&Q.isHTMLForm(e)&&(e=new FormData(e)),Q.isFormData(e))return o?JSON.stringify(be(e)):e;if(Q.isArrayBuffer(e)||Q.isBuffer(e)||Q.isStream(e)||Q.isFile(e)||Q.isBlob(e))return e;if(Q.isArrayBufferView(e))return e.buffer;if(Q.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 ie(e,new ge.classes.URLSearchParams,Object.assign({visitor:function(e,t,r,n){return ge.isNode&&Q.isBuffer(e)?(this.append(t,e.toString("base64")),!1):n.defaultVisitor.apply(this,arguments)}},t))}(e,this.formSerializer).toString();if((r=Q.isFileList(e))||n.indexOf("multipart/form-data")>-1){var a=this.env&&this.env.FormData;return ie(r?{"files[]":e}:e,a&&new a,this.formSerializer)}}return i||o?(t.setContentType("application/json",!1),function(e,t,r){if(Q.isString(e))try{return(t||JSON.parse)(e),Q.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(r||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){var t=this.transitional||we.transitional,r=t&&t.forcedJSONParsing,n="json"===this.responseType;if(e&&Q.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 Y.from(e,Y.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:ge.classes.FormData,Blob:ge.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};Q.forEach(["delete","get","head","post","put","patch"],(function(e){we.headers[e]={}}));var Ee=we,Oe=Q.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 je(e){return e&&String(e).trim().toLowerCase()}function Re(e){return!1===e||null==e?e:Q.isArray(e)?e.map(Re):String(e)}function Ae(e,t,r,n,o){return Q.isFunction(n)?n.call(this,t,r):(o&&(t=r),Q.isString(t)?Q.isString(n)?-1!==t.indexOf(n):Q.isRegExp(n)?n.test(t):void 0:void 0)}var Te=function(e,t){function r(e){a(this,r),e&&this.set(e)}return u(r,[{key:"set",value:function(e,t,r){var n=this;function o(e,t,r){var o=je(t);if(!o)throw new Error("header name must be a non-empty string");var i=Q.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 Q.forEach(e,(function(e,r){return o(e,r,t)}))};return Q.isPlainObject(e)||e instanceof this.constructor?f(e,t):Q.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]&&Oe[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=je(e)){var r=Q.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(Q.isFunction(t))return t.call(this,n,r);if(Q.isRegExp(t))return t.exec(n);throw new TypeError("parser must be boolean|regexp|function")}}}},{key:"has",value:function(e,t){if(e=je(e)){var r=Q.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=je(e)){var o=Q.findKey(r,e);!o||t&&!Ae(0,r[o],o,t)||(delete r[o],n=!0)}}return Q.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 Q.forEach(this,(function(n,o){var i=Q.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(De).join("\n"):" "+De(s[0]):"as no adapter specified"),"ERR_NOT_SUPPORT")}return r};function qe(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new ke(null,e)}function ze(e){return qe(e),e.headers=xe.from(e.headers),e.data=Pe.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1),Ie(e.adapter||Ee.adapter)(e).then((function(t){return qe(e),t.data=Pe.call(e,e.transformResponse,t),t.headers=xe.from(t.headers),t}),(function(t){return Ne(t)||(qe(e),t&&t.response&&(t.response.data=Pe.call(e,e.transformResponse,t.response),t.response.headers=xe.from(t.response.headers))),Promise.reject(t)}))}var Me=function(e){return e instanceof xe?t({},e):e};function He(e,t){t=t||{};var r={};function n(e,t,r){return Q.isPlainObject(e)&&Q.isPlainObject(t)?Q.merge.call({caseless:r},e,t):Q.isPlainObject(t)?Q.merge({},t):Q.isArray(t)?t.slice():t}function o(e,t,r){return Q.isUndefined(t)?Q.isUndefined(e)?void 0:n(void 0,e,r):n(e,t,r)}function i(e,t){if(!Q.isUndefined(t))return n(void 0,t)}function a(e,t){return Q.isUndefined(t)?Q.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(Me(e),Me(t),!0)}};return Q.forEach(Object.keys(Object.assign({},e,t)),(function(n){var i=u[n]||o,a=i(e[n],t[n],n);Q.isUndefined(a)&&i!==s||(r[n]=a)})),r}var Je="1.6.8",Ge={};["object","boolean","number","function","string","symbol"].forEach((function(e,t){Ge[e]=function(r){return o(r)===e||"a"+(t<1?"n ":" ")+e}}));var We={};Ge.transitional=function(e,t,r){function n(e,t){return"[Axios v1.6.8] Transitional option '"+e+"'"+t+(r?". "+r:"")}return function(r,o,i){if(!1===e)throw new Y(n(o," has been removed"+(t?" in "+t:"")),Y.ERR_DEPRECATED);return t&&!We[o]&&(We[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 Ke={assertOptions:function(e,t,r){if("object"!==o(e))throw new Y("options must be an object",Y.ERR_BAD_OPTION_VALUE);for(var n=Object.keys(e),i=n.length;i-- >0;){var a=n[i],s=t[a];if(s){var u=e[a],c=void 0===u||s(u,a,e);if(!0!==c)throw new Y("option "+a+" must be "+c,Y.ERR_BAD_OPTION_VALUE)}else if(!0!==r)throw new Y("Unknown option "+a,Y.ERR_BAD_OPTION)}},validators:Ge},Ve=Ke.validators,Xe=function(){function e(t){a(this,e),this.defaults=t,this.interceptors={request:new he,response:new he}}var t,n;return u(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,o){var a=t.apply(e,r);function s(e){i(a,n,o,s,u,"next",e)}function u(e){i(a,n,o,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=He(this.defaults,t),n=r.transitional,o=r.paramsSerializer,i=r.headers;void 0!==n&&Ke.assertOptions(n,{silentJSONParsing:Ve.transitional(Ve.boolean),forcedJSONParsing:Ve.transitional(Ve.boolean),clarifyTimeoutError:Ve.transitional(Ve.boolean)},!1),null!=o&&(Q.isFunction(o)?t.paramsSerializer={serialize:o}:Ke.assertOptions(o,{encode:Ve.function,serialize:Ve.function},!0)),t.method=(t.method||this.defaults.method||"get").toLowerCase();var a=i&&Q.merge(i.common,i[t.method]);i&&Q.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 p=[ze.bind(this),void 0];for(p.unshift.apply(p,s),p.push.apply(p,f),l=p.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 ke(e,t,o),r(n.reason))}))}return u(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 Ye={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(Ye).forEach((function(e){var t=f(e,2),r=t[0],n=t[1];Ye[n]=r}));var Ze=Ye;var et=function e(t){var r=new $e(t),n=m($e.prototype.request,r);return Q.extend(n,$e.prototype,r,{allOwnKeys:!0}),Q.extend(n,r,null,{allOwnKeys:!0}),n.create=function(r){return e(He(t,r))},n}(Ee);return et.Axios=$e,et.CanceledError=ke,et.CancelToken=Qe,et.isCancel=Ne,et.VERSION=Je,et.toFormData=ie,et.AxiosError=Y,et.Cancel=et.CanceledError,et.all=function(e){return Promise.all(e)},et.spread=function(e){return function(t){return e.apply(null,t)}},et.isAxiosError=function(e){return Q.isObject(e)&&!0===e.isAxiosError},et.mergeConfig=He,et.AxiosHeaders=xe,et.formToJSON=function(e){return be(Q.isHTMLForm(e)?new FormData(e):e)},et.getAdapter=Ie,et.HttpStatusCode=Ze,et.default=et,et})); +//# sourceMappingURL=axios.min.js.map diff --git a/node_modules/axios/dist/axios.min.js.map b/node_modules/axios/dist/axios.min.js.map new file mode 100644 index 0000000..0bcd018 --- /dev/null +++ b/node_modules/axios/dist/axios.min.js.map @@ -0,0 +1 @@ +{"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 } : 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.8\";","'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","_ref2","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","_objectSpread","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","_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","_toConsumableArray","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":"mrTAEe,SAASA,EAAKC,EAAIC,GAC/B,OAAO,WACL,OAAOD,EAAGE,MAAMD,EAASE,WAE7B,CCAA,IAGgBC,EAHTC,EAAYC,OAAOC,UAAnBF,SACAG,EAAkBF,OAAlBE,eAEDC,GAAUL,EAGbE,OAAOI,OAAO,MAHQ,SAAAC,GACrB,IAAMC,EAAMP,EAASQ,KAAKF,GAC1B,OAAOP,EAAMQ,KAASR,EAAMQ,GAAOA,EAAIE,MAAM,GAAI,GAAGC,iBAGlDC,EAAa,SAACC,GAElB,OADAA,EAAOA,EAAKF,cACL,SAACJ,GAAK,OAAKF,EAAOE,KAAWM,CAAI,CAC1C,EAEMC,EAAa,SAAAD,GAAI,OAAI,SAAAN,GAAK,OAAIQ,EAAOR,KAAUM,CAAI,CAAA,EASlDG,EAAWC,MAAXD,QASDE,EAAcJ,EAAW,aAqB/B,IAAMK,EAAgBP,EAAW,eA2BjC,IAAMQ,EAAWN,EAAW,UAQtBO,EAAaP,EAAW,YASxBQ,EAAWR,EAAW,UAStBS,EAAW,SAAChB,GAAK,OAAe,OAAVA,GAAmC,WAAjBQ,EAAOR,EAAkB,EAiBjEiB,EAAgB,SAACC,GACrB,GAAoB,WAAhBpB,EAAOoB,GACT,OAAO,EAGT,IAAMtB,EAAYC,EAAeqB,GACjC,QAAsB,OAAdtB,GAAsBA,IAAcD,OAAOC,WAAkD,OAArCD,OAAOE,eAAeD,IAA0BuB,OAAOC,eAAeF,GAAUC,OAAOE,YAAYH,EACrK,EASMI,EAASjB,EAAW,QASpBkB,EAASlB,EAAW,QASpBmB,EAASnB,EAAW,QASpBoB,EAAapB,EAAW,YAsCxBqB,EAAoBrB,EAAW,mBA2BrC,SAASsB,EAAQC,EAAKvC,GAA+B,IAM/CwC,EACAC,EAP+CC,EAAAvC,UAAAwC,OAAA,QAAAC,IAAAzC,UAAA,GAAAA,UAAA,GAAJ,CAAE,EAAA0C,EAAAH,EAAxBI,WAAAA,OAAa,IAAHD,GAAQA,EAE3C,GAAIN,QAaJ,GALmB,WAAfpB,EAAOoB,KAETA,EAAM,CAACA,IAGLnB,EAAQmB,GAEV,IAAKC,EAAI,EAAGC,EAAIF,EAAII,OAAQH,EAAIC,EAAGD,IACjCxC,EAAGa,KAAK,KAAM0B,EAAIC,GAAIA,EAAGD,OAEtB,CAEL,IAEIQ,EAFEC,EAAOF,EAAaxC,OAAO2C,oBAAoBV,GAAOjC,OAAO0C,KAAKT,GAClEW,EAAMF,EAAKL,OAGjB,IAAKH,EAAI,EAAGA,EAAIU,EAAKV,IACnBO,EAAMC,EAAKR,GACXxC,EAAGa,KAAK,KAAM0B,EAAIQ,GAAMA,EAAKR,EAEjC,CACF,CAEA,SAASY,EAAQZ,EAAKQ,GACpBA,EAAMA,EAAIhC,cAIV,IAHA,IAEIqC,EAFEJ,EAAO1C,OAAO0C,KAAKT,GACrBC,EAAIQ,EAAKL,OAENH,KAAM,GAEX,GAAIO,KADJK,EAAOJ,EAAKR,IACKzB,cACf,OAAOqC,EAGX,OAAO,IACT,CAEA,IAAMC,EAEsB,oBAAfC,WAAmCA,WACvB,oBAATC,KAAuBA,KAA0B,oBAAXC,OAAyBA,OAASC,OAGlFC,EAAmB,SAACC,GAAO,OAAMrC,EAAYqC,IAAYA,IAAYN,CAAO,EAoDlF,IA8HsBO,EAAhBC,GAAgBD,EAKG,oBAAfE,YAA8BtD,EAAesD,YAH9C,SAAAnD,GACL,OAAOiD,GAAcjD,aAAiBiD,IA6CpCG,EAAa/C,EAAW,mBAWxBgD,EAAkB,SAAAC,GAAA,IAAED,EAAmE1D,OAAOC,UAA1EyD,eAAc,OAAM,SAACzB,EAAK2B,GAAI,OAAKF,EAAenD,KAAK0B,EAAK2B,EAAK,CAAA,CAAnE,GASlBC,EAAWnD,EAAW,UAEtBoD,EAAoB,SAAC7B,EAAK8B,GAC9B,IAAMC,EAAchE,OAAOiE,0BAA0BhC,GAC/CiC,EAAqB,CAAA,EAE3BlC,EAAQgC,GAAa,SAACG,EAAYC,GAChC,IAAIC,GAC2C,KAA1CA,EAAMN,EAAQI,EAAYC,EAAMnC,MACnCiC,EAAmBE,GAAQC,GAAOF,EAEtC,IAEAnE,OAAOsE,iBAAiBrC,EAAKiC,EAC/B,EAsDMK,EAAQ,6BAERC,EAAQ,aAERC,EAAW,CACfD,MAAAA,EACAD,MAAAA,EACAG,YAAaH,EAAQA,EAAMI,cAAgBH,GAwB7C,IA+BMI,EAAYlE,EAAW,iBAKdmE,EAAA,CACb/D,QAAAA,EACAG,cAAAA,EACA6D,SAnnBF,SAAkBvD,GAChB,OAAe,OAARA,IAAiBP,EAAYO,IAA4B,OAApBA,EAAIwD,cAAyB/D,EAAYO,EAAIwD,cACpF5D,EAAWI,EAAIwD,YAAYD,WAAavD,EAAIwD,YAAYD,SAASvD,EACxE,EAinBEyD,WAreiB,SAAC3E,GAClB,IAAI4E,EACJ,OAAO5E,IACgB,mBAAb6E,UAA2B7E,aAAiB6E,UAClD/D,EAAWd,EAAM8E,UACY,cAA1BF,EAAO9E,EAAOE,KAEL,WAAT4E,GAAqB9D,EAAWd,EAAMN,WAAkC,sBAArBM,EAAMN,YAIlE,EA2dEqF,kBA/lBF,SAA2B7D,GAOzB,MAL4B,oBAAhB8D,aAAiCA,YAAYC,OAC9CD,YAAYC,OAAO/D,GAElBA,GAASA,EAAIgE,QAAYtE,EAAcM,EAAIgE,OAGzD,EAwlBErE,SAAAA,EACAE,SAAAA,EACAoE,UA/iBgB,SAAAnF,GAAK,OAAc,IAAVA,IAA4B,IAAVA,CAAe,EAgjB1DgB,SAAAA,EACAC,cAAAA,EACAN,YAAAA,EACAW,OAAAA,EACAC,OAAAA,EACAC,OAAAA,EACAgC,SAAAA,EACA1C,WAAAA,EACAsE,SA3fe,SAAClE,GAAG,OAAKF,EAASE,IAAQJ,EAAWI,EAAImE,KAAK,EA4f7D3D,kBAAAA,EACAwB,aAAAA,EACAzB,WAAAA,EACAE,QAAAA,EACA2D,MA/XF,SAASA,IAgBP,IAfA,IAAAC,EAAmBxC,EAAiByC,OAASA,MAAQ,CAAE,EAAhDC,EAAQF,EAARE,SACDC,EAAS,CAAA,EACTC,EAAc,SAACzE,EAAKkB,GACxB,IAAMwD,EAAYH,GAAYjD,EAAQkD,EAAQtD,IAAQA,EAClDnB,EAAcyE,EAAOE,KAAe3E,EAAcC,GACpDwE,EAAOE,GAAaN,EAAMI,EAAOE,GAAY1E,GACpCD,EAAcC,GACvBwE,EAAOE,GAAaN,EAAM,CAAE,EAAEpE,GACrBT,EAAQS,GACjBwE,EAAOE,GAAa1E,EAAIf,QAExBuF,EAAOE,GAAa1E,GAIfW,EAAI,EAAGC,EAAItC,UAAUwC,OAAQH,EAAIC,EAAGD,IAC3CrC,UAAUqC,IAAMF,EAAQnC,UAAUqC,GAAI8D,GAExC,OAAOD,CACT,EA4WEG,OAhWa,SAACC,EAAGC,EAAGzG,GAA8B,IAAA0G,EAAAxG,UAAAwC,OAAA,QAAAC,IAAAzC,UAAA,GAAAA,UAAA,GAAP,CAAE,EAAf2C,EAAU6D,EAAV7D,WAQ9B,OAPAR,EAAQoE,GAAG,SAAC7E,EAAKkB,GACX9C,GAAWwB,EAAWI,GACxB4E,EAAE1D,GAAOhD,EAAK8B,EAAK5B,GAEnBwG,EAAE1D,GAAOlB,CAEb,GAAG,CAACiB,WAAAA,IACG2D,CACT,EAwVEG,KA5dW,SAAChG,GAAG,OAAKA,EAAIgG,KACxBhG,EAAIgG,OAAShG,EAAIiG,QAAQ,qCAAsC,GAAG,EA4dlEC,SAhVe,SAACC,GAIhB,OAH8B,QAA1BA,EAAQC,WAAW,KACrBD,EAAUA,EAAQjG,MAAM,IAEnBiG,CACT,EA4UEE,SAjUe,SAAC5B,EAAa6B,EAAkBC,EAAO7C,GACtDe,EAAY9E,UAAYD,OAAOI,OAAOwG,EAAiB3G,UAAW+D,GAClEe,EAAY9E,UAAU8E,YAAcA,EACpC/E,OAAO8G,eAAe/B,EAAa,QAAS,CAC1CgC,MAAOH,EAAiB3G,YAE1B4G,GAAS7G,OAAOgH,OAAOjC,EAAY9E,UAAW4G,EAChD,EA2TEI,aAhTmB,SAACC,EAAWC,EAASC,EAAQC,GAChD,IAAIR,EACA3E,EACA0B,EACE0D,EAAS,CAAA,EAIf,GAFAH,EAAUA,GAAW,GAEJ,MAAbD,EAAmB,OAAOC,EAE9B,EAAG,CAGD,IADAjF,GADA2E,EAAQ7G,OAAO2C,oBAAoBuE,IACzB7E,OACHH,KAAM,GACX0B,EAAOiD,EAAM3E,GACPmF,IAAcA,EAAWzD,EAAMsD,EAAWC,IAAcG,EAAO1D,KACnEuD,EAAQvD,GAAQsD,EAAUtD,GAC1B0D,EAAO1D,IAAQ,GAGnBsD,GAAuB,IAAXE,GAAoBlH,EAAegH,EACjD,OAASA,KAAeE,GAAUA,EAAOF,EAAWC,KAAaD,IAAclH,OAAOC,WAEtF,OAAOkH,CACT,EAyREhH,OAAAA,EACAO,WAAAA,EACA6G,SAhRe,SAACjH,EAAKkH,EAAcC,GACnCnH,EAAMoH,OAAOpH,SACIgC,IAAbmF,GAA0BA,EAAWnH,EAAI+B,UAC3CoF,EAAWnH,EAAI+B,QAEjBoF,GAAYD,EAAanF,OACzB,IAAMsF,EAAYrH,EAAIsH,QAAQJ,EAAcC,GAC5C,OAAsB,IAAfE,GAAoBA,IAAcF,CAC3C,EAyQEI,QA/Pc,SAACxH,GACf,IAAKA,EAAO,OAAO,KACnB,GAAIS,EAAQT,GAAQ,OAAOA,EAC3B,IAAI6B,EAAI7B,EAAMgC,OACd,IAAKjB,EAASc,GAAI,OAAO,KAEzB,IADA,IAAM4F,EAAM,IAAI/G,MAAMmB,GACfA,KAAM,GACX4F,EAAI5F,GAAK7B,EAAM6B,GAEjB,OAAO4F,CACT,EAsPEC,aA5NmB,SAAC9F,EAAKvC,GAOzB,IANA,IAIIqG,EAFErE,GAFYO,GAAOA,EAAIT,OAAOE,WAETnB,KAAK0B,IAIxB8D,EAASrE,EAASsG,UAAYjC,EAAOkC,MAAM,CACjD,IAAMC,EAAOnC,EAAOgB,MACpBrH,EAAGa,KAAK0B,EAAKiG,EAAK,GAAIA,EAAK,GAC7B,CACF,EAkNEC,SAxMe,SAACC,EAAQ9H,GAIxB,IAHA,IAAI+H,EACEP,EAAM,GAE4B,QAAhCO,EAAUD,EAAOE,KAAKhI,KAC5BwH,EAAIS,KAAKF,GAGX,OAAOP,CACT,EAgMErE,WAAAA,EACAC,eAAAA,EACA8E,WAAY9E,EACZI,kBAAAA,EACA2E,cAxJoB,SAACxG,GACrB6B,EAAkB7B,GAAK,SAACkC,EAAYC,GAElC,GAAIjD,EAAWc,KAA6D,IAArD,CAAC,YAAa,SAAU,UAAU2F,QAAQxD,GAC/D,OAAO,EAGT,IAAM2C,EAAQ9E,EAAImC,GAEbjD,EAAW4F,KAEhB5C,EAAWuE,YAAa,EAEpB,aAAcvE,EAChBA,EAAWwE,UAAW,EAInBxE,EAAWyE,MACdzE,EAAWyE,IAAM,WACf,MAAMC,MAAM,qCAAwCzE,EAAO,OAGjE,GACF,EAiIE0E,YA/HkB,SAACC,EAAeC,GAClC,IAAM/G,EAAM,CAAA,EAENgH,EAAS,SAACnB,GACdA,EAAI9F,SAAQ,SAAA+E,GACV9E,EAAI8E,IAAS,CACf,KAKF,OAFAjG,EAAQiI,GAAiBE,EAAOF,GAAiBE,EAAOvB,OAAOqB,GAAeG,MAAMF,IAE7E/G,CACT,EAoHEkH,YAjMkB,SAAA7I,GAClB,OAAOA,EAAIG,cAAc8F,QAAQ,yBAC/B,SAAkB6C,EAAGC,EAAIC,GACvB,OAAOD,EAAG1E,cAAgB2E,CAC5B,GAEJ,EA4LEC,KAnHW,aAoHXC,eAlHqB,SAACzC,EAAO0C,GAE7B,OADA1C,GAASA,EACF2C,OAAOC,SAAS5C,GAASA,EAAQ0C,CAC1C,EAgHE5G,QAAAA,EACAM,OAAQJ,EACRK,iBAAAA,EACAqB,SAAAA,EACAmF,eAxGqB,WAGrB,IAHqE,IAA/CC,EAAIhK,UAAAwC,OAAA,QAAAC,IAAAzC,UAAA,GAAAA,UAAA,GAAG,GAAIiK,EAAQjK,UAAAwC,OAAAxC,QAAAyC,IAAAzC,UAAAyC,GAAAzC,UAAG4E,GAAAA,EAASC,YACjDpE,EAAM,GACH+B,EAAUyH,EAAVzH,OACAwH,KACLvJ,GAAOwJ,EAASC,KAAKC,SAAW3H,EAAO,GAGzC,OAAO/B,CACT,EAiGE2J,oBAxFF,SAA6B5J,GAC3B,SAAUA,GAASc,EAAWd,EAAM8E,SAAyC,aAA9B9E,EAAMmB,OAAOC,cAA+BpB,EAAMmB,OAAOE,UAC1G,EAuFEwI,aArFmB,SAACjI,GACpB,IAAMkI,EAAQ,IAAIpJ,MAAM,IA2BxB,OAzBc,SAARqJ,EAASC,EAAQnI,GAErB,GAAIb,EAASgJ,GAAS,CACpB,GAAIF,EAAMvC,QAAQyC,IAAW,EAC3B,OAGF,KAAK,WAAYA,GAAS,CACxBF,EAAMjI,GAAKmI,EACX,IAAMC,EAASxJ,EAAQuJ,GAAU,GAAK,CAAA,EAStC,OAPArI,EAAQqI,GAAQ,SAACtD,EAAOtE,GACtB,IAAM8H,EAAeH,EAAMrD,EAAO7E,EAAI,IACrClB,EAAYuJ,KAAkBD,EAAO7H,GAAO8H,EAC/C,IAEAJ,EAAMjI,QAAKI,EAEJgI,CACT,CACF,CAEA,OAAOD,EAGFD,CAAMnI,EAAK,EACpB,EAyDE2C,UAAAA,EACA4F,WAtDiB,SAACnK,GAAK,OACvBA,IAAUgB,EAAShB,IAAUc,EAAWd,KAAWc,EAAWd,EAAMoK,OAAStJ,EAAWd,EAAK,MAAO,GC7oBtG,SAASqK,EAAWC,EAASC,EAAMC,EAAQC,EAASC,GAClDlC,MAAMtI,KAAKsF,MAEPgD,MAAMmC,kBACRnC,MAAMmC,kBAAkBnF,KAAMA,KAAKd,aAEnCc,KAAKsE,OAAS,IAAItB,OAASsB,MAG7BtE,KAAK8E,QAAUA,EACf9E,KAAKzB,KAAO,aACZwG,IAAS/E,KAAK+E,KAAOA,GACrBC,IAAWhF,KAAKgF,OAASA,GACzBC,IAAYjF,KAAKiF,QAAUA,GAC3BC,IAAalF,KAAKkF,SAAWA,EAC/B,CAEAE,EAAMtE,SAAS+D,EAAY7B,MAAO,CAChCqC,OAAQ,WACN,MAAO,CAELP,QAAS9E,KAAK8E,QACdvG,KAAMyB,KAAKzB,KAEX+G,YAAatF,KAAKsF,YAClBC,OAAQvF,KAAKuF,OAEbC,SAAUxF,KAAKwF,SACfC,WAAYzF,KAAKyF,WACjBC,aAAc1F,KAAK0F,aACnBpB,MAAOtE,KAAKsE,MAEZU,OAAQI,EAAMf,aAAarE,KAAKgF,QAChCD,KAAM/E,KAAK+E,KACXY,OAAQ3F,KAAKkF,UAAYlF,KAAKkF,SAASS,OAAS3F,KAAKkF,SAASS,OAAS,KAE3E,IAGF,IAAMvL,EAAYyK,EAAWzK,UACvB+D,GAAc,CAAA,EAEpB,CACE,uBACA,iBACA,eACA,YACA,cACA,4BACA,iBACA,mBACA,kBACA,eACA,kBACA,mBAEAhC,SAAQ,SAAA4I,GACR5G,GAAY4G,GAAQ,CAAC7D,MAAO6D,EAC9B,IAEA5K,OAAOsE,iBAAiBoG,EAAY1G,IACpChE,OAAO8G,eAAe7G,EAAW,eAAgB,CAAC8G,OAAO,IAGzD2D,EAAWe,KAAO,SAACC,EAAOd,EAAMC,EAAQC,EAASC,EAAUY,GACzD,IAAMC,EAAa5L,OAAOI,OAAOH,GAgBjC,OAdAgL,EAAMhE,aAAayE,EAAOE,GAAY,SAAgB3J,GACpD,OAAOA,IAAQ4G,MAAM5I,SACtB,IAAE,SAAA2D,GACD,MAAgB,iBAATA,CACT,IAEA8G,EAAWnK,KAAKqL,EAAYF,EAAMf,QAASC,EAAMC,EAAQC,EAASC,GAElEa,EAAWC,MAAQH,EAEnBE,EAAWxH,KAAOsH,EAAMtH,KAExBuH,GAAe3L,OAAOgH,OAAO4E,EAAYD,GAElCC,CACT,ECnFA,SAASE,GAAYzL,GACnB,OAAO4K,EAAM3J,cAAcjB,IAAU4K,EAAMnK,QAAQT,EACrD,CASA,SAAS0L,GAAetJ,GACtB,OAAOwI,EAAM1D,SAAS9E,EAAK,MAAQA,EAAIjC,MAAM,GAAI,GAAKiC,CACxD,CAWA,SAASuJ,GAAUC,EAAMxJ,EAAKyJ,GAC5B,OAAKD,EACEA,EAAKE,OAAO1J,GAAK2J,KAAI,SAAcC,EAAOnK,GAG/C,OADAmK,EAAQN,GAAeM,IACfH,GAAQhK,EAAI,IAAMmK,EAAQ,IAAMA,CACzC,IAAEC,KAAKJ,EAAO,IAAM,IALHzJ,CAMpB,CAaA,IAAM8J,GAAatB,EAAMhE,aAAagE,EAAO,CAAE,EAAE,MAAM,SAAgBrH,GACrE,MAAO,WAAW4I,KAAK5I,EACzB,IAyBA,SAAS6I,GAAWxK,EAAKyK,EAAUC,GACjC,IAAK1B,EAAM5J,SAASY,GAClB,MAAM,IAAI2K,UAAU,4BAItBF,EAAWA,GAAY,IAAyBxH,SAYhD,IAAM2H,GATNF,EAAU1B,EAAMhE,aAAa0F,EAAS,CACpCE,YAAY,EACZX,MAAM,EACNY,SAAS,IACR,GAAO,SAAiBC,EAAQ1C,GAEjC,OAAQY,EAAMjK,YAAYqJ,EAAO0C,GACnC,KAE2BF,WAErBG,EAAUL,EAAQK,SAAWC,EAC7Bf,EAAOS,EAAQT,KACfY,EAAUH,EAAQG,QAElBI,GADQP,EAAQQ,MAAwB,oBAATA,MAAwBA,OACpClC,EAAMhB,oBAAoByC,GAEnD,IAAKzB,EAAM9J,WAAW6L,GACpB,MAAM,IAAIJ,UAAU,8BAGtB,SAASQ,EAAarG,GACpB,GAAc,OAAVA,EAAgB,MAAO,GAE3B,GAAIkE,EAAMtJ,OAAOoF,GACf,OAAOA,EAAMsG,cAGf,IAAKH,GAAWjC,EAAMpJ,OAAOkF,GAC3B,MAAM,IAAI2D,EAAW,gDAGvB,OAAIO,EAAMhK,cAAc8F,IAAUkE,EAAM1H,aAAawD,GAC5CmG,GAA2B,mBAATC,KAAsB,IAAIA,KAAK,CAACpG,IAAUuG,OAAO7B,KAAK1E,GAG1EA,CACT,CAYA,SAASkG,EAAelG,EAAOtE,EAAKwJ,GAClC,IAAInE,EAAMf,EAEV,GAAIA,IAAUkF,GAAyB,WAAjBpL,EAAOkG,GAC3B,GAAIkE,EAAM1D,SAAS9E,EAAK,MAEtBA,EAAMoK,EAAapK,EAAMA,EAAIjC,MAAM,GAAI,GAEvCuG,EAAQwG,KAAKC,UAAUzG,QAClB,GACJkE,EAAMnK,QAAQiG,IAnGvB,SAAqBe,GACnB,OAAOmD,EAAMnK,QAAQgH,KAASA,EAAI2F,KAAK3B,GACzC,CAiGiC4B,CAAY3G,KACnCkE,EAAMnJ,WAAWiF,IAAUkE,EAAM1D,SAAS9E,EAAK,SAAWqF,EAAMmD,EAAMpD,QAAQd,IAYhF,OATAtE,EAAMsJ,GAAetJ,GAErBqF,EAAI9F,SAAQ,SAAc2L,EAAIC,IAC1B3C,EAAMjK,YAAY2M,IAAc,OAAPA,GAAgBjB,EAASvH,QAEtC,IAAZ2H,EAAmBd,GAAU,CAACvJ,GAAMmL,EAAO1B,GAAqB,OAAZY,EAAmBrK,EAAMA,EAAM,KACnF2K,EAAaO,GAEjB,KACO,EAIX,QAAI7B,GAAY/E,KAIhB2F,EAASvH,OAAO6G,GAAUC,EAAMxJ,EAAKyJ,GAAOkB,EAAarG,KAElD,EACT,CAEA,IAAMoD,EAAQ,GAER0D,EAAiB7N,OAAOgH,OAAOuF,GAAY,CAC/CU,eAAAA,EACAG,aAAAA,EACAtB,YAAAA,KAyBF,IAAKb,EAAM5J,SAASY,GAClB,MAAM,IAAI2K,UAAU,0BAKtB,OA5BA,SAASkB,EAAM/G,EAAOkF,GACpB,IAAIhB,EAAMjK,YAAY+F,GAAtB,CAEA,IAA8B,IAA1BoD,EAAMvC,QAAQb,GAChB,MAAM8B,MAAM,kCAAoCoD,EAAKK,KAAK,MAG5DnC,EAAM5B,KAAKxB,GAEXkE,EAAMjJ,QAAQ+E,GAAO,SAAc4G,EAAIlL,IAKtB,OAJEwI,EAAMjK,YAAY2M,IAAc,OAAPA,IAAgBX,EAAQzM,KAChEmM,EAAUiB,EAAI1C,EAAM/J,SAASuB,GAAOA,EAAI6D,OAAS7D,EAAKwJ,EAAM4B,KAI5DC,EAAMH,EAAI1B,EAAOA,EAAKE,OAAO1J,GAAO,CAACA,GAEzC,IAEA0H,EAAM4D,KAlBwB,CAmBhC,CAMAD,CAAM7L,GAECyK,CACT,CC5MA,SAASsB,GAAO1N,GACd,IAAM2N,EAAU,CACd,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,MAAO,IACP,MAAO,MAET,OAAOC,mBAAmB5N,GAAKiG,QAAQ,oBAAoB,SAAkB4H,GAC3E,OAAOF,EAAQE,EACjB,GACF,CAUA,SAASC,GAAqBC,EAAQ1B,GACpC9G,KAAKyI,OAAS,GAEdD,GAAU5B,GAAW4B,EAAQxI,KAAM8G,EACrC,CAEA,IAAM1M,GAAYmO,GAAqBnO,UC5BvC,SAAS+N,GAAOzM,GACd,OAAO2M,mBAAmB3M,GACxBgF,QAAQ,QAAS,KACjBA,QAAQ,OAAQ,KAChBA,QAAQ,QAAS,KACjBA,QAAQ,OAAQ,KAChBA,QAAQ,QAAS,KACjBA,QAAQ,QAAS,IACrB,CAWe,SAASgI,GAASC,EAAKH,EAAQ1B,GAE5C,IAAK0B,EACH,OAAOG,EAGT,IAIIC,EAJEC,EAAU/B,GAAWA,EAAQqB,QAAUA,GAEvCW,EAAchC,GAAWA,EAAQiC,UAYvC,GAPEH,EADEE,EACiBA,EAAYN,EAAQ1B,GAEpB1B,EAAMlJ,kBAAkBsM,GACzCA,EAAOtO,WACP,IAAIqO,GAAqBC,EAAQ1B,GAAS5M,SAAS2O,GAGjC,CACpB,IAAMG,EAAgBL,EAAI5G,QAAQ,MAEX,IAAnBiH,IACFL,EAAMA,EAAIhO,MAAM,EAAGqO,IAErBL,KAA8B,IAAtBA,EAAI5G,QAAQ,KAAc,IAAM,KAAO6G,CACjD,CAEA,OAAOD,CACT,CDnBAvO,GAAUkF,OAAS,SAAgBf,EAAM2C,GACvClB,KAAKyI,OAAO/F,KAAK,CAACnE,EAAM2C,GAC1B,EAEA9G,GAAUF,SAAW,SAAkB+O,GACrC,IAAMJ,EAAUI,EAAU,SAAS/H,GACjC,OAAO+H,EAAQvO,KAAKsF,KAAMkB,EAAOiH,GAClC,EAAGA,GAEJ,OAAOnI,KAAKyI,OAAOlC,KAAI,SAAclE,GACnC,OAAOwG,EAAQxG,EAAK,IAAM,IAAMwG,EAAQxG,EAAK,GAC9C,GAAE,IAAIoE,KAAK,IACd,EErDkC,ICkB/ByC,GDkDHC,GAlEwB,WACtB,SAAAC,IAAcC,OAAAD,GACZpJ,KAAKsJ,SAAW,EAClB,CA4DC,OA1DDC,EAAAH,EAAA,CAAA,CAAAxM,IAAA,MAAAsE,MAQA,SAAIsI,EAAWC,EAAU3C,GAOvB,OANA9G,KAAKsJ,SAAS5G,KAAK,CACjB8G,UAAAA,EACAC,SAAAA,EACAC,cAAa5C,GAAUA,EAAQ4C,YAC/BC,QAAS7C,EAAUA,EAAQ6C,QAAU,OAEhC3J,KAAKsJ,SAAS9M,OAAS,CAChC,GAEA,CAAAI,IAAA,QAAAsE,MAOA,SAAM0I,GACA5J,KAAKsJ,SAASM,KAChB5J,KAAKsJ,SAASM,GAAM,KAExB,GAEA,CAAAhN,IAAA,QAAAsE,MAKA,WACMlB,KAAKsJ,WACPtJ,KAAKsJ,SAAW,GAEpB,GAEA,CAAA1M,IAAA,UAAAsE,MAUA,SAAQrH,GACNuL,EAAMjJ,QAAQ6D,KAAKsJ,UAAU,SAAwBO,GACzC,OAANA,GACFhQ,EAAGgQ,EAEP,GACF,KAACT,CAAA,CA/DqB,GEFTU,GAAA,CACbC,mBAAmB,EACnBC,mBAAmB,EACnBC,qBAAqB,GCDRC,GAAA,CACbC,WAAW,EACXC,QAAS,CACPC,gBCJsC,oBAApBA,gBAAkCA,gBAAkB9B,GDKtElJ,SEN+B,oBAAbA,SAA2BA,SAAW,KFOxDiI,KGP2B,oBAATA,KAAuBA,KAAO,MHSlDgD,UAAW,CAAC,OAAQ,QAAS,OAAQ,OAAQ,MAAO,SFXhDC,GAAkC,oBAAXlN,QAA8C,oBAAbmN,SAmBxDC,IACHvB,GAEuB,oBAAdwB,WAA6BA,UAAUxB,QADxCqB,IAAiB,CAAC,cAAe,eAAgB,MAAMxI,QAAQmH,IAAW,GAY/EyB,GAE2B,oBAAtBC,mBAEPxN,gBAAgBwN,mBACc,mBAAvBxN,KAAKyN,cMnChBC,GAAAA,EAAAA,EACK1F,CAAAA,+GACA2F,IC2CL,SAASC,GAAenE,GACtB,SAASoE,EAAU7E,EAAMlF,EAAOuD,EAAQsD,GACtC,IAAIxJ,EAAO6H,EAAK2B,KAEhB,GAAa,cAATxJ,EAAsB,OAAO,EAEjC,IAAM2M,EAAerH,OAAOC,UAAUvF,GAChC4M,EAASpD,GAAS3B,EAAK5J,OAG7B,OAFA+B,GAAQA,GAAQ6G,EAAMnK,QAAQwJ,GAAUA,EAAOjI,OAAS+B,EAEpD4M,GACE/F,EAAMzC,WAAW8B,EAAQlG,GAC3BkG,EAAOlG,GAAQ,CAACkG,EAAOlG,GAAO2C,GAE9BuD,EAAOlG,GAAQ2C,GAGTgK,IAGLzG,EAAOlG,IAAU6G,EAAM5J,SAASiJ,EAAOlG,MAC1CkG,EAAOlG,GAAQ,IAGF0M,EAAU7E,EAAMlF,EAAOuD,EAAOlG,GAAOwJ,IAEtC3C,EAAMnK,QAAQwJ,EAAOlG,MACjCkG,EAAOlG,GA/Cb,SAAuB0D,GACrB,IAEI5F,EAEAO,EAJER,EAAM,CAAA,EACNS,EAAO1C,OAAO0C,KAAKoF,GAEnBlF,EAAMF,EAAKL,OAEjB,IAAKH,EAAI,EAAGA,EAAIU,EAAKV,IAEnBD,EADAQ,EAAMC,EAAKR,IACA4F,EAAIrF,GAEjB,OAAOR,CACT,CAoCqBgP,CAAc3G,EAAOlG,MAG9B2M,EACV,CAEA,GAAI9F,EAAMjG,WAAW0H,IAAazB,EAAM9J,WAAWuL,EAASwE,SAAU,CACpE,IAAMjP,EAAM,CAAA,EAMZ,OAJAgJ,EAAMlD,aAAa2E,GAAU,SAACtI,EAAM2C,GAClC+J,EA1EN,SAAuB1M,GAKrB,OAAO6G,EAAM9C,SAAS,gBAAiB/D,GAAMgI,KAAI,SAAA+B,GAC/C,MAAoB,OAAbA,EAAM,GAAc,GAAKA,EAAM,IAAMA,EAAM,EACpD,GACF,CAkEgBgD,CAAc/M,GAAO2C,EAAO9E,EAAK,EAC7C,IAEOA,CACT,CAEA,OAAO,IACT,CCzDA,IAAMmP,GAAW,CAEfC,aAAc1B,GAEd2B,QAAS,CAAC,MAAO,QAEjBC,iBAAkB,CAAC,SAA0BC,EAAMC,GACjD,IA8BI3P,EA9BE4P,EAAcD,EAAQE,kBAAoB,GAC1CC,EAAqBF,EAAY9J,QAAQ,qBAAuB,EAChEiK,EAAkB5G,EAAM5J,SAASmQ,GAQvC,GANIK,GAAmB5G,EAAMxH,WAAW+N,KACtCA,EAAO,IAAItM,SAASsM,IAGHvG,EAAMjG,WAAWwM,GAGlC,OAAOI,EAAqBrE,KAAKC,UAAUqD,GAAeW,IAASA,EAGrE,GAAIvG,EAAMhK,cAAcuQ,IACtBvG,EAAMnG,SAAS0M,IACfvG,EAAMxF,SAAS+L,IACfvG,EAAMrJ,OAAO4P,IACbvG,EAAMpJ,OAAO2P,GAEb,OAAOA,EAET,GAAIvG,EAAM7F,kBAAkBoM,GAC1B,OAAOA,EAAKjM,OAEd,GAAI0F,EAAMlJ,kBAAkByP,GAE1B,OADAC,EAAQK,eAAe,mDAAmD,GACnEN,EAAKzR,WAKd,GAAI8R,EAAiB,CACnB,GAAIH,EAAY9J,QAAQ,sCAAwC,EAC9D,OCtEO,SAA0B4J,EAAM7E,GAC7C,OAAOF,GAAW+E,EAAM,IAAIZ,GAASX,QAAQC,gBAAmBlQ,OAAOgH,OAAO,CAC5EgG,QAAS,SAASjG,EAAOtE,EAAKwJ,EAAM8F,GAClC,OAAInB,GAASoB,QAAU/G,EAAMnG,SAASiC,IACpClB,KAAKV,OAAO1C,EAAKsE,EAAMhH,SAAS,YACzB,GAGFgS,EAAQ9E,eAAerN,MAAMiG,KAAMhG,UAC5C,GACC8M,GACL,CD2DesF,CAAiBT,EAAM3L,KAAKqM,gBAAgBnS,WAGrD,IAAK+B,EAAamJ,EAAMnJ,WAAW0P,KAAUE,EAAY9J,QAAQ,wBAA0B,EAAG,CAC5F,IAAMuK,EAAYtM,KAAKuM,KAAOvM,KAAKuM,IAAIlN,SAEvC,OAAOuH,GACL3K,EAAa,CAAC,UAAW0P,GAAQA,EACjCW,GAAa,IAAIA,EACjBtM,KAAKqM,eAET,CACF,CAEA,OAAIL,GAAmBD,GACrBH,EAAQK,eAAe,oBAAoB,GAvEjD,SAAyBO,EAAUC,EAAQxD,GACzC,GAAI7D,EAAM/J,SAASmR,GACjB,IAEE,OADCC,GAAU/E,KAAKgF,OAAOF,GAChBpH,EAAM3E,KAAK+L,EAKpB,CAJE,MAAOG,GACP,GAAe,gBAAXA,EAAEpO,KACJ,MAAMoO,CAEV,CAGF,OAAQ1D,GAAWvB,KAAKC,WAAW6E,EACrC,CA2DaI,CAAgBjB,IAGlBA,CACT,GAEAkB,kBAAmB,CAAC,SAA2BlB,GAC7C,IAAMH,EAAexL,KAAKwL,cAAgBD,GAASC,aAC7CxB,EAAoBwB,GAAgBA,EAAaxB,kBACjD8C,EAAsC,SAAtB9M,KAAK+M,aAE3B,GAAIpB,GAAQvG,EAAM/J,SAASsQ,KAAW3B,IAAsBhK,KAAK+M,cAAiBD,GAAgB,CAChG,IACME,IADoBxB,GAAgBA,EAAazB,oBACP+C,EAEhD,IACE,OAAOpF,KAAKgF,MAAMf,EAQpB,CAPE,MAAOgB,GACP,GAAIK,EAAmB,CACrB,GAAe,gBAAXL,EAAEpO,KACJ,MAAMsG,EAAWe,KAAK+G,EAAG9H,EAAWoI,iBAAkBjN,KAAM,KAAMA,KAAKkF,UAEzE,MAAMyH,CACR,CACF,CACF,CAEA,OAAOhB,CACT,GAMAuB,QAAS,EAETC,eAAgB,aAChBC,eAAgB,eAEhBC,kBAAmB,EACnBC,eAAgB,EAEhBf,IAAK,CACHlN,SAAU0L,GAASX,QAAQ/K,SAC3BiI,KAAMyD,GAASX,QAAQ9C,MAGzBiG,eAAgB,SAAwB5H,GACtC,OAAOA,GAAU,KAAOA,EAAS,GAClC,EAEDiG,QAAS,CACP4B,OAAQ,CACNC,OAAU,oCACV,oBAAgBhR,KAKtB2I,EAAMjJ,QAAQ,CAAC,SAAU,MAAO,OAAQ,OAAQ,MAAO,UAAU,SAACuR,GAChEnC,GAASK,QAAQ8B,GAAU,EAC7B,IAEA,IAAAC,GAAepC,GErJTqC,GAAoBxI,EAAMnC,YAAY,CAC1C,MAAO,gBAAiB,iBAAkB,eAAgB,OAC1D,UAAW,OAAQ,OAAQ,oBAAqB,sBAChD,gBAAiB,WAAY,eAAgB,sBAC7C,UAAW,cAAe,eCLtB4K,GAAalS,OAAO,aAE1B,SAASmS,GAAgBC,GACvB,OAAOA,GAAUlM,OAAOkM,GAAQtN,OAAO7F,aACzC,CAEA,SAASoT,GAAe9M,GACtB,OAAc,IAAVA,GAA4B,MAATA,EACdA,EAGFkE,EAAMnK,QAAQiG,GAASA,EAAMqF,IAAIyH,IAAkBnM,OAAOX,EACnE,CAgBA,SAAS+M,GAAiBzQ,EAAS0D,EAAO6M,EAAQxM,EAAQ2M,GACxD,OAAI9I,EAAM9J,WAAWiG,GACZA,EAAO7G,KAAKsF,KAAMkB,EAAO6M,IAG9BG,IACFhN,EAAQ6M,GAGL3I,EAAM/J,SAAS6F,GAEhBkE,EAAM/J,SAASkG,IACiB,IAA3BL,EAAMa,QAAQR,GAGnB6D,EAAMpH,SAASuD,GACVA,EAAOoF,KAAKzF,QADrB,OANA,EASF,CAoBC,IAEKiN,GAAY,SAAAC,EAAAC,GAChB,SAAAF,EAAYvC,GAASvC,OAAA8E,GACnBvC,GAAW5L,KAAK+C,IAAI6I,EACtB,CA2MC,OA3MArC,EAAA4E,EAAA,CAAA,CAAAvR,IAAA,MAAAsE,MAED,SAAI6M,EAAQO,EAAgBC,GAC1B,IAAMnR,EAAO4C,KAEb,SAASwO,EAAUC,EAAQC,EAASC,GAClC,IAAMC,EAAUd,GAAgBY,GAEhC,IAAKE,EACH,MAAM,IAAI5L,MAAM,0CAGlB,IAAMpG,EAAMwI,EAAMpI,QAAQI,EAAMwR,KAE5BhS,QAAqBH,IAAdW,EAAKR,KAAmC,IAAb+R,QAAmClS,IAAbkS,IAAwC,IAAdvR,EAAKR,MACzFQ,EAAKR,GAAO8R,GAAWV,GAAeS,GAE1C,CAEA,IDpEWI,EAETjS,EACAlB,EACAW,EAHEyS,ECmEEC,EAAa,SAACnD,EAAS+C,GAAQ,OACnCvJ,EAAMjJ,QAAQyP,GAAS,SAAC6C,EAAQC,GAAO,OAAKF,EAAUC,EAAQC,EAASC,KAAU,EAUnF,OARIvJ,EAAM3J,cAAcsS,IAAWA,aAAkB/N,KAAKd,YACxD6P,EAAWhB,EAAQO,GACXlJ,EAAM/J,SAAS0S,KAAYA,EAASA,EAAOtN,UArEtB,iCAAiCkG,KAqEmBoH,EArEVtN,QAsEvEsO,GDzEED,EAAS,CAAA,GADFD,EC0Eed,IDpEdc,EAAWxL,MAAM,MAAMlH,SAAQ,SAAgB6S,GAC3D3S,EAAI2S,EAAKjN,QAAQ,KACjBnF,EAAMoS,EAAKC,UAAU,EAAG5S,GAAGoE,OAAO7F,cAClCc,EAAMsT,EAAKC,UAAU5S,EAAI,GAAGoE,QAEvB7D,GAAQkS,EAAOlS,IAAQgR,GAAkBhR,KAIlC,eAARA,EACEkS,EAAOlS,GACTkS,EAAOlS,GAAK8F,KAAKhH,GAEjBoT,EAAOlS,GAAO,CAAClB,GAGjBoT,EAAOlS,GAAOkS,EAAOlS,GAAOkS,EAAOlS,GAAO,KAAOlB,EAAMA,EAE3D,IAEOoT,GCgD8BR,GAEvB,MAAVP,GAAkBS,EAAUF,EAAgBP,EAAQQ,GAG/CvO,IACT,GAAC,CAAApD,IAAA,MAAAsE,MAED,SAAI6M,EAAQtB,GAGV,GAFAsB,EAASD,GAAgBC,GAEb,CACV,IAAMnR,EAAMwI,EAAMpI,QAAQgD,KAAM+N,GAEhC,GAAInR,EAAK,CACP,IAAMsE,EAAQlB,KAAKpD,GAEnB,IAAK6P,EACH,OAAOvL,EAGT,IAAe,IAAXuL,EACF,OAxGV,SAAqBhS,GAKnB,IAJA,IAEI6N,EAFE4G,EAAS/U,OAAOI,OAAO,MACvB4U,EAAW,mCAGT7G,EAAQ6G,EAAS1M,KAAKhI,IAC5ByU,EAAO5G,EAAM,IAAMA,EAAM,GAG3B,OAAO4G,CACT,CA8FiBE,CAAYlO,GAGrB,GAAIkE,EAAM9J,WAAWmR,GACnB,OAAOA,EAAO/R,KAAKsF,KAAMkB,EAAOtE,GAGlC,GAAIwI,EAAMpH,SAASyO,GACjB,OAAOA,EAAOhK,KAAKvB,GAGrB,MAAM,IAAI6F,UAAU,yCACtB,CACF,CACF,GAAC,CAAAnK,IAAA,MAAAsE,MAED,SAAI6M,EAAQsB,GAGV,GAFAtB,EAASD,GAAgBC,GAEb,CACV,IAAMnR,EAAMwI,EAAMpI,QAAQgD,KAAM+N,GAEhC,SAAUnR,QAAqBH,IAAduD,KAAKpD,IAAwByS,IAAWpB,GAAiBjO,EAAMA,KAAKpD,GAAMA,EAAKyS,GAClG,CAEA,OAAO,CACT,GAAC,CAAAzS,IAAA,SAAAsE,MAED,SAAO6M,EAAQsB,GACb,IAAMjS,EAAO4C,KACTsP,GAAU,EAEd,SAASC,EAAab,GAGpB,GAFAA,EAAUZ,GAAgBY,GAEb,CACX,IAAM9R,EAAMwI,EAAMpI,QAAQI,EAAMsR,IAE5B9R,GAASyS,IAAWpB,GAAiB7Q,EAAMA,EAAKR,GAAMA,EAAKyS,YACtDjS,EAAKR,GAEZ0S,GAAU,EAEd,CACF,CAQA,OANIlK,EAAMnK,QAAQ8S,GAChBA,EAAO5R,QAAQoT,GAEfA,EAAaxB,GAGRuB,CACT,GAAC,CAAA1S,IAAA,QAAAsE,MAED,SAAMmO,GAKJ,IAJA,IAAMxS,EAAO1C,OAAO0C,KAAKmD,MACrB3D,EAAIQ,EAAKL,OACT8S,GAAU,EAEPjT,KAAK,CACV,IAAMO,EAAMC,EAAKR,GACbgT,IAAWpB,GAAiBjO,EAAMA,KAAKpD,GAAMA,EAAKyS,GAAS,YACtDrP,KAAKpD,GACZ0S,GAAU,EAEd,CAEA,OAAOA,CACT,GAAC,CAAA1S,IAAA,YAAAsE,MAED,SAAUsO,GACR,IAAMpS,EAAO4C,KACP4L,EAAU,CAAA,EAsBhB,OApBAxG,EAAMjJ,QAAQ6D,MAAM,SAACkB,EAAO6M,GAC1B,IAAMnR,EAAMwI,EAAMpI,QAAQ4O,EAASmC,GAEnC,GAAInR,EAGF,OAFAQ,EAAKR,GAAOoR,GAAe9M,eACpB9D,EAAK2Q,GAId,IAAM0B,EAAaD,EA1JzB,SAAsBzB,GACpB,OAAOA,EAAOtN,OACX7F,cAAc8F,QAAQ,mBAAmB,SAACgP,EAAGC,EAAMlV,GAClD,OAAOkV,EAAK7Q,cAAgBrE,CAC9B,GACJ,CAqJkCmV,CAAa7B,GAAUlM,OAAOkM,GAAQtN,OAE9DgP,IAAe1B,UACV3Q,EAAK2Q,GAGd3Q,EAAKqS,GAAczB,GAAe9M,GAElC0K,EAAQ6D,IAAc,CACxB,IAEOzP,IACT,GAAC,CAAApD,IAAA,SAAAsE,MAED,WAAmB,IAAA,IAAA2O,EAAAC,EAAA9V,UAAAwC,OAATuT,EAAO7U,IAAAA,MAAA4U,GAAA7S,EAAA,EAAAA,EAAA6S,EAAA7S,IAAP8S,EAAO9S,GAAAjD,UAAAiD,GACf,OAAO4S,EAAA7P,KAAKd,aAAYoH,OAAMvM,MAAA8V,EAAC,CAAA7P,MAAIsG,OAAKyJ,GAC1C,GAAC,CAAAnT,IAAA,SAAAsE,MAED,SAAO8O,GACL,IAAM5T,EAAMjC,OAAOI,OAAO,MAM1B,OAJA6K,EAAMjJ,QAAQ6D,MAAM,SAACkB,EAAO6M,GACjB,MAAT7M,IAA2B,IAAVA,IAAoB9E,EAAI2R,GAAUiC,GAAa5K,EAAMnK,QAAQiG,GAASA,EAAMuF,KAAK,MAAQvF,EAC5G,IAEO9E,CACT,GAAC,CAAAQ,IAEAjB,OAAOE,SAFPqF,MAED,WACE,OAAO/G,OAAOkR,QAAQrL,KAAKqF,UAAU1J,OAAOE,WAC9C,GAAC,CAAAe,IAAA,WAAAsE,MAED,WACE,OAAO/G,OAAOkR,QAAQrL,KAAKqF,UAAUkB,KAAI,SAAAhK,GAAA,IAAAwD,EAAAkQ,EAAA1T,EAAA,GAAe,OAAPwD,EAAA,GAAsB,KAAfA,EAAA,EAA2B,IAAE0G,KAAK,KAC5F,GAAC,CAAA7J,IAEIjB,OAAOC,YAFXsU,IAED,WACE,MAAO,cACT,IAAC,CAAA,CAAAtT,IAAA,OAAAsE,MAED,SAAY1G,GACV,OAAOA,aAAiBwF,KAAOxF,EAAQ,IAAIwF,KAAKxF,EAClD,GAAC,CAAAoC,IAAA,SAAAsE,MAED,SAAciP,GACqB,IAAjC,IAAMC,EAAW,IAAIpQ,KAAKmQ,GAAOE,EAAArW,UAAAwC,OADXuT,MAAO7U,MAAAmV,EAAAA,EAAAA,OAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAPP,EAAOO,EAAAtW,GAAAA,UAAAsW,GAK7B,OAFAP,EAAQ5T,SAAQ,SAACsI,GAAM,OAAK2L,EAASrN,IAAI0B,MAElC2L,CACT,GAAC,CAAAxT,IAAA,WAAAsE,MAED,SAAgB6M,GACd,IAIMwC,GAJYvQ,KAAK6N,IAAe7N,KAAK6N,IAAc,CACvD0C,UAAW,CAAC,IAGcA,UACtBnW,EAAY4F,KAAK5F,UAEvB,SAASoW,EAAe9B,GACtB,IAAME,EAAUd,GAAgBY,GAE3B6B,EAAU3B,MAlNrB,SAAwBxS,EAAK2R,GAC3B,IAAM0C,EAAerL,EAAM9B,YAAY,IAAMyK,GAE7C,CAAC,MAAO,MAAO,OAAO5R,SAAQ,SAAAuU,GAC5BvW,OAAO8G,eAAe7E,EAAKsU,EAAaD,EAAc,CACpDvP,MAAO,SAASyP,EAAMC,EAAMC,GAC1B,OAAO7Q,KAAK0Q,GAAYhW,KAAKsF,KAAM+N,EAAQ4C,EAAMC,EAAMC,EACxD,EACDC,cAAc,GAElB,GACF,CAwMQC,CAAe3W,EAAWsU,GAC1B6B,EAAU3B,IAAW,EAEzB,CAIA,OAFAxJ,EAAMnK,QAAQ8S,GAAUA,EAAO5R,QAAQqU,GAAkBA,EAAezC,GAEjE/N,IACT,KAACmO,CAAA,CA9Me,GAiNlBA,GAAa6C,SAAS,CAAC,eAAgB,iBAAkB,SAAU,kBAAmB,aAAc,kBAG/FhS,EAACf,kBAAkBkQ,GAAa/T,WAAW,SAAAoG,EAAU5D,GAAQ,IAAhBsE,EAAKV,EAALU,MAC5C+P,EAASrU,EAAI,GAAGkC,cAAgBlC,EAAIjC,MAAM,GAC9C,MAAO,CACLuV,IAAK,WAAA,OAAMhP,CAAK,EAChB6B,IAAG,SAACmO,GACFlR,KAAKiR,GAAUC,CACjB,EAEJ,IAEA9L,EAAMxC,cAAcuL,IAEpB,IAAAgD,GAAehD,GC3RA,SAASiD,GAAcC,EAAKnM,GACzC,IAAMF,EAAShF,MAAQuL,GACjB/N,EAAU0H,GAAYF,EACtB4G,EAAUuC,GAAavI,KAAKpI,EAAQoO,SACtCD,EAAOnO,EAAQmO,KAQnB,OANAvG,EAAMjJ,QAAQkV,GAAK,SAAmBxX,GACpC8R,EAAO9R,EAAGa,KAAKsK,EAAQ2G,EAAMC,EAAQ0F,YAAapM,EAAWA,EAASS,YAASlJ,EACjF,IAEAmP,EAAQ0F,YAED3F,CACT,CCzBe,SAAS4F,GAASrQ,GAC/B,SAAUA,IAASA,EAAMsQ,WAC3B,CCUA,SAASC,GAAc3M,EAASE,EAAQC,GAEtCJ,EAAWnK,KAAKsF,KAAiB,MAAX8E,EAAkB,WAAaA,EAASD,EAAW6M,aAAc1M,EAAQC,GAC/FjF,KAAKzB,KAAO,eACd,CAEA6G,EAAMtE,SAAS2Q,GAAe5M,EAAY,CACxC2M,YAAY,IClBCzG,IAAAA,GAAAA,GAASN,sBAGtB,CACEkH,MAAKA,SAACpT,EAAM2C,EAAO0Q,EAASxL,EAAMyL,EAAQC,GACxC,IAAMC,EAAS,CAACxT,EAAO,IAAM8J,mBAAmBnH,IAEhDkE,EAAM7J,SAASqW,IAAYG,EAAOrP,KAAK,WAAa,IAAIsP,KAAKJ,GAASK,eAEtE7M,EAAM/J,SAAS+K,IAAS2L,EAAOrP,KAAK,QAAU0D,GAE9ChB,EAAM/J,SAASwW,IAAWE,EAAOrP,KAAK,UAAYmP,IAEvC,IAAXC,GAAmBC,EAAOrP,KAAK,UAE/B8H,SAASuH,OAASA,EAAOtL,KAAK,KAC/B,EAEDyL,KAAI,SAAC3T,GACH,IAAM+J,EAAQkC,SAASuH,OAAOzJ,MAAM,IAAI6J,OAAO,aAAe5T,EAAO,cACrE,OAAQ+J,EAAQ8J,mBAAmB9J,EAAM,IAAM,IAChD,EAED+J,OAAM,SAAC9T,GACLyB,KAAK2R,MAAMpT,EAAM,GAAIyT,KAAKM,MAAQ,MACpC,GAMF,CACEX,MAAKA,WAAK,EACVO,KAAI,WACF,OAAO,IACR,EACDG,OAAM,WAAI,GCxBC,SAASE,GAAcC,EAASC,GAC7C,OAAID,ICHG,8BAA8B7L,KDGP8L,GENjB,SAAqBD,EAASE,GAC3C,OAAOA,EACHF,EAAQ9R,QAAQ,SAAU,IAAM,IAAMgS,EAAYhS,QAAQ,OAAQ,IAClE8R,CACN,CFGWG,CAAYH,EAASC,GAEvBA,CACT,CGfe1H,IAAAA,GAAAA,GAASN,sBAIrB,WACC,IAEImI,EAFEC,EAAO,kBAAkBlM,KAAK+D,UAAUoI,WACxCC,EAAiBvI,SAASwI,cAAc,KAS9C,SAASC,EAAWtK,GAClB,IAAIuK,EAAOvK,EAWX,OATIkK,IAEFE,EAAeI,aAAa,OAAQD,GACpCA,EAAOH,EAAeG,MAGxBH,EAAeI,aAAa,OAAQD,GAG7B,CACLA,KAAMH,EAAeG,KACrBE,SAAUL,EAAeK,SAAWL,EAAeK,SAAS1S,QAAQ,KAAM,IAAM,GAChF2S,KAAMN,EAAeM,KACrBC,OAAQP,EAAeO,OAASP,EAAeO,OAAO5S,QAAQ,MAAO,IAAM,GAC3E6S,KAAMR,EAAeQ,KAAOR,EAAeQ,KAAK7S,QAAQ,KAAM,IAAM,GACpE8S,SAAUT,EAAeS,SACzBC,KAAMV,EAAeU,KACrBC,SAAiD,MAAtCX,EAAeW,SAASC,OAAO,GACxCZ,EAAeW,SACf,IAAMX,EAAeW,SAE3B,CAUA,OARAd,EAAYK,EAAW5V,OAAOuW,SAASV,MAQhC,SAAyBW,GAC9B,IAAM/E,EAAU1J,EAAM/J,SAASwY,GAAeZ,EAAWY,GAAcA,EACvE,OAAQ/E,EAAOsE,WAAaR,EAAUQ,UAClCtE,EAAOuE,OAAST,EAAUS,KAElC,CAlDC,GAsDQ,WACL,OAAO,GChDb,SAASS,GAAqBC,EAAUC,GACtC,IAAIC,EAAgB,EACdC,ECVR,SAAqBC,EAAcC,GACjCD,EAAeA,GAAgB,GAC/B,IAIIE,EAJEC,EAAQ,IAAIpZ,MAAMiZ,GAClBI,EAAa,IAAIrZ,MAAMiZ,GACzBK,EAAO,EACPC,EAAO,EAKX,OAFAL,OAAc3X,IAAR2X,EAAoBA,EAAM,IAEzB,SAAcM,GACnB,IAAMpC,EAAMN,KAAKM,MAEXqC,EAAYJ,EAAWE,GAExBJ,IACHA,EAAgB/B,GAGlBgC,EAAME,GAAQE,EACdH,EAAWC,GAAQlC,EAKnB,IAHA,IAAIjW,EAAIoY,EACJG,EAAa,EAEVvY,IAAMmY,GACXI,GAAcN,EAAMjY,KACpBA,GAAQ8X,EASV,IANAK,GAAQA,EAAO,GAAKL,KAEPM,IACXA,GAAQA,EAAO,GAAKN,KAGlB7B,EAAM+B,EAAgBD,GAA1B,CAIA,IAAMS,EAASF,GAAarC,EAAMqC,EAElC,OAAOE,EAAS3Q,KAAK4Q,MAAmB,IAAbF,EAAoBC,QAAUpY,CAJzD,EAMJ,CDlCuBsY,CAAY,GAAI,KAErC,OAAO,SAAApI,GACL,IAAMqI,EAASrI,EAAEqI,OACXC,EAAQtI,EAAEuI,iBAAmBvI,EAAEsI,WAAQxY,EACvC0Y,EAAgBH,EAASf,EACzBmB,EAAOlB,EAAaiB,GAG1BlB,EAAgBe,EAEhB,IAAMrJ,EAAO,CACXqJ,OAAAA,EACAC,MAAAA,EACAI,SAAUJ,EAASD,EAASC,OAASxY,EACrC6X,MAAOa,EACPC,KAAMA,QAAc3Y,EACpB6Y,UAAWF,GAAQH,GAVLD,GAAUC,GAUeA,EAAQD,GAAUI,OAAO3Y,EAChE8Y,MAAO5I,GAGThB,EAAKqI,EAAmB,WAAa,WAAY,EAEjDD,EAASpI,GAEb,CAEA,IExCM6J,GAAgB,CACpBC,KCLa,KDMbC,IFsCsD,oBAAnBC,gBAEG,SAAU3Q,GAChD,OAAO,IAAI4Q,SAAQ,SAA4BC,EAASC,GACtD,IAGIC,EAWAlK,IAdAmK,EAAchR,EAAO2G,KACnBsK,EAAiB9H,GAAavI,KAAKZ,EAAO4G,SAAS0F,YACpDvE,EAA+B/H,EAA/B+H,aAAcmJ,EAAiBlR,EAAjBkR,cAEnB,SAAS9T,IACH4C,EAAOmR,aACTnR,EAAOmR,YAAYC,YAAYL,GAG7B/Q,EAAOqR,QACTrR,EAAOqR,OAAOC,oBAAoB,QAASP,EAE/C,CAIA,GAAI3Q,EAAMjG,WAAW6W,GACnB,GAAIjL,GAASN,uBAAyBM,GAASJ,+BAC7CsL,EAAehK,gBAAe,QACzB,IAAwD,KAAnDJ,EAAcoK,EAAenK,kBAA6B,CAEpE,IAAAvP,EAA0BsP,EAAcA,EAAYxI,MAAM,KAAKkD,KAAI,SAAAC,GAAK,OAAIA,EAAM/F,MAAM,IAAEc,OAAOgV,SAAW,GAAExW,MAAAxD,oBAAvGzB,EAAIiF,EAAA,GAAKmP,EAAMnP,EAAApF,MAAA,GACtBsb,EAAehK,eAAe,CAACnR,GAAQ,uBAAqBwL,OAAAkQ,EAAKtH,IAAQzI,KAAK,MAChF,CAGF,IAAIxB,EAAU,IAAI0Q,eAGlB,GAAI3Q,EAAOyR,KAAM,CACf,IAAMC,EAAW1R,EAAOyR,KAAKC,UAAY,GACnCC,EAAW3R,EAAOyR,KAAKE,SAAWC,SAASvO,mBAAmBrD,EAAOyR,KAAKE,WAAa,GAC7FV,EAAelT,IAAI,gBAAiB,SAAW8T,KAAKH,EAAW,IAAMC,GACvE,CAEA,IAAMG,EAAWvE,GAAcvN,EAAOwN,QAASxN,EAAO2D,KAOtD,SAASoO,IACP,GAAK9R,EAAL,CAIA,IAAM+R,EAAkB7I,GAAavI,KACnC,0BAA2BX,GAAWA,EAAQgS,0BIpFvC,SAAgBpB,EAASC,EAAQ5Q,GAC9C,IAAMqI,EAAiBrI,EAASF,OAAOuI,eAClCrI,EAASS,QAAW4H,IAAkBA,EAAerI,EAASS,QAGjEmQ,EAAO,IAAIjR,EACT,mCAAqCK,EAASS,OAC9C,CAACd,EAAWqS,gBAAiBrS,EAAWoI,kBAAkB/I,KAAKiT,MAAMjS,EAASS,OAAS,KAAO,GAC9FT,EAASF,OACTE,EAASD,QACTC,IAPF2Q,EAAQ3Q,EAUZ,CJoFMkS,EAAO,SAAkBlW,GACvB2U,EAAQ3U,GACRkB,GACF,IAAG,SAAiBiV,GAClBvB,EAAOuB,GACPjV,GACD,GAfgB,CACfuJ,KAHoBoB,GAAiC,SAAjBA,GAA4C,SAAjBA,EACxC9H,EAAQC,SAA/BD,EAAQqS,aAGR3R,OAAQV,EAAQU,OAChB4R,WAAYtS,EAAQsS,WACpB3L,QAASoL,EACThS,OAAAA,EACAC,QAAAA,IAYFA,EAAU,IAzBV,CA0BF,CAmEA,GArGAA,EAAQuS,KAAKxS,EAAO0I,OAAO5O,cAAe4J,GAASoO,EAAU9R,EAAOwD,OAAQxD,EAAOyS,mBAAmB,GAGtGxS,EAAQiI,QAAUlI,EAAOkI,QAiCrB,cAAejI,EAEjBA,EAAQ8R,UAAYA,EAGpB9R,EAAQyS,mBAAqB,WACtBzS,GAAkC,IAAvBA,EAAQ0S,aAQD,IAAnB1S,EAAQU,QAAkBV,EAAQ2S,aAAwD,IAAzC3S,EAAQ2S,YAAY7V,QAAQ,WAKjF8V,WAAWd,IAKf9R,EAAQ6S,QAAU,WACX7S,IAIL6Q,EAAO,IAAIjR,EAAW,kBAAmBA,EAAWkT,aAAc/S,EAAQC,IAG1EA,EAAU,OAIZA,EAAQ+S,QAAU,WAGhBlC,EAAO,IAAIjR,EAAW,gBAAiBA,EAAWoT,YAAajT,EAAQC,IAGvEA,EAAU,MAIZA,EAAQiT,UAAY,WAClB,IAAIC,EAAsBnT,EAAOkI,QAAU,cAAgBlI,EAAOkI,QAAU,cAAgB,mBACtF1B,EAAexG,EAAOwG,cAAgB1B,GACxC9E,EAAOmT,sBACTA,EAAsBnT,EAAOmT,qBAE/BrC,EAAO,IAAIjR,EACTsT,EACA3M,EAAavB,oBAAsBpF,EAAWuT,UAAYvT,EAAWkT,aACrE/S,EACAC,IAGFA,EAAU,MAMT8F,GAASN,wBACVyL,GAAiB9Q,EAAM9J,WAAW4a,KAAmBA,EAAgBA,EAAclR,IAE/EkR,IAAoC,IAAlBA,GAA2BmC,GAAgBvB,IAAY,CAE3E,IAAMwB,EAAYtT,EAAOoI,gBAAkBpI,EAAOmI,gBAAkBoL,GAAQrG,KAAKlN,EAAOmI,gBAEpFmL,GACFrC,EAAelT,IAAIiC,EAAOoI,eAAgBkL,EAE9C,MAIc7b,IAAhBuZ,GAA6BC,EAAehK,eAAe,MAGvD,qBAAsBhH,GACxBG,EAAMjJ,QAAQ8Z,EAAe5Q,UAAU,SAA0B3J,EAAKkB,GACpEqI,EAAQuT,iBAAiB5b,EAAKlB,EAChC,IAIG0J,EAAMjK,YAAY6J,EAAOyT,mBAC5BxT,EAAQwT,kBAAoBzT,EAAOyT,iBAIjC1L,GAAiC,SAAjBA,IAClB9H,EAAQ8H,aAAe/H,EAAO+H,cAIS,mBAA9B/H,EAAO0T,oBAChBzT,EAAQ0T,iBAAiB,WAAY7E,GAAqB9O,EAAO0T,oBAAoB,IAIhD,mBAA5B1T,EAAO4T,kBAAmC3T,EAAQ4T,QAC3D5T,EAAQ4T,OAAOF,iBAAiB,WAAY7E,GAAqB9O,EAAO4T,oBAGtE5T,EAAOmR,aAAenR,EAAOqR,UAG/BN,EAAa,SAAA+C,GACN7T,IAGL6Q,GAAQgD,GAAUA,EAAOhe,KAAO,IAAI2W,GAAc,KAAMzM,EAAQC,GAAW6T,GAC3E7T,EAAQ8T,QACR9T,EAAU,OAGZD,EAAOmR,aAAenR,EAAOmR,YAAY6C,UAAUjD,GAC/C/Q,EAAOqR,SACTrR,EAAOqR,OAAO4C,QAAUlD,IAAe/Q,EAAOqR,OAAOsC,iBAAiB,QAAS5C,KAInF,IKrPIzN,ELqPE8K,GKrPF9K,EAAQ,4BAA4B7F,KLqPTqU,KKpPjBxO,EAAM,IAAM,GLsPtB8K,IAAsD,IAA1CrI,GAAST,UAAUvI,QAAQqR,GACzC0C,EAAO,IAAIjR,EAAW,wBAA0BuO,EAAW,IAAKvO,EAAWqS,gBAAiBlS,IAM9FC,EAAQiU,KAAKlD,GAAe,KAC9B,GACF,GEzPKhX,EAAC7C,QAAQqZ,IAAe,SAAC3b,EAAIqH,GAChC,GAAIrH,EAAI,CACN,IACEM,OAAO8G,eAAepH,EAAI,OAAQ,CAACqH,MAAAA,GAEnC,CADA,MAAOyL,GACP,CAEFxS,OAAO8G,eAAepH,EAAI,cAAe,CAACqH,MAAAA,GAC5C,CACF,IAEA,IAAMiY,GAAe,SAACC,GAAM,MAAA9S,KAAAA,OAAU8S,EAAM,EAEtCC,GAAmB,SAAC5N,GAAO,OAAKrG,EAAM9J,WAAWmQ,IAAwB,OAAZA,IAAgC,IAAZA,CAAiB,EAEzF6N,GACD,SAACA,GASX,IANA,IACIC,EACA9N,EAFGjP,GAFP8c,EAAWlU,EAAMnK,QAAQqe,GAAYA,EAAW,CAACA,IAE1C9c,OAIDgd,EAAkB,CAAA,EAEfnd,EAAI,EAAGA,EAAIG,EAAQH,IAAK,CAE/B,IAAIuN,OAAE,EAIN,GAFA6B,EAHA8N,EAAgBD,EAASjd,IAKpBgd,GAAiBE,SAGJ9c,KAFhBgP,EAAU+J,IAAe5L,EAAK/H,OAAO0X,IAAgB3e,gBAGnD,MAAM,IAAIiK,EAAU,oBAAAyB,OAAqBsD,QAI7C,GAAI6B,EACF,MAGF+N,EAAgB5P,GAAM,IAAMvN,GAAKoP,CACnC,CAEA,IAAKA,EAAS,CAEZ,IAAMgO,EAAUtf,OAAOkR,QAAQmO,GAC5BjT,KAAI,SAAAhK,GAAA,IAAAwD,EAAAkQ,EAAA1T,EAAA,GAAEqN,EAAE7J,EAAA,GAAE2Z,EAAK3Z,EAAA,GAAA,MAAM,WAAAuG,OAAWsD,EAC9B8P,OAAU,IAAVA,EAAkB,sCAAwC,gCAAgC,IAO/F,MAAM,IAAI7U,EACR,yDALMrI,EACLid,EAAQjd,OAAS,EAAI,YAAcid,EAAQlT,IAAI4S,IAAc1S,KAAK,MAAQ,IAAM0S,GAAaM,EAAQ,IACtG,2BAIA,kBAEJ,CAEA,OAAOhO,CACR,EI1DH,SAASkO,GAA6B3U,GAKpC,GAJIA,EAAOmR,aACTnR,EAAOmR,YAAYyD,mBAGjB5U,EAAOqR,QAAUrR,EAAOqR,OAAO4C,QACjC,MAAM,IAAIxH,GAAc,KAAMzM,EAElC,CASe,SAAS6U,GAAgB7U,GAiBtC,OAhBA2U,GAA6B3U,GAE7BA,EAAO4G,QAAUuC,GAAavI,KAAKZ,EAAO4G,SAG1C5G,EAAO2G,KAAOyF,GAAc1W,KAC1BsK,EACAA,EAAO0G,mBAGgD,IAArD,CAAC,OAAQ,MAAO,SAAS3J,QAAQiD,EAAO0I,SAC1C1I,EAAO4G,QAAQK,eAAe,qCAAqC,GAGrDqN,GAAoBtU,EAAOyG,SAAWF,GAASE,QAExDA,CAAQzG,GAAQJ,MAAK,SAA6BM,GAYvD,OAXAyU,GAA6B3U,GAG7BE,EAASyG,KAAOyF,GAAc1W,KAC5BsK,EACAA,EAAO6H,kBACP3H,GAGFA,EAAS0G,QAAUuC,GAAavI,KAAKV,EAAS0G,SAEvC1G,CACT,IAAG,SAA4BkU,GAe7B,OAdK7H,GAAS6H,KACZO,GAA6B3U,GAGzBoU,GAAUA,EAAOlU,WACnBkU,EAAOlU,SAASyG,KAAOyF,GAAc1W,KACnCsK,EACAA,EAAO6H,kBACPuM,EAAOlU,UAETkU,EAAOlU,SAAS0G,QAAUuC,GAAavI,KAAKwT,EAAOlU,SAAS0G,WAIzDgK,QAAQE,OAAOsD,EACxB,GACF,CC3EA,IAAMU,GAAkB,SAACtf,GAAK,OAAKA,aAAiB2T,GAAYrD,EAAQtQ,CAAAA,EAAAA,GAAUA,CAAK,EAWxE,SAASuf,GAAYC,EAASC,GAE3CA,EAAUA,GAAW,GACrB,IAAMjV,EAAS,CAAA,EAEf,SAASkV,EAAezV,EAAQD,EAAQvE,GACtC,OAAImF,EAAM3J,cAAcgJ,IAAWW,EAAM3J,cAAc+I,GAC9CY,EAAMtF,MAAMpF,KAAK,CAACuF,SAAAA,GAAWwE,EAAQD,GACnCY,EAAM3J,cAAc+I,GACtBY,EAAMtF,MAAM,CAAE,EAAE0E,GACdY,EAAMnK,QAAQuJ,GAChBA,EAAO7J,QAET6J,CACT,CAGA,SAAS2V,EAAoB7Z,EAAGC,EAAGN,GACjC,OAAKmF,EAAMjK,YAAYoF,GAEX6E,EAAMjK,YAAYmF,QAAvB,EACE4Z,OAAezd,EAAW6D,EAAGL,GAF7Bia,EAAe5Z,EAAGC,EAAGN,EAIhC,CAGA,SAASma,EAAiB9Z,EAAGC,GAC3B,IAAK6E,EAAMjK,YAAYoF,GACrB,OAAO2Z,OAAezd,EAAW8D,EAErC,CAGA,SAAS8Z,EAAiB/Z,EAAGC,GAC3B,OAAK6E,EAAMjK,YAAYoF,GAEX6E,EAAMjK,YAAYmF,QAAvB,EACE4Z,OAAezd,EAAW6D,GAF1B4Z,OAAezd,EAAW8D,EAIrC,CAGA,SAAS+Z,EAAgBha,EAAGC,EAAGxC,GAC7B,OAAIA,KAAQkc,EACHC,EAAe5Z,EAAGC,GAChBxC,KAAQic,EACVE,OAAezd,EAAW6D,QAD5B,CAGT,CAEA,IAAMia,EAAW,CACf5R,IAAKyR,EACL1M,OAAQ0M,EACRzO,KAAMyO,EACN5H,QAAS6H,EACT3O,iBAAkB2O,EAClBxN,kBAAmBwN,EACnB5C,iBAAkB4C,EAClBnN,QAASmN,EACTG,eAAgBH,EAChB5B,gBAAiB4B,EACjBnE,cAAemE,EACf5O,QAAS4O,EACTtN,aAAcsN,EACdlN,eAAgBkN,EAChBjN,eAAgBiN,EAChBzB,iBAAkByB,EAClB3B,mBAAoB2B,EACpBI,WAAYJ,EACZhN,iBAAkBgN,EAClB/M,cAAe+M,EACfK,eAAgBL,EAChBM,UAAWN,EACXO,UAAWP,EACXQ,WAAYR,EACZlE,YAAakE,EACbS,WAAYT,EACZU,iBAAkBV,EAClB9M,eAAgB+M,EAChB1O,QAAS,SAACtL,EAAGC,GAAC,OAAK4Z,EAAoBL,GAAgBxZ,GAAIwZ,GAAgBvZ,IAAI,EAAK,GAStF,OANA6E,EAAMjJ,QAAQhC,OAAO0C,KAAK1C,OAAOgH,OAAO,GAAI6Y,EAASC,KAAW,SAA4Blc,GAC1F,IAAM+B,EAAQya,EAASxc,IAASoc,EAC1Ba,EAAclb,EAAMka,EAAQjc,GAAOkc,EAAQlc,GAAOA,GACvDqH,EAAMjK,YAAY6f,IAAgBlb,IAAUwa,IAAqBtV,EAAOjH,GAAQid,EACnF,IAEOhW,CACT,CCzGO,IAAMiW,GAAU,QCKjBC,GAAa,CAAA,EAGnB,CAAC,SAAU,UAAW,SAAU,WAAY,SAAU,UAAU/e,SAAQ,SAACrB,EAAMuB,GAC7E6e,GAAWpgB,GAAQ,SAAmBN,GACpC,OAAOQ,EAAOR,KAAUM,GAAQ,KAAOuB,EAAI,EAAI,KAAO,KAAOvB,EAEjE,IAEA,IAAMqgB,GAAqB,CAAA,EAWjBC,GAAC5P,aAAe,SAAsB6P,EAAWC,EAASxW,GAClE,SAASyW,EAAcC,EAAKC,GAC1B,MAAO,uCAAoDD,EAAM,IAAOC,GAAQ3W,EAAU,KAAOA,EAAU,GAC7G,CAGA,OAAO,SAAC5D,EAAOsa,EAAKE,GAClB,IAAkB,IAAdL,EACF,MAAM,IAAIxW,EACR0W,EAAcC,EAAK,qBAAuBF,EAAU,OAASA,EAAU,KACvEzW,EAAW8W,gBAef,OAXIL,IAAYH,GAAmBK,KACjCL,GAAmBK,IAAO,EAE1BI,QAAQC,KACNN,EACEC,EACA,+BAAiCF,EAAU,8CAK1CD,GAAYA,EAAUna,EAAOsa,EAAKE,GAE7C,EAmCe,IAAAL,GAAA,CACbS,cAxBF,SAAuBhV,EAASiV,EAAQC,GACtC,GAAuB,WAAnBhhB,EAAO8L,GACT,MAAM,IAAIjC,EAAW,4BAA6BA,EAAWoX,sBAI/D,IAFA,IAAMpf,EAAO1C,OAAO0C,KAAKiK,GACrBzK,EAAIQ,EAAKL,OACNH,KAAM,GAAG,CACd,IAAMmf,EAAM3e,EAAKR,GACXgf,EAAYU,EAAOP,GACzB,GAAIH,EAAJ,CACE,IAAMna,EAAQ4F,EAAQ0U,GAChBtb,OAAmBzD,IAAVyE,GAAuBma,EAAUna,EAAOsa,EAAK1U,GAC5D,IAAe,IAAX5G,EACF,MAAM,IAAI2E,EAAW,UAAY2W,EAAM,YAActb,EAAQ2E,EAAWoX,qBAG5E,MACA,IAAqB,IAAjBD,EACF,MAAM,IAAInX,EAAW,kBAAoB2W,EAAK3W,EAAWqX,eAE7D,CACF,EAIEhB,WAAAA,IC9EIA,GAAaG,GAAUH,WASvBiB,GAAK,WACT,SAAAA,EAAYC,GAAgB/S,OAAA8S,GAC1Bnc,KAAKuL,SAAW6Q,EAChBpc,KAAKqc,aAAe,CAClBpX,QAAS,IAAImE,GACblE,SAAU,IAAIkE,GAElB,CAEA,MAAAkT,EA+JC,OA/JD/S,EAAA4S,EAAA,CAAA,CAAAvf,IAAA,UAAAsE,SAAAqb,IAAAC,MAQA,SAAAC,EAAcC,EAAa1X,GAAM,IAAA2X,EAAArY,EAAA,OAAAiY,IAAAK,MAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAA1a,MAAA,KAAA,EAAA,OAAA0a,EAAAC,KAAA,EAAAD,EAAA1a,KAAA,EAEhBnC,KAAK+c,SAASL,EAAa1X,GAAO,KAAA,EAAA,OAAA6X,EAAAG,OAAAH,SAAAA,EAAAI,MAAA,KAAA,EAgB9C,MAhB8CJ,EAAAC,KAAA,EAAAD,EAAAK,GAAAL,EAAA,MAAA,GAE3CA,EAAAK,cAAela,QAGjBA,MAAMmC,kBAAoBnC,MAAMmC,kBAAkBwX,EAAQ,CAAA,GAAOA,EAAQ,IAAI3Z,MAGvEsB,EAAQqY,EAAMrY,MAAQqY,EAAMrY,MAAM5D,QAAQ,QAAS,IAAM,GAE1Dmc,EAAAK,GAAI5Y,MAGEA,IAAUzC,OAAOgb,EAAAK,GAAI5Y,OAAO5C,SAAS4C,EAAM5D,QAAQ,YAAa,OACzEmc,EAAAK,GAAI5Y,OAAS,KAAOA,GAHpBuY,EAAAK,GAAI5Y,MAAQA,GAKfuY,EAAAK,GAAA,KAAA,GAAA,IAAA,MAAA,OAAAL,EAAAM,OAAA,GAAAV,EAAAzc,KAAA,CAAA,CAAA,EAAA,IAIJ,IA9BDsc,gLA8BC,SAAAc,EAAAC,GAAA,OAAAf,EAAAviB,MAAAiG,KAAAhG,UAAA,IAAA,CAAA4C,IAAA,WAAAsE,MAED,SAASwb,EAAa1X,GAGO,iBAAhB0X,GACT1X,EAASA,GAAU,IACZ2D,IAAM+T,EAEb1X,EAAS0X,GAAe,GAK1B,IAAAY,EAFAtY,EAAS+U,GAAY/Z,KAAKuL,SAAUvG,GAE7BwG,EAAY8R,EAAZ9R,aAAciM,EAAgB6F,EAAhB7F,iBAAkB7L,EAAO0R,EAAP1R,aAElBnP,IAAjB+O,GACF6P,GAAUS,cAActQ,EAAc,CACpCzB,kBAAmBmR,GAAW1P,aAAa0P,YAC3ClR,kBAAmBkR,GAAW1P,aAAa0P,YAC3CjR,oBAAqBiR,GAAW1P,aAAa0P,GAAkB,WAC9D,GAGmB,MAApBzD,IACErS,EAAM9J,WAAWmc,GACnBzS,EAAOyS,iBAAmB,CACxB1O,UAAW0O,GAGb4D,GAAUS,cAAcrE,EAAkB,CACxCtP,OAAQ+S,GAAmB,SAC3BnS,UAAWmS,GAAU,WACpB,IAKPlW,EAAO0I,QAAU1I,EAAO0I,QAAU1N,KAAKuL,SAASmC,QAAU,OAAO9S,cAGjE,IAAI2iB,EAAiB3R,GAAWxG,EAAMtF,MACpC8L,EAAQ4B,OACR5B,EAAQ5G,EAAO0I,SAGjB9B,GAAWxG,EAAMjJ,QACf,CAAC,SAAU,MAAO,OAAQ,OAAQ,MAAO,QAAS,WAClD,SAACuR,UACQ9B,EAAQ8B,EACjB,IAGF1I,EAAO4G,QAAUuC,GAAa7H,OAAOiX,EAAgB3R,GAGrD,IAAM4R,EAA0B,GAC5BC,GAAiC,EACrCzd,KAAKqc,aAAapX,QAAQ9I,SAAQ,SAAoCuhB,GACjC,mBAAxBA,EAAY/T,UAA0D,IAAhC+T,EAAY/T,QAAQ3E,KAIrEyY,EAAiCA,GAAkCC,EAAYhU,YAE/E8T,EAAwBG,QAAQD,EAAYlU,UAAWkU,EAAYjU,UACrE,IAEA,IAKImU,EALEC,EAA2B,GACjC7d,KAAKqc,aAAanX,SAAS/I,SAAQ,SAAkCuhB,GACnEG,EAAyBnb,KAAKgb,EAAYlU,UAAWkU,EAAYjU,SACnE,IAGA,IACI1M,EADAV,EAAI,EAGR,IAAKohB,EAAgC,CACnC,IAAMK,EAAQ,CAACjE,GAAgBjgB,KAAKoG,WAAOvD,GAO3C,IANAqhB,EAAMH,QAAQ5jB,MAAM+jB,EAAON,GAC3BM,EAAMpb,KAAK3I,MAAM+jB,EAAOD,GACxB9gB,EAAM+gB,EAAMthB,OAEZohB,EAAUhI,QAAQC,QAAQ7Q,GAEnB3I,EAAIU,GACT6gB,EAAUA,EAAQhZ,KAAKkZ,EAAMzhB,KAAMyhB,EAAMzhB,MAG3C,OAAOuhB,CACT,CAEA7gB,EAAMygB,EAAwBhhB,OAE9B,IAAIuhB,EAAY/Y,EAIhB,IAFA3I,EAAI,EAEGA,EAAIU,GAAK,CACd,IAAMihB,EAAcR,EAAwBnhB,KACtC4hB,EAAaT,EAAwBnhB,KAC3C,IACE0hB,EAAYC,EAAYD,EAI1B,CAHE,MAAOlY,GACPoY,EAAWvjB,KAAKsF,KAAM6F,GACtB,KACF,CACF,CAEA,IACE+X,EAAU/D,GAAgBnf,KAAKsF,KAAM+d,EAGvC,CAFE,MAAOlY,GACP,OAAO+P,QAAQE,OAAOjQ,EACxB,CAKA,IAHAxJ,EAAI,EACJU,EAAM8gB,EAAyBrhB,OAExBH,EAAIU,GACT6gB,EAAUA,EAAQhZ,KAAKiZ,EAAyBxhB,KAAMwhB,EAAyBxhB,MAGjF,OAAOuhB,CACT,GAAC,CAAAhhB,IAAA,SAAAsE,MAED,SAAO8D,GAGL,OAAO0D,GADU6J,IADjBvN,EAAS+U,GAAY/Z,KAAKuL,SAAUvG,IACEwN,QAASxN,EAAO2D,KAC5B3D,EAAOwD,OAAQxD,EAAOyS,iBAClD,KAAC0E,CAAA,CAxKQ,GA4KX/W,EAAMjJ,QAAQ,CAAC,SAAU,MAAO,OAAQ,YAAY,SAA6BuR,GAE/EyO,GAAM/hB,UAAUsT,GAAU,SAAS/E,EAAK3D,GACtC,OAAOhF,KAAKiF,QAAQ8U,GAAY/U,GAAU,CAAA,EAAI,CAC5C0I,OAAAA,EACA/E,IAAAA,EACAgD,MAAO3G,GAAU,CAAA,GAAI2G,QAG3B,IAEAvG,EAAMjJ,QAAQ,CAAC,OAAQ,MAAO,UAAU,SAA+BuR,GAGrE,SAASwQ,EAAmBC,GAC1B,OAAO,SAAoBxV,EAAKgD,EAAM3G,GACpC,OAAOhF,KAAKiF,QAAQ8U,GAAY/U,GAAU,CAAA,EAAI,CAC5C0I,OAAAA,EACA9B,QAASuS,EAAS,CAChB,eAAgB,uBACd,CAAE,EACNxV,IAAAA,EACAgD,KAAAA,KAGN,CAEAwQ,GAAM/hB,UAAUsT,GAAUwQ,IAE1B/B,GAAM/hB,UAAUsT,EAAS,QAAUwQ,GAAmB,EACxD,IAEA,IAAAE,GAAejC,GCxGfkC,GA7GiB,WACf,SAAAC,EAAYC,GACV,GADoBlV,OAAAiV,GACI,mBAAbC,EACT,MAAM,IAAIxX,UAAU,gCAGtB,IAAIyX,EAEJxe,KAAK4d,QAAU,IAAIhI,SAAQ,SAAyBC,GAClD2I,EAAiB3I,CACnB,IAEA,IAAMrP,EAAQxG,KAGdA,KAAK4d,QAAQhZ,MAAK,SAAAkU,GAChB,GAAKtS,EAAMiY,WAAX,CAIA,IAFA,IAAIpiB,EAAImK,EAAMiY,WAAWjiB,OAElBH,KAAM,GACXmK,EAAMiY,WAAWpiB,GAAGyc,GAEtBtS,EAAMiY,WAAa,IAPI,CAQzB,IAGAze,KAAK4d,QAAQhZ,KAAO,SAAA8Z,GAClB,IAAIC,EAEEf,EAAU,IAAIhI,SAAQ,SAAAC,GAC1BrP,EAAMwS,UAAUnD,GAChB8I,EAAW9I,CACb,IAAGjR,KAAK8Z,GAMR,OAJAd,EAAQ9E,OAAS,WACftS,EAAM4P,YAAYuI,IAGbf,GAGTW,GAAS,SAAgBzZ,EAASE,EAAQC,GACpCuB,EAAM4S,SAKV5S,EAAM4S,OAAS,IAAI3H,GAAc3M,EAASE,EAAQC,GAClDuZ,EAAehY,EAAM4S,QACvB,GACF,CAuDC,OArDD7P,EAAA+U,EAAA,CAAA,CAAA1hB,IAAA,mBAAAsE,MAGA,WACE,GAAIlB,KAAKoZ,OACP,MAAMpZ,KAAKoZ,MAEf,GAEA,CAAAxc,IAAA,YAAAsE,MAIA,SAAU6S,GACJ/T,KAAKoZ,OACPrF,EAAS/T,KAAKoZ,QAIZpZ,KAAKye,WACPze,KAAKye,WAAW/b,KAAKqR,GAErB/T,KAAKye,WAAa,CAAC1K,EAEvB,GAEA,CAAAnX,IAAA,cAAAsE,MAIA,SAAY6S,GACV,GAAK/T,KAAKye,WAAV,CAGA,IAAM1W,EAAQ/H,KAAKye,WAAW1c,QAAQgS,IACvB,IAAXhM,GACF/H,KAAKye,WAAWG,OAAO7W,EAAO,EAHhC,CAKF,IAEA,CAAA,CAAAnL,IAAA,SAAAsE,MAIA,WACE,IAAI4X,EAIJ,MAAO,CACLtS,MAJY,IAAI8X,GAAY,SAAkBO,GAC9C/F,EAAS+F,CACX,IAGE/F,OAAAA,EAEJ,KAACwF,CAAA,CA1Gc,GCXjB,IAAMQ,GAAiB,CACrBC,SAAU,IACVC,mBAAoB,IACpBC,WAAY,IACZC,WAAY,IACZC,GAAI,IACJC,QAAS,IACTC,SAAU,IACVC,4BAA6B,IAC7BC,UAAW,IACXC,aAAc,IACdC,eAAgB,IAChBC,YAAa,IACbC,gBAAiB,IACjBC,OAAQ,IACRC,gBAAiB,IACjBC,iBAAkB,IAClBC,MAAO,IACPC,SAAU,IACVC,YAAa,IACbC,SAAU,IACVC,OAAQ,IACRC,kBAAmB,IACnBC,kBAAmB,IACnBC,WAAY,IACZC,aAAc,IACdC,gBAAiB,IACjBC,UAAW,IACXC,SAAU,IACVC,iBAAkB,IAClBC,cAAe,IACfC,4BAA6B,IAC7BC,eAAgB,IAChBC,SAAU,IACVC,KAAM,IACNC,eAAgB,IAChBC,mBAAoB,IACpBC,gBAAiB,IACjBC,WAAY,IACZC,qBAAsB,IACtBC,oBAAqB,IACrBC,kBAAmB,IACnBC,UAAW,IACXC,mBAAoB,IACpBC,oBAAqB,IACrBC,OAAQ,IACRC,iBAAkB,IAClBC,SAAU,IACVC,gBAAiB,IACjBC,qBAAsB,IACtBC,gBAAiB,IACjBC,4BAA6B,IAC7BC,2BAA4B,IAC5BC,oBAAqB,IACrBC,eAAgB,IAChBC,WAAY,IACZC,mBAAoB,IACpBC,eAAgB,IAChBC,wBAAyB,IACzBC,sBAAuB,IACvBC,oBAAqB,IACrBC,aAAc,IACdC,YAAa,IACbC,8BAA+B,KAGjC1oB,OAAOkR,QAAQyT,IAAgB3iB,SAAQ,SAAAI,GAAkB,IAAAwD,EAAAkQ,EAAA1T,EAAA,GAAhBK,EAAGmD,EAAA,GAAEmB,EAAKnB,EAAA,GACjD+e,GAAe5d,GAAStE,CAC1B,IAEA,IAAAkmB,GAAehE,GCxBf,IAAMiE,GAnBN,SAASC,EAAeC,GACtB,IAAMzlB,EAAU,IAAI2e,GAAM8G,GACpBC,EAAWtpB,EAAKuiB,GAAM/hB,UAAU6K,QAASzH,GAa/C,OAVA4H,EAAM/E,OAAO6iB,EAAU/G,GAAM/hB,UAAWoD,EAAS,CAACb,YAAY,IAG9DyI,EAAM/E,OAAO6iB,EAAU1lB,EAAS,KAAM,CAACb,YAAY,IAGnDumB,EAAS3oB,OAAS,SAAgB6hB,GAChC,OAAO4G,EAAejJ,GAAYkJ,EAAe7G,KAG5C8G,CACT,CAGcF,CAAezX,WAG7BwX,GAAM5G,MAAQA,GAGd4G,GAAMtR,cAAgBA,GACtBsR,GAAMzE,YAAcA,GACpByE,GAAMxR,SAAWA,GACjBwR,GAAM9H,QAAUA,GAChB8H,GAAMnc,WAAaA,GAGnBmc,GAAMle,WAAaA,EAGnBke,GAAMI,OAASJ,GAAMtR,cAGrBsR,GAAMK,IAAM,SAAaC,GACvB,OAAOzN,QAAQwN,IAAIC,EACrB,EAEAN,GAAMO,OC9CS,SAAgBC,GAC7B,OAAO,SAActhB,GACnB,OAAOshB,EAASxpB,MAAM,KAAMkI,GAEhC,ED6CA8gB,GAAMS,aE7DS,SAAsBC,GACnC,OAAOre,EAAM5J,SAASioB,KAAsC,IAAzBA,EAAQD,YAC7C,EF8DAT,GAAMhJ,YAAcA,GAEpBgJ,GAAM5U,aAAeA,GAErB4U,GAAMW,WAAa,SAAAlpB,GAAK,OAAIwQ,GAAe5F,EAAMxH,WAAWpD,GAAS,IAAI6E,SAAS7E,GAASA,EAAM,EAEjGuoB,GAAMY,WAAarK,GAEnByJ,GAAMjE,eAAiBA,GAEvBiE,GAAK,QAAWA"} \ No newline at end of file diff --git a/node_modules/axios/dist/browser/axios.cjs b/node_modules/axios/dist/browser/axios.cjs new file mode 100644 index 0000000..65d1313 --- /dev/null +++ b/node_modules/axios/dist/browser/axios.cjs @@ -0,0 +1,3258 @@ +// Axios v1.6.8 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 } : 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.8"; + +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 new file mode 100644 index 0000000..0f335dc --- /dev/null +++ b/node_modules/axios/dist/browser/axios.cjs.map @@ -0,0 +1 @@ +{"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 } : 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.8\";","'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 new file mode 100644 index 0000000..8c71127 --- /dev/null +++ b/node_modules/axios/dist/esm/axios.js @@ -0,0 +1,3281 @@ +// Axios v1.6.8 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 } : 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.8"; + +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 new file mode 100644 index 0000000..764b10e --- /dev/null +++ b/node_modules/axios/dist/esm/axios.js.map @@ -0,0 +1 @@ +{"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 } : 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.8\";","'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 new file mode 100644 index 0000000..7b428c3 --- /dev/null +++ b/node_modules/axios/dist/esm/axios.min.js @@ -0,0 +1,2 @@ +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}: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.8] 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.8",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 new file mode 100644 index 0000000..94ea4b2 --- /dev/null +++ b/node_modules/axios/dist/esm/axios.min.js.map @@ -0,0 +1 @@ +{"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 } : 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.8\";","'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 new file mode 100644 index 0000000..f6fedeb --- /dev/null +++ b/node_modules/axios/dist/node/axios.cjs @@ -0,0 +1,4354 @@ +// Axios v1.6.8 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 events = 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); + +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.8"; + +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 events.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$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 } : 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 new file mode 100644 index 0000000..8fa9bd1 --- /dev/null +++ b/node_modules/axios/dist/node/axios.cjs.map @@ -0,0 +1 @@ +{"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.8\";","'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 } : 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":"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"} \ No newline at end of file diff --git a/node_modules/axios/index.d.cts b/node_modules/axios/index.d.cts new file mode 100644 index 0000000..d95e6ef --- /dev/null +++ b/node_modules/axios/index.d.cts @@ -0,0 +1,542 @@ +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 new file mode 100644 index 0000000..02a8c09 --- /dev/null +++ b/node_modules/axios/index.d.ts @@ -0,0 +1,559 @@ +// 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 AxiosAdapter { + (config: InternalAxiosRequestConfig): AxiosPromise; +} + +export interface AxiosBasicCredentials { + username: string; + password: string; +} + +export interface AxiosProxyConfig { + host: string; + port: number; + auth?: AxiosBasicCredentials; + 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'; + +export type ResponseType = + | '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 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 { + 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 +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 { + data: T; + status: number; + statusText: string; + headers: RawAxiosResponseHeaders | AxiosResponseHeaders; + config: InternalAxiosRequestConfig; + request?: any; +} + +export class AxiosError extends Error { + constructor( + message?: string, + code?: string, + config?: InternalAxiosRequestConfig, + request?: any, + response?: AxiosResponse + ); + + config?: InternalAxiosRequestConfig; + code?: string; + request?: any; + 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 type AxiosPromise = Promise>; + +export interface CancelStatic { + new (message?: string): Cancel; +} + +export interface Cancel { + message: string | undefined; +} + +export interface Canceler { + (message?: string, config?: AxiosRequestConfig, request?: any): void; +} + +export interface CancelTokenStatic { + new (executor: (cancel: Canceler) => void): CancelToken; + source(): CancelTokenSource; +} + +export interface CancelToken { + promise: Promise; + reason?: Cancel; + throwIfRequested(): void; +} + +export interface CancelTokenSource { + token: CancelToken; + 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; + eject(id: number): void; + clear(): void; +} + +export class Axios { + constructor(config?: AxiosRequestConfig); + defaults: AxiosDefaults; + interceptors: { + 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; +} + +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; + 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; +} + +declare const axios: AxiosStatic; + +export default axios; diff --git a/node_modules/axios/index.js b/node_modules/axios/index.js new file mode 100644 index 0000000..fba3990 --- /dev/null +++ b/node_modules/axios/index.js @@ -0,0 +1,43 @@ +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 +} diff --git a/node_modules/axios/lib/adapters/README.md b/node_modules/axios/lib/adapters/README.md new file mode 100644 index 0000000..68f1118 --- /dev/null +++ b/node_modules/axios/lib/adapters/README.md @@ -0,0 +1,37 @@ +# axios // adapters + +The modules under `adapters/` are modules that handle dispatching a request and settling a returned `Promise` once a response is received. + +## Example + +```js +var settle = require('./../core/settle'); + +module.exports = function myAdapter(config) { + // At this point: + // - config has been merged with defaults + // - request transformers have already run + // - request interceptors have already run + + // Make the request using config provided + // Upon response settle the Promise + + return new Promise(function(resolve, reject) { + + var response = { + data: responseData, + status: request.status, + statusText: request.statusText, + headers: responseHeaders, + config: config, + request: request + }; + + settle(resolve, reject, response); + + // From here: + // - response transformers will run + // - response interceptors will run + }); +} +``` diff --git a/node_modules/axios/lib/adapters/adapters.js b/node_modules/axios/lib/adapters/adapters.js new file mode 100644 index 0000000..550997d --- /dev/null +++ b/node_modules/axios/lib/adapters/adapters.js @@ -0,0 +1,77 @@ +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 new file mode 100644 index 0000000..768e4a5 --- /dev/null +++ b/node_modules/axios/lib/adapters/http.js @@ -0,0 +1,685 @@ +'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"; + +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 + ':'; +}); + +/** + * 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 = 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.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(); + + // 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) { + } + } + } 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)) { + if (Buffer.isBuffer(data)) { + // Nothing to do... + } else if (utils.isArrayBuffer(data)) { + data = Buffer.from(new Uint8Array(data)); + } else if (utils.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.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 + })); + }); + } + + // 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.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 : http; + } 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({ + 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; + + // 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.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)); + + // 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 = { + status: res.statusCode, + statusText: res.statusMessage, + headers: new AxiosHeaders(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.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.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); + } + }); +} + +export const __setProxy = setProxy; diff --git a/node_modules/axios/lib/adapters/xhr.js b/node_modules/axios/lib/adapters/xhr.js new file mode 100644 index 0000000..26126b2 --- /dev/null +++ b/node_modules/axios/lib/adapters/xhr.js @@ -0,0 +1,260 @@ +'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'; + +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) { + 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; + + 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('; ')); + } + } + + 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.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.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.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) { + request.setRequestHeader(key, val); + }); + } + + // Add withCredentials to request if needed + if (!utils.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); + }); +} diff --git a/node_modules/axios/lib/axios.js b/node_modules/axios/lib/axios.js new file mode 100644 index 0000000..873f246 --- /dev/null +++ b/node_modules/axios/lib/axios.js @@ -0,0 +1,89 @@ +'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'; + +/** + * 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(defaultConfig); + const instance = bind(Axios.prototype.request, context); + + // Copy axios.prototype to instance + utils.extend(instance, Axios.prototype, context, {allOwnKeys: true}); + + // 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)); + }; + + return instance; +} + +// Create the default instance to be exported +const axios = createInstance(defaults); + +// Expose Axios class to allow class inheritance +axios.Axios = Axios; + +// 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; + +// 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; + +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 diff --git a/node_modules/axios/lib/cancel/CancelToken.js b/node_modules/axios/lib/cancel/CancelToken.js new file mode 100644 index 0000000..20d8f68 --- /dev/null +++ b/node_modules/axios/lib/cancel/CancelToken.js @@ -0,0 +1,121 @@ +'use strict'; + +import CanceledError from './CanceledError.js'; + +/** + * 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 + }; + } +} + +export default CancelToken; diff --git a/node_modules/axios/lib/cancel/CanceledError.js b/node_modules/axios/lib/cancel/CanceledError.js new file mode 100644 index 0000000..880066e --- /dev/null +++ b/node_modules/axios/lib/cancel/CanceledError.js @@ -0,0 +1,25 @@ +'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 new file mode 100644 index 0000000..a444a12 --- /dev/null +++ b/node_modules/axios/lib/cancel/isCancel.js @@ -0,0 +1,5 @@ +'use strict'; + +export default 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 new file mode 100644 index 0000000..2713364 --- /dev/null +++ b/node_modules/axios/lib/core/Axios.js @@ -0,0 +1,225 @@ +'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; + +/** + * 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() + }; + } + + /** + * 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.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.merge( + headers.common, + headers[config.method] + ); + + 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++]); + } + + 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.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.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); +}); + +export default Axios; diff --git a/node_modules/axios/lib/core/AxiosError.js b/node_modules/axios/lib/core/AxiosError.js new file mode 100644 index 0000000..7141a8c --- /dev/null +++ b/node_modules/axios/lib/core/AxiosError.js @@ -0,0 +1,100 @@ +'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 new file mode 100644 index 0000000..558ad8f --- /dev/null +++ b/node_modules/axios/lib/core/AxiosHeaders.js @@ -0,0 +1,298 @@ +'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 new file mode 100644 index 0000000..6657a9d --- /dev/null +++ b/node_modules/axios/lib/core/InterceptorManager.js @@ -0,0 +1,71 @@ +'use strict'; + +import utils from './../utils.js'; + +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); + } + }); + } +} + +export default InterceptorManager; diff --git a/node_modules/axios/lib/core/README.md b/node_modules/axios/lib/core/README.md new file mode 100644 index 0000000..84559ce --- /dev/null +++ b/node_modules/axios/lib/core/README.md @@ -0,0 +1,8 @@ +# axios // core + +The modules found in `core/` should be modules that are specific to the domain logic of axios. These modules would most likely not make sense to be consumed outside of the axios module, as their logic is too specific. Some examples of core modules are: + +- Dispatching requests + - Requests sent via `adapters/` (see lib/adapters/README.md) +- Managing interceptors +- Handling config diff --git a/node_modules/axios/lib/core/buildFullPath.js b/node_modules/axios/lib/core/buildFullPath.js new file mode 100644 index 0000000..b60927c --- /dev/null +++ b/node_modules/axios/lib/core/buildFullPath.js @@ -0,0 +1,21 @@ +'use strict'; + +import isAbsoluteURL from '../helpers/isAbsoluteURL.js'; +import combineURLs from '../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 + */ +export default 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 new file mode 100644 index 0000000..9e306aa --- /dev/null +++ b/node_modules/axios/lib/core/dispatchRequest.js @@ -0,0 +1,81 @@ +'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"; + +/** + * 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 + */ +export default function dispatchRequest(config) { + throwIfCancellationRequested(config); + + config.headers = AxiosHeaders.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.adapter); + + return adapter(config).then(function onAdapterResolution(response) { + throwIfCancellationRequested(config); + + // Transform response data + response.data = transformData.call( + config, + config.transformResponse, + response + ); + + response.headers = AxiosHeaders.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.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 new file mode 100644 index 0000000..e4600e5 --- /dev/null +++ b/node_modules/axios/lib/core/mergeConfig.js @@ -0,0 +1,106 @@ +'use strict'; + +import utils from '../utils.js'; +import AxiosHeaders from "./AxiosHeaders.js"; + +const headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : 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 + */ +export default function mergeConfig(config1, config2) { + // eslint-disable-next-line no-param-reassign + config2 = config2 || {}; + const config = {}; + + function getMergedValue(target, source, caseless) { + if (utils.isPlainObject(target) && utils.isPlainObject(source)) { + return utils.merge.call({caseless}, target, source); + } else if (utils.isPlainObject(source)) { + return utils.merge({}, source); + } else if (utils.isArray(source)) { + return source.slice(); + } + 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); + } + } + + // eslint-disable-next-line consistent-return + function valueFromConfig2(a, b) { + if (!utils.isUndefined(b)) { + return getMergedValue(undefined, b); + } + } + + // 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); + }); + + return config; +} diff --git a/node_modules/axios/lib/core/settle.js b/node_modules/axios/lib/core/settle.js new file mode 100644 index 0000000..ac905c4 --- /dev/null +++ b/node_modules/axios/lib/core/settle.js @@ -0,0 +1,27 @@ +'use strict'; + +import AxiosError from './AxiosError.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. + * + * @returns {object} The response. + */ +export default 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 + )); + } +} diff --git a/node_modules/axios/lib/core/transformData.js b/node_modules/axios/lib/core/transformData.js new file mode 100644 index 0000000..eeb5a8a --- /dev/null +++ b/node_modules/axios/lib/core/transformData.js @@ -0,0 +1,28 @@ +'use strict'; + +import utils from './../utils.js'; +import defaults from '../defaults/index.js'; +import AxiosHeaders from '../core/AxiosHeaders.js'; + +/** + * 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 + */ +export default function transformData(fns, response) { + const config = this || defaults; + const context = response || config; + const headers = AxiosHeaders.from(context.headers); + let data = context.data; + + utils.forEach(fns, function transform(fn) { + data = fn.call(config, data, headers.normalize(), response ? response.status : undefined); + }); + + headers.normalize(); + + return data; +} diff --git a/node_modules/axios/lib/defaults/index.js b/node_modules/axios/lib/defaults/index.js new file mode 100644 index 0000000..774893a --- /dev/null +++ b/node_modules/axios/lib/defaults/index.js @@ -0,0 +1,156 @@ +'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 new file mode 100644 index 0000000..f891331 --- /dev/null +++ b/node_modules/axios/lib/defaults/transitional.js @@ -0,0 +1,7 @@ +'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 new file mode 100644 index 0000000..b41baff --- /dev/null +++ b/node_modules/axios/lib/env/README.md @@ -0,0 +1,3 @@ +# 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 new file mode 100644 index 0000000..862adb9 --- /dev/null +++ b/node_modules/axios/lib/env/classes/FormData.js @@ -0,0 +1,2 @@ +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 new file mode 100644 index 0000000..d4cb5d5 --- /dev/null +++ b/node_modules/axios/lib/env/data.js @@ -0,0 +1 @@ +export const VERSION = "1.6.8"; \ No newline at end of file diff --git a/node_modules/axios/lib/helpers/AxiosTransformStream.js b/node_modules/axios/lib/helpers/AxiosTransformStream.js new file mode 100644 index 0000000..8e8c6d4 --- /dev/null +++ b/node_modules/axios/lib/helpers/AxiosTransformStream.js @@ -0,0 +1,191 @@ +'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 new file mode 100644 index 0000000..b9aa9f0 --- /dev/null +++ b/node_modules/axios/lib/helpers/AxiosURLSearchParams.js @@ -0,0 +1,58 @@ +'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 new file mode 100644 index 0000000..b3e7adc --- /dev/null +++ b/node_modules/axios/lib/helpers/HttpStatusCode.js @@ -0,0 +1,71 @@ +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/README.md b/node_modules/axios/lib/helpers/README.md new file mode 100644 index 0000000..4ae3419 --- /dev/null +++ b/node_modules/axios/lib/helpers/README.md @@ -0,0 +1,7 @@ +# axios // helpers + +The modules found in `helpers/` should be generic modules that are _not_ specific to the domain logic of axios. These modules could theoretically be published to npm on their own and consumed by other modules or apps. Some examples of generic modules are things like: + +- Browser polyfills +- Managing cookies +- Parsing HTTP headers diff --git a/node_modules/axios/lib/helpers/ZlibHeaderTransformStream.js b/node_modules/axios/lib/helpers/ZlibHeaderTransformStream.js new file mode 100644 index 0000000..d1791f0 --- /dev/null +++ b/node_modules/axios/lib/helpers/ZlibHeaderTransformStream.js @@ -0,0 +1,28 @@ +"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 new file mode 100644 index 0000000..b3aa83b --- /dev/null +++ b/node_modules/axios/lib/helpers/bind.js @@ -0,0 +1,7 @@ +'use strict'; + +export default function bind(fn, thisArg) { + return function wrap() { + return fn.apply(thisArg, arguments); + }; +} diff --git a/node_modules/axios/lib/helpers/buildURL.js b/node_modules/axios/lib/helpers/buildURL.js new file mode 100644 index 0000000..d769fdf --- /dev/null +++ b/node_modules/axios/lib/helpers/buildURL.js @@ -0,0 +1,63 @@ +'use strict'; + +import utils from '../utils.js'; +import AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js'; + +/** + * 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 + */ +export default 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.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; +} diff --git a/node_modules/axios/lib/helpers/callbackify.js b/node_modules/axios/lib/helpers/callbackify.js new file mode 100644 index 0000000..4603bad --- /dev/null +++ b/node_modules/axios/lib/helpers/callbackify.js @@ -0,0 +1,16 @@ +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 new file mode 100644 index 0000000..9f04f02 --- /dev/null +++ b/node_modules/axios/lib/helpers/combineURLs.js @@ -0,0 +1,15 @@ +'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 + */ +export default function combineURLs(baseURL, relativeURL) { + return relativeURL + ? baseURL.replace(/\/?\/$/, '') + '/' + relativeURL.replace(/^\/+/, '') + : baseURL; +} diff --git a/node_modules/axios/lib/helpers/cookies.js b/node_modules/axios/lib/helpers/cookies.js new file mode 100644 index 0000000..d039ac4 --- /dev/null +++ b/node_modules/axios/lib/helpers/cookies.js @@ -0,0 +1,42 @@ +import utils from './../utils.js'; +import platform from '../platform/index.js'; + +export default platform.hasStandardBrowserEnv ? + + // Standard browser envs support document.cookie + { + write(name, value, expires, path, domain, secure) { + const cookie = [name + '=' + encodeURIComponent(value)]; + + utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString()); + + utils.isString(path) && cookie.push('path=' + path); + + utils.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() {} + }; + diff --git a/node_modules/axios/lib/helpers/deprecatedMethod.js b/node_modules/axios/lib/helpers/deprecatedMethod.js new file mode 100644 index 0000000..9e8fae6 --- /dev/null +++ b/node_modules/axios/lib/helpers/deprecatedMethod.js @@ -0,0 +1,26 @@ +'use strict'; + +/*eslint no-console:0*/ + +/** + * Supply a warning to the developer that a method they are using + * has been deprecated. + * + * @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) { + try { + console.warn( + 'DEPRECATED method `' + method + '`.' + + (instead ? ' Use `' + instead + '` instead.' : '') + + ' This method will be removed in a future release.'); + + if (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 new file mode 100644 index 0000000..906ce60 --- /dev/null +++ b/node_modules/axios/lib/helpers/formDataToJSON.js @@ -0,0 +1,95 @@ +'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 new file mode 100644 index 0000000..9187e73 --- /dev/null +++ b/node_modules/axios/lib/helpers/formDataToStream.js @@ -0,0 +1,111 @@ +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 new file mode 100644 index 0000000..eb71d3f --- /dev/null +++ b/node_modules/axios/lib/helpers/fromDataURI.js @@ -0,0 +1,53 @@ +'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 new file mode 100644 index 0000000..4747a45 --- /dev/null +++ b/node_modules/axios/lib/helpers/isAbsoluteURL.js @@ -0,0 +1,15 @@ +'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 + */ +export default 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); +} diff --git a/node_modules/axios/lib/helpers/isAxiosError.js b/node_modules/axios/lib/helpers/isAxiosError.js new file mode 100644 index 0000000..da6cd63 --- /dev/null +++ b/node_modules/axios/lib/helpers/isAxiosError.js @@ -0,0 +1,14 @@ +'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); +} diff --git a/node_modules/axios/lib/helpers/isURLSameOrigin.js b/node_modules/axios/lib/helpers/isURLSameOrigin.js new file mode 100644 index 0000000..a8678a4 --- /dev/null +++ b/node_modules/axios/lib/helpers/isURLSameOrigin.js @@ -0,0 +1,67 @@ +'use strict'; + +import utils from './../utils.js'; +import platform from '../platform/index.js'; + +export default 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.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; + }; + })(); diff --git a/node_modules/axios/lib/helpers/null.js b/node_modules/axios/lib/helpers/null.js new file mode 100644 index 0000000..b9f82c4 --- /dev/null +++ b/node_modules/axios/lib/helpers/null.js @@ -0,0 +1,2 @@ +// 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 new file mode 100644 index 0000000..50af948 --- /dev/null +++ b/node_modules/axios/lib/helpers/parseHeaders.js @@ -0,0 +1,55 @@ +'use strict'; + +import utils from './../utils.js'; + +// RawAxiosHeaders whose duplicates are ignored by node +// c.f. https://nodejs.org/api/http.html#http_message_headers +const ignoreDuplicateOf = utils.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 + */ +export default 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; +}; diff --git a/node_modules/axios/lib/helpers/parseProtocol.js b/node_modules/axios/lib/helpers/parseProtocol.js new file mode 100644 index 0000000..586ec96 --- /dev/null +++ b/node_modules/axios/lib/helpers/parseProtocol.js @@ -0,0 +1,6 @@ +'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 new file mode 100644 index 0000000..6de748e --- /dev/null +++ b/node_modules/axios/lib/helpers/readBlob.js @@ -0,0 +1,15 @@ +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 new file mode 100644 index 0000000..3b3c666 --- /dev/null +++ b/node_modules/axios/lib/helpers/speedometer.js @@ -0,0 +1,55 @@ +'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 new file mode 100644 index 0000000..13479cb --- /dev/null +++ b/node_modules/axios/lib/helpers/spread.js @@ -0,0 +1,28 @@ +'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} + */ +export default 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 new file mode 100644 index 0000000..6969df1 --- /dev/null +++ b/node_modules/axios/lib/helpers/throttle.js @@ -0,0 +1,33 @@ +'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 new file mode 100644 index 0000000..a41e966 --- /dev/null +++ b/node_modules/axios/lib/helpers/toFormData.js @@ -0,0 +1,219 @@ +'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 new file mode 100644 index 0000000..988a38a --- /dev/null +++ b/node_modules/axios/lib/helpers/toURLEncodedForm.js @@ -0,0 +1,18 @@ +'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 new file mode 100644 index 0000000..14b4696 --- /dev/null +++ b/node_modules/axios/lib/helpers/validator.js @@ -0,0 +1,91 @@ +'use strict'; + +import {VERSION} from '../env/data.js'; +import AxiosError from '../core/AxiosError.js'; + +const validators = {}; + +// eslint-disable-next-line func-names +['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => { + validators[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.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); + } + } +} + +export default { + assertOptions, + validators +}; diff --git a/node_modules/axios/lib/platform/browser/classes/Blob.js b/node_modules/axios/lib/platform/browser/classes/Blob.js new file mode 100644 index 0000000..6c506c4 --- /dev/null +++ b/node_modules/axios/lib/platform/browser/classes/Blob.js @@ -0,0 +1,3 @@ +'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 new file mode 100644 index 0000000..f36d31b --- /dev/null +++ b/node_modules/axios/lib/platform/browser/classes/FormData.js @@ -0,0 +1,3 @@ +'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 new file mode 100644 index 0000000..b7dae95 --- /dev/null +++ b/node_modules/axios/lib/platform/browser/classes/URLSearchParams.js @@ -0,0 +1,4 @@ +'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 new file mode 100644 index 0000000..08c206f --- /dev/null +++ b/node_modules/axios/lib/platform/browser/index.js @@ -0,0 +1,13 @@ +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 new file mode 100644 index 0000000..56fe79a --- /dev/null +++ b/node_modules/axios/lib/platform/common/utils.js @@ -0,0 +1,47 @@ +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 new file mode 100644 index 0000000..860ba21 --- /dev/null +++ b/node_modules/axios/lib/platform/index.js @@ -0,0 +1,7 @@ +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 new file mode 100644 index 0000000..b07f947 --- /dev/null +++ b/node_modules/axios/lib/platform/node/classes/FormData.js @@ -0,0 +1,3 @@ +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 new file mode 100644 index 0000000..fba5842 --- /dev/null +++ b/node_modules/axios/lib/platform/node/classes/URLSearchParams.js @@ -0,0 +1,4 @@ +'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 new file mode 100644 index 0000000..aef514a --- /dev/null +++ b/node_modules/axios/lib/platform/node/index.js @@ -0,0 +1,12 @@ +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 new file mode 100644 index 0000000..a386b77 --- /dev/null +++ b/node_modules/axios/lib/utils.js @@ -0,0 +1,723 @@ +'use strict'; + +import bind from './helpers/bind.js'; + +// 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); + +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 +}; diff --git a/node_modules/axios/package.json b/node_modules/axios/package.json new file mode 100644 index 0000000..5b3f7fb --- /dev/null +++ b/node_modules/axios/package.json @@ -0,0 +1,218 @@ +{ + "name": "axios", + "version": "1.6.8", + "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", + "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", + "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" + }, + "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": { + "@babel/core": "^7.23.9", + "@babel/preset-env": "^7.23.9", + "@commitlint/cli": "^17.8.1", + "@commitlint/config-conventional": "^17.8.1", + "@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.1.0", + "@rollup/plugin-node-resolve": "^9.0.0", + "abortcontroller-polyfill": "^1.7.5", + "auto-changelog": "^2.4.0", + "body-parser": "^1.20.2", + "chalk": "^5.3.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.56.0", + "express": "^4.18.2", + "formdata-node": "^5.0.1", + "formidable": "^2.1.2", + "fs-extra": "^10.1.0", + "get-stream": "^3.0.0", + "gulp": "^4.0.2", + "gzip-size": "^7.0.0", + "handlebars": "^4.7.8", + "husky": "^8.0.3", + "istanbul-instrumenter-loader": "^3.0.1", + "jasmine-core": "^2.99.1", + "karma": "^6.3.17", + "karma-chrome-launcher": "^3.2.0", + "karma-firefox-launcher": "^2.1.2", + "karma-jasmine": "^1.1.2", + "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.8", + "mocha": "^10.3.0", + "multer": "^1.4.4", + "pretty-bytes": "^6.1.1", + "release-it": "^15.11.0", + "rollup": "^2.79.1", + "rollup-plugin-auto-external": "^2.0.0", + "rollup-plugin-bundle-size": "^1.0.3", + "rollup-plugin-terser": "^7.0.2", + "sinon": "^4.5.0", + "stream-throttle": "^0.1.3", + "string-replace-async": "^3.0.2", + "terser-webpack-plugin": "^4.2.3", + "typescript": "^4.9.5" + }, + "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" + }, + "jsdelivr": "dist/axios.min.js", + "unpkg": "dist/axios.min.js", + "typings": "./index.d.ts", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.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/balanced-match/.github/FUNDING.yml b/node_modules/balanced-match/.github/FUNDING.yml new file mode 100644 index 0000000..cea8b16 --- /dev/null +++ b/node_modules/balanced-match/.github/FUNDING.yml @@ -0,0 +1,2 @@ +tidelift: "npm/balanced-match" +patreon: juliangruber diff --git a/node_modules/balanced-match/LICENSE.md b/node_modules/balanced-match/LICENSE.md new file mode 100644 index 0000000..2cdc8e4 --- /dev/null +++ b/node_modules/balanced-match/LICENSE.md @@ -0,0 +1,21 @@ +(MIT) + +Copyright (c) 2013 Julian Gruber <julian@juliangruber.com> + +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/balanced-match/README.md b/node_modules/balanced-match/README.md new file mode 100644 index 0000000..d2a48b6 --- /dev/null +++ b/node_modules/balanced-match/README.md @@ -0,0 +1,97 @@ +# balanced-match + +Match balanced string pairs, like `{` and `}` or `` and ``. Supports regular expressions as well! + +[![build status](https://secure.travis-ci.org/juliangruber/balanced-match.svg)](http://travis-ci.org/juliangruber/balanced-match) +[![downloads](https://img.shields.io/npm/dm/balanced-match.svg)](https://www.npmjs.org/package/balanced-match) + +[![testling badge](https://ci.testling.com/juliangruber/balanced-match.png)](https://ci.testling.com/juliangruber/balanced-match) + +## Example + +Get the first matching pair of braces: + +```js +var balanced = require('balanced-match'); + +console.log(balanced('{', '}', 'pre{in{nested}}post')); +console.log(balanced('{', '}', 'pre{first}between{second}post')); +console.log(balanced(/\s+\{\s+/, /\s+\}\s+/, 'pre { in{nest} } post')); +``` + +The matches are: + +```bash +$ node example.js +{ start: 3, end: 14, pre: 'pre', body: 'in{nested}', post: 'post' } +{ start: 3, + end: 9, + pre: 'pre', + body: 'first', + post: 'between{second}post' } +{ start: 3, end: 17, pre: 'pre', body: 'in{nest}', post: 'post' } +``` + +## API + +### var m = balanced(a, b, str) + +For the first non-nested matching pair of `a` and `b` in `str`, return an +object with those keys: + +* **start** the index of the first match of `a` +* **end** the index of the matching `b` +* **pre** the preamble, `a` and `b` not included +* **body** the match, `a` and `b` not included +* **post** the postscript, `a` and `b` not included + +If there's no match, `undefined` will be returned. + +If the `str` contains more `a` than `b` / there are unmatched pairs, the first match that was closed will be used. For example, `{{a}` will match `['{', 'a', '']` and `{a}}` will match `['', 'a', '}']`. + +### var r = balanced.range(a, b, str) + +For the first non-nested matching pair of `a` and `b` in `str`, return an +array with indexes: `[ , ]`. + +If there's no match, `undefined` will be returned. + +If the `str` contains more `a` than `b` / there are unmatched pairs, the first match that was closed will be used. For example, `{{a}` will match `[ 1, 3 ]` and `{a}}` will match `[0, 2]`. + +## Installation + +With [npm](https://npmjs.org) do: + +```bash +npm install balanced-match +``` + +## Security contact information + +To report a security vulnerability, please use the +[Tidelift security contact](https://tidelift.com/security). +Tidelift will coordinate the fix and disclosure. + +## License + +(MIT) + +Copyright (c) 2013 Julian Gruber <julian@juliangruber.com> + +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/balanced-match/index.js b/node_modules/balanced-match/index.js new file mode 100644 index 0000000..c67a646 --- /dev/null +++ b/node_modules/balanced-match/index.js @@ -0,0 +1,62 @@ +'use strict'; +module.exports = balanced; +function balanced(a, b, str) { + if (a instanceof RegExp) a = maybeMatch(a, str); + if (b instanceof RegExp) b = maybeMatch(b, str); + + var r = range(a, b, str); + + return r && { + start: r[0], + end: r[1], + pre: str.slice(0, r[0]), + body: str.slice(r[0] + a.length, r[1]), + post: str.slice(r[1] + b.length) + }; +} + +function maybeMatch(reg, str) { + var m = str.match(reg); + return m ? m[0] : null; +} + +balanced.range = range; +function range(a, b, str) { + var begs, beg, left, right, result; + var ai = str.indexOf(a); + var bi = str.indexOf(b, ai + 1); + var i = ai; + + if (ai >= 0 && bi > 0) { + if(a===b) { + return [ai, bi]; + } + begs = []; + left = str.length; + + while (i >= 0 && !result) { + if (i == ai) { + begs.push(i); + ai = str.indexOf(a, i + 1); + } else if (begs.length == 1) { + result = [ begs.pop(), bi ]; + } else { + beg = begs.pop(); + if (beg < left) { + left = beg; + right = bi; + } + + bi = str.indexOf(b, i + 1); + } + + i = ai < bi && ai >= 0 ? ai : bi; + } + + if (begs.length) { + result = [ left, right ]; + } + } + + return result; +} diff --git a/node_modules/balanced-match/package.json b/node_modules/balanced-match/package.json new file mode 100644 index 0000000..ce6073e --- /dev/null +++ b/node_modules/balanced-match/package.json @@ -0,0 +1,48 @@ +{ + "name": "balanced-match", + "description": "Match balanced character pairs, like \"{\" and \"}\"", + "version": "1.0.2", + "repository": { + "type": "git", + "url": "git://github.com/juliangruber/balanced-match.git" + }, + "homepage": "https://github.com/juliangruber/balanced-match", + "main": "index.js", + "scripts": { + "test": "tape test/test.js", + "bench": "matcha test/bench.js" + }, + "devDependencies": { + "matcha": "^0.7.0", + "tape": "^4.6.0" + }, + "keywords": [ + "match", + "regexp", + "test", + "balanced", + "parse" + ], + "author": { + "name": "Julian Gruber", + "email": "mail@juliangruber.com", + "url": "http://juliangruber.com" + }, + "license": "MIT", + "testling": { + "files": "test/*.js", + "browsers": [ + "ie/8..latest", + "firefox/20..latest", + "firefox/nightly", + "chrome/25..latest", + "chrome/canary", + "opera/12..latest", + "opera/next", + "safari/5.1..latest", + "ipad/6.0..latest", + "iphone/6.0..latest", + "android-browser/4.2..latest" + ] + } +} diff --git a/node_modules/body-parser/HISTORY.md b/node_modules/body-parser/HISTORY.md new file mode 100644 index 0000000..b892491 --- /dev/null +++ b/node_modules/body-parser/HISTORY.md @@ -0,0 +1,665 @@ +1.20.2 / 2023-02-21 +=================== + + * Fix strict json error message on Node.js 19+ + * deps: content-type@~1.0.5 + - perf: skip value escaping when unnecessary + * deps: raw-body@2.5.2 + +1.20.1 / 2022-10-06 +=================== + + * deps: qs@6.11.0 + * perf: remove unnecessary object clone + +1.20.0 / 2022-04-02 +=================== + + * Fix error message for json parse whitespace in `strict` + * Fix internal error when inflated body exceeds limit + * Prevent loss of async hooks context + * Prevent hanging when request already read + * deps: depd@2.0.0 + - Replace internal `eval` usage with `Function` constructor + - Use instance methods on `process` to check for listeners + * deps: http-errors@2.0.0 + - deps: depd@2.0.0 + - deps: statuses@2.0.1 + * deps: on-finished@2.4.1 + * deps: qs@6.10.3 + * deps: raw-body@2.5.1 + - deps: http-errors@2.0.0 + +1.19.2 / 2022-02-15 +=================== + + * deps: bytes@3.1.2 + * deps: qs@6.9.7 + * Fix handling of `__proto__` keys + * deps: raw-body@2.4.3 + - deps: bytes@3.1.2 + +1.19.1 / 2021-12-10 +=================== + + * deps: bytes@3.1.1 + * deps: http-errors@1.8.1 + - deps: inherits@2.0.4 + - deps: toidentifier@1.0.1 + - deps: setprototypeof@1.2.0 + * deps: qs@6.9.6 + * deps: raw-body@2.4.2 + - deps: bytes@3.1.1 + - deps: http-errors@1.8.1 + * deps: safe-buffer@5.2.1 + * deps: type-is@~1.6.18 + +1.19.0 / 2019-04-25 +=================== + + * deps: bytes@3.1.0 + - Add petabyte (`pb`) support + * deps: http-errors@1.7.2 + - Set constructor name when possible + - deps: setprototypeof@1.1.1 + - deps: statuses@'>= 1.5.0 < 2' + * deps: iconv-lite@0.4.24 + - Added encoding MIK + * deps: qs@6.7.0 + - Fix parsing array brackets after index + * deps: raw-body@2.4.0 + - deps: bytes@3.1.0 + - deps: http-errors@1.7.2 + - deps: iconv-lite@0.4.24 + * deps: type-is@~1.6.17 + - deps: mime-types@~2.1.24 + - perf: prevent internal `throw` on invalid type + +1.18.3 / 2018-05-14 +=================== + + * Fix stack trace for strict json parse error + * deps: depd@~1.1.2 + - perf: remove argument reassignment + * deps: http-errors@~1.6.3 + - deps: depd@~1.1.2 + - deps: setprototypeof@1.1.0 + - deps: statuses@'>= 1.3.1 < 2' + * deps: iconv-lite@0.4.23 + - Fix loading encoding with year appended + - Fix deprecation warnings on Node.js 10+ + * deps: qs@6.5.2 + * deps: raw-body@2.3.3 + - deps: http-errors@1.6.3 + - deps: iconv-lite@0.4.23 + * deps: type-is@~1.6.16 + - deps: mime-types@~2.1.18 + +1.18.2 / 2017-09-22 +=================== + + * deps: debug@2.6.9 + * perf: remove argument reassignment + +1.18.1 / 2017-09-12 +=================== + + * deps: content-type@~1.0.4 + - perf: remove argument reassignment + - perf: skip parameter parsing when no parameters + * deps: iconv-lite@0.4.19 + - Fix ISO-8859-1 regression + - Update Windows-1255 + * deps: qs@6.5.1 + - Fix parsing & compacting very deep objects + * deps: raw-body@2.3.2 + - deps: iconv-lite@0.4.19 + +1.18.0 / 2017-09-08 +=================== + + * Fix JSON strict violation error to match native parse error + * Include the `body` property on verify errors + * Include the `type` property on all generated errors + * Use `http-errors` to set status code on errors + * deps: bytes@3.0.0 + * deps: debug@2.6.8 + * deps: depd@~1.1.1 + - Remove unnecessary `Buffer` loading + * deps: http-errors@~1.6.2 + - deps: depd@1.1.1 + * deps: iconv-lite@0.4.18 + - Add support for React Native + - Add a warning if not loaded as utf-8 + - Fix CESU-8 decoding in Node.js 8 + - Improve speed of ISO-8859-1 encoding + * deps: qs@6.5.0 + * deps: raw-body@2.3.1 + - Use `http-errors` for standard emitted errors + - deps: bytes@3.0.0 + - deps: iconv-lite@0.4.18 + - perf: skip buffer decoding on overage chunk + * perf: prevent internal `throw` when missing charset + +1.17.2 / 2017-05-17 +=================== + + * deps: debug@2.6.7 + - Fix `DEBUG_MAX_ARRAY_LENGTH` + - deps: ms@2.0.0 + * deps: type-is@~1.6.15 + - deps: mime-types@~2.1.15 + +1.17.1 / 2017-03-06 +=================== + + * deps: qs@6.4.0 + - Fix regression parsing keys starting with `[` + +1.17.0 / 2017-03-01 +=================== + + * deps: http-errors@~1.6.1 + - Make `message` property enumerable for `HttpError`s + - deps: setprototypeof@1.0.3 + * deps: qs@6.3.1 + - Fix compacting nested arrays + +1.16.1 / 2017-02-10 +=================== + + * deps: debug@2.6.1 + - Fix deprecation messages in WebStorm and other editors + - Undeprecate `DEBUG_FD` set to `1` or `2` + +1.16.0 / 2017-01-17 +=================== + + * deps: debug@2.6.0 + - Allow colors in workers + - Deprecated `DEBUG_FD` environment variable + - Fix error when running under React Native + - Use same color for same namespace + - deps: ms@0.7.2 + * deps: http-errors@~1.5.1 + - deps: inherits@2.0.3 + - deps: setprototypeof@1.0.2 + - deps: statuses@'>= 1.3.1 < 2' + * deps: iconv-lite@0.4.15 + - Added encoding MS-31J + - Added encoding MS-932 + - Added encoding MS-936 + - Added encoding MS-949 + - Added encoding MS-950 + - Fix GBK/GB18030 handling of Euro character + * deps: qs@6.2.1 + - Fix array parsing from skipping empty values + * deps: raw-body@~2.2.0 + - deps: iconv-lite@0.4.15 + * deps: type-is@~1.6.14 + - deps: mime-types@~2.1.13 + +1.15.2 / 2016-06-19 +=================== + + * deps: bytes@2.4.0 + * deps: content-type@~1.0.2 + - perf: enable strict mode + * deps: http-errors@~1.5.0 + - Use `setprototypeof` module to replace `__proto__` setting + - deps: statuses@'>= 1.3.0 < 2' + - perf: enable strict mode + * deps: qs@6.2.0 + * deps: raw-body@~2.1.7 + - deps: bytes@2.4.0 + - perf: remove double-cleanup on happy path + * deps: type-is@~1.6.13 + - deps: mime-types@~2.1.11 + +1.15.1 / 2016-05-05 +=================== + + * deps: bytes@2.3.0 + - Drop partial bytes on all parsed units + - Fix parsing byte string that looks like hex + * deps: raw-body@~2.1.6 + - deps: bytes@2.3.0 + * deps: type-is@~1.6.12 + - deps: mime-types@~2.1.10 + +1.15.0 / 2016-02-10 +=================== + + * deps: http-errors@~1.4.0 + - Add `HttpError` export, for `err instanceof createError.HttpError` + - deps: inherits@2.0.1 + - deps: statuses@'>= 1.2.1 < 2' + * deps: qs@6.1.0 + * deps: type-is@~1.6.11 + - deps: mime-types@~2.1.9 + +1.14.2 / 2015-12-16 +=================== + + * deps: bytes@2.2.0 + * deps: iconv-lite@0.4.13 + * deps: qs@5.2.0 + * deps: raw-body@~2.1.5 + - deps: bytes@2.2.0 + - deps: iconv-lite@0.4.13 + * deps: type-is@~1.6.10 + - deps: mime-types@~2.1.8 + +1.14.1 / 2015-09-27 +=================== + + * Fix issue where invalid charset results in 400 when `verify` used + * deps: iconv-lite@0.4.12 + - Fix CESU-8 decoding in Node.js 4.x + * deps: raw-body@~2.1.4 + - Fix masking critical errors from `iconv-lite` + - deps: iconv-lite@0.4.12 + * deps: type-is@~1.6.9 + - deps: mime-types@~2.1.7 + +1.14.0 / 2015-09-16 +=================== + + * Fix JSON strict parse error to match syntax errors + * Provide static `require` analysis in `urlencoded` parser + * deps: depd@~1.1.0 + - Support web browser loading + * deps: qs@5.1.0 + * deps: raw-body@~2.1.3 + - Fix sync callback when attaching data listener causes sync read + * deps: type-is@~1.6.8 + - Fix type error when given invalid type to match against + - deps: mime-types@~2.1.6 + +1.13.3 / 2015-07-31 +=================== + + * deps: type-is@~1.6.6 + - deps: mime-types@~2.1.4 + +1.13.2 / 2015-07-05 +=================== + + * deps: iconv-lite@0.4.11 + * deps: qs@4.0.0 + - Fix dropping parameters like `hasOwnProperty` + - Fix user-visible incompatibilities from 3.1.0 + - Fix various parsing edge cases + * deps: raw-body@~2.1.2 + - Fix error stack traces to skip `makeError` + - deps: iconv-lite@0.4.11 + * deps: type-is@~1.6.4 + - deps: mime-types@~2.1.2 + - perf: enable strict mode + - perf: remove argument reassignment + +1.13.1 / 2015-06-16 +=================== + + * deps: qs@2.4.2 + - Downgraded from 3.1.0 because of user-visible incompatibilities + +1.13.0 / 2015-06-14 +=================== + + * Add `statusCode` property on `Error`s, in addition to `status` + * Change `type` default to `application/json` for JSON parser + * Change `type` default to `application/x-www-form-urlencoded` for urlencoded parser + * Provide static `require` analysis + * Use the `http-errors` module to generate errors + * deps: bytes@2.1.0 + - Slight optimizations + * deps: iconv-lite@0.4.10 + - The encoding UTF-16 without BOM now defaults to UTF-16LE when detection fails + - Leading BOM is now removed when decoding + * deps: on-finished@~2.3.0 + - Add defined behavior for HTTP `CONNECT` requests + - Add defined behavior for HTTP `Upgrade` requests + - deps: ee-first@1.1.1 + * deps: qs@3.1.0 + - Fix dropping parameters like `hasOwnProperty` + - Fix various parsing edge cases + - Parsed object now has `null` prototype + * deps: raw-body@~2.1.1 + - Use `unpipe` module for unpiping requests + - deps: iconv-lite@0.4.10 + * deps: type-is@~1.6.3 + - deps: mime-types@~2.1.1 + - perf: reduce try block size + - perf: remove bitwise operations + * perf: enable strict mode + * perf: remove argument reassignment + * perf: remove delete call + +1.12.4 / 2015-05-10 +=================== + + * deps: debug@~2.2.0 + * deps: qs@2.4.2 + - Fix allowing parameters like `constructor` + * deps: on-finished@~2.2.1 + * deps: raw-body@~2.0.1 + - Fix a false-positive when unpiping in Node.js 0.8 + - deps: bytes@2.0.1 + * deps: type-is@~1.6.2 + - deps: mime-types@~2.0.11 + +1.12.3 / 2015-04-15 +=================== + + * Slight efficiency improvement when not debugging + * deps: depd@~1.0.1 + * deps: iconv-lite@0.4.8 + - Add encoding alias UNICODE-1-1-UTF-7 + * deps: raw-body@1.3.4 + - Fix hanging callback if request aborts during read + - deps: iconv-lite@0.4.8 + +1.12.2 / 2015-03-16 +=================== + + * deps: qs@2.4.1 + - Fix error when parameter `hasOwnProperty` is present + +1.12.1 / 2015-03-15 +=================== + + * deps: debug@~2.1.3 + - Fix high intensity foreground color for bold + - deps: ms@0.7.0 + * deps: type-is@~1.6.1 + - deps: mime-types@~2.0.10 + +1.12.0 / 2015-02-13 +=================== + + * add `debug` messages + * accept a function for the `type` option + * use `content-type` to parse `Content-Type` headers + * deps: iconv-lite@0.4.7 + - Gracefully support enumerables on `Object.prototype` + * deps: raw-body@1.3.3 + - deps: iconv-lite@0.4.7 + * deps: type-is@~1.6.0 + - fix argument reassignment + - fix false-positives in `hasBody` `Transfer-Encoding` check + - support wildcard for both type and subtype (`*/*`) + - deps: mime-types@~2.0.9 + +1.11.0 / 2015-01-30 +=================== + + * make internal `extended: true` depth limit infinity + * deps: type-is@~1.5.6 + - deps: mime-types@~2.0.8 + +1.10.2 / 2015-01-20 +=================== + + * deps: iconv-lite@0.4.6 + - Fix rare aliases of single-byte encodings + * deps: raw-body@1.3.2 + - deps: iconv-lite@0.4.6 + +1.10.1 / 2015-01-01 +=================== + + * deps: on-finished@~2.2.0 + * deps: type-is@~1.5.5 + - deps: mime-types@~2.0.7 + +1.10.0 / 2014-12-02 +=================== + + * make internal `extended: true` array limit dynamic + +1.9.3 / 2014-11-21 +================== + + * deps: iconv-lite@0.4.5 + - Fix Windows-31J and X-SJIS encoding support + * deps: qs@2.3.3 + - Fix `arrayLimit` behavior + * deps: raw-body@1.3.1 + - deps: iconv-lite@0.4.5 + * deps: type-is@~1.5.3 + - deps: mime-types@~2.0.3 + +1.9.2 / 2014-10-27 +================== + + * deps: qs@2.3.2 + - Fix parsing of mixed objects and values + +1.9.1 / 2014-10-22 +================== + + * deps: on-finished@~2.1.1 + - Fix handling of pipelined requests + * deps: qs@2.3.0 + - Fix parsing of mixed implicit and explicit arrays + * deps: type-is@~1.5.2 + - deps: mime-types@~2.0.2 + +1.9.0 / 2014-09-24 +================== + + * include the charset in "unsupported charset" error message + * include the encoding in "unsupported content encoding" error message + * deps: depd@~1.0.0 + +1.8.4 / 2014-09-23 +================== + + * fix content encoding to be case-insensitive + +1.8.3 / 2014-09-19 +================== + + * deps: qs@2.2.4 + - Fix issue with object keys starting with numbers truncated + +1.8.2 / 2014-09-15 +================== + + * deps: depd@0.4.5 + +1.8.1 / 2014-09-07 +================== + + * deps: media-typer@0.3.0 + * deps: type-is@~1.5.1 + +1.8.0 / 2014-09-05 +================== + + * make empty-body-handling consistent between chunked requests + - empty `json` produces `{}` + - empty `raw` produces `new Buffer(0)` + - empty `text` produces `''` + - empty `urlencoded` produces `{}` + * deps: qs@2.2.3 + - Fix issue where first empty value in array is discarded + * deps: type-is@~1.5.0 + - fix `hasbody` to be true for `content-length: 0` + +1.7.0 / 2014-09-01 +================== + + * add `parameterLimit` option to `urlencoded` parser + * change `urlencoded` extended array limit to 100 + * respond with 413 when over `parameterLimit` in `urlencoded` + +1.6.7 / 2014-08-29 +================== + + * deps: qs@2.2.2 + - Remove unnecessary cloning + +1.6.6 / 2014-08-27 +================== + + * deps: qs@2.2.0 + - Array parsing fix + - Performance improvements + +1.6.5 / 2014-08-16 +================== + + * deps: on-finished@2.1.0 + +1.6.4 / 2014-08-14 +================== + + * deps: qs@1.2.2 + +1.6.3 / 2014-08-10 +================== + + * deps: qs@1.2.1 + +1.6.2 / 2014-08-07 +================== + + * deps: qs@1.2.0 + - Fix parsing array of objects + +1.6.1 / 2014-08-06 +================== + + * deps: qs@1.1.0 + - Accept urlencoded square brackets + - Accept empty values in implicit array notation + +1.6.0 / 2014-08-05 +================== + + * deps: qs@1.0.2 + - Complete rewrite + - Limits array length to 20 + - Limits object depth to 5 + - Limits parameters to 1,000 + +1.5.2 / 2014-07-27 +================== + + * deps: depd@0.4.4 + - Work-around v8 generating empty stack traces + +1.5.1 / 2014-07-26 +================== + + * deps: depd@0.4.3 + - Fix exception when global `Error.stackTraceLimit` is too low + +1.5.0 / 2014-07-20 +================== + + * deps: depd@0.4.2 + - Add `TRACE_DEPRECATION` environment variable + - Remove non-standard grey color from color output + - Support `--no-deprecation` argument + - Support `--trace-deprecation` argument + * deps: iconv-lite@0.4.4 + - Added encoding UTF-7 + * deps: raw-body@1.3.0 + - deps: iconv-lite@0.4.4 + - Added encoding UTF-7 + - Fix `Cannot switch to old mode now` error on Node.js 0.10+ + * deps: type-is@~1.3.2 + +1.4.3 / 2014-06-19 +================== + + * deps: type-is@1.3.1 + - fix global variable leak + +1.4.2 / 2014-06-19 +================== + + * deps: type-is@1.3.0 + - improve type parsing + +1.4.1 / 2014-06-19 +================== + + * fix urlencoded extended deprecation message + +1.4.0 / 2014-06-19 +================== + + * add `text` parser + * add `raw` parser + * check accepted charset in content-type (accepts utf-8) + * check accepted encoding in content-encoding (accepts identity) + * deprecate `bodyParser()` middleware; use `.json()` and `.urlencoded()` as needed + * deprecate `urlencoded()` without provided `extended` option + * lazy-load urlencoded parsers + * parsers split into files for reduced mem usage + * support gzip and deflate bodies + - set `inflate: false` to turn off + * deps: raw-body@1.2.2 + - Support all encodings from `iconv-lite` + +1.3.1 / 2014-06-11 +================== + + * deps: type-is@1.2.1 + - Switch dependency from mime to mime-types@1.0.0 + +1.3.0 / 2014-05-31 +================== + + * add `extended` option to urlencoded parser + +1.2.2 / 2014-05-27 +================== + + * deps: raw-body@1.1.6 + - assert stream encoding on node.js 0.8 + - assert stream encoding on node.js < 0.10.6 + - deps: bytes@1 + +1.2.1 / 2014-05-26 +================== + + * invoke `next(err)` after request fully read + - prevents hung responses and socket hang ups + +1.2.0 / 2014-05-11 +================== + + * add `verify` option + * deps: type-is@1.2.0 + - support suffix matching + +1.1.2 / 2014-05-11 +================== + + * improve json parser speed + +1.1.1 / 2014-05-11 +================== + + * fix repeated limit parsing with every request + +1.1.0 / 2014-05-10 +================== + + * add `type` option + * deps: pin for safety and consistency + +1.0.2 / 2014-04-14 +================== + + * use `type-is` module + +1.0.1 / 2014-03-20 +================== + + * lower default limits to 100kb diff --git a/node_modules/body-parser/LICENSE b/node_modules/body-parser/LICENSE new file mode 100644 index 0000000..386b7b6 --- /dev/null +++ b/node_modules/body-parser/LICENSE @@ -0,0 +1,23 @@ +(The MIT License) + +Copyright (c) 2014 Jonathan Ong +Copyright (c) 2014-2015 Douglas Christopher Wilson + +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/body-parser/README.md b/node_modules/body-parser/README.md new file mode 100644 index 0000000..38553bf --- /dev/null +++ b/node_modules/body-parser/README.md @@ -0,0 +1,465 @@ +# body-parser + +[![NPM Version][npm-version-image]][npm-url] +[![NPM Downloads][npm-downloads-image]][npm-url] +[![Build Status][ci-image]][ci-url] +[![Test Coverage][coveralls-image]][coveralls-url] + +Node.js body parsing middleware. + +Parse incoming request bodies in a middleware before your handlers, available +under the `req.body` property. + +**Note** As `req.body`'s shape is based on user-controlled input, all +properties and values in this object are untrusted and should be validated +before trusting. For example, `req.body.foo.toString()` may fail in multiple +ways, for example the `foo` property may not be there or may not be a string, +and `toString` may not be a function and instead a string or other user input. + +[Learn about the anatomy of an HTTP transaction in Node.js](https://nodejs.org/en/docs/guides/anatomy-of-an-http-transaction/). + +_This does not handle multipart bodies_, due to their complex and typically +large nature. For multipart bodies, you may be interested in the following +modules: + + * [busboy](https://www.npmjs.org/package/busboy#readme) and + [connect-busboy](https://www.npmjs.org/package/connect-busboy#readme) + * [multiparty](https://www.npmjs.org/package/multiparty#readme) and + [connect-multiparty](https://www.npmjs.org/package/connect-multiparty#readme) + * [formidable](https://www.npmjs.org/package/formidable#readme) + * [multer](https://www.npmjs.org/package/multer#readme) + +This module provides the following parsers: + + * [JSON body parser](#bodyparserjsonoptions) + * [Raw body parser](#bodyparserrawoptions) + * [Text body parser](#bodyparsertextoptions) + * [URL-encoded form body parser](#bodyparserurlencodedoptions) + +Other body parsers you might be interested in: + +- [body](https://www.npmjs.org/package/body#readme) +- [co-body](https://www.npmjs.org/package/co-body#readme) + +## Installation + +```sh +$ npm install body-parser +``` + +## API + +```js +var bodyParser = require('body-parser') +``` + +The `bodyParser` object exposes various factories to create middlewares. All +middlewares will populate the `req.body` property with the parsed body when +the `Content-Type` request header matches the `type` option, or an empty +object (`{}`) if there was no body to parse, the `Content-Type` was not matched, +or an error occurred. + +The various errors returned by this module are described in the +[errors section](#errors). + +### bodyParser.json([options]) + +Returns middleware that only parses `json` and only looks at requests where +the `Content-Type` header matches the `type` option. This parser accepts any +Unicode encoding of the body and supports automatic inflation of `gzip` and +`deflate` encodings. + +A new `body` object containing the parsed data is populated on the `request` +object after the middleware (i.e. `req.body`). + +#### Options + +The `json` function takes an optional `options` object that may contain any of +the following keys: + +##### inflate + +When set to `true`, then deflated (compressed) bodies will be inflated; when +`false`, deflated bodies are rejected. Defaults to `true`. + +##### limit + +Controls the maximum request body size. If this is a number, then the value +specifies the number of bytes; if it is a string, the value is passed to the +[bytes](https://www.npmjs.com/package/bytes) library for parsing. Defaults +to `'100kb'`. + +##### reviver + +The `reviver` option is passed directly to `JSON.parse` as the second +argument. You can find more information on this argument +[in the MDN documentation about JSON.parse](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse#Example.3A_Using_the_reviver_parameter). + +##### strict + +When set to `true`, will only accept arrays and objects; when `false` will +accept anything `JSON.parse` accepts. Defaults to `true`. + +##### type + +The `type` option is used to determine what media type the middleware will +parse. This option can be a string, array of strings, or a function. If not a +function, `type` option is passed directly to the +[type-is](https://www.npmjs.org/package/type-is#readme) library and this can +be an extension name (like `json`), a mime type (like `application/json`), or +a mime type with a wildcard (like `*/*` or `*/json`). If a function, the `type` +option is called as `fn(req)` and the request is parsed if it returns a truthy +value. Defaults to `application/json`. + +##### verify + +The `verify` option, if supplied, is called as `verify(req, res, buf, encoding)`, +where `buf` is a `Buffer` of the raw request body and `encoding` is the +encoding of the request. The parsing can be aborted by throwing an error. + +### bodyParser.raw([options]) + +Returns middleware that parses all bodies as a `Buffer` and only looks at +requests where the `Content-Type` header matches the `type` option. This +parser supports automatic inflation of `gzip` and `deflate` encodings. + +A new `body` object containing the parsed data is populated on the `request` +object after the middleware (i.e. `req.body`). This will be a `Buffer` object +of the body. + +#### Options + +The `raw` function takes an optional `options` object that may contain any of +the following keys: + +##### inflate + +When set to `true`, then deflated (compressed) bodies will be inflated; when +`false`, deflated bodies are rejected. Defaults to `true`. + +##### limit + +Controls the maximum request body size. If this is a number, then the value +specifies the number of bytes; if it is a string, the value is passed to the +[bytes](https://www.npmjs.com/package/bytes) library for parsing. Defaults +to `'100kb'`. + +##### type + +The `type` option is used to determine what media type the middleware will +parse. This option can be a string, array of strings, or a function. +If not a function, `type` option is passed directly to the +[type-is](https://www.npmjs.org/package/type-is#readme) library and this +can be an extension name (like `bin`), a mime type (like +`application/octet-stream`), or a mime type with a wildcard (like `*/*` or +`application/*`). If a function, the `type` option is called as `fn(req)` +and the request is parsed if it returns a truthy value. Defaults to +`application/octet-stream`. + +##### verify + +The `verify` option, if supplied, is called as `verify(req, res, buf, encoding)`, +where `buf` is a `Buffer` of the raw request body and `encoding` is the +encoding of the request. The parsing can be aborted by throwing an error. + +### bodyParser.text([options]) + +Returns middleware that parses all bodies as a string and only looks at +requests where the `Content-Type` header matches the `type` option. This +parser supports automatic inflation of `gzip` and `deflate` encodings. + +A new `body` string containing the parsed data is populated on the `request` +object after the middleware (i.e. `req.body`). This will be a string of the +body. + +#### Options + +The `text` function takes an optional `options` object that may contain any of +the following keys: + +##### defaultCharset + +Specify the default character set for the text content if the charset is not +specified in the `Content-Type` header of the request. Defaults to `utf-8`. + +##### inflate + +When set to `true`, then deflated (compressed) bodies will be inflated; when +`false`, deflated bodies are rejected. Defaults to `true`. + +##### limit + +Controls the maximum request body size. If this is a number, then the value +specifies the number of bytes; if it is a string, the value is passed to the +[bytes](https://www.npmjs.com/package/bytes) library for parsing. Defaults +to `'100kb'`. + +##### type + +The `type` option is used to determine what media type the middleware will +parse. This option can be a string, array of strings, or a function. If not +a function, `type` option is passed directly to the +[type-is](https://www.npmjs.org/package/type-is#readme) library and this can +be an extension name (like `txt`), a mime type (like `text/plain`), or a mime +type with a wildcard (like `*/*` or `text/*`). If a function, the `type` +option is called as `fn(req)` and the request is parsed if it returns a +truthy value. Defaults to `text/plain`. + +##### verify + +The `verify` option, if supplied, is called as `verify(req, res, buf, encoding)`, +where `buf` is a `Buffer` of the raw request body and `encoding` is the +encoding of the request. The parsing can be aborted by throwing an error. + +### bodyParser.urlencoded([options]) + +Returns middleware that only parses `urlencoded` bodies and only looks at +requests where the `Content-Type` header matches the `type` option. This +parser accepts only UTF-8 encoding of the body and supports automatic +inflation of `gzip` and `deflate` encodings. + +A new `body` object containing the parsed data is populated on the `request` +object after the middleware (i.e. `req.body`). This object will contain +key-value pairs, where the value can be a string or array (when `extended` is +`false`), or any type (when `extended` is `true`). + +#### Options + +The `urlencoded` function takes an optional `options` object that may contain +any of the following keys: + +##### extended + +The `extended` option allows to choose between parsing the URL-encoded data +with the `querystring` library (when `false`) or the `qs` library (when +`true`). The "extended" syntax allows for rich objects and arrays to be +encoded into the URL-encoded format, allowing for a JSON-like experience +with URL-encoded. For more information, please +[see the qs library](https://www.npmjs.org/package/qs#readme). + +Defaults to `true`, but using the default has been deprecated. Please +research into the difference between `qs` and `querystring` and choose the +appropriate setting. + +##### inflate + +When set to `true`, then deflated (compressed) bodies will be inflated; when +`false`, deflated bodies are rejected. Defaults to `true`. + +##### limit + +Controls the maximum request body size. If this is a number, then the value +specifies the number of bytes; if it is a string, the value is passed to the +[bytes](https://www.npmjs.com/package/bytes) library for parsing. Defaults +to `'100kb'`. + +##### parameterLimit + +The `parameterLimit` option controls the maximum number of parameters that +are allowed in the URL-encoded data. If a request contains more parameters +than this value, a 413 will be returned to the client. Defaults to `1000`. + +##### type + +The `type` option is used to determine what media type the middleware will +parse. This option can be a string, array of strings, or a function. If not +a function, `type` option is passed directly to the +[type-is](https://www.npmjs.org/package/type-is#readme) library and this can +be an extension name (like `urlencoded`), a mime type (like +`application/x-www-form-urlencoded`), or a mime type with a wildcard (like +`*/x-www-form-urlencoded`). If a function, the `type` option is called as +`fn(req)` and the request is parsed if it returns a truthy value. Defaults +to `application/x-www-form-urlencoded`. + +##### verify + +The `verify` option, if supplied, is called as `verify(req, res, buf, encoding)`, +where `buf` is a `Buffer` of the raw request body and `encoding` is the +encoding of the request. The parsing can be aborted by throwing an error. + +## Errors + +The middlewares provided by this module create errors using the +[`http-errors` module](https://www.npmjs.com/package/http-errors). The errors +will typically have a `status`/`statusCode` property that contains the suggested +HTTP response code, an `expose` property to determine if the `message` property +should be displayed to the client, a `type` property to determine the type of +error without matching against the `message`, and a `body` property containing +the read body, if available. + +The following are the common errors created, though any error can come through +for various reasons. + +### content encoding unsupported + +This error will occur when the request had a `Content-Encoding` header that +contained an encoding but the "inflation" option was set to `false`. The +`status` property is set to `415`, the `type` property is set to +`'encoding.unsupported'`, and the `charset` property will be set to the +encoding that is unsupported. + +### entity parse failed + +This error will occur when the request contained an entity that could not be +parsed by the middleware. The `status` property is set to `400`, the `type` +property is set to `'entity.parse.failed'`, and the `body` property is set to +the entity value that failed parsing. + +### entity verify failed + +This error will occur when the request contained an entity that could not be +failed verification by the defined `verify` option. The `status` property is +set to `403`, the `type` property is set to `'entity.verify.failed'`, and the +`body` property is set to the entity value that failed verification. + +### request aborted + +This error will occur when the request is aborted by the client before reading +the body has finished. The `received` property will be set to the number of +bytes received before the request was aborted and the `expected` property is +set to the number of expected bytes. The `status` property is set to `400` +and `type` property is set to `'request.aborted'`. + +### request entity too large + +This error will occur when the request body's size is larger than the "limit" +option. The `limit` property will be set to the byte limit and the `length` +property will be set to the request body's length. The `status` property is +set to `413` and the `type` property is set to `'entity.too.large'`. + +### request size did not match content length + +This error will occur when the request's length did not match the length from +the `Content-Length` header. This typically occurs when the request is malformed, +typically when the `Content-Length` header was calculated based on characters +instead of bytes. The `status` property is set to `400` and the `type` property +is set to `'request.size.invalid'`. + +### stream encoding should not be set + +This error will occur when something called the `req.setEncoding` method prior +to this middleware. This module operates directly on bytes only and you cannot +call `req.setEncoding` when using this module. The `status` property is set to +`500` and the `type` property is set to `'stream.encoding.set'`. + +### stream is not readable + +This error will occur when the request is no longer readable when this middleware +attempts to read it. This typically means something other than a middleware from +this module read the request body already and the middleware was also configured to +read the same request. The `status` property is set to `500` and the `type` +property is set to `'stream.not.readable'`. + +### too many parameters + +This error will occur when the content of the request exceeds the configured +`parameterLimit` for the `urlencoded` parser. The `status` property is set to +`413` and the `type` property is set to `'parameters.too.many'`. + +### unsupported charset "BOGUS" + +This error will occur when the request had a charset parameter in the +`Content-Type` header, but the `iconv-lite` module does not support it OR the +parser does not support it. The charset is contained in the message as well +as in the `charset` property. The `status` property is set to `415`, the +`type` property is set to `'charset.unsupported'`, and the `charset` property +is set to the charset that is unsupported. + +### unsupported content encoding "bogus" + +This error will occur when the request had a `Content-Encoding` header that +contained an unsupported encoding. The encoding is contained in the message +as well as in the `encoding` property. The `status` property is set to `415`, +the `type` property is set to `'encoding.unsupported'`, and the `encoding` +property is set to the encoding that is unsupported. + +## Examples + +### Express/Connect top-level generic + +This example demonstrates adding a generic JSON and URL-encoded parser as a +top-level middleware, which will parse the bodies of all incoming requests. +This is the simplest setup. + +```js +var express = require('express') +var bodyParser = require('body-parser') + +var app = express() + +// parse application/x-www-form-urlencoded +app.use(bodyParser.urlencoded({ extended: false })) + +// parse application/json +app.use(bodyParser.json()) + +app.use(function (req, res) { + res.setHeader('Content-Type', 'text/plain') + res.write('you posted:\n') + res.end(JSON.stringify(req.body, null, 2)) +}) +``` + +### Express route-specific + +This example demonstrates adding body parsers specifically to the routes that +need them. In general, this is the most recommended way to use body-parser with +Express. + +```js +var express = require('express') +var bodyParser = require('body-parser') + +var app = express() + +// create application/json parser +var jsonParser = bodyParser.json() + +// create application/x-www-form-urlencoded parser +var urlencodedParser = bodyParser.urlencoded({ extended: false }) + +// POST /login gets urlencoded bodies +app.post('/login', urlencodedParser, function (req, res) { + res.send('welcome, ' + req.body.username) +}) + +// POST /api/users gets JSON bodies +app.post('/api/users', jsonParser, function (req, res) { + // create user in req.body +}) +``` + +### Change accepted type for parsers + +All the parsers accept a `type` option which allows you to change the +`Content-Type` that the middleware will parse. + +```js +var express = require('express') +var bodyParser = require('body-parser') + +var app = express() + +// parse various different custom JSON types as JSON +app.use(bodyParser.json({ type: 'application/*+json' })) + +// parse some custom thing into a Buffer +app.use(bodyParser.raw({ type: 'application/vnd.custom-type' })) + +// parse an HTML body into a string +app.use(bodyParser.text({ type: 'text/html' })) +``` + +## License + +[MIT](LICENSE) + +[ci-image]: https://badgen.net/github/checks/expressjs/body-parser/master?label=ci +[ci-url]: https://github.com/expressjs/body-parser/actions/workflows/ci.yml +[coveralls-image]: https://badgen.net/coveralls/c/github/expressjs/body-parser/master +[coveralls-url]: https://coveralls.io/r/expressjs/body-parser?branch=master +[node-version-image]: https://badgen.net/npm/node/body-parser +[node-version-url]: https://nodejs.org/en/download +[npm-downloads-image]: https://badgen.net/npm/dm/body-parser +[npm-url]: https://npmjs.org/package/body-parser +[npm-version-image]: https://badgen.net/npm/v/body-parser diff --git a/node_modules/body-parser/SECURITY.md b/node_modules/body-parser/SECURITY.md new file mode 100644 index 0000000..9694d42 --- /dev/null +++ b/node_modules/body-parser/SECURITY.md @@ -0,0 +1,25 @@ +# Security Policies and Procedures + +## Reporting a Bug + +The Express team and community take all security bugs seriously. Thank you +for improving the security of Express. We appreciate your efforts and +responsible disclosure and will make every effort to acknowledge your +contributions. + +Report security bugs by emailing the current owner(s) of `body-parser`. This +information can be found in the npm registry using the command +`npm owner ls body-parser`. +If unsure or unable to get the information from the above, open an issue +in the [project issue tracker](https://github.com/expressjs/body-parser/issues) +asking for the current contact information. + +To ensure the timely response to your report, please ensure that the entirety +of the report is contained within the email body and not solely behind a web +link or an attachment. + +At least one owner will acknowledge your email within 48 hours, and will send a +more detailed response within 48 hours indicating the next steps in handling +your report. After the initial reply to your report, the owners will +endeavor to keep you informed of the progress towards a fix and full +announcement, and may ask for additional information or guidance. diff --git a/node_modules/body-parser/index.js b/node_modules/body-parser/index.js new file mode 100644 index 0000000..bb24d73 --- /dev/null +++ b/node_modules/body-parser/index.js @@ -0,0 +1,156 @@ +/*! + * body-parser + * Copyright(c) 2014-2015 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module dependencies. + * @private + */ + +var deprecate = require('depd')('body-parser') + +/** + * Cache of loaded parsers. + * @private + */ + +var parsers = Object.create(null) + +/** + * @typedef Parsers + * @type {function} + * @property {function} json + * @property {function} raw + * @property {function} text + * @property {function} urlencoded + */ + +/** + * Module exports. + * @type {Parsers} + */ + +exports = module.exports = deprecate.function(bodyParser, + 'bodyParser: use individual json/urlencoded middlewares') + +/** + * JSON parser. + * @public + */ + +Object.defineProperty(exports, 'json', { + configurable: true, + enumerable: true, + get: createParserGetter('json') +}) + +/** + * Raw parser. + * @public + */ + +Object.defineProperty(exports, 'raw', { + configurable: true, + enumerable: true, + get: createParserGetter('raw') +}) + +/** + * Text parser. + * @public + */ + +Object.defineProperty(exports, 'text', { + configurable: true, + enumerable: true, + get: createParserGetter('text') +}) + +/** + * URL-encoded parser. + * @public + */ + +Object.defineProperty(exports, 'urlencoded', { + configurable: true, + enumerable: true, + get: createParserGetter('urlencoded') +}) + +/** + * Create a middleware to parse json and urlencoded bodies. + * + * @param {object} [options] + * @return {function} + * @deprecated + * @public + */ + +function bodyParser (options) { + // use default type for parsers + var opts = Object.create(options || null, { + type: { + configurable: true, + enumerable: true, + value: undefined, + writable: true + } + }) + + var _urlencoded = exports.urlencoded(opts) + var _json = exports.json(opts) + + return function bodyParser (req, res, next) { + _json(req, res, function (err) { + if (err) return next(err) + _urlencoded(req, res, next) + }) + } +} + +/** + * Create a getter for loading a parser. + * @private + */ + +function createParserGetter (name) { + return function get () { + return loadParser(name) + } +} + +/** + * Load a parser module. + * @private + */ + +function loadParser (parserName) { + var parser = parsers[parserName] + + if (parser !== undefined) { + return parser + } + + // this uses a switch for static require analysis + switch (parserName) { + case 'json': + parser = require('./lib/types/json') + break + case 'raw': + parser = require('./lib/types/raw') + break + case 'text': + parser = require('./lib/types/text') + break + case 'urlencoded': + parser = require('./lib/types/urlencoded') + break + } + + // store to prevent invoking require() + return (parsers[parserName] = parser) +} diff --git a/node_modules/body-parser/lib/read.js b/node_modules/body-parser/lib/read.js new file mode 100644 index 0000000..fce6283 --- /dev/null +++ b/node_modules/body-parser/lib/read.js @@ -0,0 +1,205 @@ +/*! + * body-parser + * Copyright(c) 2014-2015 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module dependencies. + * @private + */ + +var createError = require('http-errors') +var destroy = require('destroy') +var getBody = require('raw-body') +var iconv = require('iconv-lite') +var onFinished = require('on-finished') +var unpipe = require('unpipe') +var zlib = require('zlib') + +/** + * Module exports. + */ + +module.exports = read + +/** + * Read a request into a buffer and parse. + * + * @param {object} req + * @param {object} res + * @param {function} next + * @param {function} parse + * @param {function} debug + * @param {object} options + * @private + */ + +function read (req, res, next, parse, debug, options) { + var length + var opts = options + var stream + + // flag as parsed + req._body = true + + // read options + var encoding = opts.encoding !== null + ? opts.encoding + : null + var verify = opts.verify + + try { + // get the content stream + stream = contentstream(req, debug, opts.inflate) + length = stream.length + stream.length = undefined + } catch (err) { + return next(err) + } + + // set raw-body options + opts.length = length + opts.encoding = verify + ? null + : encoding + + // assert charset is supported + if (opts.encoding === null && encoding !== null && !iconv.encodingExists(encoding)) { + return next(createError(415, 'unsupported charset "' + encoding.toUpperCase() + '"', { + charset: encoding.toLowerCase(), + type: 'charset.unsupported' + })) + } + + // read body + debug('read body') + getBody(stream, opts, function (error, body) { + if (error) { + var _error + + if (error.type === 'encoding.unsupported') { + // echo back charset + _error = createError(415, 'unsupported charset "' + encoding.toUpperCase() + '"', { + charset: encoding.toLowerCase(), + type: 'charset.unsupported' + }) + } else { + // set status code on error + _error = createError(400, error) + } + + // unpipe from stream and destroy + if (stream !== req) { + unpipe(req) + destroy(stream, true) + } + + // read off entire request + dump(req, function onfinished () { + next(createError(400, _error)) + }) + return + } + + // verify + if (verify) { + try { + debug('verify body') + verify(req, res, body, encoding) + } catch (err) { + next(createError(403, err, { + body: body, + type: err.type || 'entity.verify.failed' + })) + return + } + } + + // parse + var str = body + try { + debug('parse body') + str = typeof body !== 'string' && encoding !== null + ? iconv.decode(body, encoding) + : body + req.body = parse(str) + } catch (err) { + next(createError(400, err, { + body: str, + type: err.type || 'entity.parse.failed' + })) + return + } + + next() + }) +} + +/** + * Get the content stream of the request. + * + * @param {object} req + * @param {function} debug + * @param {boolean} [inflate=true] + * @return {object} + * @api private + */ + +function contentstream (req, debug, inflate) { + var encoding = (req.headers['content-encoding'] || 'identity').toLowerCase() + var length = req.headers['content-length'] + var stream + + debug('content-encoding "%s"', encoding) + + if (inflate === false && encoding !== 'identity') { + throw createError(415, 'content encoding unsupported', { + encoding: encoding, + type: 'encoding.unsupported' + }) + } + + switch (encoding) { + case 'deflate': + stream = zlib.createInflate() + debug('inflate body') + req.pipe(stream) + break + case 'gzip': + stream = zlib.createGunzip() + debug('gunzip body') + req.pipe(stream) + break + case 'identity': + stream = req + stream.length = length + break + default: + throw createError(415, 'unsupported content encoding "' + encoding + '"', { + encoding: encoding, + type: 'encoding.unsupported' + }) + } + + return stream +} + +/** + * Dump the contents of a request. + * + * @param {object} req + * @param {function} callback + * @api private + */ + +function dump (req, callback) { + if (onFinished.isFinished(req)) { + callback(null) + } else { + onFinished(req, callback) + req.resume() + } +} diff --git a/node_modules/body-parser/lib/types/json.js b/node_modules/body-parser/lib/types/json.js new file mode 100644 index 0000000..59f3f7e --- /dev/null +++ b/node_modules/body-parser/lib/types/json.js @@ -0,0 +1,247 @@ +/*! + * body-parser + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2014-2015 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module dependencies. + * @private + */ + +var bytes = require('bytes') +var contentType = require('content-type') +var createError = require('http-errors') +var debug = require('debug')('body-parser:json') +var read = require('../read') +var typeis = require('type-is') + +/** + * Module exports. + */ + +module.exports = json + +/** + * RegExp to match the first non-space in a string. + * + * Allowed whitespace is defined in RFC 7159: + * + * ws = *( + * %x20 / ; Space + * %x09 / ; Horizontal tab + * %x0A / ; Line feed or New line + * %x0D ) ; Carriage return + */ + +var FIRST_CHAR_REGEXP = /^[\x20\x09\x0a\x0d]*([^\x20\x09\x0a\x0d])/ // eslint-disable-line no-control-regex + +var JSON_SYNTAX_CHAR = '#' +var JSON_SYNTAX_REGEXP = /#+/g + +/** + * Create a middleware to parse JSON bodies. + * + * @param {object} [options] + * @return {function} + * @public + */ + +function json (options) { + var opts = options || {} + + var limit = typeof opts.limit !== 'number' + ? bytes.parse(opts.limit || '100kb') + : opts.limit + var inflate = opts.inflate !== false + var reviver = opts.reviver + var strict = opts.strict !== false + var type = opts.type || 'application/json' + var verify = opts.verify || false + + if (verify !== false && typeof verify !== 'function') { + throw new TypeError('option verify must be function') + } + + // create the appropriate type checking function + var shouldParse = typeof type !== 'function' + ? typeChecker(type) + : type + + function parse (body) { + if (body.length === 0) { + // special-case empty json body, as it's a common client-side mistake + // TODO: maybe make this configurable or part of "strict" option + return {} + } + + if (strict) { + var first = firstchar(body) + + if (first !== '{' && first !== '[') { + debug('strict violation') + throw createStrictSyntaxError(body, first) + } + } + + try { + debug('parse json') + return JSON.parse(body, reviver) + } catch (e) { + throw normalizeJsonSyntaxError(e, { + message: e.message, + stack: e.stack + }) + } + } + + return function jsonParser (req, res, next) { + if (req._body) { + debug('body already parsed') + next() + return + } + + req.body = req.body || {} + + // skip requests without bodies + if (!typeis.hasBody(req)) { + debug('skip empty body') + next() + return + } + + debug('content-type %j', req.headers['content-type']) + + // determine if request should be parsed + if (!shouldParse(req)) { + debug('skip parsing') + next() + return + } + + // assert charset per RFC 7159 sec 8.1 + var charset = getCharset(req) || 'utf-8' + if (charset.slice(0, 4) !== 'utf-') { + debug('invalid charset') + next(createError(415, 'unsupported charset "' + charset.toUpperCase() + '"', { + charset: charset, + type: 'charset.unsupported' + })) + return + } + + // read + read(req, res, next, parse, debug, { + encoding: charset, + inflate: inflate, + limit: limit, + verify: verify + }) + } +} + +/** + * Create strict violation syntax error matching native error. + * + * @param {string} str + * @param {string} char + * @return {Error} + * @private + */ + +function createStrictSyntaxError (str, char) { + var index = str.indexOf(char) + var partial = '' + + if (index !== -1) { + partial = str.substring(0, index) + JSON_SYNTAX_CHAR + + for (var i = index + 1; i < str.length; i++) { + partial += JSON_SYNTAX_CHAR + } + } + + try { + JSON.parse(partial); /* istanbul ignore next */ throw new SyntaxError('strict violation') + } catch (e) { + return normalizeJsonSyntaxError(e, { + message: e.message.replace(JSON_SYNTAX_REGEXP, function (placeholder) { + return str.substring(index, index + placeholder.length) + }), + stack: e.stack + }) + } +} + +/** + * Get the first non-whitespace character in a string. + * + * @param {string} str + * @return {function} + * @private + */ + +function firstchar (str) { + var match = FIRST_CHAR_REGEXP.exec(str) + + return match + ? match[1] + : undefined +} + +/** + * Get the charset of a request. + * + * @param {object} req + * @api private + */ + +function getCharset (req) { + try { + return (contentType.parse(req).parameters.charset || '').toLowerCase() + } catch (e) { + return undefined + } +} + +/** + * Normalize a SyntaxError for JSON.parse. + * + * @param {SyntaxError} error + * @param {object} obj + * @return {SyntaxError} + */ + +function normalizeJsonSyntaxError (error, obj) { + var keys = Object.getOwnPropertyNames(error) + + for (var i = 0; i < keys.length; i++) { + var key = keys[i] + if (key !== 'stack' && key !== 'message') { + delete error[key] + } + } + + // replace stack before message for Node.js 0.10 and below + error.stack = obj.stack.replace(error.message, obj.message) + error.message = obj.message + + return error +} + +/** + * Get the simple type checker. + * + * @param {string} type + * @return {function} + */ + +function typeChecker (type) { + return function checkType (req) { + return Boolean(typeis(req, type)) + } +} diff --git a/node_modules/body-parser/lib/types/raw.js b/node_modules/body-parser/lib/types/raw.js new file mode 100644 index 0000000..f5d1b67 --- /dev/null +++ b/node_modules/body-parser/lib/types/raw.js @@ -0,0 +1,101 @@ +/*! + * body-parser + * Copyright(c) 2014-2015 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module dependencies. + */ + +var bytes = require('bytes') +var debug = require('debug')('body-parser:raw') +var read = require('../read') +var typeis = require('type-is') + +/** + * Module exports. + */ + +module.exports = raw + +/** + * Create a middleware to parse raw bodies. + * + * @param {object} [options] + * @return {function} + * @api public + */ + +function raw (options) { + var opts = options || {} + + var inflate = opts.inflate !== false + var limit = typeof opts.limit !== 'number' + ? bytes.parse(opts.limit || '100kb') + : opts.limit + var type = opts.type || 'application/octet-stream' + var verify = opts.verify || false + + if (verify !== false && typeof verify !== 'function') { + throw new TypeError('option verify must be function') + } + + // create the appropriate type checking function + var shouldParse = typeof type !== 'function' + ? typeChecker(type) + : type + + function parse (buf) { + return buf + } + + return function rawParser (req, res, next) { + if (req._body) { + debug('body already parsed') + next() + return + } + + req.body = req.body || {} + + // skip requests without bodies + if (!typeis.hasBody(req)) { + debug('skip empty body') + next() + return + } + + debug('content-type %j', req.headers['content-type']) + + // determine if request should be parsed + if (!shouldParse(req)) { + debug('skip parsing') + next() + return + } + + // read + read(req, res, next, parse, debug, { + encoding: null, + inflate: inflate, + limit: limit, + verify: verify + }) + } +} + +/** + * Get the simple type checker. + * + * @param {string} type + * @return {function} + */ + +function typeChecker (type) { + return function checkType (req) { + return Boolean(typeis(req, type)) + } +} diff --git a/node_modules/body-parser/lib/types/text.js b/node_modules/body-parser/lib/types/text.js new file mode 100644 index 0000000..083a009 --- /dev/null +++ b/node_modules/body-parser/lib/types/text.js @@ -0,0 +1,121 @@ +/*! + * body-parser + * Copyright(c) 2014-2015 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module dependencies. + */ + +var bytes = require('bytes') +var contentType = require('content-type') +var debug = require('debug')('body-parser:text') +var read = require('../read') +var typeis = require('type-is') + +/** + * Module exports. + */ + +module.exports = text + +/** + * Create a middleware to parse text bodies. + * + * @param {object} [options] + * @return {function} + * @api public + */ + +function text (options) { + var opts = options || {} + + var defaultCharset = opts.defaultCharset || 'utf-8' + var inflate = opts.inflate !== false + var limit = typeof opts.limit !== 'number' + ? bytes.parse(opts.limit || '100kb') + : opts.limit + var type = opts.type || 'text/plain' + var verify = opts.verify || false + + if (verify !== false && typeof verify !== 'function') { + throw new TypeError('option verify must be function') + } + + // create the appropriate type checking function + var shouldParse = typeof type !== 'function' + ? typeChecker(type) + : type + + function parse (buf) { + return buf + } + + return function textParser (req, res, next) { + if (req._body) { + debug('body already parsed') + next() + return + } + + req.body = req.body || {} + + // skip requests without bodies + if (!typeis.hasBody(req)) { + debug('skip empty body') + next() + return + } + + debug('content-type %j', req.headers['content-type']) + + // determine if request should be parsed + if (!shouldParse(req)) { + debug('skip parsing') + next() + return + } + + // get charset + var charset = getCharset(req) || defaultCharset + + // read + read(req, res, next, parse, debug, { + encoding: charset, + inflate: inflate, + limit: limit, + verify: verify + }) + } +} + +/** + * Get the charset of a request. + * + * @param {object} req + * @api private + */ + +function getCharset (req) { + try { + return (contentType.parse(req).parameters.charset || '').toLowerCase() + } catch (e) { + return undefined + } +} + +/** + * Get the simple type checker. + * + * @param {string} type + * @return {function} + */ + +function typeChecker (type) { + return function checkType (req) { + return Boolean(typeis(req, type)) + } +} diff --git a/node_modules/body-parser/lib/types/urlencoded.js b/node_modules/body-parser/lib/types/urlencoded.js new file mode 100644 index 0000000..b2ca8f1 --- /dev/null +++ b/node_modules/body-parser/lib/types/urlencoded.js @@ -0,0 +1,284 @@ +/*! + * body-parser + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2014-2015 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module dependencies. + * @private + */ + +var bytes = require('bytes') +var contentType = require('content-type') +var createError = require('http-errors') +var debug = require('debug')('body-parser:urlencoded') +var deprecate = require('depd')('body-parser') +var read = require('../read') +var typeis = require('type-is') + +/** + * Module exports. + */ + +module.exports = urlencoded + +/** + * Cache of parser modules. + */ + +var parsers = Object.create(null) + +/** + * Create a middleware to parse urlencoded bodies. + * + * @param {object} [options] + * @return {function} + * @public + */ + +function urlencoded (options) { + var opts = options || {} + + // notice because option default will flip in next major + if (opts.extended === undefined) { + deprecate('undefined extended: provide extended option') + } + + var extended = opts.extended !== false + var inflate = opts.inflate !== false + var limit = typeof opts.limit !== 'number' + ? bytes.parse(opts.limit || '100kb') + : opts.limit + var type = opts.type || 'application/x-www-form-urlencoded' + var verify = opts.verify || false + + if (verify !== false && typeof verify !== 'function') { + throw new TypeError('option verify must be function') + } + + // create the appropriate query parser + var queryparse = extended + ? extendedparser(opts) + : simpleparser(opts) + + // create the appropriate type checking function + var shouldParse = typeof type !== 'function' + ? typeChecker(type) + : type + + function parse (body) { + return body.length + ? queryparse(body) + : {} + } + + return function urlencodedParser (req, res, next) { + if (req._body) { + debug('body already parsed') + next() + return + } + + req.body = req.body || {} + + // skip requests without bodies + if (!typeis.hasBody(req)) { + debug('skip empty body') + next() + return + } + + debug('content-type %j', req.headers['content-type']) + + // determine if request should be parsed + if (!shouldParse(req)) { + debug('skip parsing') + next() + return + } + + // assert charset + var charset = getCharset(req) || 'utf-8' + if (charset !== 'utf-8') { + debug('invalid charset') + next(createError(415, 'unsupported charset "' + charset.toUpperCase() + '"', { + charset: charset, + type: 'charset.unsupported' + })) + return + } + + // read + read(req, res, next, parse, debug, { + debug: debug, + encoding: charset, + inflate: inflate, + limit: limit, + verify: verify + }) + } +} + +/** + * Get the extended query parser. + * + * @param {object} options + */ + +function extendedparser (options) { + var parameterLimit = options.parameterLimit !== undefined + ? options.parameterLimit + : 1000 + var parse = parser('qs') + + if (isNaN(parameterLimit) || parameterLimit < 1) { + throw new TypeError('option parameterLimit must be a positive number') + } + + if (isFinite(parameterLimit)) { + parameterLimit = parameterLimit | 0 + } + + return function queryparse (body) { + var paramCount = parameterCount(body, parameterLimit) + + if (paramCount === undefined) { + debug('too many parameters') + throw createError(413, 'too many parameters', { + type: 'parameters.too.many' + }) + } + + var arrayLimit = Math.max(100, paramCount) + + debug('parse extended urlencoding') + return parse(body, { + allowPrototypes: true, + arrayLimit: arrayLimit, + depth: Infinity, + parameterLimit: parameterLimit + }) + } +} + +/** + * Get the charset of a request. + * + * @param {object} req + * @api private + */ + +function getCharset (req) { + try { + return (contentType.parse(req).parameters.charset || '').toLowerCase() + } catch (e) { + return undefined + } +} + +/** + * Count the number of parameters, stopping once limit reached + * + * @param {string} body + * @param {number} limit + * @api private + */ + +function parameterCount (body, limit) { + var count = 0 + var index = 0 + + while ((index = body.indexOf('&', index)) !== -1) { + count++ + index++ + + if (count === limit) { + return undefined + } + } + + return count +} + +/** + * Get parser for module name dynamically. + * + * @param {string} name + * @return {function} + * @api private + */ + +function parser (name) { + var mod = parsers[name] + + if (mod !== undefined) { + return mod.parse + } + + // this uses a switch for static require analysis + switch (name) { + case 'qs': + mod = require('qs') + break + case 'querystring': + mod = require('querystring') + break + } + + // store to prevent invoking require() + parsers[name] = mod + + return mod.parse +} + +/** + * Get the simple query parser. + * + * @param {object} options + */ + +function simpleparser (options) { + var parameterLimit = options.parameterLimit !== undefined + ? options.parameterLimit + : 1000 + var parse = parser('querystring') + + if (isNaN(parameterLimit) || parameterLimit < 1) { + throw new TypeError('option parameterLimit must be a positive number') + } + + if (isFinite(parameterLimit)) { + parameterLimit = parameterLimit | 0 + } + + return function queryparse (body) { + var paramCount = parameterCount(body, parameterLimit) + + if (paramCount === undefined) { + debug('too many parameters') + throw createError(413, 'too many parameters', { + type: 'parameters.too.many' + }) + } + + debug('parse urlencoding') + return parse(body, undefined, undefined, { maxKeys: parameterLimit }) + } +} + +/** + * Get the simple type checker. + * + * @param {string} type + * @return {function} + */ + +function typeChecker (type) { + return function checkType (req) { + return Boolean(typeis(req, type)) + } +} diff --git a/node_modules/body-parser/package.json b/node_modules/body-parser/package.json new file mode 100644 index 0000000..4637304 --- /dev/null +++ b/node_modules/body-parser/package.json @@ -0,0 +1,56 @@ +{ + "name": "body-parser", + "description": "Node.js body parsing middleware", + "version": "1.20.2", + "contributors": [ + "Douglas Christopher Wilson ", + "Jonathan Ong (http://jongleberry.com)" + ], + "license": "MIT", + "repository": "expressjs/body-parser", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "devDependencies": { + "eslint": "8.34.0", + "eslint-config-standard": "14.1.1", + "eslint-plugin-import": "2.27.5", + "eslint-plugin-markdown": "3.0.0", + "eslint-plugin-node": "11.1.0", + "eslint-plugin-promise": "6.1.1", + "eslint-plugin-standard": "4.1.0", + "methods": "1.1.2", + "mocha": "10.2.0", + "nyc": "15.1.0", + "safe-buffer": "5.2.1", + "supertest": "6.3.3" + }, + "files": [ + "lib/", + "LICENSE", + "HISTORY.md", + "SECURITY.md", + "index.js" + ], + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + }, + "scripts": { + "lint": "eslint .", + "test": "mocha --require test/support/env --reporter spec --check-leaks --bail test/", + "test-ci": "nyc --reporter=lcov --reporter=text npm test", + "test-cov": "nyc --reporter=html --reporter=text npm test" + } +} diff --git a/node_modules/brace-expansion/LICENSE b/node_modules/brace-expansion/LICENSE new file mode 100644 index 0000000..de32266 --- /dev/null +++ b/node_modules/brace-expansion/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2013 Julian Gruber + +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/brace-expansion/README.md b/node_modules/brace-expansion/README.md new file mode 100644 index 0000000..6b4e0e1 --- /dev/null +++ b/node_modules/brace-expansion/README.md @@ -0,0 +1,129 @@ +# brace-expansion + +[Brace expansion](https://www.gnu.org/software/bash/manual/html_node/Brace-Expansion.html), +as known from sh/bash, in JavaScript. + +[![build status](https://secure.travis-ci.org/juliangruber/brace-expansion.svg)](http://travis-ci.org/juliangruber/brace-expansion) +[![downloads](https://img.shields.io/npm/dm/brace-expansion.svg)](https://www.npmjs.org/package/brace-expansion) +[![Greenkeeper badge](https://badges.greenkeeper.io/juliangruber/brace-expansion.svg)](https://greenkeeper.io/) + +[![testling badge](https://ci.testling.com/juliangruber/brace-expansion.png)](https://ci.testling.com/juliangruber/brace-expansion) + +## Example + +```js +var expand = require('brace-expansion'); + +expand('file-{a,b,c}.jpg') +// => ['file-a.jpg', 'file-b.jpg', 'file-c.jpg'] + +expand('-v{,,}') +// => ['-v', '-v', '-v'] + +expand('file{0..2}.jpg') +// => ['file0.jpg', 'file1.jpg', 'file2.jpg'] + +expand('file-{a..c}.jpg') +// => ['file-a.jpg', 'file-b.jpg', 'file-c.jpg'] + +expand('file{2..0}.jpg') +// => ['file2.jpg', 'file1.jpg', 'file0.jpg'] + +expand('file{0..4..2}.jpg') +// => ['file0.jpg', 'file2.jpg', 'file4.jpg'] + +expand('file-{a..e..2}.jpg') +// => ['file-a.jpg', 'file-c.jpg', 'file-e.jpg'] + +expand('file{00..10..5}.jpg') +// => ['file00.jpg', 'file05.jpg', 'file10.jpg'] + +expand('{{A..C},{a..c}}') +// => ['A', 'B', 'C', 'a', 'b', 'c'] + +expand('ppp{,config,oe{,conf}}') +// => ['ppp', 'pppconfig', 'pppoe', 'pppoeconf'] +``` + +## API + +```js +var expand = require('brace-expansion'); +``` + +### var expanded = expand(str) + +Return an array of all possible and valid expansions of `str`. If none are +found, `[str]` is returned. + +Valid expansions are: + +```js +/^(.*,)+(.+)?$/ +// {a,b,...} +``` + +A comma separated list of options, like `{a,b}` or `{a,{b,c}}` or `{,a,}`. + +```js +/^-?\d+\.\.-?\d+(\.\.-?\d+)?$/ +// {x..y[..incr]} +``` + +A numeric sequence from `x` to `y` inclusive, with optional increment. +If `x` or `y` start with a leading `0`, all the numbers will be padded +to have equal length. Negative numbers and backwards iteration work too. + +```js +/^-?\d+\.\.-?\d+(\.\.-?\d+)?$/ +// {x..y[..incr]} +``` + +An alphabetic sequence from `x` to `y` inclusive, with optional increment. +`x` and `y` must be exactly one character, and if given, `incr` must be a +number. + +For compatibility reasons, the string `${` is not eligible for brace expansion. + +## Installation + +With [npm](https://npmjs.org) do: + +```bash +npm install brace-expansion +``` + +## Contributors + +- [Julian Gruber](https://github.com/juliangruber) +- [Isaac Z. Schlueter](https://github.com/isaacs) + +## Sponsors + +This module is proudly supported by my [Sponsors](https://github.com/juliangruber/sponsors)! + +Do you want to support modules like this to improve their quality, stability and weigh in on new features? Then please consider donating to my [Patreon](https://www.patreon.com/juliangruber). Not sure how much of my modules you're using? Try [feross/thanks](https://github.com/feross/thanks)! + +## License + +(MIT) + +Copyright (c) 2013 Julian Gruber <julian@juliangruber.com> + +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/brace-expansion/index.js b/node_modules/brace-expansion/index.js new file mode 100644 index 0000000..0478be8 --- /dev/null +++ b/node_modules/brace-expansion/index.js @@ -0,0 +1,201 @@ +var concatMap = require('concat-map'); +var balanced = require('balanced-match'); + +module.exports = expandTop; + +var escSlash = '\0SLASH'+Math.random()+'\0'; +var escOpen = '\0OPEN'+Math.random()+'\0'; +var escClose = '\0CLOSE'+Math.random()+'\0'; +var escComma = '\0COMMA'+Math.random()+'\0'; +var escPeriod = '\0PERIOD'+Math.random()+'\0'; + +function numeric(str) { + return parseInt(str, 10) == str + ? parseInt(str, 10) + : str.charCodeAt(0); +} + +function escapeBraces(str) { + return str.split('\\\\').join(escSlash) + .split('\\{').join(escOpen) + .split('\\}').join(escClose) + .split('\\,').join(escComma) + .split('\\.').join(escPeriod); +} + +function unescapeBraces(str) { + return str.split(escSlash).join('\\') + .split(escOpen).join('{') + .split(escClose).join('}') + .split(escComma).join(',') + .split(escPeriod).join('.'); +} + + +// Basically just str.split(","), but handling cases +// where we have nested braced sections, which should be +// treated as individual members, like {a,{b,c},d} +function parseCommaParts(str) { + if (!str) + return ['']; + + var parts = []; + var m = balanced('{', '}', str); + + if (!m) + return str.split(','); + + var pre = m.pre; + var body = m.body; + var post = m.post; + var p = pre.split(','); + + p[p.length-1] += '{' + body + '}'; + var postParts = parseCommaParts(post); + if (post.length) { + p[p.length-1] += postParts.shift(); + p.push.apply(p, postParts); + } + + parts.push.apply(parts, p); + + return parts; +} + +function expandTop(str) { + if (!str) + return []; + + // I don't know why Bash 4.3 does this, but it does. + // Anything starting with {} will have the first two bytes preserved + // but *only* at the top level, so {},a}b will not expand to anything, + // but a{},b}c will be expanded to [a}c,abc]. + // One could argue that this is a bug in Bash, but since the goal of + // this module is to match Bash's rules, we escape a leading {} + if (str.substr(0, 2) === '{}') { + str = '\\{\\}' + str.substr(2); + } + + return expand(escapeBraces(str), true).map(unescapeBraces); +} + +function identity(e) { + return e; +} + +function embrace(str) { + return '{' + str + '}'; +} +function isPadded(el) { + return /^-?0\d/.test(el); +} + +function lte(i, y) { + return i <= y; +} +function gte(i, y) { + return i >= y; +} + +function expand(str, isTop) { + var expansions = []; + + var m = balanced('{', '}', str); + if (!m || /\$$/.test(m.pre)) return [str]; + + var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body); + var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body); + var isSequence = isNumericSequence || isAlphaSequence; + var isOptions = m.body.indexOf(',') >= 0; + if (!isSequence && !isOptions) { + // {a},b} + if (m.post.match(/,.*\}/)) { + str = m.pre + '{' + m.body + escClose + m.post; + return expand(str); + } + return [str]; + } + + var n; + if (isSequence) { + n = m.body.split(/\.\./); + } else { + n = parseCommaParts(m.body); + if (n.length === 1) { + // x{{a,b}}y ==> x{a}y x{b}y + n = expand(n[0], false).map(embrace); + if (n.length === 1) { + var post = m.post.length + ? expand(m.post, false) + : ['']; + return post.map(function(p) { + return m.pre + n[0] + p; + }); + } + } + } + + // at this point, n is the parts, and we know it's not a comma set + // with a single entry. + + // no need to expand pre, since it is guaranteed to be free of brace-sets + var pre = m.pre; + var post = m.post.length + ? expand(m.post, false) + : ['']; + + var N; + + if (isSequence) { + var x = numeric(n[0]); + var y = numeric(n[1]); + var width = Math.max(n[0].length, n[1].length) + var incr = n.length == 3 + ? Math.abs(numeric(n[2])) + : 1; + var test = lte; + var reverse = y < x; + if (reverse) { + incr *= -1; + test = gte; + } + var pad = n.some(isPadded); + + N = []; + + for (var i = x; test(i, y); i += incr) { + var c; + if (isAlphaSequence) { + c = String.fromCharCode(i); + if (c === '\\') + c = ''; + } else { + c = String(i); + if (pad) { + var need = width - c.length; + if (need > 0) { + var z = new Array(need + 1).join('0'); + if (i < 0) + c = '-' + z + c.slice(1); + else + c = z + c; + } + } + } + N.push(c); + } + } else { + N = concatMap(n, function(el) { return expand(el, false) }); + } + + for (var j = 0; j < N.length; j++) { + for (var k = 0; k < post.length; k++) { + var expansion = pre + N[j] + post[k]; + if (!isTop || isSequence || expansion) + expansions.push(expansion); + } + } + + return expansions; +} + diff --git a/node_modules/brace-expansion/package.json b/node_modules/brace-expansion/package.json new file mode 100644 index 0000000..a18faa8 --- /dev/null +++ b/node_modules/brace-expansion/package.json @@ -0,0 +1,47 @@ +{ + "name": "brace-expansion", + "description": "Brace expansion as known from sh/bash", + "version": "1.1.11", + "repository": { + "type": "git", + "url": "git://github.com/juliangruber/brace-expansion.git" + }, + "homepage": "https://github.com/juliangruber/brace-expansion", + "main": "index.js", + "scripts": { + "test": "tape test/*.js", + "gentest": "bash test/generate.sh", + "bench": "matcha test/perf/bench.js" + }, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + }, + "devDependencies": { + "matcha": "^0.7.0", + "tape": "^4.6.0" + }, + "keywords": [], + "author": { + "name": "Julian Gruber", + "email": "mail@juliangruber.com", + "url": "http://juliangruber.com" + }, + "license": "MIT", + "testling": { + "files": "test/*.js", + "browsers": [ + "ie/8..latest", + "firefox/20..latest", + "firefox/nightly", + "chrome/25..latest", + "chrome/canary", + "opera/12..latest", + "opera/next", + "safari/5.1..latest", + "ipad/6.0..latest", + "iphone/6.0..latest", + "android-browser/4.2..latest" + ] + } +} diff --git a/node_modules/bytes/History.md b/node_modules/bytes/History.md new file mode 100644 index 0000000..d60ce0e --- /dev/null +++ b/node_modules/bytes/History.md @@ -0,0 +1,97 @@ +3.1.2 / 2022-01-27 +================== + + * Fix return value for un-parsable strings + +3.1.1 / 2021-11-15 +================== + + * Fix "thousandsSeparator" incorrecting formatting fractional part + +3.1.0 / 2019-01-22 +================== + + * Add petabyte (`pb`) support + +3.0.0 / 2017-08-31 +================== + + * Change "kB" to "KB" in format output + * Remove support for Node.js 0.6 + * Remove support for ComponentJS + +2.5.0 / 2017-03-24 +================== + + * Add option "unit" + +2.4.0 / 2016-06-01 +================== + + * Add option "unitSeparator" + +2.3.0 / 2016-02-15 +================== + + * Drop partial bytes on all parsed units + * Fix non-finite numbers to `.format` to return `null` + * Fix parsing byte string that looks like hex + * perf: hoist regular expressions + +2.2.0 / 2015-11-13 +================== + + * add option "decimalPlaces" + * add option "fixedDecimals" + +2.1.0 / 2015-05-21 +================== + + * add `.format` export + * add `.parse` export + +2.0.2 / 2015-05-20 +================== + + * remove map recreation + * remove unnecessary object construction + +2.0.1 / 2015-05-07 +================== + + * fix browserify require + * remove node.extend dependency + +2.0.0 / 2015-04-12 +================== + + * add option "case" + * add option "thousandsSeparator" + * return "null" on invalid parse input + * support proper round-trip: bytes(bytes(num)) === num + * units no longer case sensitive when parsing + +1.0.0 / 2014-05-05 +================== + + * add negative support. fixes #6 + +0.3.0 / 2014-03-19 +================== + + * added terabyte support + +0.2.1 / 2013-04-01 +================== + + * add .component + +0.2.0 / 2012-10-28 +================== + + * bytes(200).should.eql('200b') + +0.1.0 / 2012-07-04 +================== + + * add bytes to string conversion [yields] diff --git a/node_modules/bytes/LICENSE b/node_modules/bytes/LICENSE new file mode 100644 index 0000000..63e95a9 --- /dev/null +++ b/node_modules/bytes/LICENSE @@ -0,0 +1,23 @@ +(The MIT License) + +Copyright (c) 2012-2014 TJ Holowaychuk +Copyright (c) 2015 Jed Watson + +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/bytes/Readme.md b/node_modules/bytes/Readme.md new file mode 100644 index 0000000..5790e23 --- /dev/null +++ b/node_modules/bytes/Readme.md @@ -0,0 +1,152 @@ +# Bytes utility + +[![NPM Version][npm-image]][npm-url] +[![NPM Downloads][downloads-image]][downloads-url] +[![Build Status][ci-image]][ci-url] +[![Test Coverage][coveralls-image]][coveralls-url] + +Utility to parse a string bytes (ex: `1TB`) to bytes (`1099511627776`) and vice-versa. + +## Installation + +This is a [Node.js](https://nodejs.org/en/) module available through the +[npm registry](https://www.npmjs.com/). Installation is done using the +[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): + +```bash +$ npm install bytes +``` + +## Usage + +```js +var bytes = require('bytes'); +``` + +#### bytes(number|string value, [options]): number|string|null + +Default export function. Delegates to either `bytes.format` or `bytes.parse` based on the type of `value`. + +**Arguments** + +| Name | Type | Description | +|---------|----------|--------------------| +| value | `number`|`string` | Number value to format or string value to parse | +| options | `Object` | Conversion options for `format` | + +**Returns** + +| Name | Type | Description | +|---------|------------------|-------------------------------------------------| +| results | `string`|`number`|`null` | Return null upon error. Numeric value in bytes, or string value otherwise. | + +**Example** + +```js +bytes(1024); +// output: '1KB' + +bytes('1KB'); +// output: 1024 +``` + +#### bytes.format(number value, [options]): string|null + +Format the given value in bytes into a string. If the value is negative, it is kept as such. If it is a float, it is + rounded. + +**Arguments** + +| Name | Type | Description | +|---------|----------|--------------------| +| value | `number` | Value in bytes | +| options | `Object` | Conversion options | + +**Options** + +| Property | Type | Description | +|-------------------|--------|-----------------------------------------------------------------------------------------| +| decimalPlaces | `number`|`null` | Maximum number of decimal places to include in output. Default value to `2`. | +| fixedDecimals | `boolean`|`null` | Whether to always display the maximum number of decimal places. Default value to `false` | +| thousandsSeparator | `string`|`null` | Example of values: `' '`, `','` and `'.'`... Default value to `''`. | +| unit | `string`|`null` | The unit in which the result will be returned (B/KB/MB/GB/TB). Default value to `''` (which means auto detect). | +| unitSeparator | `string`|`null` | Separator to use between number and unit. Default value to `''`. | + +**Returns** + +| Name | Type | Description | +|---------|------------------|-------------------------------------------------| +| results | `string`|`null` | Return null upon error. String value otherwise. | + +**Example** + +```js +bytes.format(1024); +// output: '1KB' + +bytes.format(1000); +// output: '1000B' + +bytes.format(1000, {thousandsSeparator: ' '}); +// output: '1 000B' + +bytes.format(1024 * 1.7, {decimalPlaces: 0}); +// output: '2KB' + +bytes.format(1024, {unitSeparator: ' '}); +// output: '1 KB' +``` + +#### bytes.parse(string|number value): number|null + +Parse the string value into an integer in bytes. If no unit is given, or `value` +is a number, it is assumed the value is in bytes. + +Supported units and abbreviations are as follows and are case-insensitive: + + * `b` for bytes + * `kb` for kilobytes + * `mb` for megabytes + * `gb` for gigabytes + * `tb` for terabytes + * `pb` for petabytes + +The units are in powers of two, not ten. This means 1kb = 1024b according to this parser. + +**Arguments** + +| Name | Type | Description | +|---------------|--------|--------------------| +| value | `string`|`number` | String to parse, or number in bytes. | + +**Returns** + +| Name | Type | Description | +|---------|-------------|-------------------------| +| results | `number`|`null` | Return null upon error. Value in bytes otherwise. | + +**Example** + +```js +bytes.parse('1KB'); +// output: 1024 + +bytes.parse('1024'); +// output: 1024 + +bytes.parse(1024); +// output: 1024 +``` + +## License + +[MIT](LICENSE) + +[ci-image]: https://badgen.net/github/checks/visionmedia/bytes.js/master?label=ci +[ci-url]: https://github.com/visionmedia/bytes.js/actions?query=workflow%3Aci +[coveralls-image]: https://badgen.net/coveralls/c/github/visionmedia/bytes.js/master +[coveralls-url]: https://coveralls.io/r/visionmedia/bytes.js?branch=master +[downloads-image]: https://badgen.net/npm/dm/bytes +[downloads-url]: https://npmjs.org/package/bytes +[npm-image]: https://badgen.net/npm/v/bytes +[npm-url]: https://npmjs.org/package/bytes diff --git a/node_modules/bytes/index.js b/node_modules/bytes/index.js new file mode 100644 index 0000000..6f2d0f8 --- /dev/null +++ b/node_modules/bytes/index.js @@ -0,0 +1,170 @@ +/*! + * bytes + * Copyright(c) 2012-2014 TJ Holowaychuk + * Copyright(c) 2015 Jed Watson + * MIT Licensed + */ + +'use strict'; + +/** + * Module exports. + * @public + */ + +module.exports = bytes; +module.exports.format = format; +module.exports.parse = parse; + +/** + * Module variables. + * @private + */ + +var formatThousandsRegExp = /\B(?=(\d{3})+(?!\d))/g; + +var formatDecimalsRegExp = /(?:\.0*|(\.[^0]+)0+)$/; + +var map = { + b: 1, + kb: 1 << 10, + mb: 1 << 20, + gb: 1 << 30, + tb: Math.pow(1024, 4), + pb: Math.pow(1024, 5), +}; + +var parseRegExp = /^((-|\+)?(\d+(?:\.\d+)?)) *(kb|mb|gb|tb|pb)$/i; + +/** + * Convert the given value in bytes into a string or parse to string to an integer in bytes. + * + * @param {string|number} value + * @param {{ + * case: [string], + * decimalPlaces: [number] + * fixedDecimals: [boolean] + * thousandsSeparator: [string] + * unitSeparator: [string] + * }} [options] bytes options. + * + * @returns {string|number|null} + */ + +function bytes(value, options) { + if (typeof value === 'string') { + return parse(value); + } + + if (typeof value === 'number') { + return format(value, options); + } + + return null; +} + +/** + * Format the given value in bytes into a string. + * + * If the value is negative, it is kept as such. If it is a float, + * it is rounded. + * + * @param {number} value + * @param {object} [options] + * @param {number} [options.decimalPlaces=2] + * @param {number} [options.fixedDecimals=false] + * @param {string} [options.thousandsSeparator=] + * @param {string} [options.unit=] + * @param {string} [options.unitSeparator=] + * + * @returns {string|null} + * @public + */ + +function format(value, options) { + if (!Number.isFinite(value)) { + return null; + } + + var mag = Math.abs(value); + var thousandsSeparator = (options && options.thousandsSeparator) || ''; + var unitSeparator = (options && options.unitSeparator) || ''; + var decimalPlaces = (options && options.decimalPlaces !== undefined) ? options.decimalPlaces : 2; + var fixedDecimals = Boolean(options && options.fixedDecimals); + var unit = (options && options.unit) || ''; + + if (!unit || !map[unit.toLowerCase()]) { + if (mag >= map.pb) { + unit = 'PB'; + } else if (mag >= map.tb) { + unit = 'TB'; + } else if (mag >= map.gb) { + unit = 'GB'; + } else if (mag >= map.mb) { + unit = 'MB'; + } else if (mag >= map.kb) { + unit = 'KB'; + } else { + unit = 'B'; + } + } + + var val = value / map[unit.toLowerCase()]; + var str = val.toFixed(decimalPlaces); + + if (!fixedDecimals) { + str = str.replace(formatDecimalsRegExp, '$1'); + } + + if (thousandsSeparator) { + str = str.split('.').map(function (s, i) { + return i === 0 + ? s.replace(formatThousandsRegExp, thousandsSeparator) + : s + }).join('.'); + } + + return str + unitSeparator + unit; +} + +/** + * Parse the string value into an integer in bytes. + * + * If no unit is given, it is assumed the value is in bytes. + * + * @param {number|string} val + * + * @returns {number|null} + * @public + */ + +function parse(val) { + if (typeof val === 'number' && !isNaN(val)) { + return val; + } + + if (typeof val !== 'string') { + return null; + } + + // Test if the string passed is valid + var results = parseRegExp.exec(val); + var floatValue; + var unit = 'b'; + + if (!results) { + // Nothing could be extracted from the given string + floatValue = parseInt(val, 10); + unit = 'b' + } else { + // Retrieve the value and the unit + floatValue = parseFloat(results[1]); + unit = results[4].toLowerCase(); + } + + if (isNaN(floatValue)) { + return null; + } + + return Math.floor(map[unit] * floatValue); +} diff --git a/node_modules/bytes/package.json b/node_modules/bytes/package.json new file mode 100644 index 0000000..f2b6a8b --- /dev/null +++ b/node_modules/bytes/package.json @@ -0,0 +1,42 @@ +{ + "name": "bytes", + "description": "Utility to parse a string bytes to bytes and vice-versa", + "version": "3.1.2", + "author": "TJ Holowaychuk (http://tjholowaychuk.com)", + "contributors": [ + "Jed Watson ", + "Théo FIDRY " + ], + "license": "MIT", + "keywords": [ + "byte", + "bytes", + "utility", + "parse", + "parser", + "convert", + "converter" + ], + "repository": "visionmedia/bytes.js", + "devDependencies": { + "eslint": "7.32.0", + "eslint-plugin-markdown": "2.2.1", + "mocha": "9.2.0", + "nyc": "15.1.0" + }, + "files": [ + "History.md", + "LICENSE", + "Readme.md", + "index.js" + ], + "engines": { + "node": ">= 0.8" + }, + "scripts": { + "lint": "eslint .", + "test": "mocha --check-leaks --reporter spec", + "test-ci": "nyc --reporter=lcov --reporter=text npm test", + "test-cov": "nyc --reporter=html --reporter=text npm test" + } +} diff --git a/node_modules/call-bind/.eslintignore b/node_modules/call-bind/.eslintignore new file mode 100644 index 0000000..404abb2 --- /dev/null +++ b/node_modules/call-bind/.eslintignore @@ -0,0 +1 @@ +coverage/ diff --git a/node_modules/call-bind/.eslintrc b/node_modules/call-bind/.eslintrc new file mode 100644 index 0000000..dfa9a6c --- /dev/null +++ b/node_modules/call-bind/.eslintrc @@ -0,0 +1,16 @@ +{ + "root": true, + + "extends": "@ljharb", + + "rules": { + "func-name-matching": 0, + "id-length": 0, + "new-cap": [2, { + "capIsNewExceptions": [ + "GetIntrinsic", + ], + }], + "no-magic-numbers": 0, + }, +} diff --git a/node_modules/call-bind/.github/FUNDING.yml b/node_modules/call-bind/.github/FUNDING.yml new file mode 100644 index 0000000..c70c2ec --- /dev/null +++ b/node_modules/call-bind/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/call-bind +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/node_modules/call-bind/.nycrc b/node_modules/call-bind/.nycrc new file mode 100644 index 0000000..bdd626c --- /dev/null +++ b/node_modules/call-bind/.nycrc @@ -0,0 +1,9 @@ +{ + "all": true, + "check-coverage": false, + "reporter": ["text-summary", "text", "html", "json"], + "exclude": [ + "coverage", + "test" + ] +} diff --git a/node_modules/call-bind/CHANGELOG.md b/node_modules/call-bind/CHANGELOG.md new file mode 100644 index 0000000..c653f70 --- /dev/null +++ b/node_modules/call-bind/CHANGELOG.md @@ -0,0 +1,93 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.0.7](https://github.com/ljharb/call-bind/compare/v1.0.6...v1.0.7) - 2024-02-12 + +### Commits + +- [Refactor] use `es-define-property` [`09b76a0`](https://github.com/ljharb/call-bind/commit/09b76a01634440461d44a80c9924ec4b500f3b03) +- [Deps] update `get-intrinsic`, `set-function-length` [`ad5136d`](https://github.com/ljharb/call-bind/commit/ad5136ddda2a45c590959829ad3dce0c9f4e3590) + +## [v1.0.6](https://github.com/ljharb/call-bind/compare/v1.0.5...v1.0.6) - 2024-02-05 + +### Commits + +- [Dev Deps] update `aud`, `npmignore`, `tape` [`d564d5c`](https://github.com/ljharb/call-bind/commit/d564d5ce3e06a19df4d499c77f8d1a9da44e77aa) +- [Deps] update `get-intrinsic`, `set-function-length` [`cfc2bdc`](https://github.com/ljharb/call-bind/commit/cfc2bdca7b633df0e0e689e6b637f668f1c6792e) +- [Refactor] use `es-errors`, so things that only need those do not need `get-intrinsic` [`64cd289`](https://github.com/ljharb/call-bind/commit/64cd289ae5862c250a4ca80aa8d461047c166af5) +- [meta] add missing `engines.node` [`32a4038`](https://github.com/ljharb/call-bind/commit/32a4038857b62179f7f9b7b3df2c5260036be582) + +## [v1.0.5](https://github.com/ljharb/call-bind/compare/v1.0.4...v1.0.5) - 2023-10-19 + +### Commits + +- [Fix] throw an error on non-functions as early as possible [`f262408`](https://github.com/ljharb/call-bind/commit/f262408f822c840fbc268080f3ad7c429611066d) +- [Deps] update `set-function-length` [`3fff271`](https://github.com/ljharb/call-bind/commit/3fff27145a1e3a76a5b74f1d7c3c43d0fa3b9871) + +## [v1.0.4](https://github.com/ljharb/call-bind/compare/v1.0.3...v1.0.4) - 2023-10-19 + +## [v1.0.3](https://github.com/ljharb/call-bind/compare/v1.0.2...v1.0.3) - 2023-10-19 + +### Commits + +- [actions] reuse common workflows [`a994df6`](https://github.com/ljharb/call-bind/commit/a994df69f401f4bf735a4ccd77029b85d1549453) +- [meta] use `npmignore` to autogenerate an npmignore file [`eef3ef2`](https://github.com/ljharb/call-bind/commit/eef3ef21e1f002790837fedb8af2679c761fbdf5) +- [readme] flesh out content [`1845ccf`](https://github.com/ljharb/call-bind/commit/1845ccfd9976a607884cfc7157c93192cc16cf22) +- [actions] use `node/install` instead of `node/run`; use `codecov` action [`5b47d53`](https://github.com/ljharb/call-bind/commit/5b47d53d2fd74af5ea0a44f1d51e503cd42f7a90) +- [Refactor] use `set-function-length` [`a0e165c`](https://github.com/ljharb/call-bind/commit/a0e165c5dc61db781cbc919b586b1c2b8da0b150) +- [Dev Deps] update `@ljharb/eslint-config`, `aud`, `tape` [`9c50103`](https://github.com/ljharb/call-bind/commit/9c50103f44137279a817317cf6cc421a658f85b4) +- [meta] simplify "exports" [`019c6d0`](https://github.com/ljharb/call-bind/commit/019c6d06b0e1246ceed8e579f57e44441cbbf6d9) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `auto-changelog`, `safe-publish-latest`, `tape` [`23bd718`](https://github.com/ljharb/call-bind/commit/23bd718a288d3b03042062b4ef5153b3cea83f11) +- [actions] update codecov uploader [`62552d7`](https://github.com/ljharb/call-bind/commit/62552d79cc79e05825e99aaba134ae5b37f33da5) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `auto-changelog`, `tape` [`ec81665`](https://github.com/ljharb/call-bind/commit/ec81665b300f87eabff597afdc8b8092adfa7afd) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `safe-publish-latest`, `tape` [`35d67fc`](https://github.com/ljharb/call-bind/commit/35d67fcea883e686650f736f61da5ddca2592de8) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `tape` [`0266d8d`](https://github.com/ljharb/call-bind/commit/0266d8d2a45086a922db366d0c2932fa463662ff) +- [Dev Deps] update `@ljharb/eslint-config`, `aud`, `tape` [`43a5b28`](https://github.com/ljharb/call-bind/commit/43a5b28a444e710e1bbf92adb8afb5cf7523a223) +- [Deps] update `define-data-property`, `function-bind`, `get-intrinsic` [`780eb36`](https://github.com/ljharb/call-bind/commit/780eb36552514f8cc99c70821ce698697c2726a5) +- [Dev Deps] update `aud`, `tape` [`90d50ad`](https://github.com/ljharb/call-bind/commit/90d50ad03b061e0268b3380b0065fcaec183dc05) +- [meta] use `prepublishOnly` script for npm 7+ [`44c5433`](https://github.com/ljharb/call-bind/commit/44c5433b7980e02b4870007046407cf6fc543329) +- [Deps] update `get-intrinsic` [`86bfbfc`](https://github.com/ljharb/call-bind/commit/86bfbfcf34afdc6eabc93ce3d408548d0e27d958) +- [Deps] update `get-intrinsic` [`5c53354`](https://github.com/ljharb/call-bind/commit/5c5335489be0294c18cd7a8bb6e08226ee019ff5) +- [actions] update checkout action [`4c393a8`](https://github.com/ljharb/call-bind/commit/4c393a8173b3c8e5b30d5b3297b3b94d48bf87f3) +- [Deps] update `get-intrinsic` [`4e70bde`](https://github.com/ljharb/call-bind/commit/4e70bdec0626acb11616d66250fc14565e716e91) +- [Deps] update `get-intrinsic` [`55ae803`](https://github.com/ljharb/call-bind/commit/55ae803a920bd93c369cd798c20de31f91e9fc60) + +## [v1.0.2](https://github.com/ljharb/call-bind/compare/v1.0.1...v1.0.2) - 2021-01-11 + +### Commits + +- [Fix] properly include the receiver in the bound length [`dbae7bc`](https://github.com/ljharb/call-bind/commit/dbae7bc676c079a0d33c0a43e9ef92cb7b01345d) + +## [v1.0.1](https://github.com/ljharb/call-bind/compare/v1.0.0...v1.0.1) - 2021-01-08 + +### Commits + +- [Tests] migrate tests to Github Actions [`b6db284`](https://github.com/ljharb/call-bind/commit/b6db284c36f8ccd195b88a6764fe84b7223a0da1) +- [meta] do not publish github action workflow files [`ec7fe46`](https://github.com/ljharb/call-bind/commit/ec7fe46e60cfa4764ee943d2755f5e5a366e578e) +- [Fix] preserve original function’s length when possible [`adbceaa`](https://github.com/ljharb/call-bind/commit/adbceaa3cac4b41ea78bb19d7ccdbaaf7e0bdadb) +- [Tests] gather coverage data on every job [`d69e23c`](https://github.com/ljharb/call-bind/commit/d69e23cc65f101ba1d4c19bb07fa8eb0ec624be8) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `tape` [`2fd3586`](https://github.com/ljharb/call-bind/commit/2fd3586c5d47b335364c14293114c6b625ae1f71) +- [Deps] update `get-intrinsic` [`f23e931`](https://github.com/ljharb/call-bind/commit/f23e9318cc271c2add8bb38cfded85ee7baf8eee) +- [Deps] update `get-intrinsic` [`72d9f44`](https://github.com/ljharb/call-bind/commit/72d9f44e184465ba8dd3fb48260bbcff234985f2) +- [meta] fix FUNDING.yml [`e723573`](https://github.com/ljharb/call-bind/commit/e723573438c5a68dcec31fb5d96ea6b7e4a93be8) +- [eslint] ignore coverage output [`15e76d2`](https://github.com/ljharb/call-bind/commit/15e76d28a5f43e504696401e5b31ebb78ee1b532) +- [meta] add Automatic Rebase and Require Allow Edits workflows [`8fa4dab`](https://github.com/ljharb/call-bind/commit/8fa4dabb23ba3dd7bb92c9571c1241c08b56e4b6) + +## v1.0.0 - 2020-10-30 + +### Commits + +- Initial commit [`306cf98`](https://github.com/ljharb/call-bind/commit/306cf98c7ec9e7ef66b653ec152277ac1381eb50) +- Tests [`e10d0bb`](https://github.com/ljharb/call-bind/commit/e10d0bbdadc7a10ecedc9a1c035112d3e368b8df) +- Implementation [`43852ed`](https://github.com/ljharb/call-bind/commit/43852eda0f187327b7fad2423ca972149a52bd65) +- npm init [`408f860`](https://github.com/ljharb/call-bind/commit/408f860b773a2f610805fd3613d0d71bac1b6249) +- [meta] add Automatic Rebase and Require Allow Edits workflows [`fb349b2`](https://github.com/ljharb/call-bind/commit/fb349b2e48defbec8b5ec8a8395cc8f69f220b13) +- [meta] add `auto-changelog` [`c4001fc`](https://github.com/ljharb/call-bind/commit/c4001fc43031799ef908211c98d3b0fb2b60fde4) +- [meta] add "funding"; create `FUNDING.yml` [`d4d6d29`](https://github.com/ljharb/call-bind/commit/d4d6d2974a14bc2e98830468eda7fe6d6a776717) +- [Tests] add `npm run lint` [`dedfb98`](https://github.com/ljharb/call-bind/commit/dedfb98bd0ecefb08ddb9a94061bd10cde4332af) +- Only apps should have lockfiles [`54ac776`](https://github.com/ljharb/call-bind/commit/54ac77653db45a7361dc153d2f478e743f110650) +- [meta] add `safe-publish-latest` [`9ea8e43`](https://github.com/ljharb/call-bind/commit/9ea8e435b950ce9b705559cd651039f9bf40140f) diff --git a/node_modules/call-bind/LICENSE b/node_modules/call-bind/LICENSE new file mode 100644 index 0000000..48f05d0 --- /dev/null +++ b/node_modules/call-bind/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 Jordan Harband + +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/call-bind/README.md b/node_modules/call-bind/README.md new file mode 100644 index 0000000..48e9047 --- /dev/null +++ b/node_modules/call-bind/README.md @@ -0,0 +1,64 @@ +# call-bind [![Version Badge][npm-version-svg]][package-url] + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![dependency status][deps-svg]][deps-url] +[![dev dependency status][dev-deps-svg]][dev-deps-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +Robustly `.call.bind()` a function. + +## Getting started + +```sh +npm install --save call-bind +``` + +## Usage/Examples + +```js +const assert = require('assert'); +const callBind = require('call-bind'); +const callBound = require('call-bind/callBound'); + +function f(a, b) { + assert.equal(this, 1); + assert.equal(a, 2); + assert.equal(b, 3); + assert.equal(arguments.length, 2); +} + +const fBound = callBind(f); + +const slice = callBound('Array.prototype.slice'); + +delete Function.prototype.call; +delete Function.prototype.bind; + +fBound(1, 2, 3); + +assert.deepEqual(slice([1, 2, 3, 4], 1, -1), [2, 3]); +``` + +## Tests + +Clone the repo, `npm install`, and run `npm test` + +[package-url]: https://npmjs.org/package/call-bind +[npm-version-svg]: https://versionbadg.es/ljharb/call-bind.svg +[deps-svg]: https://david-dm.org/ljharb/call-bind.svg +[deps-url]: https://david-dm.org/ljharb/call-bind +[dev-deps-svg]: https://david-dm.org/ljharb/call-bind/dev-status.svg +[dev-deps-url]: https://david-dm.org/ljharb/call-bind#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/call-bind.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/call-bind.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/call-bind.svg +[downloads-url]: https://npm-stat.com/charts.html?package=call-bind +[codecov-image]: https://codecov.io/gh/ljharb/call-bind/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/ljharb/call-bind/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/call-bind +[actions-url]: https://github.com/ljharb/call-bind/actions diff --git a/node_modules/call-bind/callBound.js b/node_modules/call-bind/callBound.js new file mode 100644 index 0000000..8374adf --- /dev/null +++ b/node_modules/call-bind/callBound.js @@ -0,0 +1,15 @@ +'use strict'; + +var GetIntrinsic = require('get-intrinsic'); + +var callBind = require('./'); + +var $indexOf = callBind(GetIntrinsic('String.prototype.indexOf')); + +module.exports = function callBoundIntrinsic(name, allowMissing) { + var intrinsic = GetIntrinsic(name, !!allowMissing); + if (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) { + return callBind(intrinsic); + } + return intrinsic; +}; diff --git a/node_modules/call-bind/index.js b/node_modules/call-bind/index.js new file mode 100644 index 0000000..01c5b3d --- /dev/null +++ b/node_modules/call-bind/index.js @@ -0,0 +1,35 @@ +'use strict'; + +var bind = require('function-bind'); +var GetIntrinsic = require('get-intrinsic'); +var setFunctionLength = require('set-function-length'); + +var $TypeError = require('es-errors/type'); +var $apply = GetIntrinsic('%Function.prototype.apply%'); +var $call = GetIntrinsic('%Function.prototype.call%'); +var $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply); + +var $defineProperty = require('es-define-property'); +var $max = GetIntrinsic('%Math.max%'); + +module.exports = function callBind(originalFunction) { + if (typeof originalFunction !== 'function') { + throw new $TypeError('a function is required'); + } + var func = $reflectApply(bind, $call, arguments); + return setFunctionLength( + func, + 1 + $max(0, originalFunction.length - (arguments.length - 1)), + true + ); +}; + +var applyBind = function applyBind() { + return $reflectApply(bind, $apply, arguments); +}; + +if ($defineProperty) { + $defineProperty(module.exports, 'apply', { value: applyBind }); +} else { + module.exports.apply = applyBind; +} diff --git a/node_modules/call-bind/package.json b/node_modules/call-bind/package.json new file mode 100644 index 0000000..5ba88ff --- /dev/null +++ b/node_modules/call-bind/package.json @@ -0,0 +1,95 @@ +{ + "name": "call-bind", + "version": "1.0.7", + "description": "Robustly `.call.bind()` a function", + "main": "index.js", + "exports": { + ".": "./index.js", + "./callBound": "./callBound.js", + "./package.json": "./package.json" + }, + "scripts": { + "prepack": "npmignore --auto --commentLines=auto", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prepublishOnly": "safe-publish-latest", + "lint": "eslint --ext=.js,.mjs .", + "postlint": "evalmd README.md", + "pretest": "npm run lint", + "tests-only": "nyc tape 'test/**/*.js'", + "test": "npm run tests-only", + "posttest": "aud --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ljharb/call-bind.git" + }, + "keywords": [ + "javascript", + "ecmascript", + "es", + "js", + "callbind", + "callbound", + "call", + "bind", + "bound", + "call-bind", + "call-bound", + "function", + "es-abstract" + ], + "author": "Jordan Harband ", + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/call-bind/issues" + }, + "homepage": "https://github.com/ljharb/call-bind#readme", + "devDependencies": { + "@ljharb/eslint-config": "^21.1.0", + "aud": "^2.0.4", + "auto-changelog": "^2.4.0", + "es-value-fixtures": "^1.4.2", + "eslint": "=8.8.0", + "evalmd": "^0.0.19", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-strict-mode": "^1.0.1", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "object-inspect": "^1.13.1", + "safe-publish-latest": "^2.0.0", + "tape": "^5.7.4" + }, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "testling": { + "files": "test/index.js" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "engines": { + "node": ">= 0.4" + } +} diff --git a/node_modules/call-bind/test/callBound.js b/node_modules/call-bind/test/callBound.js new file mode 100644 index 0000000..c32319d --- /dev/null +++ b/node_modules/call-bind/test/callBound.js @@ -0,0 +1,54 @@ +'use strict'; + +var test = require('tape'); + +var callBound = require('../callBound'); + +test('callBound', function (t) { + // static primitive + t.equal(callBound('Array.length'), Array.length, 'Array.length yields itself'); + t.equal(callBound('%Array.length%'), Array.length, '%Array.length% yields itself'); + + // static non-function object + t.equal(callBound('Array.prototype'), Array.prototype, 'Array.prototype yields itself'); + t.equal(callBound('%Array.prototype%'), Array.prototype, '%Array.prototype% yields itself'); + t.equal(callBound('Array.constructor'), Array.constructor, 'Array.constructor yields itself'); + t.equal(callBound('%Array.constructor%'), Array.constructor, '%Array.constructor% yields itself'); + + // static function + t.equal(callBound('Date.parse'), Date.parse, 'Date.parse yields itself'); + t.equal(callBound('%Date.parse%'), Date.parse, '%Date.parse% yields itself'); + + // prototype primitive + t.equal(callBound('Error.prototype.message'), Error.prototype.message, 'Error.prototype.message yields itself'); + t.equal(callBound('%Error.prototype.message%'), Error.prototype.message, '%Error.prototype.message% yields itself'); + + // prototype function + t.notEqual(callBound('Object.prototype.toString'), Object.prototype.toString, 'Object.prototype.toString does not yield itself'); + t.notEqual(callBound('%Object.prototype.toString%'), Object.prototype.toString, '%Object.prototype.toString% does not yield itself'); + t.equal(callBound('Object.prototype.toString')(true), Object.prototype.toString.call(true), 'call-bound Object.prototype.toString calls into the original'); + t.equal(callBound('%Object.prototype.toString%')(true), Object.prototype.toString.call(true), 'call-bound %Object.prototype.toString% calls into the original'); + + t['throws']( + function () { callBound('does not exist'); }, + SyntaxError, + 'nonexistent intrinsic throws' + ); + t['throws']( + function () { callBound('does not exist', true); }, + SyntaxError, + 'allowMissing arg still throws for unknown intrinsic' + ); + + t.test('real but absent intrinsic', { skip: typeof WeakRef !== 'undefined' }, function (st) { + st['throws']( + function () { callBound('WeakRef'); }, + TypeError, + 'real but absent intrinsic throws' + ); + st.equal(callBound('WeakRef', true), undefined, 'allowMissing arg avoids exception'); + st.end(); + }); + + t.end(); +}); diff --git a/node_modules/call-bind/test/index.js b/node_modules/call-bind/test/index.js new file mode 100644 index 0000000..1fd4668 --- /dev/null +++ b/node_modules/call-bind/test/index.js @@ -0,0 +1,80 @@ +'use strict'; + +var callBind = require('../'); +var bind = require('function-bind'); +var gOPD = require('gopd'); +var hasStrictMode = require('has-strict-mode')(); +var forEach = require('for-each'); +var inspect = require('object-inspect'); +var v = require('es-value-fixtures'); + +var test = require('tape'); + +/* + * older engines have length nonconfigurable + * in io.js v3, it is configurable except on bound functions, hence the .bind() + */ +var functionsHaveConfigurableLengths = !!( + gOPD + && Object.getOwnPropertyDescriptor + && Object.getOwnPropertyDescriptor(bind.call(function () {}), 'length').configurable +); + +test('callBind', function (t) { + forEach(v.nonFunctions, function (nonFunction) { + t['throws']( + function () { callBind(nonFunction); }, + TypeError, + inspect(nonFunction) + ' is not a function' + ); + }); + + var sentinel = { sentinel: true }; + var func = function (a, b) { + // eslint-disable-next-line no-invalid-this + return [!hasStrictMode && this === global ? undefined : this, a, b]; + }; + t.equal(func.length, 2, 'original function length is 2'); + t.deepEqual(func(), [undefined, undefined, undefined], 'unbound func with too few args'); + t.deepEqual(func(1, 2), [undefined, 1, 2], 'unbound func with right args'); + t.deepEqual(func(1, 2, 3), [undefined, 1, 2], 'unbound func with too many args'); + + var bound = callBind(func); + t.equal(bound.length, func.length + 1, 'function length is preserved', { skip: !functionsHaveConfigurableLengths }); + t.deepEqual(bound(), [undefined, undefined, undefined], 'bound func with too few args'); + t.deepEqual(bound(1, 2), [hasStrictMode ? 1 : Object(1), 2, undefined], 'bound func with right args'); + t.deepEqual(bound(1, 2, 3), [hasStrictMode ? 1 : Object(1), 2, 3], 'bound func with too many args'); + + var boundR = callBind(func, sentinel); + t.equal(boundR.length, func.length, 'function length is preserved', { skip: !functionsHaveConfigurableLengths }); + t.deepEqual(boundR(), [sentinel, undefined, undefined], 'bound func with receiver, with too few args'); + t.deepEqual(boundR(1, 2), [sentinel, 1, 2], 'bound func with receiver, with right args'); + t.deepEqual(boundR(1, 2, 3), [sentinel, 1, 2], 'bound func with receiver, with too many args'); + + var boundArg = callBind(func, sentinel, 1); + t.equal(boundArg.length, func.length - 1, 'function length is preserved', { skip: !functionsHaveConfigurableLengths }); + t.deepEqual(boundArg(), [sentinel, 1, undefined], 'bound func with receiver and arg, with too few args'); + t.deepEqual(boundArg(2), [sentinel, 1, 2], 'bound func with receiver and arg, with right arg'); + t.deepEqual(boundArg(2, 3), [sentinel, 1, 2], 'bound func with receiver and arg, with too many args'); + + t.test('callBind.apply', function (st) { + var aBound = callBind.apply(func); + st.deepEqual(aBound(sentinel), [sentinel, undefined, undefined], 'apply-bound func with no args'); + st.deepEqual(aBound(sentinel, [1], 4), [sentinel, 1, undefined], 'apply-bound func with too few args'); + st.deepEqual(aBound(sentinel, [1, 2], 4), [sentinel, 1, 2], 'apply-bound func with right args'); + + var aBoundArg = callBind.apply(func); + st.deepEqual(aBoundArg(sentinel, [1, 2, 3], 4), [sentinel, 1, 2], 'apply-bound func with too many args'); + st.deepEqual(aBoundArg(sentinel, [1, 2], 4), [sentinel, 1, 2], 'apply-bound func with right args'); + st.deepEqual(aBoundArg(sentinel, [1], 4), [sentinel, 1, undefined], 'apply-bound func with too few args'); + + var aBoundR = callBind.apply(func, sentinel); + st.deepEqual(aBoundR([1, 2, 3], 4), [sentinel, 1, 2], 'apply-bound func with receiver and too many args'); + st.deepEqual(aBoundR([1, 2], 4), [sentinel, 1, 2], 'apply-bound func with receiver and right args'); + st.deepEqual(aBoundR([1], 4), [sentinel, 1, undefined], 'apply-bound func with receiver and too few args'); + + st.end(); + }); + + t.end(); +}); diff --git a/node_modules/chalk/index.d.ts b/node_modules/chalk/index.d.ts new file mode 100644 index 0000000..9cd88f3 --- /dev/null +++ b/node_modules/chalk/index.d.ts @@ -0,0 +1,415 @@ +/** +Basic foreground colors. + +[More colors here.](https://github.com/chalk/chalk/blob/master/readme.md#256-and-truecolor-color-support) +*/ +declare type ForegroundColor = + | 'black' + | 'red' + | 'green' + | 'yellow' + | 'blue' + | 'magenta' + | 'cyan' + | 'white' + | 'gray' + | 'grey' + | 'blackBright' + | 'redBright' + | 'greenBright' + | 'yellowBright' + | 'blueBright' + | 'magentaBright' + | 'cyanBright' + | 'whiteBright'; + +/** +Basic background colors. + +[More colors here.](https://github.com/chalk/chalk/blob/master/readme.md#256-and-truecolor-color-support) +*/ +declare type BackgroundColor = + | 'bgBlack' + | 'bgRed' + | 'bgGreen' + | 'bgYellow' + | 'bgBlue' + | 'bgMagenta' + | 'bgCyan' + | 'bgWhite' + | 'bgGray' + | 'bgGrey' + | 'bgBlackBright' + | 'bgRedBright' + | 'bgGreenBright' + | 'bgYellowBright' + | 'bgBlueBright' + | 'bgMagentaBright' + | 'bgCyanBright' + | 'bgWhiteBright'; + +/** +Basic colors. + +[More colors here.](https://github.com/chalk/chalk/blob/master/readme.md#256-and-truecolor-color-support) +*/ +declare type Color = ForegroundColor | BackgroundColor; + +declare type Modifiers = + | 'reset' + | 'bold' + | 'dim' + | 'italic' + | 'underline' + | 'inverse' + | 'hidden' + | 'strikethrough' + | 'visible'; + +declare namespace chalk { + /** + Levels: + - `0` - All colors disabled. + - `1` - Basic 16 colors support. + - `2` - ANSI 256 colors support. + - `3` - Truecolor 16 million colors support. + */ + type Level = 0 | 1 | 2 | 3; + + interface Options { + /** + Specify the color support for Chalk. + + By default, color support is automatically detected based on the environment. + + Levels: + - `0` - All colors disabled. + - `1` - Basic 16 colors support. + - `2` - ANSI 256 colors support. + - `3` - Truecolor 16 million colors support. + */ + level?: Level; + } + + /** + Return a new Chalk instance. + */ + type Instance = new (options?: Options) => Chalk; + + /** + Detect whether the terminal supports color. + */ + interface ColorSupport { + /** + The color level used by Chalk. + */ + level: Level; + + /** + Return whether Chalk supports basic 16 colors. + */ + hasBasic: boolean; + + /** + Return whether Chalk supports ANSI 256 colors. + */ + has256: boolean; + + /** + Return whether Chalk supports Truecolor 16 million colors. + */ + has16m: boolean; + } + + interface ChalkFunction { + /** + Use a template string. + + @remarks Template literals are unsupported for nested calls (see [issue #341](https://github.com/chalk/chalk/issues/341)) + + @example + ``` + import chalk = require('chalk'); + + log(chalk` + CPU: {red ${cpu.totalPercent}%} + RAM: {green ${ram.used / ram.total * 100}%} + DISK: {rgb(255,131,0) ${disk.used / disk.total * 100}%} + `); + ``` + + @example + ``` + import chalk = require('chalk'); + + log(chalk.red.bgBlack`2 + 3 = {bold ${2 + 3}}`) + ``` + */ + (text: TemplateStringsArray, ...placeholders: unknown[]): string; + + (...text: unknown[]): string; + } + + interface Chalk extends ChalkFunction { + /** + Return a new Chalk instance. + */ + Instance: Instance; + + /** + The color support for Chalk. + + By default, color support is automatically detected based on the environment. + + Levels: + - `0` - All colors disabled. + - `1` - Basic 16 colors support. + - `2` - ANSI 256 colors support. + - `3` - Truecolor 16 million colors support. + */ + level: Level; + + /** + Use HEX value to set text color. + + @param color - Hexadecimal value representing the desired color. + + @example + ``` + import chalk = require('chalk'); + + chalk.hex('#DEADED'); + ``` + */ + hex(color: string): Chalk; + + /** + Use keyword color value to set text color. + + @param color - Keyword value representing the desired color. + + @example + ``` + import chalk = require('chalk'); + + chalk.keyword('orange'); + ``` + */ + keyword(color: string): Chalk; + + /** + Use RGB values to set text color. + */ + rgb(red: number, green: number, blue: number): Chalk; + + /** + Use HSL values to set text color. + */ + hsl(hue: number, saturation: number, lightness: number): Chalk; + + /** + Use HSV values to set text color. + */ + hsv(hue: number, saturation: number, value: number): Chalk; + + /** + Use HWB values to set text color. + */ + hwb(hue: number, whiteness: number, blackness: number): Chalk; + + /** + Use a [Select/Set Graphic Rendition](https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_parameters) (SGR) [color code number](https://en.wikipedia.org/wiki/ANSI_escape_code#3/4_bit) to set text color. + + 30 <= code && code < 38 || 90 <= code && code < 98 + For example, 31 for red, 91 for redBright. + */ + ansi(code: number): Chalk; + + /** + Use a [8-bit unsigned number](https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit) to set text color. + */ + ansi256(index: number): Chalk; + + /** + Use HEX value to set background color. + + @param color - Hexadecimal value representing the desired color. + + @example + ``` + import chalk = require('chalk'); + + chalk.bgHex('#DEADED'); + ``` + */ + bgHex(color: string): Chalk; + + /** + Use keyword color value to set background color. + + @param color - Keyword value representing the desired color. + + @example + ``` + import chalk = require('chalk'); + + chalk.bgKeyword('orange'); + ``` + */ + bgKeyword(color: string): Chalk; + + /** + Use RGB values to set background color. + */ + bgRgb(red: number, green: number, blue: number): Chalk; + + /** + Use HSL values to set background color. + */ + bgHsl(hue: number, saturation: number, lightness: number): Chalk; + + /** + Use HSV values to set background color. + */ + bgHsv(hue: number, saturation: number, value: number): Chalk; + + /** + Use HWB values to set background color. + */ + bgHwb(hue: number, whiteness: number, blackness: number): Chalk; + + /** + Use a [Select/Set Graphic Rendition](https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_parameters) (SGR) [color code number](https://en.wikipedia.org/wiki/ANSI_escape_code#3/4_bit) to set background color. + + 30 <= code && code < 38 || 90 <= code && code < 98 + For example, 31 for red, 91 for redBright. + Use the foreground code, not the background code (for example, not 41, nor 101). + */ + bgAnsi(code: number): Chalk; + + /** + Use a [8-bit unsigned number](https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit) to set background color. + */ + bgAnsi256(index: number): Chalk; + + /** + Modifier: Resets the current color chain. + */ + readonly reset: Chalk; + + /** + Modifier: Make text bold. + */ + readonly bold: Chalk; + + /** + Modifier: Emitting only a small amount of light. + */ + readonly dim: Chalk; + + /** + Modifier: Make text italic. (Not widely supported) + */ + readonly italic: Chalk; + + /** + Modifier: Make text underline. (Not widely supported) + */ + readonly underline: Chalk; + + /** + Modifier: Inverse background and foreground colors. + */ + readonly inverse: Chalk; + + /** + Modifier: Prints the text, but makes it invisible. + */ + readonly hidden: Chalk; + + /** + Modifier: Puts a horizontal line through the center of the text. (Not widely supported) + */ + readonly strikethrough: Chalk; + + /** + Modifier: Prints the text only when Chalk has a color support level > 0. + Can be useful for things that are purely cosmetic. + */ + readonly visible: Chalk; + + readonly black: Chalk; + readonly red: Chalk; + readonly green: Chalk; + readonly yellow: Chalk; + readonly blue: Chalk; + readonly magenta: Chalk; + readonly cyan: Chalk; + readonly white: Chalk; + + /* + Alias for `blackBright`. + */ + readonly gray: Chalk; + + /* + Alias for `blackBright`. + */ + readonly grey: Chalk; + + readonly blackBright: Chalk; + readonly redBright: Chalk; + readonly greenBright: Chalk; + readonly yellowBright: Chalk; + readonly blueBright: Chalk; + readonly magentaBright: Chalk; + readonly cyanBright: Chalk; + readonly whiteBright: Chalk; + + readonly bgBlack: Chalk; + readonly bgRed: Chalk; + readonly bgGreen: Chalk; + readonly bgYellow: Chalk; + readonly bgBlue: Chalk; + readonly bgMagenta: Chalk; + readonly bgCyan: Chalk; + readonly bgWhite: Chalk; + + /* + Alias for `bgBlackBright`. + */ + readonly bgGray: Chalk; + + /* + Alias for `bgBlackBright`. + */ + readonly bgGrey: Chalk; + + readonly bgBlackBright: Chalk; + readonly bgRedBright: Chalk; + readonly bgGreenBright: Chalk; + readonly bgYellowBright: Chalk; + readonly bgBlueBright: Chalk; + readonly bgMagentaBright: Chalk; + readonly bgCyanBright: Chalk; + readonly bgWhiteBright: Chalk; + } +} + +/** +Main Chalk object that allows to chain styles together. +Call the last one as a method with a string argument. +Order doesn't matter, and later styles take precedent in case of a conflict. +This simply means that `chalk.red.yellow.green` is equivalent to `chalk.green`. +*/ +declare const chalk: chalk.Chalk & chalk.ChalkFunction & { + supportsColor: chalk.ColorSupport | false; + Level: chalk.Level; + Color: Color; + ForegroundColor: ForegroundColor; + BackgroundColor: BackgroundColor; + Modifiers: Modifiers; + stderr: chalk.Chalk & {supportsColor: chalk.ColorSupport | false}; +}; + +export = chalk; diff --git a/node_modules/chalk/license b/node_modules/chalk/license new file mode 100644 index 0000000..e7af2f7 --- /dev/null +++ b/node_modules/chalk/license @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +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/chalk/package.json b/node_modules/chalk/package.json new file mode 100644 index 0000000..47c23f2 --- /dev/null +++ b/node_modules/chalk/package.json @@ -0,0 +1,68 @@ +{ + "name": "chalk", + "version": "4.1.2", + "description": "Terminal string styling done right", + "license": "MIT", + "repository": "chalk/chalk", + "funding": "https://github.com/chalk/chalk?sponsor=1", + "main": "source", + "engines": { + "node": ">=10" + }, + "scripts": { + "test": "xo && nyc ava && tsd", + "bench": "matcha benchmark.js" + }, + "files": [ + "source", + "index.d.ts" + ], + "keywords": [ + "color", + "colour", + "colors", + "terminal", + "console", + "cli", + "string", + "str", + "ansi", + "style", + "styles", + "tty", + "formatting", + "rgb", + "256", + "shell", + "xterm", + "log", + "logging", + "command-line", + "text" + ], + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "devDependencies": { + "ava": "^2.4.0", + "coveralls": "^3.0.7", + "execa": "^4.0.0", + "import-fresh": "^3.1.0", + "matcha": "^0.7.0", + "nyc": "^15.0.0", + "resolve-from": "^5.0.0", + "tsd": "^0.7.4", + "xo": "^0.28.2" + }, + "xo": { + "rules": { + "unicorn/prefer-string-slice": "off", + "unicorn/prefer-includes": "off", + "@typescript-eslint/member-ordering": "off", + "no-redeclare": "off", + "unicorn/string-content": "off", + "unicorn/better-regex": "off" + } + } +} diff --git a/node_modules/chalk/readme.md b/node_modules/chalk/readme.md new file mode 100644 index 0000000..a055d21 --- /dev/null +++ b/node_modules/chalk/readme.md @@ -0,0 +1,341 @@ +

    +
    +
    + Chalk +
    +
    +
    +

    + +> Terminal string styling done right + +[![Build Status](https://travis-ci.org/chalk/chalk.svg?branch=master)](https://travis-ci.org/chalk/chalk) [![Coverage Status](https://coveralls.io/repos/github/chalk/chalk/badge.svg?branch=master)](https://coveralls.io/github/chalk/chalk?branch=master) [![npm dependents](https://badgen.net/npm/dependents/chalk)](https://www.npmjs.com/package/chalk?activeTab=dependents) [![Downloads](https://badgen.net/npm/dt/chalk)](https://www.npmjs.com/package/chalk) [![](https://img.shields.io/badge/unicorn-approved-ff69b4.svg)](https://www.youtube.com/watch?v=9auOCbH5Ns4) [![XO code style](https://img.shields.io/badge/code_style-XO-5ed9c7.svg)](https://github.com/xojs/xo) ![TypeScript-ready](https://img.shields.io/npm/types/chalk.svg) [![run on repl.it](https://repl.it/badge/github/chalk/chalk)](https://repl.it/github/chalk/chalk) + + + +
    + +--- + +
    + +--- + +
    + +## Highlights + +- Expressive API +- Highly performant +- Ability to nest styles +- [256/Truecolor color support](#256-and-truecolor-color-support) +- Auto-detects color support +- Doesn't extend `String.prototype` +- Clean and focused +- Actively maintained +- [Used by ~50,000 packages](https://www.npmjs.com/browse/depended/chalk) as of January 1, 2020 + +## Install + +```console +$ npm install chalk +``` + +## Usage + +```js +const chalk = require('chalk'); + +console.log(chalk.blue('Hello world!')); +``` + +Chalk comes with an easy to use composable API where you just chain and nest the styles you want. + +```js +const chalk = require('chalk'); +const log = console.log; + +// Combine styled and normal strings +log(chalk.blue('Hello') + ' World' + chalk.red('!')); + +// Compose multiple styles using the chainable API +log(chalk.blue.bgRed.bold('Hello world!')); + +// Pass in multiple arguments +log(chalk.blue('Hello', 'World!', 'Foo', 'bar', 'biz', 'baz')); + +// Nest styles +log(chalk.red('Hello', chalk.underline.bgBlue('world') + '!')); + +// Nest styles of the same type even (color, underline, background) +log(chalk.green( + 'I am a green line ' + + chalk.blue.underline.bold('with a blue substring') + + ' that becomes green again!' +)); + +// ES2015 template literal +log(` +CPU: ${chalk.red('90%')} +RAM: ${chalk.green('40%')} +DISK: ${chalk.yellow('70%')} +`); + +// ES2015 tagged template literal +log(chalk` +CPU: {red ${cpu.totalPercent}%} +RAM: {green ${ram.used / ram.total * 100}%} +DISK: {rgb(255,131,0) ${disk.used / disk.total * 100}%} +`); + +// Use RGB colors in terminal emulators that support it. +log(chalk.keyword('orange')('Yay for orange colored text!')); +log(chalk.rgb(123, 45, 67).underline('Underlined reddish color')); +log(chalk.hex('#DEADED').bold('Bold gray!')); +``` + +Easily define your own themes: + +```js +const chalk = require('chalk'); + +const error = chalk.bold.red; +const warning = chalk.keyword('orange'); + +console.log(error('Error!')); +console.log(warning('Warning!')); +``` + +Take advantage of console.log [string substitution](https://nodejs.org/docs/latest/api/console.html#console_console_log_data_args): + +```js +const name = 'Sindre'; +console.log(chalk.green('Hello %s'), name); +//=> 'Hello Sindre' +``` + +## API + +### chalk.`

    KfsX(BOgRngWUL%(~R@mdh7%(=1 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 xB7C|c?}?)Hb1XX`i`IW`7KVbA{|B{O)E58% literal 0 HcmV?d00001 diff --git a/frontend/src/Poppins/Poppins-ThinItalic.ttf b/frontend/src/Poppins/Poppins-ThinItalic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..e26db5dd3dbab6fcdb06f7fd9ab9347ead808f02 GIT binary patch literal 187044 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

*qxIQz+w<% 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 z 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 z z$jmtR++CC6Fs%fAF|G(-u~YBMzAd*@avQiPKUPF4?;Y_n#vI!fl?u|Dz9B!^(ZN=y5bm1QUC7#kNo#GV#E*E>8`oqv|FY^ z@-?WArVW|@PyB~k zN?|(&;KOT&+8&?$8@#M_e6WoQt+dwwl@3#(G^}qQw67B;AVB0=?JRkDtcx*}cxe?= zYxHdc%2FW%x={AORZy>1zV*PikbgMH=Kimfro=Cu81Q?e`(OZ}!Rz=ixds;6=?w0W zD?u8aN7K5_si08H)be|M+v~MUHX5ofK+z}EZ+fO0uUa%z`{YEqt_V8C;u8v5^ARXz z7(Z>jo}R#DSn~hisT3QDvrPA}M$53bd?))=l=}z43fPY7{@=c^^4;@y;?_tOG?n!& zzo0-=cEEV79PJvCAq9jv@%DD4@7T2W=lh`fb7OGY=pKXii6`Isxj!AJsco&dA3fsi zn--&wG3aC?hS3pgcXF-8e{tr`f1QJNvhh3f$Winin>lZ3op<2PeUIJf-Caw1i39j6~4;G)`XjZ^iB;2XJ*JjuRHa zf8ZeKbGjb(tXTk_`M31QNNfv5Kl(0Zqt~N>49oDHk9z{B!7VMJxW}SWnBMM?T(O_= zr{zoM1N>!jp)GQu?PgC){rTK5u#H_EXHQ3$=@vCet=Lf>J~h#AdoT_@Uv9Nw*dCAA zGCWTH>-}t2D}9BIEt|!%+T@gDbq3RP&7- z$9_FBf9BdUz1l~ETWK;`8xbQ$_}som>~F3vAGOo0opZRi_1wu-eGyaZ5@xf3<*=Ez z3k%y!+O6CuV$XPAh8aI>=Ku2ws_L8=7F#+TrXCHME3TegSF;f0`0U2^JY~##jGx3Q z{9=580Q7|qATx$dRotIra`=mF$Mm)M?>c3aR-0b@r)*b#@ZUb!?WFuYo*-j5f-iC5 zL2;vO2zjs(?_~Tr9`7o|v3#E{>2D|_HjyF;s zUh5sOGQ`tQVw{IO5%DUjgyDW*xR(CE@xS6;IGy>w!8}OSeQw)Uu#NDbJ$zeBrnaRW z$}s}^iQSLzJmONH&0}Bk#F9%oXA>X@xZL8Pz4?S9U=uQ4p4xiuDP=Abr zAfv^h=Zx}N%iA9K;_+wNt%e=MRom};#&$MS1A`u8!uSNt!1m~M*1b%YSaNj#qsetl zzS<9Qr=~sAzIZOllx$M{xB8#pIb=c8AMtnifzPp+$Nux!RhAP*J4d5UdC!8Ujn3j zzT~6-M|&;VFZLV#`54B=7PAfwec~04zuuKLkMkPWY{z2_&eQK$<(3@%rJ3$);mh^; zZDGuH{q6Io^Z%=#zFeV|bJBStgkg}JIB>%DXvgz#30v`Y__NI+)&FbdnY2?^>72H* z#r>u-f*1ptQ*RMFtS6`zE*44HCv?Wl?6Xoy6vywyvtyr}q{{9iZBb^EuJ(CJ-Jh=W z9T;9ig z5nC35BB+ImKD<(ds;9fSu^0sJb47dkDM<|Qw)T`tbuy93qk&a^;3cg{{6coAu*55* zhyxlYh7(E#O(+FgH*V9cH2rISYq_EaV+`J<(_l*36gcdED{U~?efOm*LN|OMspN~0 z?a2RFi3K`tPI&B4Ut!qY{QtCtpR;gc8G`-(SirCB6e_*Lm;(8y?JW#jJWkv_lP>P~ z>-46TQZ`R=En+NMJln5V+p>xEyW>munT@fSFr*sZvioEdwh1NhPyBb^o#u;u=uQ{; z!cC10x{D)Na8COxWpog1=I%4dKg#rSKwzSs1LG(RBhgIkp_$82o8dOo0F(L}_FN{~ z72J$a9tLioul7C^7$Z&*fA9?X$ozJP|w_b#h^puP?*h}}}kqLhM`CMjin%Mjj1JA~F%m0ZJAF$55%c6S( zzOdky7E38-NmufP{69VcH%9DCag_EPGW0ol>~p1qUXEEm{Hh!*#^ruE#2IdU4!Lf>)ph7YkmLZdU z9l6WcPJiH7WFGjSLYx41K#0FOwrT8!#wBHOfs5@HyZo*xw(@M=>szV0&Q>Wcd(yOtIVvBAXTQ z9mILxGe;bht1~%;yZ{}4s>!!7fgXv^pSG@y*CO9Z{!ih2kI@Vo=gyOuc!`{G>=^cL zzcnM%3d3=niM;7^!7Rr>=LatuT_rw&lg~e_+k*cd0e-NGJj^?Wpl)Iw zTF1{JPCR#Cn;y_n|9MQbkP49(|5XpM<0}VVp5t0PzLn14Q%Xc}-s3gn3=izTSlEfY ztWcNdZmpY*h89C;z~=u{3X9W)IXH~oHYL=rgF#7>T>KvnP2j8Jdls=tRmgt>h0Q&( z?fCQMybm?cBcvZbh2DVn!T&;o5C4w>*A01)1H$kpgLsZ%j0*9e-Yzi=<^qJi`M>kO za3*eKcmgXMV?@f{@*RUy_&TfX84>0y)Pmtbv#CUe;t(4Sx??R=I)nJw^jD7g5zi<~k)M z^U1YkvP zkiTrPEV!tKHb%^}<1i!u&XE82g+|nEEULZtZyEn|C!7EM>gzxI$^Vo8t0Sj`vRDzO zdra0vSfqK82hOccDkSHc?aGjSzN+!zcM7Ee#}`#1G#QC4KQ~T65z9#imvxw=!WRO! zfzq0Otxji*6=B!K<WWqmSc)(no%w)|Q(&j;wda@vYTv1~pp*MsM;mGkf- zc*IK|^)IqJL~CY}kr=0+O(tg@jAKxOo3*xH>!T)!he>DKTVEbI6zrNOJ ztG1x#@|wMGu8k&2U^6l$mV{| z)z#1q2aS&>K!|Dp+oWcHY4Hb#uB*JqfY>?uy_Hxet_i7 z*_;Do^UBZXwzRSF{3rfv0Ns8u-=n>vRbm*b9NoxQ>Br>w%2@Sd)=LL_iWsMsIC3DN zez;g*cgpx3CXY>kfgy?s^BM2zxnRPvU)t311jFR`NPNBP7xlLao%l} zMC(ow$|Wg1Yc1$_j>4UABS-o7%jG*e@n|=PJ_Uj1#2mIe3&Z^H@p1v4XT-AU$DXuPy6^bJnem;9%PzFpf-?P1-i#rRjME-#I4?bbI{>RQajm6o<=n zRxCYuKJSJ4+4!@d@b}$Tc>I=>lku$Y($Md+*f8xidW1}a!@`(Tc~iTinjJSHs7+6G zH<1VQIgS!We)ivP#7vFjP=s%pv$2ZDMpxA0Kc(D;?tWX|CdboWR`|srZWVtFUm4C} zch7&dRD-Su!|&E7|Apf}^FQQ6I@ia^CuVi+V|}x{YpH+xbJFwXv(1e@yVr(h_`M$ z=;+4~Vbl3yQ{sQce9znDJ@U(e{N(?A-;9B=uq6KXt{=PI=RIs^dA8&y)?b=a-dC?ncZe$TL$b6<8T)ZzLGz&d6911+FDqgm41{!hV(qcT4<><~ zp$lzu9lO2w*}fqQ_a?W^woX(9<>b_YUVZT>-EWUY8yVvyI!BS zZet(X3XO3cYg6dY4qkmsd}{Zp|J~j#50SsEZ_hi>Q}mepuo%1uBe|^pcT_Pf$Lv3s zR?`NqbDzBWn|7N!X8qdvpF;-RmA8aZ|A_JU+B(E!-w;zi#1X}XuNmKBaD2l|J}^3& z4K|mDxn4NRft$nKeA$isSSFvfM*F(f0`8s{3|lz-VcK8aPvHsFVc;N~i z&|BZ1dL@LHfUoVZ=Iod>nYTdoNoF;m~1RS=&Bc_<;}4 z3Huz`YA=XFBJ&nSOHLRyII2%0gKe7Bek?|3jT5xMHf{JPf5z4+P5Rm)?0x*Q#?kFP z%72~z8~?YQW0Cyz!9eBBe;&?;gEsfU4eYFQ4NEV{Q%NkQE#C=fwc&Ukbnz@O3wXbR z&*aKs?}@hvG@WLX!It$4I!=3UjmrKS)5iH;d<3w3V2^WHRO9w)Jmlhp*@pa|6AanH zwg?DOVUyya@!?3@DE~o#(Cbf(Iqi|S##VPqO ztU}NYtB8+<#Xs<04EI8ByfE(ta-BU4ataM7##Z*^qF#%_hyS6$w)F}>&ipT9j-S88 zSmoUKg=Z_GTYSlJ+_aF(>XQWYy+ZVh|0*U#h)VDF2j*){+#=?L(`21~&1qRx__{Cc zi`a4Gjs5VLt!7jlNjtw}UFUdy$=>jZlpxn7(;E0;)^%=Y&#(E3k`0FpT@OX zF~#t3+oZo@z;F7B0xK`QAzlJ<1F%j689jHqRr{t`S4Z?S}8dd{}`0`T4W5MEw? zg`$!F%`f;4-1yyl7?;Qvhi6Y7_d*h5hjPgxU`rPHdYViklzc}0}